migrat, amb ajuda de claude, a sdl3gpu (postfx i crtpi) igual que el JDD

This commit is contained in:
2026-04-03 15:08:06 +02:00
parent 3c2a5c9b37
commit 93fe17c3b2
34 changed files with 20728 additions and 3312 deletions

View File

@@ -14,11 +14,12 @@
#include <vector> // Para vector
#include "defaults.hpp"
#include "difficulty.hpp" // for Code
#include "input.hpp" // for Input
#include "lang.hpp" // for Code
#include "manage_hiscore_table.hpp" // for ManageHiScoreTable, Table
#include "player.hpp" // for Player
#include "difficulty.hpp" // for Code
#include "input.hpp" // for Input
#include "lang.hpp" // for Code
#include "manage_hiscore_table.hpp" // for ManageHiScoreTable, Table
#include "player.hpp" // for Player
#include "rendering/shader_backend.hpp" // for Rendering::ShaderType
// --- Namespace Options: gestión de configuración y opciones del juego ---
namespace Options {
@@ -36,20 +37,59 @@ namespace Options {
float flicker{0.0F};
};
struct CrtPiPreset {
std::string name;
float scanline_weight{6.0F};
float scanline_gap_brightness{0.12F};
float bloom_factor{3.5F};
float input_gamma{2.4F};
float output_gamma{2.2F};
float mask_brightness{0.80F};
float curvature_x{0.05F};
float curvature_y{0.10F};
int mask_type{2};
bool enable_scanlines{true};
bool enable_multisample{true};
bool enable_gamma{true};
bool enable_curvature{false};
bool enable_sharper{false};
};
struct Window {
std::string caption = Defaults::Window::CAPTION; // Texto que aparece en la barra de título de la ventana
int zoom = Defaults::Window::ZOOM; // Valor por el que se multiplica el tamaño de la ventana
int max_zoom = Defaults::Window::MAX_ZOOM; // Tamaño máximo para que la ventana no sea mayor que la pantalla
std::string caption = Defaults::Window::CAPTION;
int zoom = Defaults::Window::ZOOM;
int max_zoom = Defaults::Window::MAX_ZOOM;
};
struct GPU {
bool acceleration{Defaults::Video::GPU_ACCELERATION};
std::string preferred_driver;
};
struct Supersampling {
bool enabled{Defaults::Video::SUPERSAMPLING};
bool linear_upscale{Defaults::Video::LINEAR_UPSCALE};
int downscale_algo{Defaults::Video::DOWNSCALE_ALGO};
};
struct ShaderConfig {
bool enabled{Defaults::Video::SHADER_ENABLED};
Rendering::ShaderType current_shader{Rendering::ShaderType::POSTFX};
std::string current_postfx_preset_name;
std::string current_crtpi_preset_name;
int current_postfx_preset{0};
int current_crtpi_preset{0};
};
struct Video {
SDL_ScaleMode scale_mode = Defaults::Video::SCALE_MODE; // Filtro usado para el escalado de la imagen
bool fullscreen = Defaults::Video::FULLSCREEN; // Indica si se usa pantalla completa
bool vsync = Defaults::Video::VSYNC; // Indica si se usa vsync
bool integer_scale = Defaults::Video::INTEGER_SCALE; // Indica si se usa escalado entero
bool postfx = Defaults::Video::POSTFX; // Indica si se usan efectos PostFX
int supersampling = Defaults::Video::SUPERSAMPLING; // Factor de supersampling: 1=off, 2=2×, 3=3×
std::string info; // Información sobre el modo de vídeo
SDL_ScaleMode scale_mode = Defaults::Video::SCALE_MODE;
bool fullscreen = Defaults::Video::FULLSCREEN;
bool vsync = Defaults::Video::VSYNC;
bool integer_scale = Defaults::Video::INTEGER_SCALE;
std::string info;
GPU gpu{};
Supersampling supersampling{};
ShaderConfig shader{};
};
struct Music {
@@ -63,8 +103,8 @@ namespace Options {
};
struct Audio {
Music music; // Opciones para la música
Sound sound; // Opciones para los efectos de sonido
Music music; // Opciones para la música
Sound sound; // Opciones para los efectos de sonido
bool enabled = Defaults::Audio::ENABLED; // Indica si el audio está activo o no
int volume = Defaults::Audio::VOLUME; // Volumen general del audio
};
@@ -292,16 +332,19 @@ namespace Options {
extern Keyboard keyboard; // Opciones para el teclado
extern PendingChanges pending_changes; // Opciones que se aplican al cerrar
extern std::vector<PostFXPreset> postfx_presets; // Lista de presets de PostFX
extern int current_postfx_preset; // Índice del preset PostFX activo
extern std::string postfx_file_path; // Ruta al fichero de presets PostFX
extern std::vector<CrtPiPreset> crtpi_presets; // Lista de presets de CrtPi
extern std::string crtpi_file_path; // Ruta al fichero de presets CrtPi
// --- Funciones ---
void init(); // Inicializa las opciones del programa
void setConfigFile(const std::string& file_path); // Establece el fichero de configuración
void setControllersFile(const std::string& file_path); // Establece el fichero de configuración de mandos
void setPostFXFile(const std::string& path); // Establece el fichero de presets PostFX
void setCrtPiFile(const std::string& path); // Establece el fichero de presets CrtPi
auto loadPostFXFromFile() -> bool; // Carga los presets PostFX desde fichero
auto savePostFXToFile() -> bool; // Guarda los presets PostFX por defecto al fichero
auto loadCrtPiFromFile() -> bool; // Carga los presets CrtPi desde fichero
auto loadFromFile() -> bool; // Carga el fichero de configuración
auto saveToFile() -> bool; // Guarda el fichero de configuración
void setKeyboardToPlayer(Player::Id player_id); // Asigna el teclado al jugador