game/prompt/43_shop_system.md

2.0 KiB

43. 상점 시스템 구현 (Shop System Implementation)

목표 (Objective)

플레이어가 획득한 골드를 소비하여 장비를 구매하고 전력을 강화할 수 있는 상점 시스템을 구현합니다. 상점은 랜덤하게 생성된 아이템을 제공하며, 리롤(새로고침) 기능을 통해 전략적인 아이템 파밍을 지원합니다.

구현 내용 (Implementation Details)

1. 데이터 및 로직 (BattleProvider)

  • _generateShopItems(): 현재 스테이지 티어에 맞는 랜덤 아이템 4개를 생성하는 로직 분리.
  • rerollShopItems(): 50골드를 지불하고 상점 아이템 목록을 새로고침하는 기능.
    • 수정 사항: StageModelshopItems 필드가 final이므로, 리스트 자체를 재할당하는 대신 기존 리스트의 내용을 clear() 후 새로운 아이템으로 addAll()하는 방식으로 변경하여 런타임 에러를 방지했습니다.
  • buyItem(Item item): 골드를 차감하고 아이템을 인벤토리에 추가하며, 상점 목록에서 해당 아이템을 제거하는 기능.

2. UI (ShopUI in stage_ui.dart)

  • 헤더: 'Merchant' 타이틀과 현재 보유 골드 표시 (황금색 강조).
  • 아이템 목록 (GridView):
    • 2열 카드 형태의 그리드 레이아웃.
    • 희귀도(Rarity)에 따른 이름 색상 및 테두리 적용.
    • 아이템 아이콘, 이름, 주요 스탯 요약 표시.
    • 가격 버튼: 보유 골드에 따라 활성/비활성화. 클릭 시 구매 확인 팝업 출력.
  • 하단 버튼:
    • Reroll (50 G): 목록 새로고침 버튼 (골드 부족 시 비활성화).
    • Leave Shop: 상점을 떠나 다음 스테이지로 이동.

3. 테스트 및 복구 (Test & Restoration)

  • 임시 테스트 설정 (완료):
    • 초기 골드 200G로 시작.
    • 첫 스테이지를 강제로 상점(Shop)으로 설정.
  • 정상 설정으로 복구 완료:
    • 초기 골드 50G로 시작.
    • 상점은 매 5번째 스테이지마다 등장하도록 복구.