feat(ui): 게임 화면 및 설정 화면 개선

- GamePlayScreen 개선
- GameSessionController 확장
- MobileCarouselLayout 기능 추가
- SettingsScreen 테스트 기능 추가
This commit is contained in:
JiWoong Sul
2026-01-12 20:02:54 +09:00
parent 12f195bed7
commit 1d855b64a2
5 changed files with 275 additions and 32 deletions

View File

@@ -4,6 +4,7 @@ import 'package:asciineverdie/src/core/engine/progress_loop.dart';
import 'package:asciineverdie/src/core/engine/progress_service.dart';
import 'package:asciineverdie/src/core/engine/resurrection_service.dart';
import 'package:asciineverdie/src/core/engine/shop_service.dart';
import 'package:asciineverdie/src/core/engine/test_character_service.dart';
import 'package:asciineverdie/src/core/model/combat_stats.dart';
import 'package:asciineverdie/src/core/model/game_state.dart';
import 'package:asciineverdie/src/core/model/game_statistics.dart';
@@ -367,6 +368,58 @@ class GameSessionController extends ChangeNotifier {
}
}
/// 테스트 캐릭터 생성 (디버그 모드 전용)
///
/// 현재 캐릭터를 레벨 100, 고급 장비, 다수의 스킬을 가진
/// 캐릭터로 변환하여 명예의 전당에 등록하고 세이브를 삭제함.
Future<bool> createTestCharacter() async {
if (_state == null) {
debugPrint('[TestCharacter] _state is null');
return false;
}
try {
debugPrint('[TestCharacter] Creating test character...');
// 게임 일시정지
await _stopLoop(saveOnStop: false);
// TestCharacterService로 테스트 캐릭터 생성
final testService = TestCharacterService(
config: progressService.config,
rng: _state!.rng,
);
final entry = testService.createTestCharacter(_state!);
debugPrint(
'[TestCharacter] Entry created: ${entry.characterName} Lv.${entry.level}',
);
// 명예의 전당에 등록
final success = await _hallOfFameStorage.addEntry(entry);
debugPrint('[TestCharacter] HallOfFame save result: $success');
if (success) {
// 세이브 파일 삭제
final deleteResult = await saveManager.deleteSave();
debugPrint('[TestCharacter] Save deleted: ${deleteResult.success}');
}
// 상태 초기화
_state = null;
_status = GameSessionStatus.idle;
notifyListeners();
debugPrint('[TestCharacter] Complete');
return success;
} catch (e, st) {
debugPrint('[TestCharacter] ERROR: $e');
debugPrint('[TestCharacter] StackTrace: $st');
return false;
}
}
/// 플레이어 부활 처리 (상태만 업데이트, 게임 재개는 별도로)
///
/// HP/MP 회복, 빈 슬롯에 장비 자동 구매