commit per a provar les coses rares de la pantalla en wasm

This commit is contained in:
2026-04-13 18:31:16 +02:00
parent 8bfc32de40
commit 585c93054e
4 changed files with 24 additions and 6 deletions

View File

@@ -168,6 +168,15 @@ void Screen::toggleVideoMode() {
setVideoMode(Options::video.fullscreen);
}
// Re-sincronitza el logical size i el factor de zoom quan la mida de la finestra canvia
// per una causa externa al joc: navegador sortint de fullscreen (Esc), rotació del dispositiu,
// redimensionat de la finestra, etc. No toca SDL_SetWindowFullscreen ni SDL_SetWindowSize
// per no interferir amb el que estigui fent el sistema/navegador.
void Screen::handleWindowResized() {
adjustRenderLogicalSize();
updateZoomFactor();
}
// Reduce el tamaño de la ventana
auto Screen::decWindowZoom() -> bool {
if (static_cast<int>(Options::video.fullscreen) == 0) {

View File

@@ -38,6 +38,7 @@ class Screen {
// Video y ventana
void setVideoMode(bool mode); // Establece el modo de video
void toggleVideoMode(); // Cambia entre pantalla completa y ventana
void handleWindowResized(); // Re-sincronitza logical size i zoom en canvis de mida externs (fullscreen, rotació, resize)
void toggleIntegerScale(); // Alterna entre activar y desactivar el escalado entero
void toggleVSync(); // Alterna entre activar y desactivar el V-Sync
auto decWindowZoom() -> bool; // Reduce el tamaño de la ventana

View File

@@ -151,7 +151,7 @@ Director::Director() {
// perquè la textura 256x192 no es vegi minúscula al canvas HTML,
// i desactivem el borde per aprofitar al màxim l'espai del canvas.
Options::video.fullscreen = false;
Options::video.integer_scale = false;
Options::video.integer_scale = true;
Options::window.zoom = 4;
Options::video.border.enabled = true;
Options::video.border.height = 8;

View File

@@ -3,6 +3,7 @@
#include "core/input/input.hpp" // Para Input (gamepad add/remove)
#include "core/input/mouse.hpp"
#include "core/locale/locale.hpp" // Para Locale
#include "core/rendering/screen.hpp" // Para Screen::handleWindowResized
#include "game/options.hpp" // Para Options, options, OptionsGame, OptionsAudio
#include "game/scene_manager.hpp" // Para SceneManager::current (filtrar BACK a GAME)
#include "game/ui/console.hpp" // Para Console
@@ -23,6 +24,13 @@ namespace GlobalEvents {
// reLoadTextures();
}
// Canvi de mida de la finestra (fullscreen toggle extern, rotació del dispositiu,
// resize manual...). Re-sincronitzem el logical size del renderer i el zoom factor
// per evitar que la textura quedi estirada o desalineada amb el nou viewport.
if (event.type == SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED && Screen::get() != nullptr) {
Screen::get()->handleWindowResized();
}
// Connexió/desconnexió de gamepads: cal enrutar-los a Input perquè
// afegisca el dispositiu a gamepads_. Sense això, en wasm els gamepads
// mai es detecten (la Gamepad API del navegador només els exposa