Migración de dbgtxt a SDL_TTF + conversión de textos a mixed case
Sistema de texto: - Reemplazado dbgtxt.cpp (bitmap 8x8) por TextRenderer (SDL_TTF) - Creado source/text/ con TextRenderer class - Añadidas fuentes TrueType en data/fonts/ - Implementados dos TextRenderer (display + debug) con escalado dinámico - Constantes configurables: TEXT_FONT_PATH, TEXT_BASE_SIZE, TEXT_ANTIALIASING Correcciones de centrado: - Reemplazado text.length() * 8 por text_renderer_.getTextWidth() en ~25 lugares - Texto de tecla F ahora se centra correctamente - Texto de modo (Demo/Logo/Lite) fijo en tercera fila del HUD debug - Implementado espaciado dinámico con getTextHeight() Conversión a mixed case: - ~26 textos de display cambiados de ALL CAPS a mixed case - 15 nombres de temas en theme_manager.cpp convertidos a mixed case - Ejemplos: "FPS" → "fps", "MODO FISICA" → "Modo Física", "DEMO MODE ON" → "Modo Demo: On" - Temas: "SUNSET" → "Sunset", "OCEANO" → "Océano", etc. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -10,18 +10,19 @@
|
||||
#include <string> // for string
|
||||
#include <vector> // for vector
|
||||
|
||||
#include "ball.h" // for Ball
|
||||
#include "defines.h" // for GravityDirection, ColorTheme, ShapeType
|
||||
#include "external/texture.h" // for Texture
|
||||
#include "shapes/shape.h" // for Shape (interfaz polimórfica)
|
||||
#include "theme_manager.h" // for ThemeManager
|
||||
#include "ball.h" // for Ball
|
||||
#include "defines.h" // for GravityDirection, ColorTheme, ShapeType
|
||||
#include "external/texture.h" // for Texture
|
||||
#include "shapes/shape.h" // for Shape (interfaz polimórfica)
|
||||
#include "text/textrenderer.h" // for TextRenderer
|
||||
#include "theme_manager.h" // for ThemeManager
|
||||
|
||||
// Modos de aplicación mutuamente excluyentes
|
||||
enum class AppMode {
|
||||
MANUAL, // Control manual del usuario
|
||||
DEMO, // Modo demo completo (auto-play)
|
||||
DEMO_LITE, // Modo demo lite (solo física/figuras)
|
||||
LOGO // Modo logo (easter egg)
|
||||
MANUAL, // Control manual del usuario
|
||||
DEMO, // Modo demo completo (auto-play)
|
||||
DEMO_LITE, // Modo demo lite (solo física/figuras)
|
||||
LOGO // Modo logo (easter egg)
|
||||
};
|
||||
|
||||
class Engine {
|
||||
@@ -54,6 +55,8 @@ class Engine {
|
||||
// UI y debug
|
||||
bool show_debug_ = false;
|
||||
bool show_text_ = true;
|
||||
TextRenderer text_renderer_; // Sistema de renderizado de texto para display (centrado)
|
||||
TextRenderer text_renderer_debug_; // Sistema de renderizado de texto para debug (HUD)
|
||||
|
||||
// Sistema de zoom dinámico
|
||||
int current_window_zoom_ = DEFAULT_WINDOW_ZOOM;
|
||||
@@ -93,22 +96,22 @@ class Engine {
|
||||
bool depth_zoom_enabled_ = true; // Zoom por profundidad Z activado
|
||||
|
||||
// Sistema de Modo DEMO (auto-play)
|
||||
AppMode current_app_mode_ = AppMode::MANUAL; // Modo actual (mutuamente excluyente)
|
||||
AppMode previous_app_mode_ = AppMode::MANUAL; // Modo previo antes de entrar a LOGO
|
||||
float demo_timer_ = 0.0f; // Contador de tiempo para próxima acción
|
||||
float demo_next_action_time_ = 0.0f; // Tiempo aleatorio hasta próxima acción (segundos)
|
||||
AppMode current_app_mode_ = AppMode::MANUAL; // Modo actual (mutuamente excluyente)
|
||||
AppMode previous_app_mode_ = AppMode::MANUAL; // Modo previo antes de entrar a LOGO
|
||||
float demo_timer_ = 0.0f; // Contador de tiempo para próxima acción
|
||||
float demo_next_action_time_ = 0.0f; // Tiempo aleatorio hasta próxima acción (segundos)
|
||||
|
||||
// Sistema de convergencia para LOGO MODE (escala con resolución)
|
||||
float shape_convergence_ = 0.0f; // % de pelotas cerca del objetivo (0.0-1.0)
|
||||
float logo_convergence_threshold_ = 0.90f; // Threshold aleatorio (75-100%)
|
||||
float logo_min_time_ = 3.0f; // Tiempo mínimo escalado con resolución
|
||||
float logo_max_time_ = 5.0f; // Tiempo máximo escalado (backup)
|
||||
float shape_convergence_ = 0.0f; // % de pelotas cerca del objetivo (0.0-1.0)
|
||||
float logo_convergence_threshold_ = 0.90f; // Threshold aleatorio (75-100%)
|
||||
float logo_min_time_ = 3.0f; // Tiempo mínimo escalado con resolución
|
||||
float logo_max_time_ = 5.0f; // Tiempo máximo escalado (backup)
|
||||
|
||||
// Sistema de espera de flips en LOGO MODE (camino alternativo)
|
||||
bool logo_waiting_for_flip_ = false; // true si eligió el camino "esperar flip"
|
||||
int logo_target_flip_number_ = 0; // En qué flip actuar (1, 2 o 3)
|
||||
float logo_target_flip_percentage_ = 0.0f; // % de flip a esperar (0.2-0.8)
|
||||
int logo_current_flip_count_ = 0; // Flips observados hasta ahora
|
||||
bool logo_waiting_for_flip_ = false; // true si eligió el camino "esperar flip"
|
||||
int logo_target_flip_number_ = 0; // En qué flip actuar (1, 2 o 3)
|
||||
float logo_target_flip_percentage_ = 0.0f; // % de flip a esperar (0.2-0.8)
|
||||
int logo_current_flip_count_ = 0; // Flips observados hasta ahora
|
||||
|
||||
// Estado previo antes de entrar a Logo Mode (para restaurar al salir)
|
||||
int logo_previous_theme_ = 0; // Índice de tema (0-9)
|
||||
@@ -119,6 +122,11 @@ class Engine {
|
||||
std::vector<SDL_Vertex> batch_vertices_;
|
||||
std::vector<int> batch_indices_;
|
||||
|
||||
// Configuración del sistema de texto (constantes configurables)
|
||||
static constexpr const char* TEXT_FONT_PATH = "data/fonts/determination.ttf";
|
||||
static constexpr int TEXT_BASE_SIZE = 8; // Tamaño base para 240p
|
||||
static constexpr bool TEXT_ANTIALIASING = true; // true = suavizado, false = píxeles nítidos
|
||||
|
||||
// Métodos principales del loop
|
||||
void calculateDeltaTime();
|
||||
void update();
|
||||
@@ -141,7 +149,7 @@ class Engine {
|
||||
std::string gravityDirectionToString(GravityDirection direction) const;
|
||||
|
||||
// Sistema de gestión de estados (MANUAL/DEMO/DEMO_LITE/LOGO)
|
||||
void setState(AppMode new_mode); // Cambiar modo de aplicación (mutuamente excluyente)
|
||||
void setState(AppMode new_mode); // Cambiar modo de aplicación (mutuamente excluyente)
|
||||
|
||||
// Sistema de Modo DEMO
|
||||
void updateDemoMode();
|
||||
@@ -150,9 +158,9 @@ class Engine {
|
||||
void toggleGravityOnOff();
|
||||
|
||||
// Sistema de Modo Logo (easter egg)
|
||||
void toggleLogoMode(); // Activar/desactivar modo logo manual (tecla K)
|
||||
void enterLogoMode(bool from_demo = false); // Entrar al modo logo (manual o automático)
|
||||
void exitLogoMode(bool return_to_demo = false); // Salir del modo logo
|
||||
void toggleLogoMode(); // Activar/desactivar modo logo manual (tecla K)
|
||||
void enterLogoMode(bool from_demo = false); // Entrar al modo logo (manual o automático)
|
||||
void exitLogoMode(bool return_to_demo = false); // Salir del modo logo
|
||||
|
||||
// Sistema de cambio de sprites dinámico
|
||||
void switchTexture(); // Cambia a siguiente textura disponible
|
||||
|
||||
Reference in New Issue
Block a user