diff --git a/src/k_menu.h b/src/k_menu.h index 8f741e4e8..baa9eb356 100644 --- a/src/k_menu.h +++ b/src/k_menu.h @@ -258,6 +258,18 @@ typedef enum mopt_manual, } mopt_e; +typedef enum +{ + dopt_screenshot = 0, + dopt_addon, + dopt_replay, +#ifdef HAVE_DISCORDRPC + dopt_discord, +#endif + dopt_spacer, + dopt_erase, +} dopt_e; + extern menuitem_t OPTIONS_Profiles[]; extern menu_t OPTIONS_ProfilesDef; diff --git a/src/k_menudef.c b/src/k_menudef.c index d2e76cc9c..0da8f04be 100644 --- a/src/k_menudef.c +++ b/src/k_menudef.c @@ -474,7 +474,7 @@ menu_t PLAY_MP_ServerBrowserDef = { M_ServerBrowserInputs }; -// options menu +// options menu -- see mopt_e menuitem_t OPTIONS_Main[] = { @@ -1249,6 +1249,7 @@ menu_t OPTIONS_ServerAdvancedDef = { }; #endif +// data options menu -- see dopt_e menuitem_t OPTIONS_Data[] = { @@ -1269,8 +1270,7 @@ menuitem_t OPTIONS_Data[] = {IT_SPACE | IT_NOTHING, NULL, NULL, NULL, {NULL}, 0, 0}, - // escape sequences don't like any letter from A to E following them... So let's also put E as an escape sequence lol. E is 69 (nice) which is 45 in hex. - {IT_STRING | IT_SUBMENU, "\x85\x45rase Data...", "Erase specific data. Be careful, what's deleted is gone forever!", + {IT_STRING | IT_SUBMENU, "\x85""Erase Data...", "Erase specific data. Be careful, what's deleted is gone forever!", NULL, {.submenu = &OPTIONS_DataEraseDef}, 0, 0}, }; diff --git a/src/k_menufunc.c b/src/k_menufunc.c index 8ad6c3086..077829c26 100644 --- a/src/k_menufunc.c +++ b/src/k_menufunc.c @@ -4391,17 +4391,21 @@ void M_InitOptions(INT32 choice) { (void)choice; - OPTIONS_MainDef.menuitems[mopt_profiles].status = IT_STRING | IT_CALL; - OPTIONS_MainDef.menuitems[mopt_gameplay].status = IT_STRING | IT_SUBMENU; - OPTIONS_MainDef.menuitems[mopt_server].status = IT_STRING | IT_SUBMENU; + OPTIONS_MainDef.menuitems[mopt_gameplay].status = IT_STRING | IT_TRANSTEXT; + OPTIONS_MainDef.menuitems[mopt_server].status = IT_STRING | IT_TRANSTEXT; - // disable gameplay & server options if you aren't an admin in netgames. (GS_MENU check maybe unecessary but let's not take any chances) - if (netgame && gamestate != GS_MENU && !IsPlayerAdmin(consoleplayer)) + // enable gameplay & server options under the right circumstances. + if (gamestate == GS_MENU + || ((server || IsPlayerAdmin(consoleplayer)) && K_CanChangeRules())) { - OPTIONS_MainDef.menuitems[mopt_gameplay].status = IT_STRING | IT_TRANSTEXT; - OPTIONS_MainDef.menuitems[mopt_server].status = IT_STRING | IT_TRANSTEXT; + OPTIONS_MainDef.menuitems[mopt_gameplay].status = IT_STRING | IT_SUBMENU; + OPTIONS_MainDef.menuitems[mopt_server].status = IT_STRING | IT_SUBMENU; } + OPTIONS_DataDef.menuitems[dopt_erase].status = (gamestate == GS_MENU + ? (IT_STRING | IT_SUBMENU) + : (IT_TRANSTEXT2 | IT_SPACE)); + M_ResetOptions(); // So that pause doesn't go to the main menu... @@ -5706,7 +5710,6 @@ struct pausemenu_s pausemenu; // Pause menu! void M_OpenPauseMenu(void) { - boolean singleplayermode = (modeattacking || grandprixinfo.gp); currentMenu = &PAUSE_MainDef; // Ready the variables @@ -5736,18 +5739,19 @@ void M_OpenPauseMenu(void) Dummymenuplayer_OnChange(); // Make sure the consvar is within bounds of the amount of splitscreen players we have. - if (!singleplayermode && (server || IsPlayerAdmin(consoleplayer))) + if (K_CanChangeRules()) { - PAUSE_Main[mpause_switchmap].status = IT_STRING | IT_SUBMENU; - PAUSE_Main[mpause_addons].status = IT_STRING | IT_CALL; - } - - if (!singleplayermode) PAUSE_Main[mpause_psetup].status = IT_STRING | IT_CALL; + if (server || IsPlayerAdmin(consoleplayer)) + { + PAUSE_Main[mpause_switchmap].status = IT_STRING | IT_SUBMENU; + PAUSE_Main[mpause_addons].status = IT_STRING | IT_CALL; + } + } + if (G_GametypeHasSpectators()) { - if (splitscreen) PAUSE_Main[mpause_spectatemenu].status = IT_STRING|IT_SUBMENU; else