import { Direction } from '../core/Define';
import type { PropPlacement } from './EntitySpawnPlacement';

export type SpawnKind = 'player' | 'vehicle' | 'prop' | 'prop_decor' | 'enemy';

export interface SpawnConfig {
    x: number;
    y: number;
    kind: SpawnKind;
    playerDirection?: Direction;
    vehicleDirection?: Direction;
    /** 相对默认尺寸的比例，1 = 默认，可单独调大/调小 */
    scale?: number;
    /** 贴图路径（相对 assets/resources，无 .png）；可拾取物可单独指定 */
    texture?: string;
    /**
     * 可拾取物高度：block=砖块上（Unity Prop），ground=空地（Unity nProp）。
     * 未指定时按格子是否有 ground/border 推断。
     */
    propPlacement?: PropPlacement;
}

/** 关卡级实体贴图（留空则按 theme 自动推断） */
export interface LevelEntityTextures {
    playerFront?: string;
    playerBack?: string;
    vehicleNorth?: string;
    vehicleEast?: string;
    vehicleSouth?: string;
    vehicleWest?: string;
    /** @deprecated */
    vehicleFront?: string;
    /** @deprecated */
    vehicleBack?: string;
    prop?: string;
    /** 空地可拾取物贴图（Unity nProp*，留空则从 prop 推导） */
    propGround?: string;
}

/** 稀疏地块：key 为 "x,y" */
export interface LevelConfig {
    levelID: number;
    boundary: { x: number; y: number };
    spawns: SpawnConfig[];
    /** Unity 原 Prefab 路径（仅存档参考） */
    unityPrefab?: string;
    /** Cocos resources 路径，默认 level-prefabs/Level{id} */
    cocosPrefab?: string;
    /** Ground 层 tile 名（Baseblock / JumpBlock，与 Unity Tilemap Ground 一致） */
    ground?: Record<string, string>;
    /** Border 阻挡格（与 Unity Tilemap Border 一致） */
    /** true 或瓦片名（WallBlock、kuai11 等） */
    border?: Record<string, boolean | string>;
    /** 烘焙/调色板主题：silu、sanxing、snow … */
    theme?: string;
    /** 本关角色/载具/可拾取物贴图（优先于 theme 自动映射） */
    entityTextures?: LevelEntityTextures;
}
