feat(game): 게임 클리어 시 VictoryOverlay 추가
- VictoryOverlay 위젯 신규 생성 - GameSessionController에 isComplete 상태 추가 - 레벨 100 도달 시 승리 오버레이 표시 - 승리 후 명예의 전당 화면으로 이동
This commit is contained in:
@@ -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/model/combat_stats.dart';
|
||||
import 'package:asciineverdie/src/core/model/game_state.dart';
|
||||
import 'package:asciineverdie/src/core/model/game_statistics.dart';
|
||||
import 'package:asciineverdie/src/core/model/hall_of_fame.dart';
|
||||
@@ -285,18 +286,40 @@ class GameSessionController extends ChangeNotifier {
|
||||
|
||||
/// 명예의 전당 등록
|
||||
Future<void> _registerToHallOfFame() async {
|
||||
if (_state == null) return;
|
||||
if (_state == null) {
|
||||
debugPrint('[HallOfFame] _state is null, skipping registration');
|
||||
return;
|
||||
}
|
||||
|
||||
final entry = HallOfFameEntry.fromGameState(
|
||||
state: _state!,
|
||||
totalDeaths: _sessionStats.deathCount,
|
||||
monstersKilled: _state!.progress.monstersKilled,
|
||||
);
|
||||
try {
|
||||
debugPrint('[HallOfFame] Starting registration...');
|
||||
|
||||
await _hallOfFameStorage.addEntry(entry);
|
||||
// 최종 전투 스탯 계산 (CombatStats)
|
||||
final combatStats = CombatStats.fromStats(
|
||||
stats: _state!.stats,
|
||||
equipment: _state!.equipment,
|
||||
level: _state!.traits.level,
|
||||
);
|
||||
|
||||
// 통계 기록
|
||||
await _statisticsStorage.recordGameComplete();
|
||||
final entry = HallOfFameEntry.fromGameState(
|
||||
state: _state!,
|
||||
totalDeaths: _sessionStats.deathCount,
|
||||
monstersKilled: _state!.progress.monstersKilled,
|
||||
combatStats: combatStats,
|
||||
);
|
||||
|
||||
debugPrint('[HallOfFame] Entry created: ${entry.characterName} Lv.${entry.level}');
|
||||
|
||||
final success = await _hallOfFameStorage.addEntry(entry);
|
||||
debugPrint('[HallOfFame] Storage save result: $success');
|
||||
|
||||
// 통계 기록
|
||||
await _statisticsStorage.recordGameComplete();
|
||||
debugPrint('[HallOfFame] Registration complete');
|
||||
} catch (e, st) {
|
||||
debugPrint('[HallOfFame] ERROR: $e');
|
||||
debugPrint('[HallOfFame] StackTrace: $st');
|
||||
}
|
||||
}
|
||||
|
||||
/// 플레이어 부활 처리 (상태만 업데이트, 게임 재개는 별도로)
|
||||
|
||||
Reference in New Issue
Block a user