diff --git a/source/engine.cpp b/source/engine.cpp index 8131645..d62a778 100644 --- a/source/engine.cpp +++ b/source/engine.cpp @@ -83,6 +83,9 @@ bool Engine::initialize(int width, int height, int zoom, bool fullscreen) { window_zoom = 1; } + // Guardar zoom calculado ANTES de crear la ventana (para F1/F2/F3/F4) + current_window_zoom_ = window_zoom; + // Calcular tamaño de ventana int window_width = logical_width * window_zoom; int window_height = logical_height * window_zoom; @@ -108,6 +111,11 @@ bool Engine::initialize(int width, int height, int zoom, bool fullscreen) { std::cout << "¡No se pudo crear la ventana! Error de SDL: " << SDL_GetError() << std::endl; success = false; } else { + // Centrar ventana en pantalla si no está en fullscreen + if (!fullscreen) { + SDL_SetWindowPosition(window_, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED); + } + // Crear renderizador renderer_ = SDL_CreateRenderer(window_, nullptr); if (renderer_ == nullptr) { @@ -1161,9 +1169,10 @@ void Engine::toggleRealFullscreen() { current_screen_width_ = base_screen_width_; current_screen_height_ = base_screen_height_; - // Restaurar ventana normal + // Restaurar ventana normal con el zoom actual (no hardcoded) SDL_SetWindowFullscreen(window_, false); - SDL_SetWindowSize(window_, base_screen_width_ * DEFAULT_WINDOW_ZOOM, base_screen_height_ * DEFAULT_WINDOW_ZOOM); + SDL_SetWindowSize(window_, base_screen_width_ * current_window_zoom_, base_screen_height_ * current_window_zoom_); + SDL_SetWindowPosition(window_, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED); // Restaurar presentación lógica base SDL_SetRenderLogicalPresentation(renderer_, base_screen_width_, base_screen_height_, SDL_LOGICAL_PRESENTATION_INTEGER_SCALE);