commit marrano

This commit is contained in:
2025-10-12 21:30:32 +02:00
parent adfa315a43
commit 3d26bfc6fa
2 changed files with 26 additions and 29 deletions

View File

@@ -2,19 +2,19 @@
#include <algorithm> // for std::min #include <algorithm> // for std::min
#include "../theme_manager.h"
#include "../text/textrenderer.h" #include "../text/textrenderer.h"
#include "../theme_manager.h"
HelpOverlay::HelpOverlay() HelpOverlay::HelpOverlay()
: renderer_(nullptr) : renderer_(nullptr),
, theme_mgr_(nullptr) theme_mgr_(nullptr),
, text_renderer_(nullptr) text_renderer_(nullptr),
, physical_width_(0) physical_width_(0),
, physical_height_(0) physical_height_(0),
, visible_(false) visible_(false),
, box_size_(0) box_size_(0),
, box_x_(0) box_x_(0),
, box_y_(0) { box_y_(0) {
// Llenar lista de controles (organizados por categoría, equilibrado en 2 columnas) // Llenar lista de controles (organizados por categoría, equilibrado en 2 columnas)
key_bindings_ = { key_bindings_ = {
// COLUMNA 1: SIMULACIÓN // COLUMNA 1: SIMULACIÓN
@@ -24,7 +24,7 @@ HelpOverlay::HelpOverlay()
{"B", "Modo Boids (enjambre)"}, {"B", "Modo Boids (enjambre)"},
{"ESPACIO", "Impulso contra gravedad"}, {"ESPACIO", "Impulso contra gravedad"},
{"G", "Toggle Gravedad ON/OFF"}, {"G", "Toggle Gravedad ON/OFF"},
{"↑↓←→", "Dirección de gravedad"}, {"CURSORES", "Dirección de gravedad"},
{"", ""}, // Separador {"", ""}, // Separador
// COLUMNA 1: FIGURAS 3D // COLUMNA 1: FIGURAS 3D
@@ -43,7 +43,7 @@ HelpOverlay::HelpOverlay()
{"Shift+C", "Tema anterior"}, {"Shift+C", "Tema anterior"},
{"NumEnter", "Página de temas"}, {"NumEnter", "Página de temas"},
{"N", "Cambiar sprite"}, {"N", "Cambiar sprite"},
{"", ""}, // Separador -> CAMBIO DE COLUMNA {"[new_col]", ""}, // Separador -> CAMBIO DE COLUMNA
// COLUMNA 2: PANTALLA // COLUMNA 2: PANTALLA
{"PANTALLA", ""}, {"PANTALLA", ""},
@@ -52,6 +52,7 @@ HelpOverlay::HelpOverlay()
{"F4", "Fullscreen real"}, {"F4", "Fullscreen real"},
{"F5", "Escalado (F3 activo)"}, {"F5", "Escalado (F3 activo)"},
{"V", "Toggle V-Sync"}, {"V", "Toggle V-Sync"},
{"", ""}, // Separador
// COLUMNA 2: MODOS // COLUMNA 2: MODOS
{"MODOS", ""}, {"MODOS", ""},
@@ -59,13 +60,13 @@ HelpOverlay::HelpOverlay()
{"Shift+D", "Pausar tema dinámico"}, {"Shift+D", "Pausar tema dinámico"},
{"L", "Modo DEMO LITE"}, {"L", "Modo DEMO LITE"},
{"K", "Modo LOGO (easter egg)"}, {"K", "Modo LOGO (easter egg)"},
{"", ""}, // Separador
// COLUMNA 2: DEBUG/AYUDA // COLUMNA 2: DEBUG/AYUDA
{"DEBUG/AYUDA", ""}, {"DEBUG/AYUDA", ""},
{"F12", "Toggle info debug"}, {"F12", "Toggle info debug"},
{"H", "Esta ayuda"}, {"H", "Esta ayuda"},
{"ESC", "Salir"} {"ESC", "Salir"}};
};
} }
HelpOverlay::~HelpOverlay() { HelpOverlay::~HelpOverlay() {
@@ -80,7 +81,7 @@ void HelpOverlay::initialize(SDL_Renderer* renderer, ThemeManager* theme_mgr, in
// Crear renderer de texto con tamaño reducido (18px en lugar de 24px) // Crear renderer de texto con tamaño reducido (18px en lugar de 24px)
text_renderer_ = new TextRenderer(); text_renderer_ = new TextRenderer();
text_renderer_->init(renderer, "data/fonts/determination.ttf", 18, true); text_renderer_->init(renderer, "data/fonts/FunnelSans-Regular.ttf", 18, true);
calculateBoxDimensions(); calculateBoxDimensions();
} }
@@ -112,7 +113,7 @@ void HelpOverlay::render(SDL_Renderer* renderer) {
theme_mgr_->getCurrentNotificationBackgroundColor(notif_bg_r, notif_bg_g, notif_bg_b); theme_mgr_->getCurrentNotificationBackgroundColor(notif_bg_r, notif_bg_g, notif_bg_b);
// Renderizar fondo semitransparente usando SDL_RenderGeometry (soporta alpha real) // Renderizar fondo semitransparente usando SDL_RenderGeometry (soporta alpha real)
float alpha = 0.95f; float alpha = 0.85f;
SDL_Vertex bg_vertices[4]; SDL_Vertex bg_vertices[4];
// Convertir RGB a float [0.0, 1.0] // Convertir RGB a float [0.0, 1.0]
@@ -161,7 +162,7 @@ void HelpOverlay::renderHelpText() {
// Configuración de espaciado // Configuración de espaciado
int line_height = text_renderer_->getTextHeight(); int line_height = text_renderer_->getTextHeight();
int padding = 25; // Equilibrio entre espacio y márgenes int padding = 25; // Equilibrio entre espacio y márgenes
int column_width = (box_size_ - padding * 3) / 2; // Ancho de cada columna (2 columnas) int column_width = (box_size_ - padding * 3) / 2; // Ancho de cada columna (2 columnas)
int current_x = box_x_ + padding; int current_x = box_x_ + padding;
@@ -175,8 +176,7 @@ void HelpOverlay::renderHelpText() {
box_x_ + box_size_ / 2 - title_width / 2, box_x_ + box_size_ / 2 - title_width / 2,
current_y, current_y,
title, title,
category_color category_color);
);
current_y += line_height * 2; // Espacio después del título current_y += line_height * 2; // Espacio después del título
// Guardar Y inicial de contenido (después del título) // Guardar Y inicial de contenido (después del título)
@@ -185,7 +185,7 @@ void HelpOverlay::renderHelpText() {
// Renderizar cada línea // Renderizar cada línea
for (const auto& binding : key_bindings_) { for (const auto& binding : key_bindings_) {
// Si es un separador (descripción vacía), cambiar de columna // Si es un separador (descripción vacía), cambiar de columna
if (binding.description[0] == '\0' && binding.key[0] == '\0') { if (strcmp(binding.key, "[new_col]") == 0 && binding.description[0] == '\0') {
if (current_column == 0) { if (current_column == 0) {
// Cambiar a columna derecha // Cambiar a columna derecha
current_column = 1; current_column = 1;
@@ -202,8 +202,7 @@ void HelpOverlay::renderHelpText() {
current_x, current_x,
current_y, current_y,
binding.key, binding.key,
category_color category_color);
);
current_y += line_height + 2; // Espacio extra después de encabezado current_y += line_height + 2; // Espacio extra después de encabezado
continue; continue;
} }
@@ -213,8 +212,7 @@ void HelpOverlay::renderHelpText() {
current_x, current_x,
current_y, current_y,
binding.key, binding.key,
content_color content_color);
);
// Renderizar descripción con color de contenido // Renderizar descripción con color de contenido
int key_width = text_renderer_->getTextWidthPhysical(binding.key); int key_width = text_renderer_->getTextWidthPhysical(binding.key);
@@ -222,8 +220,7 @@ void HelpOverlay::renderHelpText() {
current_x + key_width + 10, // Espacio entre tecla y descripción current_x + key_width + 10, // Espacio entre tecla y descripción
current_y, current_y,
binding.description, binding.description,
content_color content_color);
);
current_y += line_height; current_y += line_height;

View File

@@ -57,9 +57,9 @@ void UIManager::initialize(SDL_Renderer* renderer, ThemeManager* theme_manager,
// Inicializar renderers // Inicializar renderers
// (el tamaño se configura dinámicamente en Engine según resolución) // (el tamaño se configura dinámicamente en Engine según resolución)
text_renderer_->init(renderer, "data/fonts/determination.ttf", 24, true); text_renderer_->init(renderer, "data/fonts/FunnelSans-Regular.ttf", 18, true);
text_renderer_debug_->init(renderer, "data/fonts/determination.ttf", 24, true); text_renderer_debug_->init(renderer, "data/fonts/FunnelSans-Regular.ttf", 18, true);
text_renderer_notifier_->init(renderer, "data/fonts/determination.ttf", 24, true); text_renderer_notifier_->init(renderer, "data/fonts/FunnelSans-Regular.ttf", 18, true);
// Crear y configurar sistema de notificaciones // Crear y configurar sistema de notificaciones
notifier_ = new Notifier(); notifier_ = new Notifier();