ca5faeea创建于 9 天前历史提交
/**
 * Game configuration.
 *
 * All shared dimensions, colors and tuning live here so that the rest of the
 * code can speak in terms of grid cells / world tiles, while only this file
 * cares about pixel sizes.
 */

export const CONFIG = Object.freeze({
    grid: {
        width: 14,
        height: 14,
    },

    // A "tile" is one cell on the isometric ground grid.
    // 2:1 isometric tile (classic look), 64px wide × 32px tall.
    tile: {
        w: 64,
        h: 32,
    },

    // Each tile is 4×4 voxels. So a single voxel cube is 16×16 (top face)
    // and 16 px tall on screen. This keeps assets crisp and chunky.
    voxel: {
        perTile: 4,        // voxels per tile edge
        size: 16,          // screen pixels (top-face width)
        height: 16,        // screen pixels (vertical extent)
    },

    camera: {
        minZoom: 0.5,
        maxZoom: 3.0,
        defaultZoom: 1.4,
    },

    // For depth sorting in the scene.
    layers: Object.freeze({
        TERRAIN: 0,
        WATER:   1,
        OBJECT:  2,
    }),

    storageKey: 'mykonos-island-voxels.save.v1',

    // Bright Mediterranean palette used by procedurally-generated assets.
    palette: Object.freeze({
        // Whites
        white:        '#fafaf5',
        whiteShadow:  '#e6e2d3',
        whiteDeep:    '#cfc9b7',

        // Cobalt / blues
        cobalt:       '#1b5ba8',
        cobaltLight:  '#2e6fbc',
        cobaltDeep:   '#134680',
        skyBlue:      '#4287d5',

        // Terrain
        grass:        '#7eaa5f',
        grassDark:    '#5c8a44',
        grassLight:   '#9bc377',
        sand:         '#e8d4a8',
        sandDark:     '#c9b084',
        path:         '#c4b49c',
        pathDark:     '#a89878',
        pathLight:    '#d6c8b0',
        sea:          '#6ec8e0',
        seaDeep:      '#4da8c4',
        seaShine:     '#a8e0ee',
        seaWall:      '#ddd3c4',

        // Vegetation
        cypress:      '#3d7355',
        cypressDark:  '#28533a',
        cypressLight: '#5a8d6e',
        olive:        '#7a9460',
        oliveDark:    '#5a7448',
        oliveLight:   '#9bb37e',
        leaf:         '#4a7a3e',
        leafDark:     '#2f5527',
        bougain:      '#d85b8e',
        bougainDark:  '#b03a6a',
        bougainLight: '#ee84ad',
        agave:        '#a4b87a',
        agaveDark:    '#7a8e54',
        dryGrass:     '#cdb874',

        // Wood / earthen
        wood:         '#a07344',
        woodDark:     '#704c27',
        woodLight:    '#bd8e5b',
        terracotta:   '#c4622e',
        terraLight:   '#dc7d44',
        terraDark:    '#9a4720',
        roof:         '#bb6b3f',
        roofDark:     '#8b4825',

        // Stone / metal
        stone:        '#b5b0a2',
        stoneDark:    '#8d8878',
        stoneLight:   '#cdc8b8',
        iron:         '#3a3833',
        ironLight:    '#5a5750',
        gold:         '#e5c065',

        // Misc
        flower:       '#e16ea6',
        flowerYellow: '#f4d168',
        flowerWhite:  '#fff8e6',
        soil:         '#7a5a3c',
        soilDark:     '#5a3f25',
        crop:         '#9bc377',
        cropDark:     '#6b8e3e',
        glass:        '#eef4f7',
        flame:        '#ffc24a',
    }),
});