game/prompt/54_fix_shop_logic.md

1.6 KiB

56. 상점 UI 및 로직 디버깅 (Shop UI & Logic Debugging)

1. 목표 (Goal)

  • 상점 구매 기능이 정상적으로 작동하지 않는 문제(성공 시에도 빨간색 에러 메시지 표시 등)를 해결합니다.
  • ShopUI에서 ShopProvider와의 연동 로직을 개선하여 사용자 피드백(SnackBar)을 명확하게 만듭니다.

2. 구현 상세 (Implementation Details)

ShopUI 수정

  • 구매 확인 다이얼로그 (_showBuyConfirmation):
    • 기존: buyItem 호출 후 결과 확인 없이 다이얼로그 닫음 + ShopProvider의 메시지 상태에 의존하여 build 메서드에서 스낵바 출력 (타이밍 이슈 및 색상 고정 문제 발생).
    • 변경: shopProvider.buyItem(item, player)bool 반환값을 직접 확인.
      • 성공 (true): 다이얼로그 닫고 초록색 "Bought [Item Name]" 스낵바 출력.
      • 실패 (false): 다이얼로그 닫고 빨간색 에러 메시지(Provider의 lastShopMessage) 스낵바 출력.
  • 불필요한 코드 제거: build 메서드 내의 WidgetsBinding.instance.addPostFrameCallback 블록 삭제.

ShopProvider 확인

  • buyItem 메서드는 이미 성공/실패 여부를 bool로 반환하고, 실패 시 _lastShopMessage를 설정하도록 잘 구현되어 있음. (수정 불필요)

3. 결과 (Result)

  • 상점 아이템 구매 성공 시 정상적으로 초록색 메시지가 뜨고, 골드 부족이나 인벤토리 가득 참 등의 실패 시에는 빨간색 에러 메시지가 뜹니다.
  • 구매 로직과 UI 피드백이 동기화되어 사용자 혼란을 방지했습니다.