최종 갱신 (KST)

← 일감 목록
T-074

클라 — 장비 장착 · 해제 UI (캐릭터에 끼우고 뺀다)

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

T-043에서 "별도 일감"으로 미뤄 두고 등록되지 않은 채 남아 있던 조각이다 (2026-09-20 발견). 장비 탭은 열렸지만 장비를 낄 방법이 없다.

배경

서버는 다 서 있는데 클라에 누르는 자리가 없다. 장착·해제 패킷은 T-002에서 들어왔고(e860066), 클라에는 구독자가 하나도 없다(2026-09-20 전수 확인 — C_EquipRequest· C_UnequipRequest를 쓰는 클라 코드 0건).

그래서 지금 이런 상태다:

상태
장비를 얻는 길 치트 GiveEquip · 장비 뽑기(서버 완료 → 클라 배선은 T-067)
장비를 보는 곳 창고 장비 탭 ✅ (T-043, 2026-09-19)
장비를 끼우는 곳 없다

⚠️ T-067 배선이 끝나는 순간 이게 드러난다 — 정식 경로로 장비가 쏟아지는데 낄 데가 없다. 창고 장비 탭의 '배' 마크는 켜지는 것까지 확인됐다(2026-09-21). 꺼지는 쪽은 해제 경로가 이 일감에서 생겨야 볼 수 있다.

서버가 주는 것 (2026-09-20 미러 확인)

내용
요청 C_EquipRequest { long CharacterId, long EquipId, EEquipSlot Slot } · C_UnequipRequest { long CharacterId, EEquipSlot Slot }
응답 S_EquipResponse { Result, CharacterId, Slot }
칸 EEquipSlot — Weapon=1 · Accessory1=2 · Accessory2=3 · Gem=4 (None=0)
세팅 정보 EquipInfo.EquippedCharacterId(0 = 창고) · EquippedSlot(창고면 None) — 개체마다 실려 온다
반영 바뀐 개체는 S_EquipSyncResponse로 온다(최대 3개 — 교체로 밀려난 것 포함). 속도 변화는 S_WorkStationSlotSyncResponse로 따로
결과 코드 EquipNotOwned(600) · InvalidEquipSlot(601) · EquipKindMismatch(602) · EquipSlotEmpty(603)
  • 칸은 클라가 고른다 — 장신구는 Accessory1·Accessory2 어디든 된다(서버 주석).
  • 다른 캐릭터가 이미 끼고 있으면 서버가 옮긴다 — 클라가 먼저 해제 요청을 보낼 필요가 없다. ※ 다만 클라 목록은 창고에 있는 것만 낸다(2026-09-24 결정) — 이 경로는 화면에 없다.
  • 받는 그릇도 이미 있다 — PlayerDataModel.Equips·EquipsChanged가 S_EquipSyncResponse를 반영한다.

할 일

  • [x] 어디에 붙일지 먼저 정한다 — 캐릭터 상세 화면인가 · 작업슬롯 세팅 화면인가 · 창고 장비 탭에서 캐릭터를 고르는 쪽인가. ⚠️ 이 판단이 폴더와 문서 자리를 정하므로 코드보다 먼저다(ugui-mvp · UI 배치 현황.md)
  • [x] 장착 칸 4개를 그리는 뷰 — 캐릭터 하나의 Weapon · Accessory1 · Accessory2 · Gem. 빈 칸과 낀 칸이 구분돼야 한다. 칸 표시는 창고 장비 탭과 같은 읽기(이름 · 효과 한 줄 · 등급색)를 쓴다
  • [x] 낄 장비를 고르는 흐름 — 칸을 누르면 그 칸에 맞는 창고 장비만 고를 수 있게 한다. ⚠️ 클라가 걸러도 거절은 서버가 한다(EquipKindMismatch) — 클라 판단은 표시용이다
  • [x] 해제 — C_UnequipRequest. 빈 칸을 해제하면 EquipSlotEmpty
  • [x] S_EquipSyncResponse 반영 — 한 번에 여러 개가 온다(교체로 밀려난 개체 포함). EquipId로 찾아 덮어쓰고, 장착 칸 뷰와 창고 장비 탭이 함께 갱신되는지 본다
  • [x] '배' 마크 — 켜지는 것은 확인됐다 (사용자 실측 2026-09-21 · T-043에서 넘어온 항목). 꺼지는 쪽은 여기서 본다 — 해제 경로가 이 일감에서 생기기 때문이다
  • [x] 속도가 실제로 바뀌는지 — 장착 후 S_WorkStationSlotSyncResponse가 와서 슬롯 주기가 짧아지는지
  • [x] ResultMessages에 EquipNotOwned · InvalidEquipSlot · EquipKindMismatch · EquipSlotEmpty 문구 추가

어디에 붙였나 (2026-09-24)

작업슬롯 세팅 화면이다 — 캐릭터 맥락이 거기에만 있다. 팝업을 띄우지 않고 효율 계산이 있던 자리를 장비 고르기 목록으로 갈아 끼운다(#Main Canvas가 이미 쓰는 수법).

무엇 어디
효과 문구·칸 이름·낄 수 있는 종류 UI/Shared/EquipLabel.cs (새 파일 — 창고 장비 탭과 같은 출처)
목록 한 줄 UI/Main/WorkStationSelectPresenter/EquipPickRowView.cs + Assets/Prefabs/EquipPickRowView.prefab
칸 4개 · 고르기 · 요청 WorkStationSelectPresenter (#region 장비 장착 · 해제)
응답 PlayerDataModel.EquipCompleted (ServerPacketHandler.EquipResponded 구독)
씬 칸 4개에 Button·LayoutElement·Icon Row·Effect Text · Equip Picker Panel(+Filter Panel) 신설
  • 등급색은 칸 바탕(버튼의 Target Graphic)에 칠한다 — 창고 칸·캐릭터 카드와 같은 축이다. 🎨 스프라이트가 오면 네 곳이 함께 바뀐다. 색은 임시 표기라 가시성은 감수한다(2026-09-24 사용자 결정).
  • 칸 넷은 LayoutElement로 1:1:1:1 고정(pref W 0 · flexW 1). 없으면 childControlWidth가 TMP 글자 폭을 선호 폭으로 가져와 ▼가 붙는 칸만 넓어진다.
  • 효율 계산에 속도 가산 줄(값은 총합 · 주석은 특성 +20% · 장비 +5%). ✅ 이 덕에 "개발용 전역 배수" 역산도 고쳤다(현재 ÷ (기본값 × (1 + Σ가산))). ⚠️ 가산은 클라가 서버 식을 베껴 되짚은 값이라 T-055는 그대로 남는다.

실측 — 2026-09-24 사용자 확인 완료

  • [x] 치트 GiveEquip으로 무기·장신구·보석을 만들고 칸 4개가 비어있음으로 보이는지
  • [x] 칸을 누르면 레벨 정보 · 캐릭터 칸 · 효율 계산이 접히고 장비 칸 넷이 머리 바로 아래로 오는지
  • [x] 그때 스크롤이 맨 위에 서 있는지 (장비가 많아 목록이 길어도)
  • [x] 목록에 그 칸에 맞는 종류만 보이는지
  • [x] 목록을 닫으면 캐릭터 칸만 돌아오고 레벨 정보는 접힌 그대로인지
  • [x] 고르면 칸에 이름·등급 띠가 들어오고 창고 '배' 마크가 켜지는지
  • [x] [해제] 후 칸이 비고 '배' 마크가 꺼지는지 (T-043에서 넘어온 미확인 항목)
  • [x] 슬롯 주기가 실제로 짧아지는지 · 전산업 장비는 산업을 바꿔도 유지되고 산업 한정은 빠지는지
  • [x] 끼워져 있는 장비는 목록에 안 나오는지 (해제하면 다시 나타나는지)
  • [x] 칸 넷의 폭·높이가 그대로인지(고르는 중 포함) · 빈 칸에 네모만 보이는지 · 효과 한 줄이 뜨는지
  • [x] 고르는 중인 칸이 눌린 것처럼 어두워지고, 닫으면 돌아오는지 (다른 칸에 표시가 남지 않는지)
  • [x] 산업 필터 — 열면 그 슬롯의 산업이 골라져 있는지 · 고른 산업 + 전산업만 남는지 · 칸을 옮기면 다시 슬롯 산업으로 돌아오는지
  • [x] 목록이 효과 수치 높은 순이고, 같은 수치면 전산업이 위인지
  • [x] 효율 계산의 속도 가산이 특성 + 장비 합과 맞는지 · 장비를 빼면 그만큼 줄어드는지

완료 조건

캐릭터 하나에 무기·장신구 2개·보석을 끼우고 뺄 수 있고, 창고 장비 탭의 '배' 마크가 따라 바뀌며, 그 캐릭터가 배치된 슬롯의 채취 주기가 실제로 짧아진다.

막고 있는 것 / 선행 일감

  • 없음 — 패킷·데이터·받는 그릇이 전부 서 있다.
  • 먼저 하면 좋은 것: T-067 클라 배선. 치트 없이 장비를 모아 실제 동선으로 확인할 수 있다 (선행은 아니다)

관련 커밋

참고