commit marrano
This commit is contained in:
@@ -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]
|
||||
@@ -161,7 +162,7 @@ void HelpOverlay::renderHelpText() {
|
||||
|
||||
// Configuración de espaciado
|
||||
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 current_x = box_x_ + padding;
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user