2.2 KiB
2.2 KiB
44. 설정 페이지 및 로컬 저장 (Settings Page & Local Storage)
1. 목표 (Goal)
BottomNavigationBar에 "설정 (Settings)" 페이지를 추가합니다.- 설정 페이지에 "메인 메뉴로 나가기 (Return to Main Menu)" 및 "다시 시작하기 (Restart Game)" 버튼을 추가합니다.
- 스테이지 클리어 시 진행 상황(스테이지, 턴, 플레이어 상태)을 로컬 스토리지(
shared_preferences)에 자동 저장하는 기능을 구현합니다. - 메인 메뉴에 저장된 데이터가 있을 경우 "이어하기 (CONTINUE)" 버튼을 표시하고 기능을 연결합니다.
2. 구현 상세 (Implementation Details)
의존성 (Dependencies)
shared_preferences패키지 추가.
로컬 저장소 (SaveManager)
- 파일:
lib/game/save_manager.dart - 기능:
saveGame:BattleProvider의 상태(스테이지, 턴, 플레이어 스탯, 인벤토리, 장비)를 JSON으로 직렬화하여 SharedPreferences에 저장.loadGame: 저장된 데이터를 불러와 역직렬화.hasSaveData: 저장 파일 존재 여부 확인.clearSaveData: 저장 데이터 삭제 (리셋/디버그 용).
데이터 직렬화 (Data Serialization)
- 수정된 클래스:
Character,StatusEffect. - 메서드:
toJson()및fromJson()메서드 추가. - 아이템 처리:
Item객체 자체를 저장하는 대신 ID를 저장하고, 로드 시ItemTable을 통해 복구.
UI 변경 사항 (UI Changes)
- 설정 화면 (
SettingsScreen):lib/screens/settings_screen.dart생성.- 버튼: "게임 재시작 (Restart Game)", "메인 메뉴로 (Return to Main Menu)".
- 메인 래퍼 (
MainWrapper):BottomNavigationBar에 "Settings" 탭 추가.
- 메인 메뉴 (
MainMenuScreen):StatefulWidget으로 변환.- 초기화 시 저장 데이터 확인.
- 저장 데이터 존재 시 "이어하기 (CONTINUE)" 버튼 표시.
전투 로직 통합 (Battle Logic Integration)
- 자동 저장:
_prepareNextStage(스테이지 클리어 후 실행) 내부에서SaveManager.saveGame호출. - 불러오기:
BattleProvider에loadFromSave메서드를 추가하여 JSON 데이터로부터 상태 복구.