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);
|
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
|
// Reduce el tamaño de la ventana
|
||||||
auto Screen::decWindowZoom() -> bool {
|
auto Screen::decWindowZoom() -> bool {
|
||||||
if (static_cast<int>(Options::video.fullscreen) == 0) {
|
if (static_cast<int>(Options::video.fullscreen) == 0) {
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ class Screen {
|
|||||||
// Video y ventana
|
// Video y ventana
|
||||||
void setVideoMode(bool mode); // Establece el modo de video
|
void setVideoMode(bool mode); // Establece el modo de video
|
||||||
void toggleVideoMode(); // Cambia entre pantalla completa y ventana
|
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 toggleIntegerScale(); // Alterna entre activar y desactivar el escalado entero
|
||||||
void toggleVSync(); // Alterna entre activar y desactivar el V-Sync
|
void toggleVSync(); // Alterna entre activar y desactivar el V-Sync
|
||||||
auto decWindowZoom() -> bool; // Reduce el tamaño de la ventana
|
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,
|
// 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.
|
// i desactivem el borde per aprofitar al màxim l'espai del canvas.
|
||||||
Options::video.fullscreen = false;
|
Options::video.fullscreen = false;
|
||||||
Options::video.integer_scale = false;
|
Options::video.integer_scale = true;
|
||||||
Options::window.zoom = 4;
|
Options::window.zoom = 4;
|
||||||
Options::video.border.enabled = true;
|
Options::video.border.enabled = true;
|
||||||
Options::video.border.height = 8;
|
Options::video.border.height = 8;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "core/input/input.hpp" // Para Input (gamepad add/remove)
|
#include "core/input/input.hpp" // Para Input (gamepad add/remove)
|
||||||
#include "core/input/mouse.hpp"
|
#include "core/input/mouse.hpp"
|
||||||
#include "core/locale/locale.hpp" // Para Locale
|
#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/options.hpp" // Para Options, options, OptionsGame, OptionsAudio
|
||||||
#include "game/scene_manager.hpp" // Para SceneManager::current (filtrar BACK a GAME)
|
#include "game/scene_manager.hpp" // Para SceneManager::current (filtrar BACK a GAME)
|
||||||
#include "game/ui/console.hpp" // Para Console
|
#include "game/ui/console.hpp" // Para Console
|
||||||
@@ -23,6 +24,13 @@ namespace GlobalEvents {
|
|||||||
// reLoadTextures();
|
// 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è
|
// Connexió/desconnexió de gamepads: cal enrutar-los a Input perquè
|
||||||
// afegisca el dispositiu a gamepads_. Sense això, en wasm els gamepads
|
// afegisca el dispositiu a gamepads_. Sense això, en wasm els gamepads
|
||||||
// mai es detecten (la Gamepad API del navegador només els exposa
|
// mai es detecten (la Gamepad API del navegador només els exposa
|
||||||
|
|||||||
Reference in New Issue
Block a user