/**
 * musicCatalog — реестр 20 треков GD-музыки.
 *
 * Каждый трек:
 *   - file: путь к mp3 (если есть)
 *   - fallbackSynth: параметры для процедурной генерации через Web Audio
 *     (используется когда mp3 ещё не залит)
 *   - bpm: темп — определяет тайминги препятствий в редакторе уровней
 *   - epoch: 1-10
 *   - kind: 'main' (для L*1-L*9) или 'boss' (для L*0)
 *   - durationSec: целевая длительность
 *
 * При появлении реального mp3 в /public/music/gd/ — fallback автоматически
 * отключается, играет файл.
 */

// Параметры синтезированных мелодий для каждой эпохи.
// Используется musicSynth.js для генерации звука через Web Audio API.
//
// Шкалы (lydian/minor/etc) задают набор нот для арпеджио, делая каждую
// эпоху узнаваемой.
const SCALES = {
  major:        [0, 2, 4, 5, 7, 9, 11],       // мажор
  minor:        [0, 2, 3, 5, 7, 8, 10],       // натуральный минор
  pentatonic:   [0, 3, 5, 7, 10],             // пентатоника (универсально приятная)
  dorian:       [0, 2, 3, 5, 7, 9, 10],       // тёмный мажор
  phrygian:     [0, 1, 3, 5, 7, 8, 10],       // восточная
  harmonic:     [0, 2, 3, 5, 7, 8, 11],       // гармонический минор (драматичный)
  blues:        [0, 3, 5, 6, 7, 10],
  whole:        [0, 2, 4, 6, 8, 10],          // целотоновая (космическая)
};

// 10 эпох × 2 трека = 20
export const TRACKS = [
  // I. Лес
  { id: 'epoch_01_main',  epoch: 1,  kind: 'main', bpm: 130, durationSec: 120,
    title: 'Лес — основной', file: '/music/gd/epoch_01_main.mp3',
    fallbackSynth: { rootHz: 220, scale: 'pentatonic', leadWave: 'triangle', bassWave: 'sine', mood: 'calm' } },
  { id: 'epoch_01_boss',  epoch: 1,  kind: 'boss', bpm: 130, durationSec: 240,
    title: 'Лес — босс «Стражник леса»', file: '/music/gd/epoch_01_boss.mp3',
    fallbackSynth: { rootHz: 220, scale: 'minor', leadWave: 'sawtooth', bassWave: 'square', mood: 'epic' } },

  // II. Горы
  { id: 'epoch_02_main',  epoch: 2,  kind: 'main', bpm: 140, durationSec: 120,
    title: 'Горы — основной', file: '/music/gd/epoch_02_main.mp3',
    fallbackSynth: { rootHz: 261.63, scale: 'minor', leadWave: 'sawtooth', bassWave: 'square', mood: 'cold' } },
  { id: 'epoch_02_boss',  epoch: 2,  kind: 'boss', bpm: 140, durationSec: 240,
    title: 'Горы — босс «Король горы»', file: '/music/gd/epoch_02_boss.mp3',
    fallbackSynth: { rootHz: 220, scale: 'harmonic', leadWave: 'sawtooth', bassWave: 'square', mood: 'epic' } },

  // III. Город днём
  { id: 'epoch_03_main',  epoch: 3,  kind: 'main', bpm: 145, durationSec: 120,
    title: 'Город — основной', file: '/music/gd/epoch_03_main.mp3',
    fallbackSynth: { rootHz: 293.66, scale: 'major', leadWave: 'square', bassWave: 'sawtooth', mood: 'energetic' } },
  { id: 'epoch_03_boss',  epoch: 3,  kind: 'boss', bpm: 145, durationSec: 270,
    title: 'Город — босс «Хозяин города»', file: '/music/gd/epoch_03_boss.mp3',
    fallbackSynth: { rootHz: 220, scale: 'dorian', leadWave: 'square', bassWave: 'sawtooth', mood: 'epic' } },

  // IV. Город ночью
  { id: 'epoch_04_main',  epoch: 4,  kind: 'main', bpm: 150, durationSec: 120,
    title: 'Ночной город — основной', file: '/music/gd/epoch_04_main.mp3',
    fallbackSynth: { rootHz: 196, scale: 'minor', leadWave: 'sawtooth', bassWave: 'square', mood: 'dark' } },
  { id: 'epoch_04_boss',  epoch: 4,  kind: 'boss', bpm: 150, durationSec: 300,
    title: 'Ночной город — босс «Призрак ночи»', file: '/music/gd/epoch_04_boss.mp3',
    fallbackSynth: { rootHz: 174.61, scale: 'phrygian', leadWave: 'sawtooth', bassWave: 'square', mood: 'epic' } },

  // V. Пустыня
  { id: 'epoch_05_main',  epoch: 5,  kind: 'main', bpm: 140, durationSec: 120,
    title: 'Пустыня — основной', file: '/music/gd/epoch_05_main.mp3',
    fallbackSynth: { rootHz: 233.08, scale: 'phrygian', leadWave: 'triangle', bassWave: 'sine', mood: 'mystical' } },
  { id: 'epoch_05_boss',  epoch: 5,  kind: 'boss', bpm: 140, durationSec: 300,
    title: 'Пустыня — босс «Король пустыни»', file: '/music/gd/epoch_05_boss.mp3',
    fallbackSynth: { rootHz: 196, scale: 'phrygian', leadWave: 'sawtooth', bassWave: 'square', mood: 'epic' } },

  // VI. Океан
  { id: 'epoch_06_main',  epoch: 6,  kind: 'main', bpm: 145, durationSec: 120,
    title: 'Океан — основной', file: '/music/gd/epoch_06_main.mp3',
    fallbackSynth: { rootHz: 196, scale: 'pentatonic', leadWave: 'sine', bassWave: 'sine', mood: 'chill' } },
  { id: 'epoch_06_boss',  epoch: 6,  kind: 'boss', bpm: 145, durationSec: 300,
    title: 'Океан — босс «Левиафан»', file: '/music/gd/epoch_06_boss.mp3',
    fallbackSynth: { rootHz: 174.61, scale: 'dorian', leadWave: 'triangle', bassWave: 'sine', mood: 'epic' } },

  // VII. Пещеры
  { id: 'epoch_07_main',  epoch: 7,  kind: 'main', bpm: 135, durationSec: 120,
    title: 'Пещеры — основной', file: '/music/gd/epoch_07_main.mp3',
    fallbackSynth: { rootHz: 165, scale: 'minor', leadWave: 'triangle', bassWave: 'square', mood: 'dark' } },
  { id: 'epoch_07_boss',  epoch: 7,  kind: 'boss', bpm: 135, durationSec: 300,
    title: 'Пещеры — босс «Хранитель глубин»', file: '/music/gd/epoch_07_boss.mp3',
    fallbackSynth: { rootHz: 138, scale: 'minor', leadWave: 'square', bassWave: 'square', mood: 'epic' } },

  // VIII. Вулкан
  { id: 'epoch_08_main',  epoch: 8,  kind: 'main', bpm: 160, durationSec: 120,
    title: 'Вулкан — основной', file: '/music/gd/epoch_08_main.mp3',
    fallbackSynth: { rootHz: 220, scale: 'harmonic', leadWave: 'sawtooth', bassWave: 'sawtooth', mood: 'aggressive' } },
  { id: 'epoch_08_boss',  epoch: 8,  kind: 'boss', bpm: 160, durationSec: 300,
    title: 'Вулкан — босс «Дракон вулкана»', file: '/music/gd/epoch_08_boss.mp3',
    fallbackSynth: { rootHz: 196, scale: 'harmonic', leadWave: 'sawtooth', bassWave: 'square', mood: 'epic' } },

  // IX. Космос
  { id: 'epoch_09_main',  epoch: 9,  kind: 'main', bpm: 150, durationSec: 120,
    title: 'Космос — основной', file: '/music/gd/epoch_09_main.mp3',
    fallbackSynth: { rootHz: 261.63, scale: 'whole', leadWave: 'sine', bassWave: 'triangle', mood: 'space' } },
  { id: 'epoch_09_boss',  epoch: 9,  kind: 'boss', bpm: 150, durationSec: 300,
    title: 'Космос — босс «Космический владыка»', file: '/music/gd/epoch_09_boss.mp3',
    fallbackSynth: { rootHz: 220, scale: 'whole', leadWave: 'sawtooth', bassWave: 'square', mood: 'epic' } },

  // X. Кибер
  { id: 'epoch_10_main',  epoch: 10, kind: 'main', bpm: 155, durationSec: 120,
    title: 'Кибер — основной', file: '/music/gd/epoch_10_main.mp3',
    fallbackSynth: { rootHz: 261.63, scale: 'dorian', leadWave: 'sawtooth', bassWave: 'square', mood: 'intense' } },
  { id: 'epoch_10_boss',  epoch: 10, kind: 'boss', bpm: 155, durationSec: 360,
    title: 'ФИНАЛ — босс «АРХИТЕКТОР»', file: '/music/gd/epoch_10_boss.mp3',
    fallbackSynth: { rootHz: 220, scale: 'harmonic', leadWave: 'sawtooth', bassWave: 'sawtooth', mood: 'final' } },

  // === Спец-трек игры «СабвейСёрф» (id=900) ===
  // Реальный mp3-файл в /public/music/gd/. Если файла нет — fallback-синтез.
  { id: 'subway_surf_main', epoch: 0, kind: 'main', bpm: 145, durationSec: 150,
    title: 'СабвейСёрф — главная тема', file: '/music/gd/subway_surf_main.mp3',
    fallbackSynth: { rootHz: 293.66, scale: 'major', leadWave: 'square', bassWave: 'sawtooth', mood: 'energetic' } },
];

export const EPOCH_INFO = [
  { n: 1,  name: 'Лес',           emoji: '🌲', color: '#3a7a4a' },
  { n: 2,  name: 'Горы',          emoji: '🏔', color: '#aaccff' },
  { n: 3,  name: 'Город днём',    emoji: '🏙', color: '#7a8aaa' },
  { n: 4,  name: 'Город ночью',   emoji: '🌃', color: '#1a1a3a' },
  { n: 5,  name: 'Пустыня',       emoji: '🏜', color: '#c8a575' },
  { n: 6,  name: 'Океан',         emoji: '🌊', color: '#3a8aaa' },
  { n: 7,  name: 'Пещеры',        emoji: '🕳', color: '#3a3a3a' },
  { n: 8,  name: 'Вулкан',        emoji: '🌋', color: '#8a2a2a' },
  { n: 9,  name: 'Космос',        emoji: '🚀', color: '#3a1a5a' },
  { n: 10, name: 'Кибер-будущее', emoji: '🤖', color: '#ff00ff' },
];

export { SCALES };
