esqueleto nivel 1

This commit is contained in:
2026-03-24 21:59:22 +01:00
parent 29e0259f34
commit 6e071575f2
41 changed files with 38668 additions and 0 deletions

94
source/core/options.hpp Normal file
View 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