1.9 KiB
1.9 KiB
21. 아이템 시스템 JSON 리팩토링 (Refactor Item System to JSON)
1. 개요 (Overview)
기존에 ItemTable 클래스 내부에 하드코딩되어 있던 아이템 데이터(Weapon, Armor, Shield, Accessory)를 외부 JSON 파일(assets/data/items.json)로 분리하여 관리하도록 리팩토링했습니다. 이를 통해 데이터와 로직을 분리하고, 추후 데이터 확장 및 관리를 용이하게 만들었습니다.
2. 변경 사항 (Changes)
A. 데이터 파일 생성
- 파일:
assets/data/items.json - 내용: 기존
ItemTable에 정의되어 있던 모든 아이템 데이터를 JSON 형식으로 이관. - 구조:
weapons,armors,shields,accessories4개의 배열을 포함하는 객체.
B. 설정 변경
- 파일:
pubspec.yaml - 내용:
assets섹션에assets/data/경로 추가.
C. 코드 변경
lib/game/model/item.dartItemEffect클래스에fromJson팩토리 생성자 추가.
lib/game/data/item_table.dartItemTemplate클래스에fromJson팩토리 생성자 추가.- 하드코딩된 리스트(
weapons,armors등)를 빈 리스트로 초기화. load()비동기 메서드 추가:rootBundle을 통해 JSON 파일을 읽어와 리스트를 채움.
lib/main.dartmain()함수를async로 변경.- 앱 실행 전
await ItemTable.load()를 호출하여 데이터 초기화 보장.
3. 검증 (Verification)
test/item_load_test.dart를 생성하여 JSON 로딩 및 파싱이 정상적으로 이루어지는지 테스트 완료.- 앱 실행 시 에러 없이 아이템 데이터가 로드됨을 확인.
4. 향후 계획 (Next Steps)
- 새로운 아이템 추가 시
assets/data/items.json파일만 수정하면 됨. - 상점 구매 목록 등도 JSON 데이터를 기반으로 구성 가능.