Files
esqueleto/source/core/options.hpp
2026-03-24 21:59:22 +01:00

95 lines
3.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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