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