game/prompt/19_shop_sell_and_gold.md

1.8 KiB

19. 상점 판매 기능 및 골드 시스템 구현

목표

캐릭터에게 화폐(Gold) 개념을 도입하고, 상점 스테이지(StageType.shop)에 진입했을 때 인벤토리에서 아이템을 판매하여 골드를 획득하는 기능을 구현한다.

구현 내용

  1. Character 모델 수정 (lib/game/model/entity.dart)

    • int gold 필드를 추가한다 (기본값: 0 또는 초기 자금).
  2. 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).
  3. BattleProvider 수정 (lib/providers/battle_provider.dart)

    • sellItem(Item item) 메서드 구현:
      • 인벤토리에서 아이템 제거.
      • 아이템 가격만큼 플레이어 gold 증가.
      • 로그 기록 ("Sold [Item] for [Price] G").
  4. InventoryScreen 수정 (lib/screens/inventory_screen.dart)

    • 화면 상단(스탯 영역)에 현재 보유 Gold 표시.
    • 아이템 클릭 시 뜨는 _showItemActionDialog 수정:
      • 현재 스테이지가 StageType.shop일 경우에만 [Sell] 버튼을 활성화(또는 표시).
    • 판매 확인 다이얼로그: "Sell [Item] for [Price] G?" 확인 창 구현.

예상 결과

  • 상점 스테이지에서 인벤토리를 열면 아이템을 팔아 골드를 모을 수 있다.
  • 모은 골드는 추후 아이템 구매 기능에 사용된다.