refactor(game): 테스트 캐릭터 서비스 및 세션 컨트롤러 정리
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import 'package:asciineverdie/data/skill_data.dart';
|
||||
import 'package:asciineverdie/src/core/engine/item_service.dart';
|
||||
import 'package:asciineverdie/src/core/model/combat_stats.dart';
|
||||
import 'package:asciineverdie/src/core/model/equipment_item.dart';
|
||||
@@ -5,7 +6,6 @@ import 'package:asciineverdie/src/core/model/equipment_slot.dart';
|
||||
import 'package:asciineverdie/src/core/model/game_state.dart';
|
||||
import 'package:asciineverdie/src/core/model/hall_of_fame.dart';
|
||||
import 'package:asciineverdie/src/core/model/item_stats.dart';
|
||||
import 'package:asciineverdie/src/core/model/pq_config.dart';
|
||||
import 'package:asciineverdie/src/core/util/deterministic_random.dart';
|
||||
import 'package:asciineverdie/src/core/util/roman.dart';
|
||||
|
||||
@@ -14,12 +14,8 @@ import 'package:asciineverdie/src/core/util/roman.dart';
|
||||
/// 현재 캐릭터를 레벨 100, 고급 장비, 다수의 스킬을 가진
|
||||
/// 캐릭터로 변환하여 명예의 전당에 등록할 수 있게 함.
|
||||
class TestCharacterService {
|
||||
TestCharacterService({
|
||||
required this.config,
|
||||
required this.rng,
|
||||
});
|
||||
TestCharacterService({required this.rng});
|
||||
|
||||
final PqConfig config;
|
||||
final DeterministicRandom rng;
|
||||
|
||||
/// 테스트 캐릭터 데이터 생성
|
||||
@@ -200,18 +196,22 @@ class TestCharacterService {
|
||||
}
|
||||
|
||||
/// 테스트용 스킬 생성 (20~30개)
|
||||
///
|
||||
/// SkillData.spellNameToSkill에 정의된 전투 스킬만 선택
|
||||
List<Map<String, String>> _generateTestSkills() {
|
||||
final spells = config.spells;
|
||||
// 전투에서 실제로 사용 가능한 스킬 목록
|
||||
final validSpells = SkillData.spellNameToSkill.keys.toList();
|
||||
final skillCount = 20 + rng.nextInt(11); // 20~30개
|
||||
final selectedSpells = <String>{};
|
||||
final skills = <Map<String, String>>[];
|
||||
|
||||
// 중복 없이 스킬 선택
|
||||
while (selectedSpells.length < skillCount && selectedSpells.length < spells.length) {
|
||||
final index = rng.nextInt(spells.length);
|
||||
final spell = spells[index].split('|')[0];
|
||||
while (selectedSpells.length < skillCount &&
|
||||
selectedSpells.length < validSpells.length) {
|
||||
final index = rng.nextInt(validSpells.length);
|
||||
final spell = validSpells[index];
|
||||
if (selectedSpells.add(spell)) {
|
||||
// 랭크: I~X 랜덤 (레벨 100 기준 높은 랭크 선호)
|
||||
// 랭크: V~X 랜덤 (레벨 100 기준 높은 랭크)
|
||||
final rank = _randomHighRank();
|
||||
skills.add({'name': spell, 'rank': rank});
|
||||
}
|
||||
|
||||
@@ -385,10 +385,7 @@ class GameSessionController extends ChangeNotifier {
|
||||
await _stopLoop(saveOnStop: false);
|
||||
|
||||
// TestCharacterService로 테스트 캐릭터 생성
|
||||
final testService = TestCharacterService(
|
||||
config: progressService.config,
|
||||
rng: _state!.rng,
|
||||
);
|
||||
final testService = TestCharacterService(rng: _state!.rng);
|
||||
|
||||
final entry = testService.createTestCharacter(_state!);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user