/**
 * templates.js — шаблоны игр для KubikonStudio.
 *
 * Каждый шаблон — это готовый снимок project_data, СГЕНЕРИРОВАННЫЙ
 * самим движком: настоящий гладкий ландшафт (RobloxTerrain / Surface
 * Nets + биомы + деревья/трава/цветы), а для геймплейных — плюс
 * примитивы и скрипты.
 *
 * JSON-снимки лежат в ./template-data/<id>.json. Их собрал инструмент
 * dev-tools/wiki-shots/gen-templates.js: открывает редактор, запускает
 * window.__robloxTest(size, params) с пресет-параметрами под жанр,
 * сериализует результат через BabylonScene.serialize().
 *
 * Чтобы пересобрать шаблоны (новые параметры/декор):
 *   1) правишь CONFIGS в gen-templates.js
 *   2) node gen-templates.js          — пересоберёт JSON
 *   3) копируешь template-data/*.json сюда
 *   4) node shoot-template.js         — пересоберёт превью-картинки
 *
 * build() шаблона возвращает project_data — его сразу можно
 * отдать в createProject({ project_data: JSON.stringify(build()) }).
 */

import plain from './template-data/plain.json';
import hills from './template-data/hills.json';
import island from './template-data/island.json';
import city from './template-data/city.json';
import village from './template-data/village.json';
import platformer from './template-data/platformer.json';
import shooter from './template-data/shooter.json';
import racing from './template-data/racing.json';

// build() отдаёт глубокую копию — чтобы создание игры из шаблона
// не мутировало общий импортированный объект.
const snap = (data) => () => JSON.parse(JSON.stringify(data));

/** Список всех шаблонов с метаданными — рендерится в KubikonStudio. */
export const TEMPLATES = [
    // === Геймплейные (с готовой логикой) ===
    {
        id: 'platformer',
        title: 'Платформер',
        desc: 'Прыгай по платформам до финиша',
        icon: 'tpl-platformer',
        color: '#5a8c3e',
        genre: 'platformer',
        build: snap(platformer),
    },
    {
        id: 'shooter',
        title: 'Шутер',
        desc: 'Уничтожь все мишени кликом',
        icon: 'tpl-shooter',
        color: '#a83232',
        genre: 'shooter',
        build: snap(shooter),
    },
    {
        id: 'racing',
        title: 'Гонки',
        desc: 'Пройди трек с чек-поинтами на время',
        icon: 'tpl-racing',
        color: '#d97a3a',
        genre: 'racing',
        build: snap(racing),
    },
    // === Ландшафтные (готовый гладкий мир) ===
    {
        id: 'plain',
        title: 'Равнина',
        desc: 'Холмистый луг с цветами и деревьями',
        icon: 'tpl-plain',
        color: '#5a8c3e',
        genre: 'sandbox',
        build: snap(plain),
    },
    {
        id: 'hills',
        title: 'Холмы',
        desc: 'Высокие горы со снежными вершинами',
        icon: 'tpl-hills',
        color: '#7a8b7a',
        genre: 'adventure',
        build: snap(hills),
    },
    {
        id: 'island',
        title: 'Острова',
        desc: 'Архипелаг с пляжами и пальмами',
        icon: 'tpl-island',
        color: '#3a8bd9',
        genre: 'adventure',
        build: snap(island),
    },
    {
        id: 'city',
        title: 'Город',
        desc: 'Городские кварталы с домами',
        icon: 'tpl-city',
        color: '#5a6478',
        genre: 'sandbox',
        build: snap(city),
    },
    {
        id: 'village',
        title: 'Деревня',
        desc: 'Деревенька с домиками на поляне',
        icon: 'tpl-village',
        color: '#a8743f',
        genre: 'rpg',
        build: snap(village),
    },
];
