건설 시간 시스템: 배치 후 공사장 표시 → 시간 경과 시 완공

- BuildDef.buildTime 추가 (부엌 60초, 채석장 120초), 상점에 ⏱ 표시
- 배치 확정 시 constructionUntil 타임스탬프 설정 (오프라인에도 진행)
- 건설 중: 공사장 일러스트 + 🔨 카운트다운 판자 배지 + "건설 중" 라벨,
  생산·배치 불가, 회관 증축 요건에도 미인정
- 패널: 공사장 이미지 + 진행 바 + 남은 시간 표시
- 완공 시 tick에서 자동 전환

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
이 커밋은 다음에 포함됨:
kjs
2026-08-13 16:08:28 +09:00
co-authored by Claude Fable 5
부모 1f858352a0
커밋 c50e12400b
7개의 변경된 파일과 77개의 추가작업 그리고 5개의 파일을 삭제
+4 -2
파일 보기
@@ -25,6 +25,7 @@ export function catSprite(breed: string, frame: CatFrame): string {
// 건물 일러스트 (public/assets/buildings/)
export const BUILDING_IMG: Record<string, string> = {
construction: "/assets/buildings/construction.png",
hall: "/assets/buildings/hall.png",
dock: "/assets/buildings/dock.png",
lumberyard: "/assets/buildings/lumberyard.png",
@@ -151,18 +152,19 @@ export interface BuildDef {
maxSlots: number;
cost: Partial<Record<"fish" | "wood" | "stone", number>>;
reqHallLv: number;
buildTime: number; // 건설 소요 시간 (초)
desc: string;
}
export const BUILD_DEFS: BuildDef[] = [
{
id: "kitchen_1", type: "kitchen", name: "부엌", emoji: "🍳",
aptitude: "cooking", maxSlots: 2, cost: { wood: 60 }, reqHallLv: 1,
aptitude: "cooking", maxSlots: 2, cost: { wood: 60 }, reqHallLv: 1, buildTime: 60,
desc: "요리 적성 고양이가 생선으로 요리를 만들고, 배고픈 고양이들이 알아서 먹으러 옵니다.",
},
{
id: "quarry_1", type: "quarry", name: "채석장", emoji: "⛏️",
aptitude: "mining", resource: "stone", maxSlots: 3, cost: { wood: 120 }, reqHallLv: 2,
aptitude: "mining", resource: "stone", maxSlots: 3, cost: { wood: 120 }, reqHallLv: 2, buildTime: 120,
desc: "채굴 적성 고양이가 돌을 캡니다. 돌은 회관 증축과 중급 건물에 필요합니다.",
},
];