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 "../theme_manager.h"
#include "../text/textrenderer.h"
#include "../theme_manager.h"
HelpOverlay::HelpOverlay()
: renderer_(nullptr)
, theme_mgr_(nullptr)
, text_renderer_(nullptr)
, physical_width_(0)
, physical_height_(0)
, visible_(false)
, box_size_(0)
, box_x_(0)
, box_y_(0) {
: renderer_(nullptr),
theme_mgr_(nullptr),
text_renderer_(nullptr),
physical_width_(0),
physical_height_(0),
visible_(false),
box_size_(0),
box_x_(0),
box_y_(0) {
// Llenar lista de controles (organizados por categoría, equilibrado en 2 columnas)
key_bindings_ = {
// COLUMNA 1: SIMULACIÓN
@@ -24,7 +24,7 @@ HelpOverlay::HelpOverlay()
{"B", "Modo Boids (enjambre)"},
{"ESPACIO", "Impulso contra gravedad"},
{"G", "Toggle Gravedad ON/OFF"},
{"↑↓←→", "Dirección de gravedad"},
{"CURSORES", "Dirección de gravedad"},
{"", ""}, // Separador
// COLUMNA 1: FIGURAS 3D
@@ -43,7 +43,7 @@ HelpOverlay::HelpOverlay()
{"Shift+C", "Tema anterior"},
{"NumEnter", "Página de temas"},
{"N", "Cambiar sprite"},
{"", ""}, // Separador -> CAMBIO DE COLUMNA
{"[new_col]", ""}, // Separador -> CAMBIO DE COLUMNA
// COLUMNA 2: PANTALLA
{"PANTALLA", ""},
@@ -52,6 +52,7 @@ HelpOverlay::HelpOverlay()
{"F4", "Fullscreen real"},
{"F5", "Escalado (F3 activo)"},
{"V", "Toggle V-Sync"},
{"", ""}, // Separador
// COLUMNA 2: MODOS
{"MODOS", ""},
@@ -59,13 +60,13 @@ HelpOverlay::HelpOverlay()
{"Shift+D", "Pausar tema dinámico"},
{"L", "Modo DEMO LITE"},
{"K", "Modo LOGO (easter egg)"},
{"", ""}, // Separador
// COLUMNA 2: DEBUG/AYUDA
{"DEBUG/AYUDA", ""},
{"F12", "Toggle info debug"},
{"H", "Esta ayuda"},
{"ESC", "Salir"}
};
{"ESC", "Salir"}};
}
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)
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();
}
@@ -112,7 +113,7 @@ void HelpOverlay::render(SDL_Renderer* renderer) {
theme_mgr_->getCurrentNotificationBackgroundColor(notif_bg_r, notif_bg_g, notif_bg_b);
// Renderizar fondo semitransparente usando SDL_RenderGeometry (soporta alpha real)
float alpha = 0.95f;
float alpha = 0.85f;
SDL_Vertex bg_vertices[4];
// Convertir RGB a float [0.0, 1.0]
@@ -175,8 +176,7 @@ void HelpOverlay::renderHelpText() {
box_x_ + box_size_ / 2 - title_width / 2,
current_y,
title,
category_color
);
category_color);
current_y += line_height * 2; // Espacio 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
for (const auto& binding : key_bindings_) {
// 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) {
// Cambiar a columna derecha
current_column = 1;
@@ -202,8 +202,7 @@ void HelpOverlay::renderHelpText() {
current_x,
current_y,
binding.key,
category_color
);
category_color);
current_y += line_height + 2; // Espacio extra después de encabezado
continue;
}
@@ -213,8 +212,7 @@ void HelpOverlay::renderHelpText() {
current_x,
current_y,
binding.key,
content_color
);
content_color);
// Renderizar descripción con color de contenido
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_y,
binding.description,
content_color
);
content_color);
current_y += line_height;

View File

@@ -57,9 +57,9 @@ void UIManager::initialize(SDL_Renderer* renderer, ThemeManager* theme_manager,
// Inicializar renderers
// (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_debug_->init(renderer, "data/fonts/determination.ttf", 24, true);
text_renderer_notifier_->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/FunnelSans-Regular.ttf", 18, true);
text_renderer_notifier_->init(renderer, "data/fonts/FunnelSans-Regular.ttf", 18, true);
// Crear y configurar sistema de notificaciones
notifier_ = new Notifier();