인벤토리(WBP_InventoryPanel / InventoryPanelWidget) 작업
1. 장비 슬롯 버튼 툴팁이 마우스에 붙어 안 사라지던 문제
- 위치:
NativeTick()
- 원인: 툴팁 강제 닫기 안전장치가 그리드만 검사 → 슬롯 버튼 호버 중 매 틱
CloseToolTip()이 불려 Slate 상태머신이 꼬임.
- 변경: 조건을
그리드 호버 || 슬롯 버튼 호버 통합으로 확장. 두 영역 어디에도 호버가 없을 때만 CloseToolTip() 호출.
Button_SlotHead/Weapon/Chest/Hands_L/Hands_R/Legs/Feet를 IsWidgetOrDescendantHovered로 검사(null 안전).
2. 장비 교체 확인 창이 뜰 때 그리드 툴팁 잔상 제거
- 위치:
ShowWeaponSwapConfirm(bShow=true)
- 원인: 더블클릭 시 마우스가 그리드 아이템 위에 있어 툴팁이 남음. 매 틱 CloseToolTip은 재소환 싸움을 일으켜 커서를 따라다님(회귀).
- 변경: 창이 뜨는 순간(엣지) 호버 중인 그리드 슬롯의 툴팁을
ClearWidgetTooltipRecursive로 제거 + CloseToolTip() + MarkInventoryTooltipsDirty().
- 창이 닫히고 마우스가 슬롯을 벗어나면
ApplyInventorySlotTooltips가 툴팁을 복구.
3. 교체 확인 창을 마우스 커서 옆에 표시
- 추가 함수:
PositionConfirmDialogNearCursor(UWidget* DialogWidget)
- 커서 절대좌표 → 부모 Canvas 로컬좌표 변환(+12,+12 오프셋), 화면 밖으로 안 나가게 클램프.
- 앵커/정렬을 좌상단(0,0)으로 고정 후
UCanvasPanelSlot::SetPosition.
- 적용: 장비 교체 창(
Border_WeaponSwapConfirm), 퀵슬롯 교체 창(Border_QuickSlotReplaceConfirm) 모두 커서 옆에 표시.
- include 추가:
Components/CanvasPanelSlot.h
4. 퀵슬롯 교체 창이 퀵슬롯 휠에 가려지던 z-order 문제
- 배경: 인벤토리 패널 z50, 퀵슬롯 휠 z80 → 패널 안(z50)의 교체 창이 휠(z80) 뒤에 깔림.
- 변경:
HandleQuickSlotWheelSlotClicked에서 교체 확인 시 휠을 HitTestInvisible + z49(패널 아래)로 재배치(RemoveFromParent → AddToViewport(49)), bQuickSlotWheelLowered = true.
- 신규 헬퍼
RestoreQuickSlotWheelZOrder(): 휠을 원래 z80으로 복원.
ConfirmQuickSlotReplace / CancelQuickSlotReplace에서 복원 호출(취소 시 휠 다시 Visible).
- 멤버 추가:
bool bQuickSlotWheelLowered
- ⚠️ 주의: 휠을 패널 아래로 내리므로 패널 배경이 불투명하면 휠이 가려질 수 있음(필요 시 교체 창을 뷰포트 최상단으로 올리는 방식으로 전환).
5. 사용 버튼(Button_UseConsumable) — 소모품일 때만 표시
- 헤더:
Button_UseConsumable을 BindWidgetOptional로 선언(WBP 위젯명 일치 필요).
- 위치:
UpdateEquipActionButtons()
- 변경: 선택 아이템이 소모품일 때만
Visible, 그 외 Collapsed. 활성화는 CanUseSelectedConsumable()(보유 수량>0).
- 클릭 동작은 기존 WBP 처리 유지(가시성만 C++ 제어).
- ⚠️ WBP에 이 버튼 Visibility 바인딩이 있으면 제거해야 충돌 없음.