- [FIX] El ratolí ja va correctament en pantalla completa.

- [FIX] Els shaders ja van correctament a pantalla completa.
This commit is contained in:
2025-07-01 17:24:53 +02:00
parent bc59b74f15
commit 8cc347f639
3 changed files with 30 additions and 4 deletions

View File

@@ -28,6 +28,8 @@ namespace draw
static int desktop_height;
static int window_width;
static int window_height;
static int offset_x = 0;
static int offset_y = 0;
char window_title[256];
surface *screen {nullptr}; // La superficie screen, que representa la pantalla. Se crea i destrueix internament
@@ -64,9 +66,21 @@ namespace draw
window_width = canvas_width*screen_zoom;
window_height = window_ratio != 1 ? int(float(canvas_width)*window_ratio*float(screen_zoom)) : canvas_height*screen_zoom;
}
if (screen_fullscreen) {
window_width = desktop_width;
window_height = desktop_height;
if (desktop_width * window_ratio > desktop_height) {
offset_y = 0;
window_height = desktop_height;
window_width = desktop_height/window_ratio;
offset_x = (desktop_width - window_width)/2;
} else {
offset_x = 0;
window_width = desktop_width;
window_height = desktop_width*window_ratio;
offset_y = (desktop_height - window_height)/2;
}
} else {
offset_x = offset_y = 0;
}
sdl_window = SDL_CreateWindow(window_title, window_width, window_height, SDL_WINDOW_OPENGL|(screen_fullscreen?SDL_WINDOW_FULLSCREEN:0));
@@ -200,6 +214,16 @@ namespace draw
return float(window_height) / float(canvas_height);
}
const int getOffsetX()
{
return offset_x;
}
const int getOffsetY()
{
return offset_y;
}
bool getFullscreen() {
return screen_fullscreen;
}

View File

@@ -34,6 +34,8 @@ namespace draw
const int getZoom();
const float getScaleX();
const float getScaleY();
const int getOffsetX();
const int getOffsetY();
bool getFullscreen();
void setFullscreen(const bool value);

View File

@@ -79,7 +79,7 @@ namespace input
{
float x;
SDL_GetMouseState(&x, NULL);
return x/draw::getScaleX();
return (x-draw::getOffsetX())/draw::getScaleX();
}
// Torna la posició Y actual del ratolí
@@ -87,7 +87,7 @@ namespace input
{
float y;
SDL_GetMouseState(NULL, &y);
return y/draw::getScaleY();
return (y-draw::getOffsetY())/draw::getScaleY();
}
// Determina si el botó del ratolí especificat està sent polsada ara mateix