vaig a fer un commit per si de cas petara algo ...

This commit is contained in:
2025-06-04 14:05:56 +02:00
parent 64b86c7ac1
commit 1a84f1b1b0
6 changed files with 97 additions and 23 deletions

View File

@@ -125,7 +125,7 @@ void Screen::toggleFullscreen()
// Cambia el tamaño de la ventana
void Screen::setWindowZoom(int zoom)
{
options.window.zoom = zoom;
options.window.size = zoom;
adjustWindowSize();
}
@@ -134,11 +134,11 @@ bool Screen::decWindowZoom()
{
if (!options.video.fullscreen)
{
const int PREVIOUS_ZOOM = options.window.zoom;
--options.window.zoom;
options.window.zoom = std::max(options.window.zoom, 1);
const int PREVIOUS_ZOOM = options.window.size;
--options.window.size;
options.window.size = std::max(options.window.size, 1);
if (options.window.zoom != PREVIOUS_ZOOM)
if (options.window.size != PREVIOUS_ZOOM)
{
adjustWindowSize();
return true;
@@ -153,11 +153,11 @@ bool Screen::incWindowZoom()
{
if (!options.video.fullscreen)
{
const int PREVIOUS_ZOOM = options.window.zoom;
++options.window.zoom;
options.window.zoom = std::min(options.window.zoom, options.window.max_zoom);
const int PREVIOUS_ZOOM = options.window.size;
++options.window.size;
options.window.size = std::min(options.window.size, options.window.max_size);
if (options.window.zoom != PREVIOUS_ZOOM)
if (options.window.size != PREVIOUS_ZOOM)
{
adjustWindowSize();
return true;
@@ -253,8 +253,8 @@ void Screen::adjustWindowSize()
// Establece el nuevo tamaño
if (!options.video.fullscreen)
{
const int WIDTH = param.game.width * options.window.zoom;
const int HEIGHT = param.game.height * options.window.zoom;
const int WIDTH = param.game.width * options.window.size;
const int HEIGHT = param.game.height * options.window.size;
int old_width, old_height;
SDL_GetWindowSize(window_, &old_width, &old_height);
@@ -320,7 +320,7 @@ bool Screen::initSDL()
}
// Crea la ventana
window_ = SDL_CreateWindow(options.window.caption.c_str(), param.game.width * options.window.zoom, param.game.height * options.window.zoom, SDL_WINDOW_OPENGL);
window_ = SDL_CreateWindow(options.window.caption.c_str(), param.game.width * options.window.size, param.game.height * options.window.size, SDL_WINDOW_OPENGL);
if (!window_)
{
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Window could not be created! SDL Error: %s", SDL_GetError());
@@ -368,15 +368,15 @@ void Screen::getDisplayInfo()
auto DM = SDL_GetCurrentDisplayMode(displays[0]);
// Calcula el máximo factor de zoom que se puede aplicar a la pantalla
options.window.max_zoom = std::min(DM->w / param.game.width, DM->h / param.game.height);
options.window.zoom = std::min(options.window.zoom, options.window.max_zoom);
options.window.max_size = std::min(DM->w / param.game.width, DM->h / param.game.height);
options.window.size = std::min(options.window.size, options.window.max_size);
// Muestra información sobre el tamaño de la pantalla y de la ventana de juego
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Current display mode: %dx%d @ %dHz",
static_cast<int>(DM->w), static_cast<int>(DM->h), static_cast<int>(DM->refresh_rate));
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Window resolution: %dx%d x%d",
static_cast<int>(param.game.width), static_cast<int>(param.game.height), options.window.zoom);
static_cast<int>(param.game.width), static_cast<int>(param.game.height), options.window.size);
options.video.info = std::to_string(static_cast<int>(DM->w)) + "x" +
std::to_string(static_cast<int>(DM->h)) + " @ " +
@@ -386,7 +386,7 @@ void Screen::getDisplayInfo()
const int MAX_ZOOM = std::min(DM->w / param.game.width, (DM->h - WINDOWS_DECORATIONS_) / param.game.height);
// Normaliza los valores de zoom
options.window.zoom = std::min(options.window.zoom, MAX_ZOOM);
options.window.size = std::min(options.window.size, MAX_ZOOM);
SDL_free(displays);
}