From 65f84b15f4d6dc0cbe8bf65418d323f4adbeb753 Mon Sep 17 00:00:00 2001 From: Misa Date: Mon, 22 Jun 2020 22:46:29 -0700 Subject: [PATCH] Fix deltaframe tower BG flicker when exiting menu in H/V warp room To fix this annoying flicker (which, btw, took me WAY too long to do), I had to introduce yet another kludge variable to signal that the horizontal/vertical warp background should be re-initialized on the pause screen. I think I could technically keep the 'graphics.backgrounddrawn = false;' in maplogic() and remove the 'graphics.backgrounddrawn = false;' in Game::returntopausemenu(), but I'm keeping that other one around because it doesn't hurt and just as a general precaution and safety measure. --- desktop_version/src/Game.cpp | 2 ++ desktop_version/src/Game.h | 1 + desktop_version/src/Logic.cpp | 10 ++++++++++ 3 files changed, 13 insertions(+) diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index 133500fe..9355ff77 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -391,6 +391,7 @@ void Game::init(void) ingame_titlemode = false; kludge_ingametemp = Menu::mainmenu; + shouldreturntopausemenu = false; /* Terry's Patrons... */ const char* superpatrons_arr[] = { @@ -7766,4 +7767,5 @@ void Game::returntopausemenu() graphics.backgrounddrawn = false; game.mapheld = true; graphics.flipmode = graphics.setflipmode; + game.shouldreturntopausemenu = true; } diff --git a/desktop_version/src/Game.h b/desktop_version/src/Game.h index 688bc61f..dd00104a 100644 --- a/desktop_version/src/Game.h +++ b/desktop_version/src/Game.h @@ -408,6 +408,7 @@ public: bool ingame_titlemode; + bool shouldreturntopausemenu; void returntopausemenu(); }; diff --git a/desktop_version/src/Logic.cpp b/desktop_version/src/Logic.cpp index 71644d2a..048067a5 100644 --- a/desktop_version/src/Logic.cpp +++ b/desktop_version/src/Logic.cpp @@ -79,6 +79,16 @@ void maplogic() graphics.updatetextboxes(); graphics.updatetitlecolours(); + if (game.shouldreturntopausemenu) + { + game.shouldreturntopausemenu = false; + graphics.backgrounddrawn = false; + if (map.background == 3 || map.background || 4) + { + graphics.updatebackground(map.background); + } + } + graphics.crewframedelay--; if (graphics.crewframedelay <= 0) {