From 2510d3a6ba37c9dd74ebb7e25efc19907dc3952d Mon Sep 17 00:00:00 2001 From: Misa Date: Tue, 28 Apr 2020 17:16:24 -0700 Subject: [PATCH] Interpolate cutscene bars position Cutscene bars will now smoothly fade in and out at above 30 FPS instead of at 30 FPS only. --- desktop_version/src/Game.cpp | 1 + desktop_version/src/Graphics.cpp | 11 +++++++---- desktop_version/src/Graphics.h | 1 + desktop_version/src/Logic.cpp | 1 + desktop_version/src/Script.cpp | 3 +++ 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index 5ffe5e9b..14b44ec6 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -3440,6 +3440,7 @@ void Game::updatestate() map.finaly = 100; graphics.cutscenebarspos = 320; + graphics.oldcutscenebarspos = 320; teleport_to_new_area = true; teleportscript = "gamecomplete"; diff --git a/desktop_version/src/Graphics.cpp b/desktop_version/src/Graphics.cpp index 2492c885..9364fd00 100644 --- a/desktop_version/src/Graphics.cpp +++ b/desktop_version/src/Graphics.cpp @@ -33,6 +33,7 @@ void Graphics::init() showcutscenebars = false; cutscenebarspos = 0; + oldcutscenebarspos = 0; notextoutline = false; flipmode = false; @@ -837,10 +838,11 @@ void Graphics::drawpartimage( int t, int xp, int yp, int wp, int hp) void Graphics::cutscenebars() { + int usethispos = lerp(oldcutscenebarspos, cutscenebarspos); if (showcutscenebars) { - FillRect(backBuffer, 0, 0, cutscenebarspos, 16, 0x000000); - FillRect(backBuffer, 360-cutscenebarspos, 224, cutscenebarspos, 16, 0x000000); + FillRect(backBuffer, 0, 0, usethispos, 16, 0x000000); + FillRect(backBuffer, 360-usethispos, 224, usethispos, 16, 0x000000); } else { @@ -848,14 +850,15 @@ void Graphics::cutscenebars() if (cutscenebarspos > 0) { //draw - FillRect(backBuffer, 0, 0, cutscenebarspos, 16, 0x000000); - FillRect(backBuffer, 360-cutscenebarspos, 224, cutscenebarspos, 16, 0x000000); + FillRect(backBuffer, 0, 0, usethispos, 16, 0x000000); + FillRect(backBuffer, 360-usethispos, 224, usethispos, 16, 0x000000); } } } void Graphics::cutscenebarstimer() { + oldcutscenebarspos = cutscenebarspos; if (showcutscenebars) { cutscenebarspos += 25; diff --git a/desktop_version/src/Graphics.h b/desktop_version/src/Graphics.h index e4a737c2..4987f066 100644 --- a/desktop_version/src/Graphics.h +++ b/desktop_version/src/Graphics.h @@ -269,6 +269,7 @@ public: bool showcutscenebars; int cutscenebarspos; + int oldcutscenebarspos; std::vector stars; std::vector starsspeed; diff --git a/desktop_version/src/Logic.cpp b/desktop_version/src/Logic.cpp index abadfb81..142148d9 100644 --- a/desktop_version/src/Logic.cpp +++ b/desktop_version/src/Logic.cpp @@ -65,6 +65,7 @@ void gamecompletelogic() //Fix some graphical things graphics.showcutscenebars = false; graphics.cutscenebarspos = 0; + graphics.oldcutscenebarspos = 0; map.scrolldir = 0; map.bypos = 0; //Return to game diff --git a/desktop_version/src/Script.cpp b/desktop_version/src/Script.cpp index 92b63539..492d0098 100644 --- a/desktop_version/src/Script.cpp +++ b/desktop_version/src/Script.cpp @@ -2593,6 +2593,7 @@ void scriptclass::startgamemode( int t ) game.jumpheld = true; graphics.showcutscenebars = true; graphics.cutscenebarspos = 320; + graphics.oldcutscenebarspos = 320; //set flipmode if (graphics.setflipmode) graphics.flipmode = true; @@ -2849,6 +2850,7 @@ void scriptclass::startgamemode( int t ) game.jumpheld = true; graphics.showcutscenebars = true; graphics.cutscenebarspos = 320; + graphics.oldcutscenebarspos = 320; //set flipmode if (graphics.setflipmode) graphics.flipmode = true; @@ -2876,6 +2878,7 @@ void scriptclass::startgamemode( int t ) game.jumpheld = true; graphics.showcutscenebars = true; graphics.cutscenebarspos = 320; + graphics.oldcutscenebarspos = 320; //set flipmode if (graphics.setflipmode) graphics.flipmode = true;