2.0 KiB
2.0 KiB
43. 상점 시스템 구현 (Shop System Implementation)
목표 (Objective)
플레이어가 획득한 골드를 소비하여 장비를 구매하고 전력을 강화할 수 있는 상점 시스템을 구현합니다. 상점은 랜덤하게 생성된 아이템을 제공하며, 리롤(새로고침) 기능을 통해 전략적인 아이템 파밍을 지원합니다.
구현 내용 (Implementation Details)
1. 데이터 및 로직 (BattleProvider)
_generateShopItems(): 현재 스테이지 티어에 맞는 랜덤 아이템 4개를 생성하는 로직 분리.rerollShopItems(): 50골드를 지불하고 상점 아이템 목록을 새로고침하는 기능.- 수정 사항:
StageModel의shopItems필드가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번째 스테이지마다 등장하도록 복구.