36 lines
1.4 KiB
Markdown
36 lines
1.4 KiB
Markdown
# 플레이어 데이터 중앙화 (Centralize Player Data)
|
|
|
|
## 목표
|
|
|
|
캐릭터 선택 화면과 전투 시스템(`BattleProvider`)에서 사용하는 플레이어 스탯이 하드코딩되어 불일치하는 문제를 해결하기 위해, 플레이어 데이터를 JSON 파일로 중앙화하여 관리합니다.
|
|
|
|
## 주요 변경 사항
|
|
|
|
### 1. 데이터 구조 추가
|
|
|
|
- **`assets/data/players.json`**: 플레이어 템플릿 데이터를 정의했습니다.
|
|
```json
|
|
[
|
|
{
|
|
"id": "warrior",
|
|
"name": "Warrior",
|
|
"description": "A balanced fighter...",
|
|
"baseHp": 50,
|
|
"baseAtk": 5,
|
|
"baseDefense": 5,
|
|
...
|
|
}
|
|
]
|
|
```
|
|
- **`lib/game/data/player_table.dart`**: `players.json`을 로드하고 파싱하는 `PlayerTable` 클래스를 구현했습니다.
|
|
|
|
### 2. 게임 로직 업데이트
|
|
|
|
- **`lib/main.dart`**: 앱 시작 시 `PlayerTable.load()`를 호출하여 데이터를 메모리에 적재합니다.
|
|
- **`lib/screens/character_selection_screen.dart`**: 하드코딩된 텍스트 대신 `PlayerTable.get("warrior")`를 사용하여 UI를 렌더링합니다.
|
|
- **`lib/providers/battle_provider.dart`**: 전투 초기화(`initializeBattle`) 시 `PlayerTable`에서 캐릭터 정보를 가져와 생성합니다.
|
|
|
|
## 결과
|
|
|
|
이제 `players.json` 파일만 수정하면 게임 내 모든 곳(선택 화면, 전투 시작 스탯 등)에 일관되게 반영됩니다.
|