Fix: Ajustar dimensionamiento de HelpOverlay para resoluciones bajas
Problemas resueltos: - En 640x360, el overlay generaba textura enorme con letras grandes - El cálculo de font size usaba dimensiones físicas (con zoom aplicado) en lugar de dimensiones lógicas (resolución interna) - No había límite máximo de ancho para el overlay - Padding fijo de 25px era excesivo en pantallas pequeñas Cambios realizados: 1. UIManager: Usar dimensiones lógicas para calcular font size - Nuevo parámetro logical_width/logical_height en initialize() - calculateFontSize() ahora usa altura lógica sin zoom - Escalado híbrido: proporcional en extremos, escalonado en rango medio - Para 640x360: 10px (antes 18px con zoom 2x) - Para 640x480: 12px (antes 24px con zoom 2x) 2. HelpOverlay: Agregar límites máximos de dimensiones - Box width limitado al 95% del ancho físico - Box height limitado al 90% de la altura física - Padding dinámico: 25px para >=600px, escalado para menores - Para 360px altura: padding de 15px (antes 25px fijo) 3. Engine: Pasar dimensiones lógicas a UIManager - initialize() ahora recibe current_screen_width/height Resultado: - 640x360: Overlay compacto con fuente 10px que cabe en pantalla - 640x480: Overlay con fuente 12px (tamaño apropiado) - Tamaño de fuente consistente independiente del zoom de ventana 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -46,9 +46,12 @@ class UIManager {
|
||||
* @param theme_manager Gestor de temas (para colores)
|
||||
* @param physical_width Ancho físico de ventana (píxeles reales)
|
||||
* @param physical_height Alto físico de ventana (píxeles reales)
|
||||
* @param logical_width Ancho lógico (resolución interna)
|
||||
* @param logical_height Alto lógico (resolución interna)
|
||||
*/
|
||||
void initialize(SDL_Renderer* renderer, ThemeManager* theme_manager,
|
||||
int physical_width, int physical_height);
|
||||
int physical_width, int physical_height,
|
||||
int logical_width, int logical_height);
|
||||
|
||||
/**
|
||||
* @brief Actualiza UI (FPS counter, notificaciones, texto obsoleto)
|
||||
@@ -148,12 +151,11 @@ class UIManager {
|
||||
std::string gravityDirectionToString(int direction) const;
|
||||
|
||||
/**
|
||||
* @brief Calcula tamaño de fuente apropiado según dimensiones físicas
|
||||
* @param physical_width Ancho físico de ventana
|
||||
* @param physical_height Alto físico de ventana
|
||||
* @return Tamaño de fuente (14px/18px/24px)
|
||||
* @brief Calcula tamaño de fuente apropiado según dimensiones lógicas
|
||||
* @param logical_height Alto lógico (resolución interna, sin zoom)
|
||||
* @return Tamaño de fuente (9-36px)
|
||||
*/
|
||||
int calculateFontSize(int physical_width, int physical_height) const;
|
||||
int calculateFontSize(int logical_height) const;
|
||||
|
||||
// === Recursos de renderizado ===
|
||||
TextRenderer* text_renderer_debug_; // HUD de debug
|
||||
@@ -176,7 +178,9 @@ class UIManager {
|
||||
ThemeManager* theme_manager_; // Gestor de temas (para colores)
|
||||
int physical_window_width_; // Ancho físico de ventana (píxeles reales)
|
||||
int physical_window_height_; // Alto físico de ventana (píxeles reales)
|
||||
int logical_window_width_; // Ancho lógico (resolución interna)
|
||||
int logical_window_height_; // Alto lógico (resolución interna)
|
||||
|
||||
// === Sistema de escalado dinámico de texto ===
|
||||
int current_font_size_; // Tamaño de fuente actual (14/18/24)
|
||||
int current_font_size_; // Tamaño de fuente actual (9-36px)
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user