diff --git a/desktop_version/src/Editor.cpp b/desktop_version/src/Editor.cpp index 497793ce..2f7899f5 100644 --- a/desktop_version/src/Editor.cpp +++ b/desktop_version/src/Editor.cpp @@ -3594,7 +3594,6 @@ void editorinput(void) if (game.currentmenuname == Menu::ed_settings) { ed.state = EditorState_DRAW; - gameScreen.recacheTextures(); } else { diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index d2dfec9a..5f826e3d 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -7800,7 +7800,6 @@ void Game::mapmenuchange(const enum GameGamestate newgamestate, const bool user_ gamestate = newgamestate; graphics.resumegamemode = false; mapheld = true; - gameScreen.recacheTextures(); if (prevgamestate == GAMEMODE) { diff --git a/desktop_version/src/KeyPoll.cpp b/desktop_version/src/KeyPoll.cpp index 4439d470..08b05cc0 100644 --- a/desktop_version/src/KeyPoll.cpp +++ b/desktop_version/src/KeyPoll.cpp @@ -459,6 +459,10 @@ void KeyPoll::Poll(void) break; } + case SDL_RENDER_TARGETS_RESET: + gameScreen.recacheTextures(); + break; + /* Window Events */ case SDL_WINDOWEVENT: switch (evt.window.event) @@ -496,7 +500,6 @@ void KeyPoll::Poll(void) } } SDL_DisableScreenSaver(); - gameScreen.recacheTextures(); break; case SDL_WINDOWEVENT_FOCUS_LOST: if (!game.disablepause) diff --git a/desktop_version/src/Screen.cpp b/desktop_version/src/Screen.cpp index cedf3115..21433f83 100644 --- a/desktop_version/src/Screen.cpp +++ b/desktop_version/src/Screen.cpp @@ -5,6 +5,8 @@ #include "Alloc.h" #include "Constants.h" +#include "CustomLevels.h" +#include "Enums.h" #include "Exit.h" #include "FileSystemUtils.h" #include "Game.h" @@ -14,6 +16,7 @@ #include "GraphicsResources.h" #endif #include "InterimVersion.h" +#include "Map.h" #include "Render.h" #include "Vlogging.h" @@ -152,7 +155,6 @@ void Screen::ResizeScreen(int x, int y) if (!isWindowed || isForcedFullscreen()) { int result = SDL_SetWindowFullscreen(m_window, SDL_WINDOW_FULLSCREEN_DESKTOP); - recacheTextures(); if (result != 0) { vlog_error("Error: could not set the game to fullscreen mode: %s", SDL_GetError()); @@ -175,7 +177,6 @@ void Screen::ResizeScreen(int x, int y) SDL_WINDOWPOS_CENTERED_DISPLAY(windowDisplay) ); } - recacheTextures(); } } @@ -352,8 +353,6 @@ void Screen::toggleVSync(void) { vsync = !vsync; SDL_RenderSetVSync(m_renderer, (int) vsync); - - recacheTextures(); } void Screen::recacheTextures(void) @@ -366,15 +365,21 @@ void Screen::recacheTextures(void) graphics.towerbg.tdrawback = true; graphics.titlebg.tdrawback = true; - if (game.ingame_titlemode) + if (game.gamestate == MAPMODE || game.ingame_titlemode) { - // Redraw the cached gameplay texture if we're in the in-game menu. + // Redraw the cached gameplay texture if we're in the map screen. // Additionally, reset alpha so things don't jitter when re-entering gameplay. float oldAlpha = graphics.alpha; graphics.alpha = 0; gamerender(); graphics.alpha = oldAlpha; } + + if (map.custommode) + { + // If we're in a custom level, regenerate the minimap, which also got cleared. + cl.generatecustomminimap(); + } } bool Screen::isForcedFullscreen(void)