95 lines
3.4 KiB
C++
95 lines
3.4 KiB
C++
#pragma once
|
||
|
||
#include <string> // Para string
|
||
#include <vector> // Para vector
|
||
|
||
// --- Namespace Options: configuración del juego ---
|
||
// Rellena los valores antes de llamar a Screen::init() y Audio::init()
|
||
namespace Options {
|
||
|
||
// Borde alrededor del área de juego (en pixels de la resolución lógica)
|
||
struct Border {
|
||
bool enabled{false}; // Activa el borde
|
||
float width{0.0F}; // Ancho del borde (izquierda + derecha)
|
||
float height{0.0F}; // Alto del borde (arriba + abajo)
|
||
};
|
||
|
||
// Opciones de vídeo
|
||
struct Video {
|
||
bool fullscreen{false}; // Pantalla completa al arrancar
|
||
int filter{0}; // Filtro de escalado: 0 = NEAREST, 1 = LINEAR
|
||
bool vertical_sync{false}; // VSync
|
||
bool postfx{false}; // Efectos PostFX (shaders)
|
||
bool supersampling{false}; // Supersampling 3× para PostFX
|
||
bool integer_scale{false}; // Escalado entero en fullscreen
|
||
Border border{}; // Borde de pantalla
|
||
std::string palette{}; // Nombre de la paleta activa (sin extensión)
|
||
std::string palettes_path{}; // Directorio donde buscar ficheros .pal
|
||
std::string info; // Info del modo de vídeo (rellenada por Screen)
|
||
};
|
||
|
||
// Opciones de ventana
|
||
struct Window {
|
||
std::string caption{"Game"}; // Título de la ventana
|
||
int zoom{2}; // Factor de zoom inicial
|
||
int max_zoom{2}; // Máximo zoom (calculado por Screen)
|
||
};
|
||
|
||
// Resolución lógica del juego (en pixels indexados)
|
||
struct Game {
|
||
float width{320.0F};
|
||
float height{180.0F};
|
||
};
|
||
|
||
// Opciones de música
|
||
struct Music {
|
||
bool enabled{true}; // Activa la música
|
||
float volume{1.0F}; // Volumen (0.0 – 1.0)
|
||
};
|
||
|
||
// Opciones de efectos de sonido
|
||
struct Sound {
|
||
bool enabled{true}; // Activa los efectos
|
||
float volume{1.0F}; // Volumen (0.0 – 1.0)
|
||
};
|
||
|
||
// Opciones de audio
|
||
struct Audio {
|
||
Music music{}; // Música
|
||
Sound sound{}; // Efectos
|
||
bool enabled{true}; // Activa el sistema de audio
|
||
float volume{1.0F}; // Volumen global (0.0 – 1.0)
|
||
};
|
||
|
||
// Preset de efectos PostFX
|
||
struct PostFXPreset {
|
||
std::string name;
|
||
float vignette{0.6F}; // Viñeta (0 = ninguna, 1 = máxima)
|
||
float scanlines{0.7F}; // Scanlines CRT
|
||
float chroma{0.15F}; // Aberración cromática
|
||
float mask{0.0F}; // Máscara de fósforo RGB
|
||
float gamma{0.0F}; // Corrección gamma
|
||
float curvature{0.0F}; // Distorsión barrel CRT
|
||
float bleeding{0.0F}; // Sangrado de color NTSC
|
||
float flicker{0.0F}; // Parpadeo de fósforo
|
||
};
|
||
|
||
// Configuración de fuente de texto para Screen
|
||
struct TextConfig {
|
||
std::string surface_path{}; // Ruta al GIF con el bitmap de la fuente
|
||
std::string fnt_path{}; // Ruta al fichero .fnt de definición de glifos
|
||
};
|
||
|
||
// --- Variables globales (inicializa antes de arrancar el juego) ---
|
||
inline Game game{};
|
||
inline Video video{};
|
||
inline Window window{};
|
||
inline Audio audio{};
|
||
inline TextConfig text_config{};
|
||
inline bool console{false}; // Imprime mensajes de debug por consola
|
||
|
||
inline std::vector<PostFXPreset> postfx_presets{};
|
||
inline int current_postfx_preset{0};
|
||
|
||
} // namespace Options
|