// audio.hpp - Configuració d'audio (sistema), pistes de música i efectes
// © 2026 JailDesigner

#pragma once

#include <SDL3/SDL.h>

// Audio (sistema de sonido y música) — usado por Audio::Config en init()
namespace Defaults::Audio {

    constexpr bool ENABLED = true;                     // Audio habilitado por defecto
    constexpr float VOLUME = 1.0F;                     // Volumen maestro (0..1) — 100%
    constexpr bool MUSIC_ENABLED = true;               // Música habilitada
    constexpr float MUSIC_VOLUME = 1.0F;               // Volumen música (0..1) — 100%
    constexpr bool SOUND_ENABLED = true;               // Efectos habilitados
    constexpr float SOUND_VOLUME = 0.25F;              // Volumen efectos (0..1) — 25%
    constexpr float VOLUME_STEP = 0.05F;               // Paso UI (5%)
    constexpr int FREQUENCY = 48000;                   // Frecuencia de muestreo (Hz)
    constexpr int CROSSFADE_MS = 1500;                 // Crossfade por defecto entre pistas (ms)
    constexpr SDL_AudioFormat FORMAT = SDL_AUDIO_S16;  // PCM 16-bit signed nativo
    constexpr int CHANNELS = 2;                        // Estéreo

}  // namespace Defaults::Audio

// Música (pistas de fondo)
namespace Defaults::Music {

    constexpr const char* GAME_TRACK = "game.ogg";    // Pista de juego
    constexpr const char* TITLE_TRACK = "title.ogg";  // Pista de titulo
    constexpr int FADE_DURATION_MS = 1000;            // Fade out duration

}  // namespace Defaults::Music

// Efectes de so (sons puntuals)
namespace Defaults::Sound {

    constexpr const char* CONTINUE = "effects/continue.wav";                     // Cuenta atras
    constexpr const char* EXPLOSION = "effects/explosion.wav";                   // Explosión
    constexpr const char* EXPLOSION2 = "effects/explosion2.wav";                 // Explosión alternativa
    constexpr const char* FRIENDLY_FIRE_HIT = "effects/friendly_fire.wav";       // Friendly fire hit
    constexpr const char* HIT = "effects/hit.wav";                               // Enemic ferit (primer impacte → HURT)
    constexpr const char* HURT = "effects/hurt.wav";                             // Nau pròpia entra a HURT
    constexpr const char* INIT_HUD = "effects/init_hud.wav";                     // Para la animación del HUD
    constexpr const char* LASER = "effects/laser_shoot.wav";                     // Disparo
    constexpr const char* LOGO = "effects/logo.wav";                             // Logo
    constexpr const char* START = "effects/start.wav";                           // El player pulsa START
    constexpr const char* GOOD_JOB_COMMANDER = "voices/good_job_commander.wav";  // Voz: "Good job, commander"

}  // namespace Defaults::Sound
