From 7db9e46f950f21ca7bb6c66a65c626efcaf9a50d Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 12 Mar 2026 09:05:57 +0100 Subject: [PATCH] =?UTF-8?q?soport=20per=20a=20pantalles=20de=20poca=20reso?= =?UTF-8?q?luci=C3=B3=20en=20mode=20finestra?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/engine.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source/engine.cpp b/source/engine.cpp index d845451..59dc28d 100644 --- a/source/engine.cpp +++ b/source/engine.cpp @@ -74,7 +74,16 @@ bool Engine::initialize(int width, int height, int zoom, bool fullscreen, AppMod // VALIDACIÓN 2: Calcular max_zoom y ajustar si es necesario int max_zoom = std::min(screen_w / logical_width, screen_h / logical_height); - if (window_zoom > max_zoom) { + if (max_zoom < 1) { + // Resolució lògica no cap en pantalla ni a zoom=1: escalar-la per fer-la càpida + float scale = std::min(static_cast(screen_w) / logical_width, + static_cast(screen_h) / logical_height); + logical_width = std::max(320, static_cast(logical_width * scale)); + logical_height = std::max(240, static_cast(logical_height * scale)); + window_zoom = 1; + std::cout << "Advertencia: Resolución no cabe en pantalla. Ajustando a " + << logical_width << "x" << logical_height << "\n"; + } else if (window_zoom > max_zoom) { std::cout << "Advertencia: Zoom " << window_zoom << " excede máximo " << max_zoom << " para " << logical_width << "x" << logical_height << ". Ajustando a " << max_zoom << "\n"; window_zoom = max_zoom;