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:
@@ -151,7 +151,8 @@ void HelpOverlay::calculateTextDimensions(int& max_width, int& total_height) {
|
||||
}
|
||||
|
||||
int line_height = text_renderer_->getTextHeight();
|
||||
int padding = 25;
|
||||
// Padding dinámico basado en altura física: 25px para >= 600px, escalado proporcionalmente para menores
|
||||
int padding = (physical_height_ >= 600) ? 25 : std::max(10, physical_height_ / 24);
|
||||
|
||||
// Calcular ancho máximo por columna
|
||||
int max_col1_width = 0;
|
||||
@@ -234,11 +235,11 @@ void HelpOverlay::calculateBoxDimensions() {
|
||||
int text_width, text_height;
|
||||
calculateTextDimensions(text_width, text_height);
|
||||
|
||||
// Usar directamente el ancho y altura calculados según el contenido
|
||||
box_width_ = text_width;
|
||||
// Aplicar límites máximos: 95% ancho, 90% altura
|
||||
int max_width = static_cast<int>(physical_width_ * 0.95f);
|
||||
int max_height = static_cast<int>(physical_height_ * 0.90f);
|
||||
|
||||
// Altura: 90% de altura física o altura calculada, el que sea menor
|
||||
int max_height = static_cast<int>(physical_height_ * 0.9f);
|
||||
box_width_ = std::min(text_width, max_width);
|
||||
box_height_ = std::min(text_height, max_height);
|
||||
|
||||
// Centrar en pantalla
|
||||
@@ -333,7 +334,8 @@ void HelpOverlay::rebuildCachedTexture() {
|
||||
|
||||
// Configuración de espaciado
|
||||
int line_height = text_renderer_->getTextHeight();
|
||||
int padding = 25;
|
||||
// Padding dinámico basado en altura física: 25px para >= 600px, escalado proporcionalmente para menores
|
||||
int padding = (physical_height_ >= 600) ? 25 : std::max(10, physical_height_ / 24);
|
||||
|
||||
int current_x = padding; // Coordenadas relativas a la textura (0,0)
|
||||
int current_y = padding;
|
||||
|
||||
Reference in New Issue
Block a user