From fd44098f3827afb26a2fe65936b898000dec9072 Mon Sep 17 00:00:00 2001 From: Misa Date: Tue, 28 Apr 2020 15:02:37 -0700 Subject: [PATCH] Move render functions to outer deltatime loop Ok, and this is where the fun starts. In an ideal world, this would be the end of this patch. However, of course, there are many, MANY places in the game that update fixed-timestep timers DIRECTLY inside the render function, which is not ideal because it means those timers go super fast. I'll have to fix those later. --- desktop_version/src/main.cpp | 54 ++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/desktop_version/src/main.cpp b/desktop_version/src/main.cpp index c06e26c0..4c4e61d8 100644 --- a/desktop_version/src/main.cpp +++ b/desktop_version/src/main.cpp @@ -314,6 +314,8 @@ int main(int argc, char *argv[]) timePrev = time; time = SDL_GetTicks(); + game.infocus = key.isActive; + // Update network per frame. NETWORK_update(); @@ -365,7 +367,6 @@ int main(int argc, char *argv[]) game.press_map = false; } - game.infocus = key.isActive; if(!game.infocus) { Mix_Pause(-1); @@ -380,6 +381,7 @@ int main(int argc, char *argv[]) graphics.bprint(5, 230, "Press N to mute music only", 164 - help.glow, 196 - help.glow, 164 - help.glow, true); } graphics.render(); + gameScreen.FlipScreen(); //We are minimised, so lets put a bit of a delay to save CPU SDL_Delay(100); } @@ -391,16 +393,12 @@ int main(int argc, char *argv[]) switch(game.gamestate) { case PRELOADER: - //Render - preloaderrender(); break; #if !defined(NO_CUSTOM_LEVELS) case EDITORMODE: graphics.flipmode = false; //Input editorinput(); - //Render - editorrender(); ////Logic editorlogic(); break; @@ -408,8 +406,6 @@ int main(int argc, char *argv[]) case TITLEMODE: //Input titleinput(); - //Render - titlerender(); ////Logic titlelogic(); break; @@ -420,18 +416,15 @@ int main(int argc, char *argv[]) } gameinput(); - gamerender(); gamelogic(); break; case MAPMODE: - maprender(); mapinput(); maplogic(); break; case TELEPORTERMODE: - teleporterrender(); if(game.useteleporter) { teleporterinput(); @@ -447,21 +440,18 @@ int main(int argc, char *argv[]) maplogic(); break; case GAMECOMPLETE: - gamecompleterender(); //Input gamecompleteinput(); //Logic gamecompletelogic(); break; case GAMECOMPLETE2: - gamecompleterender2(); //Input gamecompleteinput2(); //Logic gamecompletelogic2(); break; case CLICKTOSTART: - help.updateglow(); break; default: @@ -551,10 +541,44 @@ int main(int argc, char *argv[]) music.processmusic(); graphics.processfade(); game.gameclock(); + } + const float alpha = static_cast(accumulator) / timesteplimit; + + if (game.infocus) + { + switch (game.gamestate) + { + case PRELOADER: + preloaderrender(); + break; + case EDITORMODE: + graphics.flipmode = false; + editorrender(); + break; + case TITLEMODE: + titlerender(); + break; + case GAMEMODE: + gamerender(); + break; + case MAPMODE: + maprender(); + break; + case TELEPORTERMODE: + teleporterrender(); + break; + case GAMECOMPLETE: + gamecompleterender(); + break; + case GAMECOMPLETE2: + gamecompleterender2(); + break; + case CLICKTOSTART: + help.updateglow(); + break; + } gameScreen.FlipScreen(); } - const float deltatime = rawdeltatime/1000.0f * 34.0f / timesteplimit; - const float alpha = static_cast(accumulator) / timesteplimit; } game.savestats();