esqueleto nivel 1
This commit is contained in:
94
source/core/options.hpp
Normal file
94
source/core/options.hpp
Normal file
@@ -0,0 +1,94 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user