commit per a provar les coses rares de la pantalla en wasm
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user