최종 갱신 (KST)

← 일감 목록
T-036

클라 — 창고 탭 전환 (자원 · 캐릭터 · 장비 · 특성)

태웅 Closed 우선순위 보통 목표 미정 · 보관됨

✅ 완료 (2026-09-02). 전환 구조가 서고 자원 · 캐릭터 두 탭이 실제로 돈다. 남은 두 탭(장비 · 특성)은 선행이 풀리지 않아 T-043로 옮겼고, 칸 이동은 T-044로 세웠다.

배경

창고에 탭 버튼 4개가 있지만 눌러도 아무것도 바뀌지 않았다. StorageTabPresenter는 버튼을 잡아 두고 "화면이 없다"를 로그로 남기는 것까지였고 (OnTabClicked → ClientLogger.Warn), 실재하는 것은 자원 탭 하나뿐이었다. InventoryPresenter 하나가 아이템 전부를 한 칸에 쏟아냈다.

막힌 것은 탭 전환이 아니라 탭에 담을 내용이었다.

착수하고 나서 드러난 것 — 막고 있던 것은 절반만 사실이었다

이 일감은 원래 캐릭터 탭도 T-026(가챠) 대기로 적혀 있었다. 실제로 확인해 보니 아니었다.

탭 데이터 실제 판정
자원 S_InventoryResponse(로그인 1회) + S_UpdateItemResponse(변경분) 있다
캐릭터 S_CharacterListResponse(로그인 1회) → PlayerDataModel.Characters 있었다. 증분 패킷이 없지만 캐릭터가 늘어날 경로 자체가 없어(가챠는 아이템 전용) 스냅샷으로 충분하다
장비 없음 못 만든다. 게다가 ItemTableRow.ItemType은 산업 축이라 장비를 담을 칸이 테이블에 없다
특성 없음 서버 미구현

"T-026이 와야 캐릭터 탭을 만든다"는 여러 종으로 목록·필터를 실검증할 수 없다는 뜻이었지, 화면을 못 만든다는 뜻이 아니었다. 1종이어도 그려진다.

한 일

  • [x] 탭 전환 seam — StorageTab enum + TabEntry(탭 ↔ 버튼) 배선. UIManager.mainScreens와 같은 패턴이고 ValidateTabs가 배선을 Start에서 검증한다
  • [x] 격자 하나 + 탭별 공급자로 구조 전환 — InventoryPresenter → StorageGridPresenter. 탭마다 격자를 두지 않는다(셋의 레이아웃이 같아 세 벌이면 한쪽만 고쳐진다)
  • [x] 자원 탭 — 기존 인벤토리를 ResourceSlotSource로 옮겨 격자에 얹었다. 기본 탭이다
  • [x] 캐릭터 탭 — CharacterSlotSource. 이름 + 배치 중 / 배치 가능을 보여 준다
  • [x] 장비·특성 탭은 버튼을 잠갔다 — 잠금은 StorageGridPresenter.HasSource에서 파생된다 (탭 줄이 따로 적지 않는다. 공급자가 생기면 저절로 열린다)
  • [x] 씬·프리팹 — Grid Presenter (↓ SUB VIEW) 개명 · 칸 프리팹 Count Text → Sub Text

함께 고친 것 — 정렬을 구조적으로 막고 있던 자리

옛 InventoryPresenter는 ItemId → 프레임을 고정 매핑하고 빈 프레임을 앞에서부터 찾았다. 아이템이 처음 들어온 순서로 칸이 영구히 고정돼 정렬을 넣을 자리가 없었다.

→ i번째 항목 → i번째 프레임 으로 바꿨다. 순서의 주인이 공급자로 옮겨가 정렬·걸러 내기는 공급자만 고치면 되고 격자는 그대로다(T-015).

칸을 Destroy하던 것도 Clear() + 풀 반환으로 바꿨다 — InventorySlotView의 주석은 이미 "파괴하지 않고 재사용"이라고 말하는데 코드가 그렇지 않았다.

완료 조건

탭을 누르면 그 탭의 목록만 보이고, 새 탭을 추가할 때 켜고 끄는 코드를 한 곳만 고치면 된다. ✅

⚠️ 네 탭이 다 차야 끝나는 일감이 아니었다. seam이 서고 자원 탭이 그 위에 얹히면 구조적 몫은 끝난다 — 나머지는 선행이 풀리는 대로 얹는다. 실제로는 캐릭터 탭까지 얹혀서 예상보다 한 칸 더 나갔다.

남은 것 (새 일감으로 옮겼다)

  • T-043 — 장비 · 특성 탭
  • T-044 — 칸 이동(드래그 재배치)
  • 산업별 필터·정렬은 T-015에 이미 있다 (새로 세우지 않았다)

관련 커밋

  • 미커밋 (작업 트리)

참고

  • Assets/Scripts_Client/UI/Storage/Storage 규칙.md — "탭 하나를 채우는 절차" 가 여기 있다
  • Assets/Scripts_Client/UI/Storage/StorageGridPresenter/ — 격자 · 공급자
  • Assets/Scripts_Client/UI/Storage/StorageTabPresenter/StorageTabPresenter.cs — StorageTab enum
  • 분류 기준 컬럼: GameDesign/Excel/Item.xlsx