diff --git a/desktop_version/src/Game.cpp b/desktop_version/src/Game.cpp index 45965661..3b205ccd 100644 --- a/desktop_version/src/Game.cpp +++ b/desktop_version/src/Game.cpp @@ -5818,17 +5818,16 @@ void Game::createmenu( enum Menu::MenuName t, bool samemenu/*= false*/ ) { case Menu::mainmenu: #if !defined(MAKEANDPLAY) - option("start game"); + option("play"); #endif #if !defined(NO_CUSTOM_LEVELS) - option("player levels"); + option("levels"); #endif - option("graphic options"); - option("game options"); + option("options"); #if !defined(MAKEANDPLAY) - option("view credits"); + option("credits"); #endif - option("quit game"); + option("quit"); menuyoff = -10; maxspacing = 15; break; @@ -5948,16 +5947,31 @@ void Game::createmenu( enum Menu::MenuName t, bool samemenu/*= false*/ ) option("ok"); menuyoff = -20; break; + case Menu::gameplayoptions: +#if !defined(MAKEANDPLAY) + if (ingame_titlemode && unlock[18]) +#endif + { + option("flip mode"); + } + option("toggle fps"); + option("speedrun options"); + option("advanced options"); + option("clear data"); + option("return"); + menuyoff = -10; + maxspacing = 15; + break; case Menu::graphicoptions: option("toggle fullscreen"); option("scaling mode"); option("resize to nearest", graphics.screenbuffer->isWindowed); option("toggle filter"); option("toggle analogue"); - option("toggle fps"); option("toggle vsync"); option("return"); menuyoff = -10; + maxspacing = 15; break; case Menu::ed_settings: option("change description"); @@ -5966,8 +5980,7 @@ void Game::createmenu( enum Menu::MenuName t, bool samemenu/*= false*/ ) option("editor ghosts"); option("load level"); option("save level"); - option("graphic options"); - option("game options"); + option("options"); option("quit to main menu"); menuyoff = -20; @@ -5998,19 +6011,10 @@ void Game::createmenu( enum Menu::MenuName t, bool samemenu/*= false*/ ) maxspacing = 15; break; case Menu::options: - option("accessibility options"); - option("advanced options"); -#if !defined(MAKEANDPLAY) - if (ingame_titlemode && unlock[18]) -#endif - { - option("flip mode"); - } -#if !defined(MAKEANDPLAY) - option("unlock play modes"); -#endif - option("game pad options"); - option("clear data"); + option("gameplay"); + option("graphics"); + option("game pad"); + option("accessibility"); //Add extra menu for mmmmmm mod if(music.mmmmmm){ option("soundtrack"); @@ -6018,25 +6022,36 @@ void Game::createmenu( enum Menu::MenuName t, bool samemenu/*= false*/ ) option("return"); menuyoff = 0; + maxspacing = 15; break; + case Menu::speedrunneroptions: + option("glitchrunner mode"); + option("input delay"); + option("fake load screen"); + option("return"); + menuyoff = 0; + maxspacing = 15; + break; case Menu::advancedoptions: option("toggle mouse"); option("unfocus pause"); - option("fake load screen"); option("room name background"); - option("glitchrunner mode"); - option("input delay"); option("return"); menuyoff = 0; + maxspacing = 15; break; case Menu::accessibility: - option("animated backgrounds"); +#if !defined(MAKEANDPLAY) + option("unlock play modes"); +#endif + option("invincibility", !ingame_titlemode || (!insecretlab && !intimetrial && !nodeathmode)); + option("slowdown", !ingame_titlemode || (!insecretlab && !intimetrial && !nodeathmode)); + option("animated backgrounds"); option("screen effects"); option("text outline"); - option("invincibility", !ingame_titlemode || (!insecretlab && !intimetrial && !nodeathmode)); - option("slowdown", !ingame_titlemode || (!insecretlab && !intimetrial && !nodeathmode)); option("return"); menuyoff = 0; + maxspacing = 15; break; case Menu::controller: option("analog stick sensitivity"); @@ -6045,7 +6060,8 @@ void Game::createmenu( enum Menu::MenuName t, bool samemenu/*= false*/ ) option("bind menu"); option("bind restart"); option("return"); - menuyoff = 10; + menuyoff = 0; + maxspacing = 10; break; case Menu::cleardatamenu: option("no! don't delete"); diff --git a/desktop_version/src/Game.h b/desktop_version/src/Game.h index f53351be..4c0aa404 100644 --- a/desktop_version/src/Game.h +++ b/desktop_version/src/Game.h @@ -41,6 +41,8 @@ namespace Menu ed_music, ed_quit, options, + gameplayoptions, + speedrunneroptions, advancedoptions, accessibility, controller, diff --git a/desktop_version/src/Input.cpp b/desktop_version/src/Input.cpp index fbad1e54..381b0ddd 100644 --- a/desktop_version/src/Input.cpp +++ b/desktop_version/src/Input.cpp @@ -248,29 +248,23 @@ static void menuactionpress(void) break; #endif case OFFSET+2: - //Options - music.playef(11); - game.createmenu(Menu::graphicoptions); - map.nexttowercolour(); - break; - case OFFSET+3: //Options music.playef(11); game.createmenu(Menu::options); map.nexttowercolour(); break; #if !defined(MAKEANDPLAY) - case OFFSET+4: - //Credits - music.playef(11); - game.createmenu(Menu::credits); - map.nexttowercolour(); - break; + case OFFSET+3: + //Credits + music.playef(11); + game.createmenu(Menu::credits); + map.nexttowercolour(); + break; #else #undef MPOFFSET #define MPOFFSET -2 #endif - case OFFSET+5: + case OFFSET+4: music.playef(11); game.createmenu(Menu::youwannaquit); map.nexttowercolour(); @@ -442,12 +436,6 @@ static void menuactionpress(void) game.savestatsandsettings_menu(); break; case 5: - //toggle 30+ fps - music.playef(11); - game.over30mode = !game.over30mode; - game.savestatsandsettings_menu(); - break; - case 6: //toggle vsync music.playef(11); #ifndef __HAIKU__ // FIXME: Remove after SDL VSync bug is fixed! -flibit @@ -537,6 +525,35 @@ static void menuactionpress(void) break; } break; + case Menu::speedrunneroptions: + switch (game.currentmenuoption) + { + case 0: + // Glitchrunner mode + music.playef(11); + game.glitchrunnermode = !game.glitchrunnermode; + game.savestatsandsettings_menu(); + break; + case 1: + /* Input delay */ + music.playef(11); + game.inputdelay = !game.inputdelay; + game.savestatsandsettings_menu(); + break; + case 2: + // toggle fake load screen + game.skipfakeload = !game.skipfakeload; + game.savestatsandsettings_menu(); + music.playef(11); + break; + default: + //back + music.playef(11); + game.returnmenu(); + map.nexttowercolour(); + break; + } + break; case Menu::advancedoptions: switch (game.currentmenuoption) { @@ -560,29 +577,11 @@ static void menuactionpress(void) music.playef(11); break; case 2: - // toggle fake load screen - game.skipfakeload = !game.skipfakeload; - game.savestatsandsettings_menu(); - music.playef(11); - break; - case 3: // toggle translucent roomname BG graphics.translucentroomname = !graphics.translucentroomname; game.savestatsandsettings_menu(); music.playef(11); break; - case 4: - // Glitchrunner mode - music.playef(11); - game.glitchrunnermode = !game.glitchrunnermode; - game.savestatsandsettings_menu(); - break; - case 5: - /* Input delay */ - music.playef(11); - game.inputdelay = !game.inputdelay; - game.savestatsandsettings_menu(); - break; default: //back music.playef(11); @@ -592,83 +591,163 @@ static void menuactionpress(void) } break; case Menu::accessibility: - switch (game.currentmenuoption) - { - case 0: - //disable animated backgrounds - game.colourblindmode = !game.colourblindmode; - game.savestatsandsettings_menu(); - graphics.towerbg.tdrawback = true; - graphics.titlebg.tdrawback = true; - music.playef(11); - break; - case 1: - //disable screeneffects - game.noflashingmode = !game.noflashingmode; - game.savestatsandsettings_menu(); - if (!game.noflashingmode) - { - music.playef(18); - game.screenshake = 10; - game.flashlight = 5; - }else{ - music.playef(11); - } - break; - case 2: - //disable text outline - graphics.notextoutline = !graphics.notextoutline; - game.savestatsandsettings_menu(); - music.playef(11); - break; - case 3: - //invincibility - if (!game.ingame_titlemode || (!game.insecretlab && !game.intimetrial && !game.nodeathmode)) - { - if (!map.invincibility) - { - game.createmenu(Menu::setinvincibility); - map.nexttowercolour(); - } - else - { - map.invincibility = !map.invincibility; - game.savestatsandsettings_menu(); - } - music.playef(11); - } - else - { - music.playef(2); - map.invincibility = false; - } - break; - case 4: - //change game speed - if (!game.ingame_titlemode || (!game.insecretlab && !game.intimetrial && !game.nodeathmode)) - { - game.createmenu(Menu::setslowdown); - map.nexttowercolour(); - music.playef(11); - } - else - { - music.playef(2); - game.slowdown = 30; - } - break; - case 5: - //back - music.playef(11); - game.returnmenu(); - map.nexttowercolour(); - break; - default: - //Can't do yet! play sad sound - music.playef(2); - break; - } - break; + { + int accessibilityoffset = 0; +#if !defined(MAKEANDPLAY) + accessibilityoffset = 1; + if (game.currentmenuoption == 0) { + //unlock play options + music.playef(11); + game.createmenu(Menu::unlockmenu); + map.nexttowercolour(); + } +#endif + if (game.currentmenuoption == accessibilityoffset + 0) { + //invincibility + if (!game.ingame_titlemode || (!game.insecretlab && !game.intimetrial && !game.nodeathmode)) + { + if (!map.invincibility) + { + game.createmenu(Menu::setinvincibility); + map.nexttowercolour(); + } + else + { + map.invincibility = !map.invincibility; + game.savestatsandsettings_menu(); + } + music.playef(11); + } + else + { + music.playef(2); + map.invincibility = false; + } + } + else if (game.currentmenuoption == accessibilityoffset + 1) { + //change game speed + if (!game.ingame_titlemode || (!game.insecretlab && !game.intimetrial && !game.nodeathmode)) + { + game.createmenu(Menu::setslowdown); + map.nexttowercolour(); + music.playef(11); + } + else + { + music.playef(2); + game.slowdown = 30; + } + } + else if (game.currentmenuoption == accessibilityoffset + 2) { + //disable animated backgrounds + game.colourblindmode = !game.colourblindmode; + game.savestatsandsettings_menu(); + graphics.towerbg.tdrawback = true; + graphics.titlebg.tdrawback = true; + music.playef(11); + } + else if (game.currentmenuoption == accessibilityoffset + 3) { + //disable screeneffects + game.noflashingmode = !game.noflashingmode; + game.savestatsandsettings_menu(); + if (!game.noflashingmode) + { + music.playef(18); + game.screenshake = 10; + game.flashlight = 5; + } + else { + music.playef(11); + } + } + else if (game.currentmenuoption == accessibilityoffset + 4) { + //disable text outline + graphics.notextoutline = !graphics.notextoutline; + game.savestatsandsettings_menu(); + music.playef(11); + } + else if (game.currentmenuoption == accessibilityoffset + 5) { + //back + music.playef(11); + game.returnmenu(); + map.nexttowercolour(); + } + break; + } + case Menu::gameplayoptions: + { + int gameplayoptionsoffset = 0; +#if !defined(MAKEANDPLAY) + if (game.ingame_titlemode && game.unlock[18]) +#endif + { + gameplayoptionsoffset = 1; + if (game.currentmenuoption == 0) { + toggleflipmode(); + // Fix wrong area music in Tower (Positive Force vs. ecroF evitisoP) + if (map.custommode) + { + break; + } + int area = map.area(game.roomx, game.roomy); + if (area == 3 || area == 11) + { + if (graphics.setflipmode) + { + music.play(9); // ecroF evitisoP + } + else + { + music.play(2); // Positive Force + } + } + } + } + + if (game.currentmenuoption == gameplayoptionsoffset + 0) + { + //Toggle 30+ FPS + music.playef(11); + game.over30mode = !game.over30mode; + game.savestatsandsettings_menu(); + } + else if (game.currentmenuoption == gameplayoptionsoffset + 1) + { + //Speedrunner options + music.playef(11); + game.createmenu(Menu::speedrunneroptions); + map.nexttowercolour(); + } + else if (game.currentmenuoption == gameplayoptionsoffset + 2) + { + //Advanced options + music.playef(11); + game.createmenu(Menu::advancedoptions); + map.nexttowercolour(); + } + else if (game.currentmenuoption == gameplayoptionsoffset + 3) + { + //Clear Data + music.playef(11); + game.createmenu(Menu::cleardatamenu); + map.nexttowercolour(); + } + else if (game.currentmenuoption == gameplayoptionsoffset + 4) { + //return to previous menu + music.playef(11); + if (game.ingame_titlemode) + { + game.returntoingame(); + } + else + { + game.returnmenu(); + map.nexttowercolour(); + } + } + + break; + } case Menu::options: { #if defined(MAKEANDPLAY) @@ -687,104 +766,61 @@ static void menuactionpress(void) int offset = 0; - switch (game.currentmenuoption) - { - case 0: - //accessibility options - music.playef(11); - game.createmenu(Menu::accessibility); - map.nexttowercolour(); - break; - case 1: - //advanced options - music.playef(11); - game.createmenu(Menu::advancedoptions); - map.nexttowercolour(); - break; - case 2: -#if !defined(MAKEANDPLAY) - if (game.ingame_titlemode && game.unlock[18]) -#endif - { - toggleflipmode(); - // Fix wrong area music in Tower (Positive Force vs. ecroF evitisoP) - if (map.custommode) - { - break; - } - int area = map.area(game.roomx, game.roomy); - if (area == 3 || area == 11) - { - if (graphics.setflipmode) - { - music.play(9); // ecroF evitisoP - } - else - { - music.play(2); // Positive Force - } - } - } - break; - } + switch (game.currentmenuoption) + { + case 0: + //gameplay options + music.playef(11); + game.createmenu(Menu::gameplayoptions); + map.nexttowercolour(); + break; + case 1: + //graphic options + music.playef(11); + game.createmenu(Menu::graphicoptions); + map.nexttowercolour(); + break; + case 2: + //gamepad options + music.playef(11); + game.createmenu(Menu::controller); + map.nexttowercolour(); + break; + case 3: + //accessibility options + music.playef(11); + game.createmenu(Menu::accessibility); + map.nexttowercolour(); + break; + } - offset += flipmode_offset; + if (game.currentmenuoption == 4 && music.mmmmmm) + { + //**** TOGGLE MMMMMM + music.usingmmmmmm = !music.usingmmmmmm; + music.playef(11); + if (music.currentsong > -1) + { + music.play(music.currentsong); + } + game.savestatsandsettings_menu(); + } -#if !defined(MAKEANDPLAY) - if (game.currentmenuoption == 3+offset) - { - //unlock play options - music.playef(11); - game.createmenu(Menu::unlockmenu); - map.nexttowercolour(); - } -#endif + if (game.currentmenuoption == 4 + (music.mmmmmm?1:0)) + { + //Last option here is "return" + music.playef(11); + if (game.ingame_titlemode) + { + game.returntoingame(); + } + else + { + game.returnmenu(); + map.nexttowercolour(); + } + } - offset += unlockmode_offset; - - if (game.currentmenuoption == 4+offset) - { - //clear data menu - music.playef(11); - game.createmenu(Menu::controller); - map.nexttowercolour(); - break; - } - else if (game.currentmenuoption == 5+offset) - { - //clear data menu - music.playef(11); - game.createmenu(Menu::cleardatamenu); - map.nexttowercolour(); - } - else if (game.currentmenuoption == 6+offset && music.mmmmmm) - { - //**** TOGGLE MMMMMM - music.usingmmmmmm = !music.usingmmmmmm; - music.playef(11); - if (music.currentsong > -1) - { - music.play(music.currentsong); - } - game.savestatsandsettings_menu(); - } - - offset += mmmmmm_offset; - - if (game.currentmenuoption == 7+offset) - { - //back - music.playef(11); - if (game.ingame_titlemode) - { - game.returntoingame(); - } - else - { - game.returnmenu(); - map.nexttowercolour(); - } - } break; } case Menu::unlockmenutrials: @@ -2213,8 +2249,8 @@ void mapinput(void) if (game.menupage == 19) game.menupage = 21; if (game.menupage == 22) game.menupage = 20; - if (game.menupage == 29) game.menupage = 33; - if (game.menupage == 34) game.menupage = 30; + if (game.menupage == 29) game.menupage = 32; + if (game.menupage == 33) game.menupage = 30; } } @@ -2317,34 +2353,24 @@ static void mapmenuactionpress(void) graphics.resumegamemode = true; break; case 31: - // Go to quit prompt - music.playef(11); - game.menupage = 10; - break; + // Graphic options and game options + music.playef(11); + game.gamestate = TITLEMODE; + graphics.flipmode = false; + game.ingame_titlemode = true; + graphics.ingame_fademode = graphics.fademode; + graphics.fademode = 0; + + // Set this before we create the menu + game.kludge_ingametemp = game.currentmenuname; + game.createmenu(Menu::options); + map.nexttowercolour(); + break; case 32: - case 33: - // Graphic options and game options - music.playef(11); - game.gamestate = TITLEMODE; - graphics.flipmode = false; - game.ingame_titlemode = true; - graphics.ingame_fademode = graphics.fademode; - graphics.fademode = 0; - - // Set this before we create the menu - game.kludge_ingametemp = game.currentmenuname; - - if (game.menupage == 32) - { - game.createmenu(Menu::graphicoptions); - } - else - { - game.createmenu(Menu::options); - } - - map.nexttowercolour(); - break; + // Go to quit prompt + music.playef(11); + game.menupage = 10; + break; } } diff --git a/desktop_version/src/Render.cpp b/desktop_version/src/Render.cpp index ecf8d98c..121613d1 100644 --- a/desktop_version/src/Render.cpp +++ b/desktop_version/src/Render.cpp @@ -98,95 +98,122 @@ static void menurender(void) } #endif case Menu::errornostart: - graphics.Print( -1, 65, "ERROR: This level has", tr, tg, tb, true); - graphics.Print( -1, 75, "no start point!", tr, tg, tb, true); - break; + graphics.Print( -1, 65, "ERROR: This level has", tr, tg, tb, true); + graphics.Print( -1, 75, "no start point!", tr, tg, tb, true); + break; + case Menu::gameplayoptions: + { + int gameplayoptionsoffset = 0; +#if !defined(MAKEANDPLAY) + if (game.ingame_titlemode && game.unlock[18]) +#endif + { + gameplayoptionsoffset = 1; + if (game.currentmenuoption == 0) { + graphics.bigprint(-1, 30, "Flip Mode", tr, tg, tb, true); + graphics.Print(-1, 65, "Flip the entire game vertically.", tr, tg, tb, true); + if (graphics.setflipmode) + { + graphics.Print(-1, 85, "Currently ENABLED!", tr, tg, tb, true); + } + else + { + graphics.Print(-1, 85, "Currently Disabled.", tr / 2, tg / 2, tb / 2, true); + } + } + } + + if (game.currentmenuoption == gameplayoptionsoffset + 0) + { + //Toggle FPS + graphics.bigprint(-1, 30, "Toggle 30+ FPS", tr, tg, tb, true); + graphics.Print(-1, 65, "Change whether the game", tr, tg, tb, true); + graphics.Print(-1, 75, "runs at 30 or over 30 FPS.", tr, tg, tb, true); + + if (!game.over30mode) + { + graphics.Print(-1, 95, "Current mode: 30 FPS", tr / 2, tg / 2, tb / 2, true); + } + else + { + graphics.Print(-1, 95, "Current mode: Over 30 FPS", tr, tg, tb, true); + } + break; + } + else if (game.currentmenuoption == gameplayoptionsoffset + 1) + { + //Speedrunner options + graphics.bigprint(-1, 30, "Speedrunner Options", tr, tg, tb, true); + graphics.Print(-1, 65, "Access some advanced settings that", tr, tg, tb, true); + graphics.Print(-1, 75, "might be of interest to speedrunners", tr, tg, tb, true); + } + else if (game.currentmenuoption == gameplayoptionsoffset + 2) + { + //Advanced options + graphics.bigprint(-1, 30, "Advanced Options", tr, tg, tb, true); + graphics.Print(-1, 65, "All other settings", tr, tg, tb, true); + } + else if (game.currentmenuoption == gameplayoptionsoffset + 3) + { + //Clear Data + graphics.bigprint(-1, 30, "Clear Data", tr, tg, tb, true); + graphics.Print(-1, 65, "Delete your save data", tr, tg, tb, true); + graphics.Print(-1, 75, "and unlocked play modes", tr, tg, tb, true); + } + + break; + } case Menu::options: - { + { #if defined(MAKEANDPLAY) - int flipmode_offset = 0; + int flipmode_offset = 0; #else - int flipmode_offset = game.ingame_titlemode && game.unlock[18] ? 0 : -1; + int flipmode_offset = game.ingame_titlemode && game.unlock[18] ? 0 : -1; #endif #if defined(MAKEANDPLAY) - int unlockmode_offset = -1; + int unlockmode_offset = -1; #else - int unlockmode_offset = 0; + int unlockmode_offset = 0; #endif - int offset = 0; + int offset = 0; - switch (game.currentmenuoption) - { - case 0: - graphics.bigprint( -1, 30, "Accessibility", tr, tg, tb, true); - graphics.Print( -1, 65, "Disable screen effects, enable", tr, tg, tb, true); - graphics.Print( -1, 75, "slowdown modes or invincibility", tr, tg, tb, true); - break; - case 1: - graphics.bigprint( -1, 30, "Advanced Options", tr, tg, tb, true); - graphics.Print( -1, 65, "Hide the mouse cursor, remove", tr, tg, tb, true); - graphics.Print( -1, 75, "the loading screen, turn on", tr, tg, tb, true); - graphics.Print( -1, 85, "glitchrunner mode and more", tr, tg, tb, true); - break; - case 2: -#if !defined(MAKEANDPLAY) - if (game.ingame_titlemode && game.unlock[18]) -#endif - { - graphics.bigprint( -1, 30, "Flip Mode", tr, tg, tb, true); - graphics.Print( -1, 65, "Flip the entire game vertically.", tr, tg, tb, true); - if (graphics.setflipmode) - { - graphics.Print( -1, 85, "Currently ENABLED!", tr, tg, tb, true); - } - else - { - graphics.Print( -1, 85, "Currently Disabled.", tr/2, tg/2, tb/2, true); - } - } - break; - } + switch (game.currentmenuoption) + { + case 0: + graphics.bigprint(-1, 30, "Gameplay Options", tr, tg, tb, true); + graphics.Print(-1, 65, "Adjust various gameplay options", tr, tg, tb, true); + break; + case 1: + graphics.bigprint(-1, 30, "Graphics Options", tr, tg, tb, true); + graphics.Print(-1, 65, "Adjust screen settings", tr, tg, tb, true); + break; + case 2: + graphics.bigprint(-1, 30, "Game Pad Options", tr, tg, tb, true); + graphics.Print(-1, 65, "Rebind your controller's buttons", tr, tg, tb, true); + graphics.Print(-1, 75, "and adjust sensitivity", tr, tg, tb, true); + break; + case 3: + graphics.bigprint(-1, 30, "Accessibility", tr, tg, tb, true); + graphics.Print(-1, 65, "Disable screen effects, enable", tr, tg, tb, true); + graphics.Print(-1, 75, "slowdown modes or invincibility", tr, tg, tb, true); + break; + } - offset += flipmode_offset; - -#if !defined(MAKEANDPLAY) - if (game.currentmenuoption == 3+offset) - { - graphics.bigprint( -1, 30, "Unlock Play Modes", tr, tg, tb, true); - graphics.Print( -1, 65, "Unlock parts of the game normally", tr, tg, tb, true); - graphics.Print( -1, 75, "unlocked as you progress", tr, tg, tb, true); - } -#endif - - offset += unlockmode_offset; - - if (game.currentmenuoption == 4+offset) - { - graphics.bigprint( -1, 30, "Game Pad Options", tr, tg, tb, true); - graphics.Print( -1, 65, "Rebind your controller's buttons", tr, tg, tb, true); - graphics.Print( -1, 75, "and adjust sensitivity", tr, tg, tb, true); - } - else if (game.currentmenuoption == 5+offset) - { - graphics.bigprint( -1, 30, "Clear Data", tr, tg, tb, true); - graphics.Print( -1, 65, "Delete your save data", tr, tg, tb, true); - graphics.Print( -1, 75, "and unlocked play modes", tr, tg, tb, true); - } - else if (game.currentmenuoption == 6+offset && music.mmmmmm) - { - graphics.bigprint( -1, 30, "Soundtrack", tr, tg, tb, true); - graphics.Print( -1, 65, "Toggle between MMMMMM and PPPPPP", tr, tg, tb, true); - if(music.usingmmmmmm){ - graphics.Print( -1, 85, "Current soundtrack: MMMMMM", tr, tg, tb, true); - }else{ - graphics.Print( -1, 85, "Current soundtrack: PPPPPP", tr, tg, tb, true); - } - break; - } - break; - } + if (game.currentmenuoption == 4 && music.mmmmmm) + { + graphics.bigprint(-1, 30, "Soundtrack", tr, tg, tb, true); + graphics.Print(-1, 65, "Toggle between MMMMMM and PPPPPP", tr, tg, tb, true); + if (music.usingmmmmmm) { + graphics.Print(-1, 85, "Current soundtrack: MMMMMM", tr, tg, tb, true); + } + else { + graphics.Print(-1, 85, "Current soundtrack: PPPPPP", tr, tg, tb, true); + } + } + break; + } case Menu::graphicoptions: switch (game.currentmenuoption) { @@ -252,20 +279,6 @@ static void menurender(void) graphics.Print( -1, 85, "adjust the picture.", tr, tg, tb, true); break; case 5: - graphics.bigprint(-1, 30, "Toggle 30+ FPS", tr, tg, tb, true); - graphics.Print(-1, 65, "Change whether the game", tr, tg, tb, true); - graphics.Print(-1, 75, "runs at 30 or over 30 FPS.", tr, tg, tb, true); - - if (!game.over30mode) - { - graphics.Print(-1, 95, "Current mode: 30 FPS", tr/2, tg/2, tb/2, true); - } - else - { - graphics.Print(-1, 95, "Current mode: Over 30 FPS", tr, tg, tb, true); - } - break; - case 6: graphics.bigprint(-1, 30, "Toggle VSync", tr, tg, tb, true); #ifdef __HAIKU__ // FIXME: Remove after SDL VSync bug is fixed! -flibit graphics.Print(-1, 65, "Edit the config file on Haiku!", tr, tg, tb, true); @@ -462,6 +475,44 @@ static void menurender(void) break; + case Menu::speedrunneroptions: + switch (game.currentmenuoption) + { + case 0: + graphics.bigprint(-1, 30, "Glitchrunner Mode", tr, tg, tb, true); + graphics.Print(-1, 65, "Re-enable glitches that existed", tr, tg, tb, true); + graphics.Print(-1, 75, "in previous versions of the game.", tr, tg, tb, true); + if (game.glitchrunnermode) + { + graphics.Print(-1, 95, "Glitchrunner mode is ON", tr, tg, tb, true); + } + else + { + graphics.Print(-1, 95, "Glitchrunner mode is OFF", tr / 2, tg / 2, tb / 2, true); + } + break; + case 1: + 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; + case 2: + graphics.bigprint(-1, 30, "Fake Load Screen", tr, tg, tb, true); + if (game.skipfakeload) + graphics.Print(-1, 65, "Fake loading screen is OFF", tr / 2, tg / 2, tb / 2, true); + else + graphics.Print(-1, 65, "Fake loading screen is ON", tr, tg, tb, true); + break; + } + break; case Menu::advancedoptions: switch (game.currentmenuoption) { @@ -490,13 +541,6 @@ static void menurender(void) } break; case 2: - graphics.bigprint(-1, 30, "Fake Load Screen", tr, tg, tb, true); - if (game.skipfakeload) - graphics.Print(-1, 65, "Fake loading screen is OFF", tr/2, tg/2, tb/2, true); - else - graphics.Print(-1, 65, "Fake loading screen is ON", tr, tg, tb, true); - break; - case 3: graphics.bigprint(-1, 30, "Room Name BG", tr, tg, tb, true); graphics.Print( -1, 65, "Lets you see through what is behind", tr, tg, tb, true); graphics.Print( -1, 75, "the name at the bottom of the screen.", tr, tg, tb, true); @@ -505,92 +549,74 @@ static void menurender(void) else graphics.Print(-1, 95, "Room name background is OPAQUE", tr, tg, tb, true); break; - case 4: - graphics.bigprint( -1, 30, "Glitchrunner Mode", tr, tg, tb, true); - graphics.Print( -1, 65, "Re-enable glitches that existed", tr, tg, tb, true); - graphics.Print( -1, 75, "in previous versions of the game.", tr, tg, tb, true); - if (game.glitchrunnermode) - { - graphics.Print( -1, 95, "Glitchrunner mode is ON", tr, tg, tb, true); - } - else - { - 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: - switch (game.currentmenuoption) - { - case 0: - graphics.bigprint( -1, 40, "Backgrounds", tr, tg, tb, true); - if (!game.colourblindmode) - { - graphics.Print( -1, 75, "Backgrounds are ON.", tr, tg, tb, true); - } - else - { - graphics.Print( -1, 75, "Backgrounds are OFF.", tr/2, tg/2, tb/2, true); - } - break; - case 1: - graphics.bigprint( -1, 40, "Screen Effects", tr, tg, tb, true); - graphics.Print( -1, 75, "Disables screen shakes and flashes.", tr, tg, tb, true); - if (!game.noflashingmode) - { - graphics.Print( -1, 85, "Screen Effects are ON.", tr, tg, tb, true); - } - else - { - graphics.Print( -1, 85, "Screen Effects are OFF.", tr/2, tg/2, tb/2, true); - } - break; - case 2: - graphics.bigprint( -1, 40, "Text Outline", tr, tg, tb, true); - graphics.Print( -1, 75, "Disables outline on game text.", tr, tg, tb, true); - // FIXME: Maybe do an outlined print instead? -flibit - if (!graphics.notextoutline) - { - graphics.Print( -1, 85, "Text outlines are ON.", tr, tg, tb, true); - } - else - { - graphics.Print( -1, 85, "Text outlines are OFF.", tr/2, tg/2, tb/2, true); - } - break; - case 3: - graphics.bigprint( -1, 40, "Invincibility", tr, tg, tb, true); - graphics.Print( -1, 75, "Explore the game freely without", tr, tg, tb, true); - graphics.Print( -1, 85, "dying. (Can cause glitches.)", tr, tg, tb, true); - if (map.invincibility) - { - graphics.Print( -1, 105, "Invincibility is ON.", tr, tg, tb, true); - } - else - { - graphics.Print( -1, 105, "Invincibility is OFF.", tr/2, tg/2, tb/2, true); - } - break; - case 4: - graphics.bigprint( -1, 40, "Game Speed", tr, tg, tb, true); - graphics.Print( -1, 75, "Reduce the game speed.", tr, tg, tb, true); - drawslowdowntext(); - } - break; + { + int accessibilityoffset = 0; +#if !defined(MAKEANDPLAY) + accessibilityoffset = 1; + if (game.currentmenuoption == 0) { + graphics.bigprint(-1, 30, "Unlock Play Modes", tr, tg, tb, true); + graphics.Print(-1, 65, "Unlock parts of the game normally", tr, tg, tb, true); + graphics.Print(-1, 75, "unlocked as you progress", tr, tg, tb, true); + } +#endif + if (game.currentmenuoption == accessibilityoffset + 0) { + graphics.bigprint(-1, 40, "Invincibility", tr, tg, tb, true); + graphics.Print(-1, 75, "Explore the game freely without", tr, tg, tb, true); + graphics.Print(-1, 85, "dying. (Can cause glitches.)", tr, tg, tb, true); + if (map.invincibility) + { + graphics.Print(-1, 105, "Invincibility is ON.", tr, tg, tb, true); + } + else + { + graphics.Print(-1, 105, "Invincibility is OFF.", tr / 2, tg / 2, tb / 2, true); + } + }else if (game.currentmenuoption == accessibilityoffset + 1) { + graphics.bigprint(-1, 40, "Slowdown", tr, tg, tb, true); + graphics.Print(-1, 75, "Reduce the game speed.", tr, tg, tb, true); + drawslowdowntext(); + } + else if (game.currentmenuoption == accessibilityoffset + 2) { + graphics.bigprint(-1, 40, "Backgrounds", tr, tg, tb, true); + if (!game.colourblindmode) + { + graphics.Print(-1, 75, "Backgrounds are ON.", tr, tg, tb, true); + } + else + { + graphics.Print(-1, 75, "Backgrounds are OFF.", tr / 2, tg / 2, tb / 2, true); + } + } + else if (game.currentmenuoption == accessibilityoffset + 3) { + graphics.bigprint(-1, 40, "Screen Effects", tr, tg, tb, true); + graphics.Print(-1, 75, "Disables screen shakes and flashes.", tr, tg, tb, true); + if (!game.noflashingmode) + { + graphics.Print(-1, 85, "Screen Effects are ON.", tr, tg, tb, true); + } + else + { + graphics.Print(-1, 85, "Screen Effects are OFF.", tr / 2, tg / 2, tb / 2, true); + } + } + else if (game.currentmenuoption == accessibilityoffset + 4) { + graphics.bigprint(-1, 40, "Text Outline", tr, tg, tb, true); + graphics.Print(-1, 75, "Disables outline on game text.", tr, tg, tb, true); + // FIXME: Maybe do an outlined print instead? -flibit + if (!graphics.notextoutline) + { + graphics.Print(-1, 85, "Text outlines are ON.", tr, tg, tb, true); + } + else + { + graphics.Print(-1, 85, "Text outlines are OFF.", tr / 2, tg / 2, tb / 2, true); + } + } + break; + } case Menu::playint1: case Menu::playint2: graphics.Print( -1, 65, "Who do you want to play", tr, tg, tb, true); @@ -1804,9 +1830,8 @@ void maprender(void) { #define OPTION(opt, text) graphics.map_option(opt, 4, text, game.menupage - 30 == opt) OPTION(0, "return to game"); - OPTION(1, "quit to menu"); - OPTION(2, "graphic options"); - OPTION(3, "game options"); + OPTION(1, "options"); + OPTION(2, "quit to menu"); #undef OPTION } diff --git a/desktop_version/src/editor.cpp b/desktop_version/src/editor.cpp index 7c31e54d..b0475cad 100644 --- a/desktop_version/src/editor.cpp +++ b/desktop_version/src/editor.cpp @@ -3885,22 +3885,13 @@ static void editormenuactionpress(void) graphics.backgrounddrawn=false; break; case 6: - case 7: - /* Graphic options and game options */ + /* Game options */ music.playef(11); game.gamestate = TITLEMODE; game.ingame_titlemode = true; game.ingame_editormode = true; - if (game.currentmenuoption == 6) - { - DEFER_CALLBACK(creategraphicoptions); - } - else - { - DEFER_CALLBACK(creategameoptions); - } - + DEFER_CALLBACK(creategameoptions); DEFER_CALLBACK(nextbgcolor); break; default: