game/prompt/17_inventory_discard_featur...

1.8 KiB

17. 인벤토리 아이템 버리기 기능 (상점 기능 확장 대비)

목표

인벤토리(Bag)에 있는 아이템을 선택하여 삭제(버리기)할 수 있는 기능을 추가한다. 이 과정에서 실수로 버리는 것을 방지하기 위한 확인 다이얼로그를 구현하며, 향후 상점(판매) 기능 추가 시 UI 및 로직을 재활용할 수 있는 구조를 고려한다.

구현 내용

  1. BattleProvider 수정 (lib/providers/battle_provider.dart)

    • discardItem(Item item) 메서드 추가: 인벤토리 리스트에서 해당 아이템을 제거하고 로그를 남긴다.
    • 이 메서드는 추후 sellItem 등과 유사한 구조를 가지게 된다.
  2. InventoryScreen 수정 (lib/screens/inventory_screen.dart)

    • 인터랙션 변경: 가방(Bag)의 아이템 클릭 시, 기존에는 바로 '장착 확인창'이 떴으나, 이제는 **'아이템 옵션 메뉴(SimpleDialog)'**가 먼저 뜨도록 변경한다.
    • 아이템 옵션 메뉴:
      • 옵션 1: Equip (기존 장착 로직 연결)
      • 옵션 2: Discard (버리기 확인창 연결)
      • (추후 Sell 옵션이 이곳에 추가될 수 있음)
    • 버리기 확인 다이얼로그 (_showDiscardConfirmationDialog):
      • "정말 버리시겠습니까?" 메시지와 아이템 정보를 보여준다.
      • 확인 시 provider.discardItem(item)을 호출한다.
      • 이 다이얼로그 구조는 제목과 콜백 함수만 바꾸면 '판매 확인창'으로도 쉽게 재활용 가능하다.

예상 결과

  • 인벤토리 아이템 클릭 -> [Equip, Discard] 메뉴 팝업.
  • Discard 선택 -> "Discard [Item Name]?" 확인 팝업.
  • Confirm -> 아이템 삭제 및 로그 출력.