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 클라 배선. 치트 없이 장비를 모아 실제 동선으로 확인할 수 있다 (선행은 아니다)
관련 커밋
feat: 작업슬롯 설정에 장비 장착·산업 레벨 정보 (T-074·T-078)— 작업 경위는.claude/Agent/2026-09-24-equip-attach-ui.md
참고
- 서버 구현: T-002 · 패킷은
Assets/Scripts_Server/Protocol/MikaPacket.cs - 장비 효과 사다리(등급별 가산 천분율): 캐릭터 1.3 · 이슈 #27 코멘트
- 치트
GiveEquip = 8(Arg1 =EquipTID) →Server/docs/치트.md