최종 갱신 (KST)

← 일감 목록
T-039

클라 — 잠긴 작업슬롯의 해금 안내·구매 UI

태웅 New 우선순위 보통 목표 미정 · 🎨 아트만 남음

배경

지금 화면은 잠긴 칸과 열린 빈 칸을 구분하지 못한다.

작업슬롯 목록의 프레임은 씬에 8칸이 있고, 전부 Assets/Prefabs/WorkSlotFrame.prefab의 "비어있음." 을 띄운다. 서버가 열어 주는 슬롯은 현재 0번 하나뿐이라, 1~7번을 누르면 배치 화면이 열리고 → 배치 요청이 나가고 → 서버가 InvalidSlotIndex로 거절해 "아직 열리지 않은 작업 슬롯입니다" 알림이 뜬다.

플레이어 입장에서는 "왜 안 되는지"는 알아도 "어떻게 여는지"는 알 수 없다. 잠긴 칸에 여는 방법을 표시하고, 그 자리에서 열 수 있어야 한다.

할 일

2026-09-16 — ⏸ → ▶. T-038이 끝나 패킷 3종(C_UnlockRequest · S_UnlockResponse · S_UnlockListResponse)과 로그인 시 열린 목록(슬롯 스냅샷보다 앞)이 들어왔다. 신규 계정은 2칸으로 시작하고 잠긴 칸은 스냅샷에 없다. 착수 가능.

2026-09-14 — 슬롯 해금은 해금 시스템으로 통일됐다. 조건은 클라가 테이블에서 만든다 — WorkSlotTable.WorkSlotTID(칸 번호) → UnlockTID → UnlockTable의 골드·선행·계정 레벨. 테이블은 이미 미러돼 있어 표시는 지금 만들 수 있다. 요청·열린 목록 패킷(C_UnlockRequest · S_UnlockResponse · S_UnlockListResponse)은 T-038로 들어갔다.

요청·결과 항목의 서버 패킷은 들어갔다 (T-038). 아래 ⏸ 표기는 2026-09-16에 풀렸다.

2026-09-17 — ▶ → 🎨. 조건 표시 → 조건 충족 후 요청 → 실제 해금까지 플레이로 확인됐다. 남은 것은 🎨 해금 연출(아트)뿐이다.

2026-09-16 — 잠김 표시(조건 문구) · 클릭 분기(선행·골드 부족 알림 → 확인 팝업 UIManager.AskConfirm) · 요청·대기·결과 문구까지 코드가 들어갔다. "지금 열 수 있음"을 칸에서 따로 구분하지는 않는다 — 골드 부족은 누르면 알림으로 안다.

  • [x] 잠긴 칸을 "비어있음."이 아니라 잠김 상태로 그린다 — 열림 여부는 S_UnlockListResponse · 칸 목록은 WorkSlotTable (WorkSlotFrame.prefab + WorkStationListPresenter.Rebuild)
  • [x] 칸에 여는 방법을 표시한다 — UnlockTable의 골드·선행(Name으로 표시)·계정 레벨을 문구로. 보유 골드와 대조해 "지금 열 수 있음"도 구분
  • [x] 잠긴 칸 클릭 → 배치 화면이 아니라 해금 안내·구매로 분기한다. 지금은 WorkStationListPresenter.OpenSelect가 배치 여부와 무관하게 무조건 배치 화면을 연다
  • [x] C_UnlockRequest{UnlockTID, Currency} 전송(지금은 골드뿐) + ServerWaitManager.Begin 대기 + 결과 문구 (UI/Shared/ResultMessages.cs에 InvalidUnlockTID · AlreadyUnlocked · UnlockLocked 문구를 더한다 — NotEnoughCurrency는 있다)
  • [x] 해금 성공 시 슬롯 목록이 즉시 갱신되는지 확인 (PlayerDataModel 경유)
  • [ ] 🎨 해금 연출

완료 조건

잠긴 칸이 잠긴 것으로 보이고, 여는 조건이 칸에 적혀 있으며, 조건을 만족한 상태에서 그 칸을 눌러 실제로 슬롯이 열린다.

막고 있는 것 / 선행 일감

  • 없음. T-038 서버 구현이 2026-09-16 끝났다.
  • 조건 문구의 원형은 해금 7장 — 클라가 UnlockTable에서 만든다. 골드 값은 테스트값이다.

관련 커밋

  • b684fb3 — 잠긴 작업슬롯 표시와 해금 요청

참고

  • Assets/Scripts_Client/UI/Main/WorkStationListPresenter/WorkStationListPresenter.cs
  • Assets/Prefabs/WorkSlotFrame.prefab — "비어있음." 라벨
  • Assets/Scripts_Client/UI/Shared/ResultMessages.cs
  • Main 규칙.md — 화면 전환 흐름