건설 방식 개편: 상점 구매 + 자유 배치 (클래시 오브 클랜 방식)
- 건물 위치가 게임 상태(building.pos)로 이동, 구세이브 자동 마이그레이션 - 🛒 상점 패널: 건물 목록·비용·해금 조건, 구매 → 배치 모드 진입 - 배치 모드: 배치 가능 타일 하이라이트, 호버 타일 초록/빨강 + 고스트, 클릭 확정(비용은 확정 시 차감), ESC/취소 버튼 - 배치 규칙: 물·나무·회관·기존 건물 차단, 부두는 물가 열 전용 - 기존 건물 📍 이동 기능 (건물 패널), 이동 시 배치된 고양이가 새 일터로 걸어감 - 공터(🚧) 방식 제거 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
이 커밋은 다음에 포함됨:
@@ -86,6 +86,33 @@ export const PASSIVES: PassiveDef[] = [
|
||||
{ key: "workaholic", name: "일중독", kind: "tradeoff", desc: "작업 속도 +60%, 행복도 감소 +40%", speedMul: 1.6 },
|
||||
];
|
||||
|
||||
// ---------- 마을 보드 ----------
|
||||
|
||||
import type { BuildingType } from "./types";
|
||||
|
||||
export const BOARD_COLS = 11;
|
||||
export const BOARD_ROWS = 11;
|
||||
export const HALL_TILE = { i: 5, j: 3 };
|
||||
export const TREE_TILES: Array<{ i: number; j: number }> = [
|
||||
{ i: 0, j: 7 }, { i: 1, j: 9 }, { i: 3, j: 9 }, { i: 0, j: 9 },
|
||||
{ i: 1, j: 6 }, { i: 3, j: 7 },
|
||||
];
|
||||
export const isWaterTile = (i: number) => i >= BOARD_COLS - 1;
|
||||
|
||||
// 배치 규칙: 부두는 물가(강 바로 옆 열)에만
|
||||
export type PlacementRule = "land" | "nearWater";
|
||||
export const PLACEMENT_RULES: Partial<Record<BuildingType, PlacementRule>> = {
|
||||
dock: "nearWater",
|
||||
};
|
||||
|
||||
// 구버전 세이브(위치 없음) 마이그레이션용 기본 위치
|
||||
export const DEFAULT_BUILDING_POS: Record<string, { i: number; j: number }> = {
|
||||
dock_1: { i: 9, j: 5 },
|
||||
lumberyard_1: { i: 2, j: 8 },
|
||||
kitchen_1: { i: 6, j: 7 },
|
||||
quarry_1: { i: 1, j: 2 },
|
||||
};
|
||||
|
||||
// ---------- 성장 ----------
|
||||
|
||||
export const EXP_PER_LEVEL = 90; // 레벨업 필요 경험치 = 레벨 × 90
|
||||
|
||||
새 이슈에서 참조
사용자 차단