diff --git a/source/director.cpp b/source/director.cpp index da0c473..887e6bc 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -296,11 +296,15 @@ bool Director::initSDL() } */ + // Muestra información sobre el tamañi de la pantalla y de la ventana de juego SDL_DisplayMode DM; SDL_GetCurrentDisplayMode(0, &DM); std::cout << "\nCurrent display mode: " << DM.w << "x" << DM.h << " @ " << DM.refresh_rate << "Hz" << std::endl; std::cout << "Window resolution : " << param.game.width << "x" << param.game.height << " x" << options.video.window.size << std::endl; + // Calcula el máximo factor de zoom que se puede aplicar a la pantalla + options.video.window.max_size = std::min(DM.w / param.game.width, DM.h / param.game.height); + // Establece el filtro de la textura if (!SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, std::to_string(static_cast(options.video.filter)).c_str())) { diff --git a/source/options.h b/source/options.h index 5777524..fb6ad7e 100644 --- a/source/options.h +++ b/source/options.h @@ -23,7 +23,8 @@ enum class GameDifficulty // Estructura para las opciones de la ventana struct OptionsWindow { - int size; // Contiene el valor por el que se multiplica el tamaño de la ventana + int size = 1; // Contiene el valor por el que se multiplica el tamaño de la ventana + int max_size = 1; // Tamaño máximo para que el tamaño de la ventana no sea mayor que el tamaño de la pantalla }; // Estructura con opciones para el video diff --git a/source/screen.cpp b/source/screen.cpp index ceff9e6..e55fb3f 100644 --- a/source/screen.cpp +++ b/source/screen.cpp @@ -235,7 +235,7 @@ void Screen::decWindowSize() void Screen::incWindowSize() { ++options.video.window.size; - options.video.window.size = std::min(options.video.window.size, 4); + options.video.window.size = std::min(options.video.window.size, options.video.window.max_size); setVideoMode(ScreenVideoMode::WINDOW); }