27 lines
1.8 KiB
Markdown
27 lines
1.8 KiB
Markdown
## 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 -> 아이템 삭제 및 로그 출력.
|