feat(death): 사망/부활 시스템 개선
- DeathInfo에 lostItem 필드 추가 (광고 부활 시 복구용) - 세이브 데이터 v4: MonetizationState 포함 - 사망 오버레이 UI 개선 - 부활 서비스 광고 연동
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import 'package:asciineverdie/src/core/model/game_state.dart';
|
||||
import 'package:asciineverdie/src/core/model/monetization_state.dart';
|
||||
import 'package:asciineverdie/src/core/model/save_data.dart';
|
||||
import 'package:asciineverdie/src/core/storage/save_repository.dart';
|
||||
import 'package:asciineverdie/src/core/storage/save_service.dart'
|
||||
@@ -13,23 +14,36 @@ class SaveManager {
|
||||
|
||||
/// Save current game state to disk. [fileName] may be absolute or relative.
|
||||
/// Returns outcome with error on failure.
|
||||
///
|
||||
/// [monetization] 저장 시 lastPlayTime을 현재 시간으로 자동 업데이트
|
||||
Future<SaveOutcome> saveState(
|
||||
GameState state, {
|
||||
String? fileName,
|
||||
bool cheatsEnabled = false,
|
||||
MonetizationState? monetization,
|
||||
}) {
|
||||
final save = GameSave.fromState(state, cheatsEnabled: cheatsEnabled);
|
||||
// lastPlayTime을 현재 시간으로 업데이트
|
||||
final updatedMonetization = (monetization ?? MonetizationState.initial())
|
||||
.copyWith(lastPlayTime: DateTime.now());
|
||||
|
||||
final save = GameSave.fromState(
|
||||
state,
|
||||
cheatsEnabled: cheatsEnabled,
|
||||
monetization: updatedMonetization,
|
||||
);
|
||||
return _repo.save(save, fileName ?? defaultFileName);
|
||||
}
|
||||
|
||||
/// Load game state from disk. [fileName] may be absolute (e.g., file picker).
|
||||
/// Returns outcome + optional state + cheatsEnabled flag.
|
||||
Future<(SaveOutcome, GameState?, bool)> loadState({String? fileName}) async {
|
||||
/// Returns outcome + optional state + cheatsEnabled flag + monetization state.
|
||||
Future<(SaveOutcome, GameState?, bool, MonetizationState?)> loadState({
|
||||
String? fileName,
|
||||
}) async {
|
||||
final (outcome, save) = await _repo.load(fileName ?? defaultFileName);
|
||||
if (!outcome.success || save == null) {
|
||||
return (outcome, null, false);
|
||||
return (outcome, null, false, null);
|
||||
}
|
||||
return (outcome, save.toState(), save.cheatsEnabled);
|
||||
return (outcome, save.toState(), save.cheatsEnabled, save.monetization);
|
||||
}
|
||||
|
||||
/// 저장 파일 목록 조회
|
||||
|
||||
Reference in New Issue
Block a user