soport per a pantalles de poca resolució en mode finestra
This commit is contained in:
@@ -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
|
// VALIDACIÓN 2: Calcular max_zoom y ajustar si es necesario
|
||||||
int max_zoom = std::min(screen_w / logical_width, screen_h / logical_height);
|
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<float>(screen_w) / logical_width,
|
||||||
|
static_cast<float>(screen_h) / logical_height);
|
||||||
|
logical_width = std::max(320, static_cast<int>(logical_width * scale));
|
||||||
|
logical_height = std::max(240, static_cast<int>(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
|
std::cout << "Advertencia: Zoom " << window_zoom << " excede máximo " << max_zoom
|
||||||
<< " para " << logical_width << "x" << logical_height << ". Ajustando a " << max_zoom << "\n";
|
<< " para " << logical_width << "x" << logical_height << ". Ajustando a " << max_zoom << "\n";
|
||||||
window_zoom = max_zoom;
|
window_zoom = max_zoom;
|
||||||
|
|||||||
Reference in New Issue
Block a user