1.8 KiB
1.8 KiB
19. 상점 판매 기능 및 골드 시스템 구현
목표
캐릭터에게 화폐(Gold) 개념을 도입하고, 상점 스테이지(StageType.shop)에 진입했을 때 인벤토리에서 아이템을 판매하여 골드를 획득하는 기능을 구현한다.
구현 내용
-
Character 모델 수정 (lib/game/model/entity.dart)
int gold필드를 추가한다 (기본값: 0 또는 초기 자금).
-
Item 모델 및 가격 책정 로직 (lib/game/model/item.dart, lib/game/data/item_table.dart)
Item클래스에int price필드를 추가한다.- 모든 아이템 데이터(
ItemTable)에 일일이 가격을 적는 대신,ItemTemplate.createItem()메서드 내부에서 스탯(ATK, HP, DEF)을 기반으로 가격을 자동 산출하는 공식을 적용하여 효율성을 높인다. - 공식 예시:
(atk * 10) + (hp * 2) + (armor * 5) + (effects.length * 20).
-
BattleProvider 수정 (lib/providers/battle_provider.dart)
sellItem(Item item)메서드 구현:- 인벤토리에서 아이템 제거.
- 아이템 가격만큼 플레이어
gold증가. - 로그 기록 ("Sold [Item] for [Price] G").
-
InventoryScreen 수정 (lib/screens/inventory_screen.dart)
- 화면 상단(스탯 영역)에 현재 보유
Gold표시. - 아이템 클릭 시 뜨는
_showItemActionDialog수정:- 현재 스테이지가
StageType.shop일 경우에만 [Sell] 버튼을 활성화(또는 표시).
- 현재 스테이지가
- 판매 확인 다이얼로그: "Sell [Item] for [Price] G?" 확인 창 구현.
- 화면 상단(스탯 영역)에 현재 보유
예상 결과
- 상점 스테이지에서 인벤토리를 열면 아이템을 팔아 골드를 모을 수 있다.
- 모은 골드는 추후 아이템 구매 기능에 사용된다.