diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index 61b1118d..1a5fac33 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -385,6 +385,7 @@ void Game::init(void) kludge_ingametemp = Menu::mainmenu; disablepause = false; + inputdelay = false; } void Game::lifesequence(void) @@ -4173,6 +4174,11 @@ void Game::deserializesettings(tinyxml2::XMLElement* dataNode, ScreenSettings* s over30mode = help.Int(pText); } + if (SDL_strcmp(pKey, "inputdelay") == 0) + { + inputdelay = help.Int(pText); + } + if (SDL_strcmp(pKey, "glitchrunnermode") == 0) { glitchrunnermode = help.Int(pText); @@ -4423,6 +4429,8 @@ void Game::serializesettings(tinyxml2::XMLElement* dataNode, const ScreenSetting xml::update_tag(dataNode, "over30mode", (int) over30mode); + xml::update_tag(dataNode, "inputdelay", (int) inputdelay); + xml::update_tag(dataNode, "glitchrunnermode", (int) glitchrunnermode); xml::update_tag(dataNode, "vsync", (int) screen_settings->useVsync); @@ -6017,6 +6025,7 @@ void Game::createmenu( enum Menu::MenuName t, bool samemenu/*= false*/ ) option("fake load screen"); option("room name background"); option("glitchrunner mode"); + option("input delay"); option("return"); menuyoff = 0; break; diff --git a/desktop_version/src/Game.h b/desktop_version/src/Game.h index d7a3cfbf..f0cec0fd 100644 --- a/desktop_version/src/Game.h +++ b/desktop_version/src/Game.h @@ -452,6 +452,7 @@ public: void unlockAchievement(const char *name); bool disablepause; + bool inputdelay; }; #ifndef GAME_DEFINITION diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index e3c9cf73..fbad1e54 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -578,6 +578,12 @@ static void menuactionpress(void) game.savestatsandsettings_menu(); break; case 5: + /* Input delay */ + music.playef(11); + game.inputdelay = !game.inputdelay; + game.savestatsandsettings_menu(); + break; + default: //back music.playef(11); game.returnmenu(); diff --git a/desktop_version/src/Render.cpp b/desktop_version/src/Render.cpp index 70cb8184..c8d76756 100644 --- a/desktop_version/src/Render.cpp +++ b/desktop_version/src/Render.cpp @@ -518,6 +518,19 @@ static void menurender(void) graphics.Print( -1, 95, "Glitchrunner mode is OFF", tr/2, tg/2, tb/2, true); } break; + case 5: + graphics.bigprint(-1, 30, "Input Delay", tr, tg, tb, true); + graphics.Print(-1, 65, "Re-enable the 1-frame input delay", tr, tg, tb, true); + graphics.Print(-1, 75, "from previous versions of the game.", tr, tg, tb, true); + if (game.inputdelay) + { + graphics.Print(-1, 95, "Input delay is ON", tr, tg, tb, true); + } + else + { + graphics.Print(-1, 95, "Input delay is OFF", tr/2, tg/2, tb/2, true); + } + break; } break; case Menu::accessibility: diff --git a/desktop_version/src/main.cpp b/desktop_version/src/main.cpp index eb3f63d4..1d98eb9d 100644 --- a/desktop_version/src/main.cpp +++ b/desktop_version/src/main.cpp @@ -302,7 +302,7 @@ static enum LoopCode loop_run_active_funcs(void) const struct ImplFunc* implfunc = &(*active_funcs)[*active_func_index]; enum IndexCode index_code; - if (implfunc->type == Func_input) + if (implfunc->type == Func_input && !game.inputdelay) { key.Poll(); } @@ -721,6 +721,11 @@ static void inline deltaloop(void) static enum LoopCode loop_begin(void) { + if (game.inputdelay) + { + key.Poll(); + } + // Update network per frame. NETWORK_update();