From e1838afc4151f2f78402e29d3bfa5d1eb4dfa395 Mon Sep 17 00:00:00 2001 From: chromaticpipe2 <chromaticpipe@gmail.com> Date: Fri, 21 Mar 2025 19:55:29 -0500 Subject: [PATCH 1/6] Implement support for tooltips and add tooltips for the video options menu --- src/m_menu.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/m_menu.h | 11 ++++++ 2 files changed, 120 insertions(+) diff --git a/src/m_menu.c b/src/m_menu.c index 227f2c8224..2f9e16e9ca 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -141,6 +141,7 @@ static char *char_notes = NULL; boolean menuactive = false; boolean fromlevelselect = false; +static INT32 coolalphatimer = 9; typedef enum { LLM_CREATESERVER, @@ -1350,6 +1351,58 @@ static menuitem_t OP_VideoOptionsMenu[] = {IT_STRING | IT_CVAR, NULL, "Show \"FOCUS LOST\"", &cv_showfocuslost, 231}, }; +static const char* OP_VideoTooltips[] = +{ + NULL, + "Resolution the game runs at", + "Toggle between fullscreen and windowed mode", + "Sync game framerate to display refresh rate", + NULL, + #ifdef HWRENDER + "Toggle OpenGL and Software renderer", + #else + "Does nothing on this build", + #endif + "Adjusts field of view, allowing you to have a wider perspective", + "Set the game framerate", + #ifdef HWRENDER + "Options specific to the OpenGL renderer", + #else + "Does nothing on this build", + #endif + NULL, + "Gamma (brightness) of the game", + "Saturation of the game", + "Advanced color settings for the game", + NULL, + "Toggles the Heads-up display", + "Changes the transparency of the Heads-up display", + "The appearance of the score, time and rings display", + "Show remaining duration of power up items", + "Display your ping to the server next to the FPS counter", + "Show the names of fellow players when you are near them", + NULL, + "Change the background color of the console", + "Adjust the text size of the console", + NULL, + "Choose how the game chat is displayed", + "Change the width of the chat box", + "Change the height of the chat box", + "How long chat messages appear on screen before fading out", + "Plays a chat notification sound", + "Block chat messages from sending too fast", + "Background for the chatbox", + NULL, + "How far to render objects", + "How far to render precipitation(rain/snow)", + "How far to render hoops in NiGHTS mode", + NULL, + "Display the game's framerate", + "Display the game's ticrate", + "Fixes the hall of mirrors bug in the Software renderer", + "Display a 'Focus Lost' message when the window is unfocused" +}; + static menuitem_t OP_VideoModeMenu[] = { {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleVideoMode, 0}, // dummy menuitem for the control func @@ -3460,11 +3513,13 @@ boolean M_Responder(event_t *ev) case KEY_DOWNARROW: M_NextOpt(); S_StartSound(NULL, sfx_menu1); + coolalphatimer = 9; return true; case KEY_UPARROW: M_PrevOpt(); S_StartSound(NULL, sfx_menu1); + coolalphatimer = 9; return true; case KEY_LEFTARROW: @@ -4321,6 +4376,58 @@ static void M_DrawMenuTitle(void) } } + +static void M_DrawSplitText(INT32 x, INT32 y, INT32 option, const char* str, INT32 alpha) +{ + char* icopy = strdup(str); + char** clines = NULL; + INT16 num_lines = 0; + + if (icopy == NULL) return; + + char* tok = strtok(icopy, "\n"); + + while (tok != NULL) + { + char* line = strdup(tok); + + if (line == NULL) return; + + clines = realloc(clines, (num_lines + 1) * sizeof(char*)); + clines[num_lines] = line; + num_lines++; + + tok = strtok(NULL, "\n"); + } + + free(icopy); + + INT16 yoffset; + yoffset = (((5*10 - num_lines*10))); + + // Draw BG first,,, + for (int i = 0; i < num_lines; i++) + { + V_DrawFill(0, (y + yoffset - 6)+5, vid.width, 11, 159|V_SNAPTOBOTTOM|V_SNAPTOLEFT); + yoffset += 11; + } + + yoffset = (((5*10 - num_lines*10))); + + // THEN the text + for (int i = 0; i < num_lines; i++) + { + V_DrawCenteredThinString(x, y + yoffset, option, clines[i]); + V_DrawCenteredThinString(x, y + yoffset, option|V_YELLOWMAP|((9 - alpha) << V_ALPHASHIFT), clines[i]); + yoffset += 10; + // Remember to free the memory for each line when you're done with it. + free(clines[i]); + } + + free(clines); +} + + static void M_DrawGenericMenu(void) { INT32 x, y, i, cursory = 0; @@ -4706,6 +4813,8 @@ static void M_DrawGenericScrollMenu(void) // DRAW THE SKULL CURSOR V_DrawScaledPatch(currentMenu->x - 24, cursory, 0, W_CachePatchName("M_CURSOR", PU_PATCH)); + + DoToolTips(OP_VideoOptionsDef, OP_VideoTooltips); } static void M_DrawPauseMenu(void) diff --git a/src/m_menu.h b/src/m_menu.h index 01384493a3..45ca6c2f2e 100644 --- a/src/m_menu.h +++ b/src/m_menu.h @@ -578,4 +578,15 @@ void M_FreePlayerSetupColors(void); NULL\ } +#define DoToolTips(menu, tooltip)\ +if (currentMenu == &menu)\ +{\ + if (!(tooltip[itemOn] == NULL))\ + {\ + M_DrawSplitText(BASEVIDWIDTH / 2, BASEVIDHEIGHT-50, V_ALLOWLOWERCASE|V_SNAPTOBOTTOM, tooltip[itemOn], coolalphatimer);\ + if (coolalphatimer > 0)\ + coolalphatimer--;\ + }\ +} + #endif //__X_MENU__ -- GitLab From 427a46fca71dac6b82dcedf41038f0be66dc4a40 Mon Sep 17 00:00:00 2001 From: Hanicef <gustaf@hanicef.me> Date: Sat, 22 Mar 2025 12:03:14 +0100 Subject: [PATCH 2/6] Change the way tooltips are stored --- src/m_menu.c | 1287 +++++++++++++++++++++++++------------------------- src/m_menu.h | 12 +- 2 files changed, 632 insertions(+), 667 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 2f9e16e9ca..a42e8f0d29 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -501,12 +501,12 @@ consvar_t cv_dummyloadless = CVAR_INIT ("dummyloadless", "In-game", NULL, CV_HID // --------- static menuitem_t MainMenu[] = { - {IT_STRING|IT_CALL, NULL, "1 Player", M_SinglePlayerMenu, 76}, - {IT_STRING|IT_SUBMENU, NULL, "Multiplayer", &MP_MainDef, 84}, - {IT_STRING|IT_CALL, NULL, "Extras", M_SecretsMenu, 92}, - {IT_CALL |IT_STRING, NULL, "Addons", M_Addons, 100}, - {IT_STRING|IT_CALL, NULL, "Options", M_Options, 108}, - {IT_STRING|IT_CALL, NULL, "Quit Game", M_QuitSRB2, 116}, + {IT_STRING|IT_CALL, NULL, "1 Player", NULL, M_SinglePlayerMenu, 76}, + {IT_STRING|IT_SUBMENU, NULL, "Multiplayer", NULL, &MP_MainDef, 84}, + {IT_STRING|IT_CALL, NULL, "Extras", NULL, M_SecretsMenu, 92}, + {IT_CALL |IT_STRING, NULL, "Addons", NULL, M_Addons, 100}, + {IT_STRING|IT_CALL, NULL, "Options", NULL, M_Options, 108}, + {IT_STRING|IT_CALL, NULL, "Quit Game", NULL, M_QuitSRB2, 116}, }; typedef enum @@ -521,7 +521,7 @@ typedef enum static menuitem_t MISC_AddonsMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleAddons, 0}, // dummy menuitem for the control func + {IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandleAddons, 0}, // dummy menuitem for the control func }; // --------------------------------- @@ -529,11 +529,11 @@ static menuitem_t MISC_AddonsMenu[] = // --------------------------------- static menuitem_t MAPauseMenu[] = { - {IT_CALL | IT_STRING, NULL, "Emblem Hints...", M_EmblemHints, 32}, + {IT_CALL | IT_STRING, NULL, "Emblem Hints...", NULL, M_EmblemHints, 32}, - {IT_CALL | IT_STRING, NULL, "Continue", M_SelectableClearMenus,48}, - {IT_CALL | IT_STRING, NULL, "Retry", M_ModeAttackRetry, 56}, - {IT_CALL | IT_STRING, NULL, "Abort", M_ModeAttackEndGame, 64}, + {IT_CALL | IT_STRING, NULL, "Continue", NULL, M_SelectableClearMenus,48}, + {IT_CALL | IT_STRING, NULL, "Retry", NULL, M_ModeAttackRetry, 56}, + {IT_CALL | IT_STRING, NULL, "Abort", NULL, M_ModeAttackEndGame, 64}, }; typedef enum @@ -549,25 +549,25 @@ typedef enum // --------------------- static menuitem_t MPauseMenu[] = { - {IT_STRING | IT_CALL, NULL, "Add-ons...", M_Addons, 8}, - {IT_STRING | IT_SUBMENU, NULL, "Scramble Teams...", &MISC_ScrambleTeamDef, 16}, - {IT_STRING | IT_CALL, NULL, "Emblem Hints...", M_EmblemHints, 24}, - {IT_STRING | IT_CALL, NULL, "Switch Gametype/Level...", M_MapChange, 32}, + {IT_STRING | IT_CALL, NULL, "Add-ons...", NULL, M_Addons, 8}, + {IT_STRING | IT_SUBMENU, NULL, "Scramble Teams...", NULL, &MISC_ScrambleTeamDef, 16}, + {IT_STRING | IT_CALL, NULL, "Emblem Hints...", NULL, M_EmblemHints, 24}, + {IT_STRING | IT_CALL, NULL, "Switch Gametype/Level...", NULL, M_MapChange, 32}, - {IT_STRING | IT_CALL, NULL, "Continue", M_SelectableClearMenus,48}, + {IT_STRING | IT_CALL, NULL, "Continue", NULL, M_SelectableClearMenus,48}, - {IT_STRING | IT_CALL, NULL, "Player 1 Setup", M_SetupMultiPlayer, 56}, // splitscreen - {IT_STRING | IT_CALL, NULL, "Player 2 Setup", M_SetupMultiPlayer2, 64}, + {IT_STRING | IT_CALL, NULL, "Player 1 Setup", NULL, M_SetupMultiPlayer, 56}, // splitscreen + {IT_STRING | IT_CALL, NULL, "Player 2 Setup", NULL, M_SetupMultiPlayer2, 64}, - {IT_STRING | IT_CALL, NULL, "Spectate", M_ConfirmSpectate, 56}, // alone - {IT_STRING | IT_CALL, NULL, "Enter Game", M_ConfirmEnterGame, 56}, - {IT_STRING | IT_SUBMENU, NULL, "Switch Team...", &MISC_ChangeTeamDef, 56}, - {IT_STRING | IT_CALL, NULL, "Player Setup", M_SetupMultiPlayer, 64}, + {IT_STRING | IT_CALL, NULL, "Spectate", NULL, M_ConfirmSpectate, 56}, // alone + {IT_STRING | IT_CALL, NULL, "Enter Game", NULL, M_ConfirmEnterGame, 56}, + {IT_STRING | IT_SUBMENU, NULL, "Switch Team...", NULL, &MISC_ChangeTeamDef, 56}, + {IT_STRING | IT_CALL, NULL, "Player Setup", NULL, M_SetupMultiPlayer, 64}, - {IT_STRING | IT_CALL, NULL, "Options", M_Options, 72}, + {IT_STRING | IT_CALL, NULL, "Options", NULL, M_Options, 72}, - {IT_STRING | IT_CALL, NULL, "Return to Title", M_EndGame, 88}, - {IT_STRING | IT_CALL, NULL, "Quit Game", M_QuitSRB2, 96}, + {IT_STRING | IT_CALL, NULL, "Return to Title", NULL, M_EndGame, 88}, + {IT_STRING | IT_CALL, NULL, "Quit Game", NULL, M_QuitSRB2, 96}, }; typedef enum @@ -596,16 +596,16 @@ typedef enum static menuitem_t SPauseMenu[] = { // Pandora's Box will be shifted up if both options are available - {IT_CALL | IT_STRING, NULL, "Pandora's Box...", M_PandorasBox, 16}, - {IT_CALL | IT_STRING, NULL, "Emblem Hints...", M_EmblemHints, 24}, - {IT_CALL | IT_STRING, NULL, "Level Select...", M_PauseLevelSelect, 32}, + {IT_CALL | IT_STRING, NULL, "Pandora's Box...", NULL, M_PandorasBox, 16}, + {IT_CALL | IT_STRING, NULL, "Emblem Hints...", NULL, M_EmblemHints, 24}, + {IT_CALL | IT_STRING, NULL, "Level Select...", NULL, M_PauseLevelSelect, 32}, - {IT_CALL | IT_STRING, NULL, "Continue", M_SelectableClearMenus,48}, - {IT_CALL | IT_STRING, NULL, "Retry", M_Retry, 56}, - {IT_CALL | IT_STRING, NULL, "Options", M_Options, 64}, + {IT_CALL | IT_STRING, NULL, "Continue", NULL, M_SelectableClearMenus,48}, + {IT_CALL | IT_STRING, NULL, "Retry", NULL, M_Retry, 56}, + {IT_CALL | IT_STRING, NULL, "Options", NULL, M_Options, 64}, - {IT_CALL | IT_STRING, NULL, "Return to Title", M_EndGame, 80}, - {IT_CALL | IT_STRING, NULL, "Quit Game", M_QuitSRB2, 88}, + {IT_CALL | IT_STRING, NULL, "Return to Title", NULL, M_EndGame, 80}, + {IT_CALL | IT_STRING, NULL, "Quit Game", NULL, M_QuitSRB2, 88}, }; typedef enum @@ -628,14 +628,14 @@ typedef enum // Prefix: MISC_ static menuitem_t MISC_ScrambleTeamMenu[] = { - {IT_STRING|IT_CVAR, NULL, "Scramble Method", &cv_dummyscramble, 30}, - {IT_WHITESTRING|IT_CALL, NULL, "Confirm", M_ConfirmTeamScramble, 90}, + {IT_STRING|IT_CVAR, NULL, "Scramble Method", NULL, &cv_dummyscramble, 30}, + {IT_WHITESTRING|IT_CALL, NULL, "Confirm", NULL, M_ConfirmTeamScramble, 90}, }; static menuitem_t MISC_ChangeTeamMenu[] = { - {IT_STRING|IT_CVAR, NULL, "Select Team", &cv_dummyteam, 30}, - {IT_WHITESTRING|IT_CALL, NULL, "Confirm", M_ConfirmTeamChange, 90}, + {IT_STRING|IT_CVAR, NULL, "Select Team", NULL, &cv_dummyteam, 30}, + {IT_WHITESTRING|IT_CALL, NULL, "Confirm", NULL, M_ConfirmTeamChange, 90}, }; gtdesc_t gametypedesc[NUMGAMETYPES] = @@ -652,16 +652,16 @@ gtdesc_t gametypedesc[NUMGAMETYPES] = static menuitem_t MISC_ChangeLevelMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleLevelPlatter, 0}, // dummy menuitem for the control func + {IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandleLevelPlatter, 0}, // dummy menuitem for the control func }; static menuitem_t MISC_HelpMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPN01", M_HandleImageDef, 0}, - {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPN02", M_HandleImageDef, 0}, - {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPN03", M_HandleImageDef, 0}, - {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPM01", M_HandleImageDef, 0}, - {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPM02", M_HandleImageDef, 0}, + {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPN01", NULL, M_HandleImageDef, 0}, + {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPN02", NULL, M_HandleImageDef, 0}, + {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPN03", NULL, M_HandleImageDef, 0}, + {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPM01", NULL, M_HandleImageDef, 0}, + {IT_KEYHANDLER | IT_NOTHING, NULL, "HELPM02", NULL, M_HandleImageDef, 0}, }; // -------------------------------- @@ -672,49 +672,49 @@ static menuitem_t MISC_HelpMenu[] = // Pause Menu Pandora's Box Options static menuitem_t SR_PandorasBox[] = { - {IT_STRING | IT_CALL, NULL, "Mid-game add-ons...", M_Addons, 0}, + {IT_STRING | IT_CALL, NULL, "Mid-game add-ons...", NULL, M_Addons, 0}, - {IT_STRING | IT_CVAR, NULL, "Rings", &cv_dummyrings, 20}, - {IT_STRING | IT_CVAR, NULL, "Lives", &cv_dummylives, 30}, - {IT_STRING | IT_CVAR, NULL, "Continues", &cv_dummycontinues, 40}, + {IT_STRING | IT_CVAR, NULL, "Rings", NULL, &cv_dummyrings, 20}, + {IT_STRING | IT_CVAR, NULL, "Lives", NULL, &cv_dummylives, 30}, + {IT_STRING | IT_CVAR, NULL, "Continues", NULL, &cv_dummycontinues, 40}, - {IT_STRING | IT_CVAR, NULL, "Gravity", &cv_gravity, 60}, - {IT_STRING | IT_CVAR, NULL, "Throw Rings", &cv_ringslinger, 70}, + {IT_STRING | IT_CVAR, NULL, "Gravity", NULL, &cv_gravity, 60}, + {IT_STRING | IT_CVAR, NULL, "Throw Rings", NULL, &cv_ringslinger, 70}, - {IT_STRING | IT_CALL, NULL, "Enable Super form", M_AllowSuper, 90}, - {IT_STRING | IT_CALL, NULL, "Get All Emeralds", M_GetAllEmeralds, 100}, - {IT_STRING | IT_CALL, NULL, "Destroy All Robots", M_DestroyRobots, 110}, + {IT_STRING | IT_CALL, NULL, "Enable Super form", NULL, M_AllowSuper, 90}, + {IT_STRING | IT_CALL, NULL, "Get All Emeralds", NULL, M_GetAllEmeralds, 100}, + {IT_STRING | IT_CALL, NULL, "Destroy All Robots", NULL, M_DestroyRobots, 110}, - {IT_STRING | IT_CALL, NULL, "Ultimate Cheat", M_UltimateCheat, 130}, + {IT_STRING | IT_CALL, NULL, "Ultimate Cheat", NULL, M_UltimateCheat, 130}, }; // Sky Room Custom Unlocks static menuitem_t SR_MainMenu[MAXUNLOCKABLES+1] = { - {IT_STRING|IT_SUBMENU,NULL, "Extras Checklist", &SR_UnlockChecklistDef, 0}, + {IT_STRING|IT_SUBMENU,NULL, "Extras Checklist", NULL, &SR_UnlockChecklistDef, 0}, // The remaining (MAXUNLOCKABLES) items are now initialized in M_SecretsMenu }; static menuitem_t SR_LevelSelectMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleLevelPlatter, 0}, // dummy menuitem for the control func + {IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandleLevelPlatter, 0}, // dummy menuitem for the control func }; static menuitem_t SR_UnlockChecklistMenu[] = { - {IT_KEYHANDLER | IT_STRING, NULL, "", M_HandleChecklist, 0}, + {IT_KEYHANDLER | IT_STRING, NULL, "", NULL, M_HandleChecklist, 0}, }; static menuitem_t SR_SoundTestMenu[] = { - {IT_KEYHANDLER | IT_STRING, NULL, "", M_HandleSoundTest, 0}, + {IT_KEYHANDLER | IT_STRING, NULL, "", NULL, M_HandleSoundTest, 0}, }; static menuitem_t SR_EmblemHintMenu[] = { - {IT_STRING | IT_ARROWS, NULL, "Page", M_HandleEmblemHints, 10}, - {IT_STRING|IT_CVAR, NULL, "Emblem Radar", &cv_itemfinder, 20}, - {IT_WHITESTRING|IT_CALL, NULL, "Back", M_GoBack, 30} + {IT_STRING | IT_ARROWS, NULL, "Page", NULL, M_HandleEmblemHints, 10}, + {IT_STRING|IT_CVAR, NULL, "Emblem Radar", NULL, &cv_itemfinder, 20}, + {IT_WHITESTRING|IT_CALL, NULL, "Back", NULL, M_GoBack, 30} }; // -------------------------------- @@ -726,12 +726,12 @@ static menuitem_t SR_EmblemHintMenu[] = static menuitem_t SP_MainMenu[] = { // Note: If changing the positions here, also change them in M_SinglePlayerMenu() - {IT_CALL | IT_STRING, NULL, "Start Game", M_LoadGame, 76}, - {IT_SECRET, NULL, "Record Attack", M_TimeAttack, 84}, - {IT_SECRET, NULL, "NiGHTS Mode", M_NightsAttack, 92}, - {IT_SECRET, NULL, "Marathon Run", M_Marathon, 100}, - {IT_CALL | IT_STRING, NULL, "Tutorial", M_StartTutorial, 108}, - {IT_CALL | IT_STRING, NULL, "Statistics", M_Statistics, 116} + {IT_CALL | IT_STRING, NULL, "Start Game", NULL, M_LoadGame, 76}, + {IT_SECRET, NULL, "Record Attack", NULL, M_TimeAttack, 84}, + {IT_SECRET, NULL, "NiGHTS Mode", NULL, M_NightsAttack, 92}, + {IT_SECRET, NULL, "Marathon Run", NULL, M_Marathon, 100}, + {IT_CALL | IT_STRING, NULL, "Tutorial", NULL, M_StartTutorial, 108}, + {IT_CALL | IT_STRING, NULL, "Statistics", NULL, M_Statistics, 116} }; enum @@ -747,31 +747,31 @@ enum // Single Player Load Game static menuitem_t SP_LoadGameMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleLoadSave, 0}, // dummy menuitem for the control func + {IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandleLoadSave, 0}, // dummy menuitem for the control func }; // Single Player Level Select static menuitem_t SP_LevelSelectMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleLevelPlatter, 0}, // dummy menuitem for the control func + {IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandleLevelPlatter, 0}, // dummy menuitem for the control func }; // Single Player Time Attack Level Select static menuitem_t SP_TimeAttackLevelSelectMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleLevelPlatter, 0}, // dummy menuitem for the control func + {IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandleLevelPlatter, 0}, // dummy menuitem for the control func }; // Single Player Time Attack static menuitem_t SP_TimeAttackMenu[] = { - {IT_STRING|IT_KEYHANDLER, NULL, "Level Select...", M_HandleTimeAttackLevelSelect, 62}, - {IT_STRING|IT_CVAR, NULL, "Character", &cv_chooseskin, 72}, + {IT_STRING|IT_KEYHANDLER, NULL, "Level Select...", NULL, M_HandleTimeAttackLevelSelect, 62}, + {IT_STRING|IT_CVAR, NULL, "Character", NULL, &cv_chooseskin, 72}, - {IT_DISABLED, NULL, "Guest Option...", &SP_GuestReplayDef, 100}, - {IT_DISABLED, NULL, "Replay...", &SP_ReplayDef, 110}, - {IT_DISABLED, NULL, "Ghosts...", &SP_GhostDef, 120}, - {IT_WHITESTRING|IT_CALL|IT_CALL_NOTMODIFIED, NULL, "Start", M_ChooseTimeAttack, 130}, + {IT_DISABLED, NULL, "Guest Option...", NULL, &SP_GuestReplayDef, 100}, + {IT_DISABLED, NULL, "Replay...", NULL, &SP_ReplayDef, 110}, + {IT_DISABLED, NULL, "Ghosts...", NULL, &SP_GhostDef, 120}, + {IT_WHITESTRING|IT_CALL|IT_CALL_NOTMODIFIED, NULL, "Start", NULL, M_ChooseTimeAttack, 130}, }; enum @@ -787,90 +787,90 @@ enum static menuitem_t SP_ReplayMenu[] = { - {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Score", M_ReplayTimeAttack, 0}, - {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Time", M_ReplayTimeAttack, 8}, - {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Rings", M_ReplayTimeAttack,16}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Score", NULL, M_ReplayTimeAttack, 0}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Time", NULL, M_ReplayTimeAttack, 8}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Rings", NULL, M_ReplayTimeAttack,16}, - {IT_WHITESTRING|IT_CALL, NULL, "Replay Last", M_ReplayTimeAttack,29}, - {IT_WHITESTRING|IT_CALL, NULL, "Replay Guest", M_ReplayTimeAttack,37}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Last", NULL, M_ReplayTimeAttack,29}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Guest", NULL, M_ReplayTimeAttack,37}, - {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_TimeAttackDef, 50} + {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", NULL, &SP_TimeAttackDef, 50} }; static menuitem_t SP_NightsReplayMenu[] = { - {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Score", M_ReplayTimeAttack, 8}, - {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Time", M_ReplayTimeAttack,16}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Score", NULL, M_ReplayTimeAttack, 8}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Best Time", NULL, M_ReplayTimeAttack,16}, - {IT_WHITESTRING|IT_CALL, NULL, "Replay Last", M_ReplayTimeAttack,29}, - {IT_WHITESTRING|IT_CALL, NULL, "Replay Guest", M_ReplayTimeAttack,37}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Last", NULL, M_ReplayTimeAttack,29}, + {IT_WHITESTRING|IT_CALL, NULL, "Replay Guest", NULL, M_ReplayTimeAttack,37}, - {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_NightsAttackDef, 50} + {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", NULL, &SP_NightsAttackDef, 50} }; static menuitem_t SP_GuestReplayMenu[] = { - {IT_WHITESTRING|IT_CALL, NULL, "Save Best Score as Guest", M_SetGuestReplay, 0}, - {IT_WHITESTRING|IT_CALL, NULL, "Save Best Time as Guest", M_SetGuestReplay, 8}, - {IT_WHITESTRING|IT_CALL, NULL, "Save Best Rings as Guest", M_SetGuestReplay,16}, - {IT_WHITESTRING|IT_CALL, NULL, "Save Last as Guest", M_SetGuestReplay,24}, + {IT_WHITESTRING|IT_CALL, NULL, "Save Best Score as Guest", NULL, M_SetGuestReplay, 0}, + {IT_WHITESTRING|IT_CALL, NULL, "Save Best Time as Guest", NULL, M_SetGuestReplay, 8}, + {IT_WHITESTRING|IT_CALL, NULL, "Save Best Rings as Guest", NULL, M_SetGuestReplay,16}, + {IT_WHITESTRING|IT_CALL, NULL, "Save Last as Guest", NULL, M_SetGuestReplay,24}, - {IT_WHITESTRING|IT_CALL, NULL, "Delete Guest Replay", M_SetGuestReplay,37}, + {IT_WHITESTRING|IT_CALL, NULL, "Delete Guest Replay", NULL, M_SetGuestReplay,37}, - {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_TimeAttackDef, 50} + {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", NULL, &SP_TimeAttackDef, 50} }; static menuitem_t SP_NightsGuestReplayMenu[] = { - {IT_WHITESTRING|IT_CALL, NULL, "Save Best Score as Guest", M_SetGuestReplay, 8}, - {IT_WHITESTRING|IT_CALL, NULL, "Save Best Time as Guest", M_SetGuestReplay,16}, - {IT_WHITESTRING|IT_CALL, NULL, "Save Last as Guest", M_SetGuestReplay,24}, + {IT_WHITESTRING|IT_CALL, NULL, "Save Best Score as Guest", NULL, M_SetGuestReplay, 8}, + {IT_WHITESTRING|IT_CALL, NULL, "Save Best Time as Guest", NULL, M_SetGuestReplay,16}, + {IT_WHITESTRING|IT_CALL, NULL, "Save Last as Guest", NULL, M_SetGuestReplay,24}, - {IT_WHITESTRING|IT_CALL, NULL, "Delete Guest Replay", M_SetGuestReplay,37}, + {IT_WHITESTRING|IT_CALL, NULL, "Delete Guest Replay", NULL, M_SetGuestReplay,37}, - {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_NightsAttackDef, 50} + {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", NULL, &SP_NightsAttackDef, 50} }; static menuitem_t SP_GhostMenu[] = { - {IT_STRING|IT_CVAR, NULL, "Best Score", &cv_ghost_bestscore, 0}, - {IT_STRING|IT_CVAR, NULL, "Best Time", &cv_ghost_besttime, 8}, - {IT_STRING|IT_CVAR, NULL, "Best Rings", &cv_ghost_bestrings,16}, - {IT_STRING|IT_CVAR, NULL, "Last", &cv_ghost_last, 24}, + {IT_STRING|IT_CVAR, NULL, "Best Score", NULL, &cv_ghost_bestscore, 0}, + {IT_STRING|IT_CVAR, NULL, "Best Time", NULL, &cv_ghost_besttime, 8}, + {IT_STRING|IT_CVAR, NULL, "Best Rings", NULL, &cv_ghost_bestrings,16}, + {IT_STRING|IT_CVAR, NULL, "Last", NULL, &cv_ghost_last, 24}, - {IT_STRING|IT_CVAR, NULL, "Guest", &cv_ghost_guest, 37}, + {IT_STRING|IT_CVAR, NULL, "Guest", NULL, &cv_ghost_guest, 37}, - {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_TimeAttackDef, 50} + {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", NULL, &SP_TimeAttackDef, 50} }; static menuitem_t SP_NightsGhostMenu[] = { - {IT_STRING|IT_CVAR, NULL, "Best Score", &cv_ghost_bestscore, 8}, - {IT_STRING|IT_CVAR, NULL, "Best Time", &cv_ghost_besttime, 16}, - {IT_STRING|IT_CVAR, NULL, "Last", &cv_ghost_last, 24}, + {IT_STRING|IT_CVAR, NULL, "Best Score", NULL, &cv_ghost_bestscore, 8}, + {IT_STRING|IT_CVAR, NULL, "Best Time", NULL, &cv_ghost_besttime, 16}, + {IT_STRING|IT_CVAR, NULL, "Last", NULL, &cv_ghost_last, 24}, - {IT_STRING|IT_CVAR, NULL, "Guest", &cv_ghost_guest, 37}, + {IT_STRING|IT_CVAR, NULL, "Guest", NULL, &cv_ghost_guest, 37}, - {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", &SP_NightsAttackDef, 50} + {IT_WHITESTRING|IT_SUBMENU, NULL, "Back", NULL, &SP_NightsAttackDef, 50} }; // Single Player Nights Attack Level Select static menuitem_t SP_NightsAttackLevelSelectMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleLevelPlatter, 0}, // dummy menuitem for the control func + {IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandleLevelPlatter, 0}, // dummy menuitem for the control func }; // Single Player Nights Attack static menuitem_t SP_NightsAttackMenu[] = { - {IT_STRING|IT_KEYHANDLER, NULL, "Level Select...", &M_HandleTimeAttackLevelSelect, 52}, - {IT_STRING|IT_CVAR, NULL, "Character", &cv_chooseskin, 62}, - {IT_STRING|IT_CVAR, NULL, "Show Records For", &cv_dummymares, 72}, + {IT_STRING|IT_KEYHANDLER, NULL, "Level Select...", NULL, &M_HandleTimeAttackLevelSelect, 52}, + {IT_STRING|IT_CVAR, NULL, "Character", NULL, &cv_chooseskin, 62}, + {IT_STRING|IT_CVAR, NULL, "Show Records For", NULL, &cv_dummymares, 72}, - {IT_DISABLED, NULL, "Guest Option...", &SP_NightsGuestReplayDef, 100}, - {IT_DISABLED, NULL, "Replay...", &SP_NightsReplayDef, 110}, - {IT_DISABLED, NULL, "Ghosts...", &SP_NightsGhostDef, 120}, - {IT_WHITESTRING|IT_CALL|IT_CALL_NOTMODIFIED, NULL, "Start", M_ChooseNightsAttack, 130}, + {IT_DISABLED, NULL, "Guest Option...", NULL, &SP_NightsGuestReplayDef, 100}, + {IT_DISABLED, NULL, "Replay...", NULL, &SP_NightsReplayDef, 110}, + {IT_DISABLED, NULL, "Ghosts...", NULL, &SP_NightsGhostDef, 120}, + {IT_WHITESTRING|IT_CALL|IT_CALL_NOTMODIFIED, NULL, "Start", NULL, M_ChooseNightsAttack, 130}, }; enum @@ -888,11 +888,11 @@ enum // Marathon static menuitem_t SP_MarathonMenu[] = { - {IT_STRING|IT_KEYHANDLER, NULL, "Character", M_HandleMarathonChoosePlayer, 90}, - {IT_STRING|IT_CVAR, NULL, "Category", &cv_dummymarathon, 100}, - {IT_STRING|IT_CVAR, NULL, "Timer", &cv_dummyloadless, 110}, - {IT_STRING|IT_CVAR, NULL, "Cutscenes", &cv_dummycutscenes, 120}, - {IT_WHITESTRING|IT_CALL, NULL, "Start", M_StartMarathon, 130}, + {IT_STRING|IT_KEYHANDLER, NULL, "Character", NULL, M_HandleMarathonChoosePlayer, 90}, + {IT_STRING|IT_CVAR, NULL, "Category", NULL, &cv_dummymarathon, 100}, + {IT_STRING|IT_CVAR, NULL, "Timer", NULL, &cv_dummyloadless, 110}, + {IT_STRING|IT_CVAR, NULL, "Cutscenes", NULL, &cv_dummycutscenes, 120}, + {IT_WHITESTRING|IT_CALL, NULL, "Start", NULL, M_StartMarathon, 130}, }; enum @@ -907,13 +907,13 @@ enum // Statistics static menuitem_t SP_LevelStatsMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleLevelStats, 0}, // dummy menuitem for the control func + {IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandleLevelStats, 0}, // dummy menuitem for the control func }; // Player menu dummy static menuitem_t SP_PlayerMenu[] = { - {IT_NOTHING | IT_KEYHANDLER, NULL, "", M_HandleChoosePlayerMenu, 0}, // dummy menuitem for the control func + {IT_NOTHING | IT_KEYHANDLER, NULL, "", NULL, M_HandleChoosePlayerMenu, 0}, // dummy menuitem for the control func }; // ----------------------------------- @@ -924,33 +924,33 @@ static menuitem_t SP_PlayerMenu[] = // Separated splitscreen and normal servers. static menuitem_t MP_SplitServerMenu[] = { - {IT_STRING|IT_CALL, NULL, "Select Gametype/Level...", M_MapChange, 100}, - {IT_STRING|IT_CALL, NULL, "More Options...", M_ServerOptions, 130}, - {IT_WHITESTRING|IT_CALL, NULL, "Start", M_StartServer, 140}, + {IT_STRING|IT_CALL, NULL, "Select Gametype/Level...", NULL, M_MapChange, 100}, + {IT_STRING|IT_CALL, NULL, "More Options...", NULL, M_ServerOptions, 130}, + {IT_WHITESTRING|IT_CALL, NULL, "Start", NULL, M_StartServer, 140}, }; static menuitem_t MP_MainMenu[] = { - {IT_HEADER, NULL, "Join a game", NULL, 0}, - {IT_STRING|IT_CALL, NULL, "Server browser...", M_ConnectMenuModChecks, 12}, - {IT_STRING|IT_KEYHANDLER, NULL, "Specify server address:", M_HandleConnectIP, 22}, - {IT_HEADER, NULL, "Host a game", NULL, 54}, - {IT_STRING|IT_CALL, NULL, "Internet/LAN...", M_StartServerMenu, 66}, - {IT_STRING|IT_CALL, NULL, "Splitscreen...", M_StartSplitServerMenu, 76}, - {IT_HEADER, NULL, "Player setup", NULL, 94}, - {IT_STRING|IT_CALL, NULL, "Player 1...", M_SetupMultiPlayer, 106}, - {IT_STRING|IT_CALL, NULL, "Player 2... ", M_SetupMultiPlayer2, 116}, + {IT_HEADER, NULL, "Join a game", NULL, NULL, 0}, + {IT_STRING|IT_CALL, NULL, "Server browser...", NULL, M_ConnectMenuModChecks, 12}, + {IT_STRING|IT_KEYHANDLER, NULL, "Specify server address:", NULL, M_HandleConnectIP, 22}, + {IT_HEADER, NULL, "Host a game", NULL, NULL, 54}, + {IT_STRING|IT_CALL, NULL, "Internet/LAN...", NULL, M_StartServerMenu, 66}, + {IT_STRING|IT_CALL, NULL, "Splitscreen...", NULL, M_StartSplitServerMenu, 76}, + {IT_HEADER, NULL, "Player setup", NULL, NULL, 94}, + {IT_STRING|IT_CALL, NULL, "Player 1...", NULL, M_SetupMultiPlayer, 106}, + {IT_STRING|IT_CALL, NULL, "Player 2... ", NULL, M_SetupMultiPlayer2, 116}, }; static menuitem_t MP_ServerMenu[] = { - {IT_STRING|IT_CALL, NULL, "Room...", M_RoomMenu, 10}, - {IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Server Name", &cv_servername, 20}, - {IT_STRING|IT_CVAR, NULL, "Max Players", &cv_maxplayers, 46}, - {IT_STRING|IT_CVAR, NULL, "Allow Add-on Downloading", &cv_downloading, 56}, - {IT_STRING|IT_CALL, NULL, "Select Gametype/Level...", M_MapChange, 100}, - {IT_STRING|IT_CALL, NULL, "More Options...", M_ServerOptions, 130}, - {IT_WHITESTRING|IT_CALL, NULL, "Start", M_StartServer, 140}, + {IT_STRING|IT_CALL, NULL, "Room...", NULL, M_RoomMenu, 10}, + {IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Server Name", NULL, &cv_servername, 20}, + {IT_STRING|IT_CVAR, NULL, "Max Players", NULL, &cv_maxplayers, 46}, + {IT_STRING|IT_CVAR, NULL, "Allow Add-on Downloading", NULL, &cv_downloading, 56}, + {IT_STRING|IT_CALL, NULL, "Select Gametype/Level...", NULL, M_MapChange, 100}, + {IT_STRING|IT_CALL, NULL, "More Options...", NULL, M_ServerOptions, 130}, + {IT_WHITESTRING|IT_CALL, NULL, "Start", NULL, M_StartServer, 140}, }; enum @@ -966,22 +966,22 @@ enum static menuitem_t MP_ConnectMenu[] = { - {IT_STRING | IT_CALL, NULL, "Room...", M_RoomMenu, 4}, - {IT_STRING | IT_CVAR, NULL, "Sort By", &cv_serversort, 12}, - {IT_STRING | IT_KEYHANDLER, NULL, "Page", M_HandleServerPage, 20}, - {IT_STRING | IT_CALL, NULL, "Refresh", M_Refresh, 28}, - - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 48-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 60-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 72-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 84-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 96-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 108-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 120-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 132-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 144-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 156-4}, - {IT_STRING | IT_SPACE, NULL, "", M_Connect, 168-4}, + {IT_STRING | IT_CALL, NULL, "Room...", NULL, M_RoomMenu, 4}, + {IT_STRING | IT_CVAR, NULL, "Sort By", NULL, &cv_serversort, 12}, + {IT_STRING | IT_KEYHANDLER, NULL, "Page", NULL, M_HandleServerPage, 20}, + {IT_STRING | IT_CALL, NULL, "Refresh", NULL, M_Refresh, 28}, + + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 48-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 60-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 72-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 84-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 96-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 108-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 120-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 132-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 144-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 156-4}, + {IT_STRING | IT_SPACE, NULL, "", NULL, M_Connect, 168-4}, }; enum @@ -995,32 +995,32 @@ enum menuitem_t MP_RoomMenu[] = { - {IT_STRING | IT_CALL, NULL, "<Unlisted Mode>", M_ChooseRoom, 9}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 18}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 27}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 36}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 45}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 54}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 63}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 72}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 81}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 90}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 99}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 108}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 117}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 126}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 135}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 144}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 153}, - {IT_DISABLED, NULL, "", M_ChooseRoom, 162}, + {IT_STRING | IT_CALL, NULL, "<Unlisted Mode>", NULL, M_ChooseRoom, 9}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 18}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 27}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 36}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 45}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 54}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 63}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 72}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 81}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 90}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 99}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 108}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 117}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 126}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 135}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 144}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 153}, + {IT_DISABLED, NULL, "", NULL, M_ChooseRoom, 162}, }; static menuitem_t MP_PlayerSetupMenu[] = { - {IT_KEYHANDLER, NULL, "", M_HandleSetupMultiPlayer, 0}, // name - {IT_KEYHANDLER, NULL, "", M_HandleSetupMultiPlayer, 0}, // skin - {IT_KEYHANDLER, NULL, "", M_HandleSetupMultiPlayer, 0}, // colour - {IT_KEYHANDLER, NULL, "", M_HandleSetupMultiPlayer, 0}, // default + {IT_KEYHANDLER, NULL, "", NULL, M_HandleSetupMultiPlayer, 0}, // name + {IT_KEYHANDLER, NULL, "", NULL, M_HandleSetupMultiPlayer, 0}, // skin + {IT_KEYHANDLER, NULL, "", NULL, M_HandleSetupMultiPlayer, 0}, // colour + {IT_KEYHANDLER, NULL, "", NULL, M_HandleSetupMultiPlayer, 0}, // default }; // ------------------------------------ @@ -1029,260 +1029,260 @@ static menuitem_t MP_PlayerSetupMenu[] = // Prefix: OP_ static menuitem_t OP_MainMenu[] = { - {IT_SUBMENU | IT_STRING, NULL, "Player 1 Controls...", &OP_P1ControlsDef, 10}, - {IT_SUBMENU | IT_STRING, NULL, "Player 2 Controls...", &OP_P2ControlsDef, 20}, - {IT_CVAR | IT_STRING, NULL, "Controls per key", &cv_controlperkey, 30}, + {IT_SUBMENU | IT_STRING, NULL, "Player 1 Controls...", NULL, &OP_P1ControlsDef, 10}, + {IT_SUBMENU | IT_STRING, NULL, "Player 2 Controls...", NULL, &OP_P2ControlsDef, 20}, + {IT_CVAR | IT_STRING, NULL, "Controls per key", NULL, &cv_controlperkey, 30}, - {IT_CALL | IT_STRING, NULL, "Video Options...", M_VideoOptions, 50}, - {IT_SUBMENU | IT_STRING, NULL, "Sound Options...", &OP_SoundOptionsDef, 60}, + {IT_CALL | IT_STRING, NULL, "Video Options...", NULL, M_VideoOptions, 50}, + {IT_SUBMENU | IT_STRING, NULL, "Sound Options...", NULL, &OP_SoundOptionsDef, 60}, - {IT_CALL | IT_STRING, NULL, "Server Options...", M_ServerOptions, 80}, + {IT_CALL | IT_STRING, NULL, "Server Options...", NULL, M_ServerOptions, 80}, - {IT_SUBMENU | IT_STRING, NULL, "Data Options...", &OP_DataOptionsDef, 100}, + {IT_SUBMENU | IT_STRING, NULL, "Data Options...", NULL, &OP_DataOptionsDef, 100}, }; static menuitem_t OP_P1ControlsMenu[] = { - {IT_CALL | IT_STRING, NULL, "Control Configuration...", M_Setup1PControlsMenu, 10}, - {IT_SUBMENU | IT_STRING, NULL, "Mouse Options...", &OP_MouseOptionsDef, 20}, - {IT_SUBMENU | IT_STRING, NULL, "Gamepad Options...", &OP_Joystick1Def , 30}, + {IT_CALL | IT_STRING, NULL, "Control Configuration...", "Set keyboard controls", M_Setup1PControlsMenu, 10}, + {IT_SUBMENU | IT_STRING, NULL, "Mouse Options...", "Set mouse options", &OP_MouseOptionsDef, 20}, + {IT_SUBMENU | IT_STRING, NULL, "Gamepad Options...", "Set controller options", &OP_Joystick1Def , 30}, - {IT_SUBMENU | IT_STRING, NULL, "Camera Options...", &OP_CameraOptionsDef, 50}, + {IT_SUBMENU | IT_STRING, NULL, "Camera Options...", "Change camera behavior", &OP_CameraOptionsDef, 50}, - {IT_STRING | IT_CVAR, NULL, "Automatic braking", &cv_autobrake, 70}, - {IT_CALL | IT_STRING, NULL, "Play Style...", M_Setup1PPlaystyleMenu, 80}, + {IT_STRING | IT_CVAR, NULL, "Automatic braking", NULL, &cv_autobrake, 70}, + {IT_CALL | IT_STRING, NULL, "Play Style...", "Change how the game is played", M_Setup1PPlaystyleMenu, 80}, }; static menuitem_t OP_P2ControlsMenu[] = { - {IT_CALL | IT_STRING, NULL, "Control Configuration...", M_Setup2PControlsMenu, 10}, - {IT_SUBMENU | IT_STRING, NULL, "Second Mouse Options...", &OP_Mouse2OptionsDef, 20}, - {IT_SUBMENU | IT_STRING, NULL, "Second Gamepad Options...", &OP_Joystick2Def , 30}, + {IT_CALL | IT_STRING, NULL, "Control Configuration...", "Set keyboard controls", M_Setup2PControlsMenu, 10}, + {IT_SUBMENU | IT_STRING, NULL, "Second Mouse Options...", "Set mouse options", &OP_Mouse2OptionsDef, 20}, + {IT_SUBMENU | IT_STRING, NULL, "Second Gamepad Options...", "Set controller options", &OP_Joystick2Def , 30}, - {IT_SUBMENU | IT_STRING, NULL, "Camera Options...", &OP_Camera2OptionsDef, 50}, + {IT_SUBMENU | IT_STRING, NULL, "Camera Options...", "Change camera behavior", &OP_Camera2OptionsDef, 50}, - {IT_STRING | IT_CVAR, NULL, "Automatic braking", &cv_autobrake2, 70}, - {IT_CALL | IT_STRING, NULL, "Play Style...", M_Setup2PPlaystyleMenu, 80}, + {IT_STRING | IT_CVAR, NULL, "Automatic braking", NULL, &cv_autobrake2, 70}, + {IT_CALL | IT_STRING, NULL, "Play Style...", "Change how the game is played", M_Setup2PPlaystyleMenu, 80}, }; static menuitem_t OP_ChangeControlsMenu[] = { - {IT_HEADER, NULL, "Movement", NULL, 0}, - {IT_SPACE, NULL, NULL, NULL, 0}, // padding - {IT_CALL | IT_STRING2, NULL, "Move Forward", M_ChangeControl, GC_FORWARD }, - {IT_CALL | IT_STRING2, NULL, "Move Backward", M_ChangeControl, GC_BACKWARD }, - {IT_CALL | IT_STRING2, NULL, "Move Left", M_ChangeControl, GC_STRAFELEFT }, - {IT_CALL | IT_STRING2, NULL, "Move Right", M_ChangeControl, GC_STRAFERIGHT }, - {IT_CALL | IT_STRING2, NULL, "Jump", M_ChangeControl, GC_JUMP }, - {IT_CALL | IT_STRING2, NULL, "Spin", M_ChangeControl, GC_SPIN }, - {IT_HEADER, NULL, "Camera", NULL, 0}, - {IT_SPACE, NULL, NULL, NULL, 0}, // padding - {IT_CALL | IT_STRING2, NULL, "Look Up", M_ChangeControl, GC_LOOKUP }, - {IT_CALL | IT_STRING2, NULL, "Look Down", M_ChangeControl, GC_LOOKDOWN }, - {IT_CALL | IT_STRING2, NULL, "Look Left", M_ChangeControl, GC_TURNLEFT }, - {IT_CALL | IT_STRING2, NULL, "Look Right", M_ChangeControl, GC_TURNRIGHT }, - {IT_CALL | IT_STRING2, NULL, "Center View", M_ChangeControl, GC_CENTERVIEW }, - {IT_CALL | IT_STRING2, NULL, "Toggle Mouselook", M_ChangeControl, GC_MOUSEAIMING }, - {IT_CALL | IT_STRING2, NULL, "Toggle Third-Person", M_ChangeControl, GC_CAMTOGGLE}, - {IT_CALL | IT_STRING2, NULL, "Reset Camera", M_ChangeControl, GC_CAMRESET }, - {IT_HEADER, NULL, "Meta", NULL, 0}, - {IT_SPACE, NULL, NULL, NULL, 0}, // padding - {IT_CALL | IT_STRING2, NULL, "Game Status", + {IT_HEADER, NULL, "Movement", NULL, NULL, 0}, + {IT_SPACE, NULL, NULL, NULL, NULL, 0}, // padding + {IT_CALL | IT_STRING2, NULL, "Move Forward", NULL, M_ChangeControl, GC_FORWARD }, + {IT_CALL | IT_STRING2, NULL, "Move Backward", NULL, M_ChangeControl, GC_BACKWARD }, + {IT_CALL | IT_STRING2, NULL, "Move Left", NULL, M_ChangeControl, GC_STRAFELEFT }, + {IT_CALL | IT_STRING2, NULL, "Move Right", NULL, M_ChangeControl, GC_STRAFERIGHT }, + {IT_CALL | IT_STRING2, NULL, "Jump", NULL, M_ChangeControl, GC_JUMP }, + {IT_CALL | IT_STRING2, NULL, "Spin", NULL, M_ChangeControl, GC_SPIN }, + {IT_HEADER, NULL, "Camera", NULL, NULL, 0}, + {IT_SPACE, NULL, NULL, NULL, NULL, 0}, // padding + {IT_CALL | IT_STRING2, NULL, "Look Up", NULL, M_ChangeControl, GC_LOOKUP }, + {IT_CALL | IT_STRING2, NULL, "Look Down", NULL, M_ChangeControl, GC_LOOKDOWN }, + {IT_CALL | IT_STRING2, NULL, "Look Left", NULL, M_ChangeControl, GC_TURNLEFT }, + {IT_CALL | IT_STRING2, NULL, "Look Right", NULL, M_ChangeControl, GC_TURNRIGHT }, + {IT_CALL | IT_STRING2, NULL, "Center View", NULL, M_ChangeControl, GC_CENTERVIEW }, + {IT_CALL | IT_STRING2, NULL, "Toggle Mouselook", NULL, M_ChangeControl, GC_MOUSEAIMING }, + {IT_CALL | IT_STRING2, NULL, "Toggle Third-Person", NULL, M_ChangeControl, GC_CAMTOGGLE}, + {IT_CALL | IT_STRING2, NULL, "Reset Camera", NULL, M_ChangeControl, GC_CAMRESET }, + {IT_HEADER, NULL, "Meta", NULL, NULL, 0}, + {IT_SPACE, NULL, NULL, NULL, NULL, 0}, // padding + {IT_CALL | IT_STRING2, NULL, "Game Status", NULL, M_ChangeControl, GC_SCORES }, - {IT_CALL | IT_STRING2, NULL, "Pause / Run Retry", M_ChangeControl, GC_PAUSE }, - {IT_CALL | IT_STRING2, NULL, "Screenshot", M_ChangeControl, GC_SCREENSHOT }, - {IT_CALL | IT_STRING2, NULL, "Toggle GIF Recording", M_ChangeControl, GC_RECORDGIF }, - {IT_CALL | IT_STRING2, NULL, "Open/Close Menu (ESC)", M_ChangeControl, GC_SYSTEMMENU }, - {IT_CALL | IT_STRING2, NULL, "Next Viewpoint", M_ChangeControl, GC_VIEWPOINTNEXT }, - {IT_CALL | IT_STRING2, NULL, "Prev Viewpoint", M_ChangeControl, GC_VIEWPOINTPREV }, - {IT_CALL | IT_STRING2, NULL, "Console", M_ChangeControl, GC_CONSOLE }, - {IT_HEADER, NULL, "Multiplayer", NULL, 0}, - {IT_SPACE, NULL, NULL, NULL, 0}, // padding - {IT_CALL | IT_STRING2, NULL, "Talk", M_ChangeControl, GC_TALKKEY }, - {IT_CALL | IT_STRING2, NULL, "Talk (Team only)", M_ChangeControl, GC_TEAMKEY }, - {IT_HEADER, NULL, "Ringslinger (Match, CTF, Tag, H&S)", NULL, 0}, - {IT_SPACE, NULL, NULL, NULL, 0}, // padding - {IT_CALL | IT_STRING2, NULL, "Fire", M_ChangeControl, GC_FIRE }, - {IT_CALL | IT_STRING2, NULL, "Fire Normal", M_ChangeControl, GC_FIRENORMAL }, - {IT_CALL | IT_STRING2, NULL, "Toss Flag", M_ChangeControl, GC_TOSSFLAG }, - {IT_CALL | IT_STRING2, NULL, "Next Weapon", M_ChangeControl, GC_WEAPONNEXT }, - {IT_CALL | IT_STRING2, NULL, "Prev Weapon", M_ChangeControl, GC_WEAPONPREV }, - {IT_CALL | IT_STRING2, NULL, "Normal / Infinity", M_ChangeControl, GC_WEPSLOT1 }, - {IT_CALL | IT_STRING2, NULL, "Automatic", M_ChangeControl, GC_WEPSLOT2 }, - {IT_CALL | IT_STRING2, NULL, "Bounce", M_ChangeControl, GC_WEPSLOT3 }, - {IT_CALL | IT_STRING2, NULL, "Scatter", M_ChangeControl, GC_WEPSLOT4 }, - {IT_CALL | IT_STRING2, NULL, "Grenade", M_ChangeControl, GC_WEPSLOT5 }, - {IT_CALL | IT_STRING2, NULL, "Explosion", M_ChangeControl, GC_WEPSLOT6 }, - {IT_CALL | IT_STRING2, NULL, "Rail", M_ChangeControl, GC_WEPSLOT7 }, - {IT_HEADER, NULL, "Add-ons", NULL, 0}, - {IT_SPACE, NULL, NULL, NULL, 0}, // padding - {IT_CALL | IT_STRING2, NULL, "Custom Action 1", M_ChangeControl, GC_CUSTOM1 }, - {IT_CALL | IT_STRING2, NULL, "Custom Action 2", M_ChangeControl, GC_CUSTOM2 }, - {IT_CALL | IT_STRING2, NULL, "Custom Action 3", M_ChangeControl, GC_CUSTOM3 }, + {IT_CALL | IT_STRING2, NULL, "Pause / Run Retry", NULL, M_ChangeControl, GC_PAUSE }, + {IT_CALL | IT_STRING2, NULL, "Screenshot", NULL, M_ChangeControl, GC_SCREENSHOT }, + {IT_CALL | IT_STRING2, NULL, "Toggle GIF Recording", NULL, M_ChangeControl, GC_RECORDGIF }, + {IT_CALL | IT_STRING2, NULL, "Open/Close Menu (ESC)", NULL, M_ChangeControl, GC_SYSTEMMENU }, + {IT_CALL | IT_STRING2, NULL, "Next Viewpoint", NULL, M_ChangeControl, GC_VIEWPOINTNEXT }, + {IT_CALL | IT_STRING2, NULL, "Prev Viewpoint", NULL, M_ChangeControl, GC_VIEWPOINTPREV }, + {IT_CALL | IT_STRING2, NULL, "Console", NULL, M_ChangeControl, GC_CONSOLE }, + {IT_HEADER, NULL, "Multiplayer", NULL, NULL, 0}, + {IT_SPACE, NULL, NULL, NULL, NULL, 0}, // padding + {IT_CALL | IT_STRING2, NULL, "Talk", NULL, M_ChangeControl, GC_TALKKEY }, + {IT_CALL | IT_STRING2, NULL, "Talk (Team only)", NULL, M_ChangeControl, GC_TEAMKEY }, + {IT_HEADER, NULL, "Ringslinger (Match, CTF, Tag, H&S)", NULL, NULL, 0}, + {IT_SPACE, NULL, NULL, NULL, NULL, 0}, // padding + {IT_CALL | IT_STRING2, NULL, "Fire", NULL, M_ChangeControl, GC_FIRE }, + {IT_CALL | IT_STRING2, NULL, "Fire Normal", NULL, M_ChangeControl, GC_FIRENORMAL }, + {IT_CALL | IT_STRING2, NULL, "Toss Flag", NULL, M_ChangeControl, GC_TOSSFLAG }, + {IT_CALL | IT_STRING2, NULL, "Next Weapon", NULL, M_ChangeControl, GC_WEAPONNEXT }, + {IT_CALL | IT_STRING2, NULL, "Prev Weapon", NULL, M_ChangeControl, GC_WEAPONPREV }, + {IT_CALL | IT_STRING2, NULL, "Normal / Infinity", NULL, M_ChangeControl, GC_WEPSLOT1 }, + {IT_CALL | IT_STRING2, NULL, "Automatic", NULL, M_ChangeControl, GC_WEPSLOT2 }, + {IT_CALL | IT_STRING2, NULL, "Bounce", NULL, M_ChangeControl, GC_WEPSLOT3 }, + {IT_CALL | IT_STRING2, NULL, "Scatter", NULL, M_ChangeControl, GC_WEPSLOT4 }, + {IT_CALL | IT_STRING2, NULL, "Grenade", NULL, M_ChangeControl, GC_WEPSLOT5 }, + {IT_CALL | IT_STRING2, NULL, "Explosion", NULL, M_ChangeControl, GC_WEPSLOT6 }, + {IT_CALL | IT_STRING2, NULL, "Rail", NULL, M_ChangeControl, GC_WEPSLOT7 }, + {IT_HEADER, NULL, "Add-ons", NULL, NULL, 0}, + {IT_SPACE, NULL, NULL, NULL, NULL, 0}, // padding + {IT_CALL | IT_STRING2, NULL, "Custom Action 1", NULL, M_ChangeControl, GC_CUSTOM1 }, + {IT_CALL | IT_STRING2, NULL, "Custom Action 2", NULL, M_ChangeControl, GC_CUSTOM2 }, + {IT_CALL | IT_STRING2, NULL, "Custom Action 3", NULL, M_ChangeControl, GC_CUSTOM3 }, }; static menuitem_t OP_Joystick1Menu[] = { - {IT_STRING | IT_CALL, NULL, "Select Gamepad...", M_Setup1PJoystickMenu, 10}, - {IT_STRING | IT_CVAR, NULL, "Move \x17 Axis" , &cv_moveaxis , 30}, - {IT_STRING | IT_CVAR, NULL, "Move \x18 Axis" , &cv_sideaxis , 40}, - {IT_STRING | IT_CVAR, NULL, "Camera \x17 Axis" , &cv_lookaxis , 50}, - {IT_STRING | IT_CVAR, NULL, "Camera \x18 Axis" , &cv_turnaxis , 60}, - {IT_STRING | IT_CVAR, NULL, "Jump Axis" , &cv_jumpaxis , 70}, - {IT_STRING | IT_CVAR, NULL, "Spin Axis" , &cv_spinaxis , 80}, - {IT_STRING | IT_CVAR, NULL, "Fire Axis" , &cv_fireaxis , 90}, - {IT_STRING | IT_CVAR, NULL, "Fire Normal Axis" , &cv_firenaxis ,100}, - - {IT_STRING | IT_CVAR, NULL, "First-Person Vert-Look", &cv_alwaysfreelook, 120}, - {IT_STRING | IT_CVAR, NULL, "Third-Person Vert-Look", &cv_chasefreelook, 130}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Analog Deadzone", &cv_deadzone, 140}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Digital Deadzone", &cv_digitaldeadzone, 150}, + {IT_STRING | IT_CALL, NULL, "Select Gamepad...", "Select which controller to use", M_Setup1PJoystickMenu, 10}, + {IT_STRING | IT_CVAR, NULL, "Move \x17 Axis" , NULL, &cv_moveaxis , 30}, + {IT_STRING | IT_CVAR, NULL, "Move \x18 Axis" , NULL, &cv_sideaxis , 40}, + {IT_STRING | IT_CVAR, NULL, "Camera \x17 Axis" , NULL, &cv_lookaxis , 50}, + {IT_STRING | IT_CVAR, NULL, "Camera \x18 Axis" , NULL, &cv_turnaxis , 60}, + {IT_STRING | IT_CVAR, NULL, "Jump Axis" , NULL, &cv_jumpaxis , 70}, + {IT_STRING | IT_CVAR, NULL, "Spin Axis" , NULL, &cv_spinaxis , 80}, + {IT_STRING | IT_CVAR, NULL, "Fire Axis" , NULL, &cv_fireaxis , 90}, + {IT_STRING | IT_CVAR, NULL, "Fire Normal Axis" , NULL, &cv_firenaxis ,100}, + + {IT_STRING | IT_CVAR, NULL, "First-Person Vert-Look", NULL, &cv_alwaysfreelook, 120}, + {IT_STRING | IT_CVAR, NULL, "Third-Person Vert-Look", NULL, &cv_chasefreelook, 130}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Analog Deadzone", NULL, &cv_deadzone, 140}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Digital Deadzone", NULL, &cv_digitaldeadzone, 150}, }; static menuitem_t OP_Joystick2Menu[] = { - {IT_STRING | IT_CALL, NULL, "Select Gamepad...", M_Setup2PJoystickMenu, 10}, - {IT_STRING | IT_CVAR, NULL, "Move \x17 Axis" , &cv_moveaxis2 , 30}, - {IT_STRING | IT_CVAR, NULL, "Move \x18 Axis" , &cv_sideaxis2 , 40}, - {IT_STRING | IT_CVAR, NULL, "Camera \x17 Axis" , &cv_lookaxis2 , 50}, - {IT_STRING | IT_CVAR, NULL, "Camera \x18 Axis" , &cv_turnaxis2 , 60}, - {IT_STRING | IT_CVAR, NULL, "Jump Axis" , &cv_jumpaxis2 , 70}, - {IT_STRING | IT_CVAR, NULL, "Spin Axis" , &cv_spinaxis2 , 80}, - {IT_STRING | IT_CVAR, NULL, "Fire Axis" , &cv_fireaxis2 , 90}, - {IT_STRING | IT_CVAR, NULL, "Fire Normal Axis" , &cv_firenaxis2 ,100}, - - {IT_STRING | IT_CVAR, NULL, "First-Person Vert-Look", &cv_alwaysfreelook2,120}, - {IT_STRING | IT_CVAR, NULL, "Third-Person Vert-Look", &cv_chasefreelook2, 130}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Analog Deadzone", &cv_deadzone2,140}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Digital Deadzone", &cv_digitaldeadzone2,150}, + {IT_STRING | IT_CALL, NULL, "Select Gamepad...", "Select which controller to use", M_Setup2PJoystickMenu, 10}, + {IT_STRING | IT_CVAR, NULL, "Move \x17 Axis" , NULL, &cv_moveaxis2 , 30}, + {IT_STRING | IT_CVAR, NULL, "Move \x18 Axis" , NULL, &cv_sideaxis2 , 40}, + {IT_STRING | IT_CVAR, NULL, "Camera \x17 Axis" , NULL, &cv_lookaxis2 , 50}, + {IT_STRING | IT_CVAR, NULL, "Camera \x18 Axis" , NULL, &cv_turnaxis2 , 60}, + {IT_STRING | IT_CVAR, NULL, "Jump Axis" , NULL, &cv_jumpaxis2 , 70}, + {IT_STRING | IT_CVAR, NULL, "Spin Axis" , NULL, &cv_spinaxis2 , 80}, + {IT_STRING | IT_CVAR, NULL, "Fire Axis" , NULL, &cv_fireaxis2 , 90}, + {IT_STRING | IT_CVAR, NULL, "Fire Normal Axis" , NULL, &cv_firenaxis2 ,100}, + + {IT_STRING | IT_CVAR, NULL, "First-Person Vert-Look", NULL, &cv_alwaysfreelook2,120}, + {IT_STRING | IT_CVAR, NULL, "Third-Person Vert-Look", NULL, &cv_chasefreelook2, 130}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Analog Deadzone", NULL, &cv_deadzone2,140}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Digital Deadzone", NULL, &cv_digitaldeadzone2,150}, }; static menuitem_t OP_JoystickSetMenu[1+MAX_JOYSTICKS]; static menuitem_t OP_MouseOptionsMenu[] = { - {IT_STRING | IT_CVAR, NULL, "Use Mouse", &cv_usemouse, 10}, + {IT_STRING | IT_CVAR, NULL, "Use Mouse", NULL, &cv_usemouse, 10}, - {IT_STRING | IT_CVAR, NULL, "First-Person MouseLook", &cv_alwaysfreelook, 30}, - {IT_STRING | IT_CVAR, NULL, "Third-Person MouseLook", &cv_chasefreelook, 40}, - {IT_STRING | IT_CVAR, NULL, "Mouse Move", &cv_mousemove, 50}, - {IT_STRING | IT_CVAR, NULL, "Invert Y Axis", &cv_invertmouse, 60}, + {IT_STRING | IT_CVAR, NULL, "First-Person MouseLook", NULL, &cv_alwaysfreelook, 30}, + {IT_STRING | IT_CVAR, NULL, "Third-Person MouseLook", NULL, &cv_chasefreelook, 40}, + {IT_STRING | IT_CVAR, NULL, "Mouse Move", NULL, &cv_mousemove, 50}, + {IT_STRING | IT_CVAR, NULL, "Invert Y Axis", NULL, &cv_invertmouse, 60}, {IT_STRING | IT_CVAR | IT_CV_SLIDER, - NULL, "Mouse X Sensitivity", &cv_mousesens, 70}, + NULL, "Mouse X Sensitivity", NULL, &cv_mousesens, 70}, {IT_STRING | IT_CVAR | IT_CV_SLIDER, - NULL, "Mouse Y Sensitivity", &cv_mouseysens, 80}, + NULL, "Mouse Y Sensitivity", NULL, &cv_mouseysens, 80}, }; static menuitem_t OP_Mouse2OptionsMenu[] = { - {IT_STRING | IT_CVAR, NULL, "Use Mouse 2", &cv_usemouse2, 10}, + {IT_STRING | IT_CVAR, NULL, "Use Mouse 2", NULL, &cv_usemouse2, 10}, {IT_STRING | IT_CVAR, NULL, "Second Mouse Serial Port", - &cv_mouse2port, 20}, - {IT_STRING | IT_CVAR, NULL, "First-Person MouseLook", &cv_alwaysfreelook2, 30}, - {IT_STRING | IT_CVAR, NULL, "Third-Person MouseLook", &cv_chasefreelook2, 40}, - {IT_STRING | IT_CVAR, NULL, "Mouse Move", &cv_mousemove2, 50}, - {IT_STRING | IT_CVAR, NULL, "Invert Y Axis", &cv_invertmouse2, 60}, + NULL, &cv_mouse2port, 20}, + {IT_STRING | IT_CVAR, NULL, "First-Person MouseLook", NULL, &cv_alwaysfreelook2, 30}, + {IT_STRING | IT_CVAR, NULL, "Third-Person MouseLook", NULL, &cv_chasefreelook2, 40}, + {IT_STRING | IT_CVAR, NULL, "Mouse Move", NULL, &cv_mousemove2, 50}, + {IT_STRING | IT_CVAR, NULL, "Invert Y Axis", NULL, &cv_invertmouse2, 60}, {IT_STRING | IT_CVAR | IT_CV_SLIDER, - NULL, "Mouse X Sensitivity", &cv_mousesens2, 70}, + NULL, "Mouse X Sensitivity", NULL, &cv_mousesens2, 70}, {IT_STRING | IT_CVAR | IT_CV_SLIDER, - NULL, "Mouse Y Sensitivity", &cv_mouseysens2, 80}, + NULL, "Mouse Y Sensitivity", NULL, &cv_mouseysens2, 80}, }; static menuitem_t OP_CameraOptionsMenu[] = { - {IT_HEADER, NULL, "General Toggles", NULL, 0}, - {IT_STRING | IT_CVAR, NULL, "Third-person Camera" , &cv_chasecam , 6}, - {IT_STRING | IT_CVAR, NULL, "Flip Camera with Gravity" , &cv_flipcam , 11}, - {IT_STRING | IT_CVAR, NULL, "Orbital Looking" , &cv_cam_orbit , 16}, - {IT_STRING | IT_CVAR, NULL, "Downhill Slope Adjustment", &cv_cam_adjust, 21}, + {IT_HEADER, NULL, "General Toggles", NULL, NULL, 0}, + {IT_STRING | IT_CVAR, NULL, "Third-person Camera", NULL, &cv_chasecam , 6}, + {IT_STRING | IT_CVAR, NULL, "Flip Camera with Gravity", NULL, &cv_flipcam , 11}, + {IT_STRING | IT_CVAR, NULL, "Orbital Looking", NULL, &cv_cam_orbit , 16}, + {IT_STRING | IT_CVAR, NULL, "Downhill Slope Adjustment", NULL, &cv_cam_adjust, 21}, - {IT_HEADER, NULL, "Camera Positioning", NULL, 30}, - {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Distance", &cv_cam_savedist[0][0], 36}, - {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Height", &cv_cam_saveheight[0][0], 41}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Camera Spacial Speed", &cv_cam_speed, 46}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Rotation Speed", &cv_cam_turnmultiplier, 51}, + {IT_HEADER, NULL, "Camera Positioning", NULL, NULL, 30}, + {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Distance", NULL, &cv_cam_savedist[0][0], 36}, + {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Height", NULL, &cv_cam_saveheight[0][0], 41}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Camera Spacial Speed", NULL, &cv_cam_speed, 46}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Rotation Speed", NULL, &cv_cam_turnmultiplier, 51}, - {IT_HEADER, NULL, "Display Options", NULL, 60}, - {IT_STRING | IT_CVAR, NULL, "Crosshair", &cv_crosshair, 66}, + {IT_HEADER, NULL, "Display Options", NULL, NULL, 60}, + {IT_STRING | IT_CVAR, NULL, "Crosshair", NULL, &cv_crosshair, 66}, }; static menuitem_t OP_Camera2OptionsMenu[] = { - {IT_HEADER, NULL, "General Toggles", NULL, 0}, - {IT_STRING | IT_CVAR, NULL, "Third-person Camera" , &cv_chasecam2 , 6}, - {IT_STRING | IT_CVAR, NULL, "Flip Camera with Gravity" , &cv_flipcam2 , 11}, - {IT_STRING | IT_CVAR, NULL, "Orbital Looking" , &cv_cam2_orbit , 16}, - {IT_STRING | IT_CVAR, NULL, "Downhill Slope Adjustment", &cv_cam2_adjust, 21}, + {IT_HEADER, NULL, "General Toggles", NULL, NULL, 0}, + {IT_STRING | IT_CVAR, NULL, "Third-person Camera", NULL, &cv_chasecam2 , 6}, + {IT_STRING | IT_CVAR, NULL, "Flip Camera with Gravity", NULL, &cv_flipcam2 , 11}, + {IT_STRING | IT_CVAR, NULL, "Orbital Looking", NULL, &cv_cam2_orbit , 16}, + {IT_STRING | IT_CVAR, NULL, "Downhill Slope Adjustment", NULL, &cv_cam2_adjust, 21}, - {IT_HEADER, NULL, "Camera Positioning", NULL, 30}, - {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Distance", &cv_cam_savedist[0][1], 36}, - {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Height", &cv_cam_saveheight[0][1], 41}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Camera Spacial Speed", &cv_cam2_speed, 46}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Rotation Speed", &cv_cam2_turnmultiplier, 51}, + {IT_HEADER, NULL, "Camera Positioning", NULL, NULL, 30}, + {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Distance", NULL, &cv_cam_savedist[0][1], 36}, + {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Height", NULL, &cv_cam_saveheight[0][1], 41}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Camera Spacial Speed", NULL, &cv_cam2_speed, 46}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Rotation Speed", NULL, &cv_cam2_turnmultiplier, 51}, - {IT_HEADER, NULL, "Display Options", NULL, 60}, - {IT_STRING | IT_CVAR, NULL, "Crosshair", &cv_crosshair2, 66}, + {IT_HEADER, NULL, "Display Options", NULL, NULL, 60}, + {IT_STRING | IT_CVAR, NULL, "Crosshair", NULL, &cv_crosshair2, 66}, }; static menuitem_t OP_CameraExtendedOptionsMenu[] = { - {IT_HEADER, NULL, "General Toggles", NULL, 0}, - {IT_STRING | IT_CVAR, NULL, "Third-person Camera" , &cv_chasecam , 6}, - {IT_STRING | IT_CVAR, NULL, "Flip Camera with Gravity" , &cv_flipcam , 11}, - {IT_STRING | IT_CVAR, NULL, "Orbital Looking" , &cv_cam_orbit , 16}, - {IT_STRING | IT_CVAR, NULL, "Downhill Slope Adjustment", &cv_cam_adjust, 21}, - - {IT_HEADER, NULL, "Camera Positioning", NULL, 30}, - {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Distance", &cv_cam_savedist[1][0], 36}, - {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Height", &cv_cam_saveheight[1][0], 41}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Camera Spacial Speed", &cv_cam_speed, 46}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Rotation Speed", &cv_cam_turnmultiplier, 51}, - - {IT_HEADER, NULL, "Automatic Camera Options", NULL, 60}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Shift to player angle", &cv_cam_shiftfacing[0], 66}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to player angle", &cv_cam_turnfacing[0], 71}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to ability", &cv_cam_turnfacingability[0], 76}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to spindash", &cv_cam_turnfacingspindash[0], 81}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to input", &cv_cam_turnfacinginput[0], 86}, - - {IT_HEADER, NULL, "Locked Camera Options", NULL, 95}, - {IT_STRING | IT_CVAR, NULL, "Lock button behavior", &cv_cam_centertoggle[0], 101}, - {IT_STRING | IT_CVAR, NULL, "Sideways movement", &cv_cam_lockedinput[0], 106}, - {IT_STRING | IT_CVAR, NULL, "Targeting assist", &cv_cam_lockonboss[0], 111}, - - {IT_HEADER, NULL, "Display Options", NULL, 120}, - {IT_STRING | IT_CVAR, NULL, "Crosshair", &cv_crosshair, 126}, + {IT_HEADER, NULL, "General Toggles", NULL, NULL, 0}, + {IT_STRING | IT_CVAR, NULL, "Third-person Camera", NULL, &cv_chasecam , 6}, + {IT_STRING | IT_CVAR, NULL, "Flip Camera with Gravity", NULL, &cv_flipcam , 11}, + {IT_STRING | IT_CVAR, NULL, "Orbital Looking", NULL, &cv_cam_orbit , 16}, + {IT_STRING | IT_CVAR, NULL, "Downhill Slope Adjustment", NULL, &cv_cam_adjust, 21}, + + {IT_HEADER, NULL, "Camera Positioning", NULL, NULL, 30}, + {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Distance", NULL, &cv_cam_savedist[1][0], 36}, + {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Height", NULL, &cv_cam_saveheight[1][0], 41}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Camera Spacial Speed", NULL, &cv_cam_speed, 46}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Rotation Speed", NULL, &cv_cam_turnmultiplier, 51}, + + {IT_HEADER, NULL, "Automatic Camera Options", NULL, NULL, 60}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Shift to player angle", NULL, &cv_cam_shiftfacing[0], 66}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to player angle", NULL, &cv_cam_turnfacing[0], 71}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to ability", NULL, &cv_cam_turnfacingability[0], 76}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to spindash", NULL, &cv_cam_turnfacingspindash[0], 81}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to input", NULL, &cv_cam_turnfacinginput[0], 86}, + + {IT_HEADER, NULL, "Locked Camera Options", NULL, NULL, 95}, + {IT_STRING | IT_CVAR, NULL, "Lock button behavior", NULL, &cv_cam_centertoggle[0], 101}, + {IT_STRING | IT_CVAR, NULL, "Sideways movement", NULL, &cv_cam_lockedinput[0], 106}, + {IT_STRING | IT_CVAR, NULL, "Targeting assist", NULL, &cv_cam_lockonboss[0], 111}, + + {IT_HEADER, NULL, "Display Options", NULL, NULL, 120}, + {IT_STRING | IT_CVAR, NULL, "Crosshair", NULL, &cv_crosshair, 126}, }; static menuitem_t OP_Camera2ExtendedOptionsMenu[] = { - {IT_HEADER, NULL, "General Toggles", NULL, 0}, - {IT_STRING | IT_CVAR, NULL, "Third-person Camera" , &cv_chasecam2 , 6}, - {IT_STRING | IT_CVAR, NULL, "Flip Camera with Gravity" , &cv_flipcam2 , 11}, - {IT_STRING | IT_CVAR, NULL, "Orbital Looking" , &cv_cam2_orbit , 16}, - {IT_STRING | IT_CVAR, NULL, "Downhill Slope Adjustment", &cv_cam2_adjust, 21}, - - {IT_HEADER, NULL, "Camera Positioning", NULL, 30}, - {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Distance", &cv_cam_savedist[1][1], 36}, - {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Height", &cv_cam_saveheight[1][1], 41}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Camera Spacial Speed", &cv_cam2_speed, 46}, - {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Rotation Speed", &cv_cam2_turnmultiplier, 51}, - - {IT_HEADER, NULL, "Automatic Camera Options", NULL, 60}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Shift to player angle", &cv_cam_shiftfacing[1], 66}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to player angle", &cv_cam_turnfacing[1], 71}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to ability", &cv_cam_turnfacingability[1], 76}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to spindash", &cv_cam_turnfacingspindash[1], 81}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to input", &cv_cam_turnfacinginput[1], 86}, - - {IT_HEADER, NULL, "Locked Camera Options", NULL, 95}, - {IT_STRING | IT_CVAR, NULL, "Lock button behavior", &cv_cam_centertoggle[1], 101}, - {IT_STRING | IT_CVAR, NULL, "Sideways movement", &cv_cam_lockedinput[1], 106}, - {IT_STRING | IT_CVAR, NULL, "Targeting assist", &cv_cam_lockonboss[1], 111}, - - {IT_HEADER, NULL, "Display Options", NULL, 120}, - {IT_STRING | IT_CVAR, NULL, "Crosshair", &cv_crosshair2, 126}, + {IT_HEADER, NULL, "General Toggles", NULL, NULL, 0}, + {IT_STRING | IT_CVAR, NULL, "Third-person Camera", NULL, &cv_chasecam2 , 6}, + {IT_STRING | IT_CVAR, NULL, "Flip Camera with Gravity", NULL, &cv_flipcam2 , 11}, + {IT_STRING | IT_CVAR, NULL, "Orbital Looking", NULL, &cv_cam2_orbit , 16}, + {IT_STRING | IT_CVAR, NULL, "Downhill Slope Adjustment", NULL, &cv_cam2_adjust, 21}, + + {IT_HEADER, NULL, "Camera Positioning", NULL, NULL, 30}, + {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Distance", NULL, &cv_cam_savedist[1][1], 36}, + {IT_STRING | IT_CVAR | IT_CV_INTEGERSTEP, NULL, "Camera Height", NULL, &cv_cam_saveheight[1][1], 41}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Camera Spacial Speed", NULL, &cv_cam2_speed, 46}, + {IT_STRING | IT_CVAR | IT_CV_FLOATSLIDER, NULL, "Rotation Speed", NULL, &cv_cam2_turnmultiplier, 51}, + + {IT_HEADER, NULL, "Automatic Camera Options", NULL, NULL, 60}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Shift to player angle", NULL, &cv_cam_shiftfacing[1], 66}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to player angle", NULL, &cv_cam_turnfacing[1], 71}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to ability", NULL, &cv_cam_turnfacingability[1], 76}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to spindash", NULL, &cv_cam_turnfacingspindash[1], 81}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Turn to input", NULL, &cv_cam_turnfacinginput[1], 86}, + + {IT_HEADER, NULL, "Locked Camera Options", NULL, NULL, 95}, + {IT_STRING | IT_CVAR, NULL, "Lock button behavior", NULL, &cv_cam_centertoggle[1], 101}, + {IT_STRING | IT_CVAR, NULL, "Sideways movement", NULL, &cv_cam_lockedinput[1], 106}, + {IT_STRING | IT_CVAR, NULL, "Targeting assist", NULL, &cv_cam_lockonboss[1], 111}, + + {IT_HEADER, NULL, "Display Options", NULL, NULL, 120}, + {IT_STRING | IT_CVAR, NULL, "Crosshair", NULL, &cv_crosshair2, 126}, }; enum @@ -1293,195 +1293,143 @@ enum static menuitem_t OP_VideoOptionsMenu[] = { - {IT_HEADER, NULL, "Screen", NULL, 0}, - {IT_STRING | IT_CALL, NULL, "Set Resolution...", M_VideoModeMenu, 6}, // op_video_resolution - {IT_STRING | IT_CVAR, NULL, "Fullscreen (F11)", &cv_fullscreen, 11}, - {IT_STRING | IT_CVAR, NULL, "Vertical Sync", &cv_vidwait, 16}, + {IT_HEADER, NULL, "Screen", NULL, NULL, 0}, + {IT_STRING | IT_CALL, NULL, "Set Resolution...", "Change game resolution", M_VideoModeMenu, 6}, // op_video_resolution + {IT_STRING | IT_CVAR, NULL, "Fullscreen (F11)", NULL, &cv_fullscreen, 11}, + {IT_STRING | IT_CVAR, NULL, "Vertical Sync", NULL, &cv_vidwait, 16}, - {IT_HEADER, NULL, "Renderer", NULL, 25}, + {IT_HEADER, NULL, "Renderer", NULL, NULL, 25}, #ifdef HWRENDER - {IT_STRING | IT_CVAR, NULL, "Renderer (F10)", &cv_renderer, 31}, // op_video_renderer + {IT_STRING | IT_CVAR, NULL, "Renderer (F10)", NULL, &cv_renderer, 31}, // op_video_renderer #else - {IT_TRANSTEXT | IT_PAIR, "Renderer", "Software", &cv_renderer, 31}, + {IT_TRANSTEXT | IT_PAIR, "Renderer", "Software", NULL, &cv_renderer, 31}, #endif - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Field of view", &cv_fov, 36}, - {IT_STRING | IT_CVAR, NULL, "FPS Cap", &cv_fpscap, 41}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Field of view", NULL, &cv_fov, 36}, + {IT_STRING | IT_CVAR, NULL, "FPS Cap", NULL, &cv_fpscap, 41}, #ifdef HWRENDER - {IT_CALL | IT_STRING, NULL, "OpenGL Options...", M_OpenGLOptionsMenu, 46}, + {IT_CALL | IT_STRING, NULL, "OpenGL Options...", "Change OpenGL-specific options", M_OpenGLOptionsMenu, 46}, #else - {IT_TRANSTEXT, NULL, "OpenGL Options...", NULL, 46}, + {IT_TRANSTEXT, NULL, "OpenGL Options...", "Change OpenGL-specific options", NULL, 46}, #endif - {IT_HEADER, NULL, "Color Profile", NULL, 55}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", &cv_globalgamma, 61}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", &cv_globalsaturation, 66}, - {IT_SUBMENU|IT_STRING, NULL, "Advanced Settings...", &OP_ColorOptionsDef, 71}, + {IT_HEADER, NULL, "Color Profile", NULL, NULL, 55}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", NULL, &cv_globalgamma, 61}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", NULL, &cv_globalsaturation, 66}, + {IT_SUBMENU|IT_STRING, NULL, "Advanced Settings...", NULL, &OP_ColorOptionsDef, 71}, - {IT_HEADER, NULL, "Heads-Up Display", NULL, 80}, - {IT_STRING | IT_CVAR, NULL, "Show HUD", &cv_showhud, 86}, + {IT_HEADER, NULL, "Heads-Up Display", NULL, NULL, 80}, + {IT_STRING | IT_CVAR, NULL, "Show HUD", NULL, &cv_showhud, 86}, {IT_STRING | IT_CVAR | IT_CV_SLIDER, - NULL, "HUD Transparency", &cv_translucenthud, 91}, - {IT_STRING | IT_CVAR, NULL, "Score/Time/Rings", &cv_timetic, 96}, - {IT_STRING | IT_CVAR, NULL, "Show Powerups", &cv_powerupdisplay, 101}, - {IT_STRING | IT_CVAR, NULL, "Local ping display", &cv_showping, 106}, // shows ping next to framerate if we want to. - {IT_STRING | IT_CVAR, NULL, "Show player names", &cv_seenames, 111}, - - {IT_HEADER, NULL, "Console", NULL, 120}, - {IT_STRING | IT_CVAR, NULL, "Background color", &cons_backcolor, 126}, - {IT_STRING | IT_CVAR, NULL, "Text Size", &cv_constextsize, 131}, - - {IT_HEADER, NULL, "Chat", NULL, 140}, - {IT_STRING | IT_CVAR, NULL, "Chat Mode", &cv_consolechat, 146}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Chat Box Width", &cv_chatwidth, 151}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Chat Box Height", &cv_chatheight, 156}, - {IT_STRING | IT_CVAR, NULL, "Message Fadeout Time", &cv_chattime, 161}, - {IT_STRING | IT_CVAR, NULL, "Chat Notifications", &cv_chatnotifications, 166}, - {IT_STRING | IT_CVAR, NULL, "Spam Protection", &cv_chatspamprotection, 171}, - {IT_STRING | IT_CVAR, NULL, "Chat background tint", &cv_chatbacktint, 176}, - - {IT_HEADER, NULL, "Level", NULL, 185}, - {IT_STRING | IT_CVAR, NULL, "Draw Distance", &cv_drawdist, 191}, - {IT_STRING | IT_CVAR, NULL, "Weather Draw Dist.", &cv_drawdist_precip, 196}, - {IT_STRING | IT_CVAR, NULL, "NiGHTS Hoop Draw Dist.", &cv_drawdist_nights, 201}, - - {IT_HEADER, NULL, "Diagnostic", NULL, 210}, - {IT_STRING | IT_CVAR, NULL, "Show FPS", &cv_fpscounter, 216}, - {IT_STRING | IT_CVAR, NULL, "Show TPS", &cv_tpscounter, 221}, - {IT_STRING | IT_CVAR, NULL, "Clear Before Redraw", &cv_homremoval, 226}, - {IT_STRING | IT_CVAR, NULL, "Show \"FOCUS LOST\"", &cv_showfocuslost, 231}, -}; - -static const char* OP_VideoTooltips[] = -{ - NULL, - "Resolution the game runs at", - "Toggle between fullscreen and windowed mode", - "Sync game framerate to display refresh rate", - NULL, - #ifdef HWRENDER - "Toggle OpenGL and Software renderer", - #else - "Does nothing on this build", - #endif - "Adjusts field of view, allowing you to have a wider perspective", - "Set the game framerate", - #ifdef HWRENDER - "Options specific to the OpenGL renderer", - #else - "Does nothing on this build", - #endif - NULL, - "Gamma (brightness) of the game", - "Saturation of the game", - "Advanced color settings for the game", - NULL, - "Toggles the Heads-up display", - "Changes the transparency of the Heads-up display", - "The appearance of the score, time and rings display", - "Show remaining duration of power up items", - "Display your ping to the server next to the FPS counter", - "Show the names of fellow players when you are near them", - NULL, - "Change the background color of the console", - "Adjust the text size of the console", - NULL, - "Choose how the game chat is displayed", - "Change the width of the chat box", - "Change the height of the chat box", - "How long chat messages appear on screen before fading out", - "Plays a chat notification sound", - "Block chat messages from sending too fast", - "Background for the chatbox", - NULL, - "How far to render objects", - "How far to render precipitation(rain/snow)", - "How far to render hoops in NiGHTS mode", - NULL, - "Display the game's framerate", - "Display the game's ticrate", - "Fixes the hall of mirrors bug in the Software renderer", - "Display a 'Focus Lost' message when the window is unfocused" + NULL, "HUD Transparency", NULL, &cv_translucenthud, 91}, + {IT_STRING | IT_CVAR, NULL, "Score/Time/Rings", NULL, &cv_timetic, 96}, + {IT_STRING | IT_CVAR, NULL, "Show Powerups", NULL, &cv_powerupdisplay, 101}, + {IT_STRING | IT_CVAR, NULL, "Local ping display", NULL, &cv_showping, 106}, // shows ping next to framerate if we want to. + {IT_STRING | IT_CVAR, NULL, "Show player names", NULL, &cv_seenames, 111}, + + {IT_HEADER, NULL, "Console", NULL, NULL, 120}, + {IT_STRING | IT_CVAR, NULL, "Background color", NULL, &cons_backcolor, 126}, + {IT_STRING | IT_CVAR, NULL, "Text Size", NULL, &cv_constextsize, 131}, + + {IT_HEADER, NULL, "Chat", NULL, NULL, 140}, + {IT_STRING | IT_CVAR, NULL, "Chat Mode", NULL, &cv_consolechat, 146}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Chat Box Width", NULL, &cv_chatwidth, 151}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Chat Box Height", NULL, &cv_chatheight, 156}, + {IT_STRING | IT_CVAR, NULL, "Message Fadeout Time", NULL, &cv_chattime, 161}, + {IT_STRING | IT_CVAR, NULL, "Chat Notifications", NULL, &cv_chatnotifications, 166}, + {IT_STRING | IT_CVAR, NULL, "Spam Protection", NULL, &cv_chatspamprotection, 171}, + {IT_STRING | IT_CVAR, NULL, "Chat background tint", NULL, &cv_chatbacktint, 176}, + + {IT_HEADER, NULL, "Level", NULL, NULL, 185}, + {IT_STRING | IT_CVAR, NULL, "Draw Distance", NULL, &cv_drawdist, 191}, + {IT_STRING | IT_CVAR, NULL, "Weather Draw Dist.", NULL, &cv_drawdist_precip, 196}, + {IT_STRING | IT_CVAR, NULL, "NiGHTS Hoop Draw Dist.", NULL, &cv_drawdist_nights, 201}, + + {IT_HEADER, NULL, "Diagnostic", NULL, NULL, 210}, + {IT_STRING | IT_CVAR, NULL, "Show FPS", NULL, &cv_fpscounter, 216}, + {IT_STRING | IT_CVAR, NULL, "Show TPS", NULL, &cv_tpscounter, 221}, + {IT_STRING | IT_CVAR, NULL, "Clear Before Redraw", NULL, &cv_homremoval, 226}, + {IT_STRING | IT_CVAR, NULL, "Show \"FOCUS LOST\"", NULL, &cv_showfocuslost, 231}, }; static menuitem_t OP_VideoModeMenu[] = { - {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleVideoMode, 0}, // dummy menuitem for the control func + {IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandleVideoMode, 0}, // dummy menuitem for the control func }; static menuitem_t OP_ColorOptionsMenu[] = { - {IT_STRING | IT_CALL, NULL, "Reset to defaults", M_ResetCvars, 0}, - - {IT_HEADER, NULL, "Red", NULL, 9}, - {IT_DISABLED, NULL, NULL, NULL, 35}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", &cv_rhue, 15}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", &cv_rsaturation, 20}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", &cv_rgamma, 25}, - - {IT_HEADER, NULL, "Yellow", NULL, 34}, - {IT_DISABLED, NULL, NULL, NULL, 73}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", &cv_yhue, 40}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", &cv_ysaturation, 45}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", &cv_ygamma, 50}, - - {IT_HEADER, NULL, "Green", NULL, 59}, - {IT_DISABLED, NULL, NULL, NULL, 112}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", &cv_ghue, 65}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", &cv_gsaturation, 70}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", &cv_ggamma, 75}, - - {IT_HEADER, NULL, "Cyan", NULL, 84}, - {IT_DISABLED, NULL, NULL, NULL, 255}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", &cv_chue, 90}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", &cv_csaturation, 95}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", &cv_cgamma, 100}, - - {IT_HEADER, NULL, "Blue", NULL, 109}, - {IT_DISABLED, NULL, NULL, NULL, 152}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", &cv_bhue, 115}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", &cv_bsaturation, 120}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", &cv_bgamma, 125}, - - {IT_HEADER, NULL, "Magenta", NULL, 134}, - {IT_DISABLED, NULL, NULL, NULL, 181}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", &cv_mhue, 140}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", &cv_msaturation, 145}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", &cv_mgamma, 150}, + {IT_STRING | IT_CALL, NULL, "Reset to defaults", "Reset color values to their defaults", M_ResetCvars, 0}, + + {IT_HEADER, NULL, "Red", NULL, NULL, 9}, + {IT_DISABLED, NULL, NULL, NULL, NULL, 35}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", NULL, &cv_rhue, 15}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", NULL, &cv_rsaturation, 20}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", NULL, &cv_rgamma, 25}, + + {IT_HEADER, NULL, "Yellow", NULL, NULL, 34}, + {IT_DISABLED, NULL, NULL, NULL, NULL, 73}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", NULL, &cv_yhue, 40}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", NULL, &cv_ysaturation, 45}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", NULL, &cv_ygamma, 50}, + + {IT_HEADER, NULL, "Green", NULL, NULL, 59}, + {IT_DISABLED, NULL, NULL, NULL, NULL, 112}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", NULL, &cv_ghue, 65}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", NULL, &cv_gsaturation, 70}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", NULL, &cv_ggamma, 75}, + + {IT_HEADER, NULL, "Cyan", NULL, NULL, 84}, + {IT_DISABLED, NULL, NULL, NULL, NULL, 255}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", NULL, &cv_chue, 90}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", NULL, &cv_csaturation, 95}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", NULL, &cv_cgamma, 100}, + + {IT_HEADER, NULL, "Blue", NULL, NULL, 109}, + {IT_DISABLED, NULL, NULL, NULL, NULL, 152}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", NULL, &cv_bhue, 115}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", NULL, &cv_bsaturation, 120}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", NULL, &cv_bgamma, 125}, + + {IT_HEADER, NULL, "Magenta", NULL, NULL, 134}, + {IT_DISABLED, NULL, NULL, NULL, NULL, 181}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Hue", NULL, &cv_mhue, 140}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", NULL, &cv_msaturation, 145}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", NULL, &cv_mgamma, 150}, }; #ifdef HWRENDER static menuitem_t OP_OpenGLOptionsMenu[] = { - {IT_HEADER, NULL, "3D Models", NULL, 0}, - {IT_STRING|IT_CVAR, NULL, "Models", &cv_glmodels, 12}, - {IT_STRING|IT_CVAR, NULL, "Frame interpolation", &cv_glmodelinterpolation, 22}, - {IT_STRING|IT_CVAR, NULL, "Ambient lighting", &cv_glmodellighting, 32}, - - {IT_HEADER, NULL, "General", NULL, 51}, - {IT_STRING|IT_CVAR, NULL, "Shaders", &cv_glshaders, 63}, - {IT_STRING|IT_CVAR, NULL, "Palette rendering", &cv_glpaletterendering, 73}, - {IT_STRING|IT_CVAR, NULL, "Lack of perspective", &cv_glshearing, 83}, - {IT_STRING | IT_CVAR, NULL, "Min Shader Brightness", &cv_glsecbright, 93}, - - {IT_HEADER, NULL, "Miscellaneous", NULL, 112}, - {IT_STRING|IT_CVAR, NULL, "Bit depth", &cv_scr_depth, 124}, - {IT_STRING|IT_CVAR, NULL, "Texture filter", &cv_glfiltermode, 134}, - {IT_STRING|IT_CVAR, NULL, "Anisotropic", &cv_glanisotropicmode, 144}, + {IT_HEADER, NULL, "3D Models", NULL, NULL, 0}, + {IT_STRING|IT_CVAR, NULL, "Models", NULL, &cv_glmodels, 12}, + {IT_STRING|IT_CVAR, NULL, "Frame interpolation", NULL, &cv_glmodelinterpolation, 22}, + {IT_STRING|IT_CVAR, NULL, "Ambient lighting", NULL, &cv_glmodellighting, 32}, + + {IT_HEADER, NULL, "General", NULL, NULL, 51}, + {IT_STRING|IT_CVAR, NULL, "Shaders", NULL, &cv_glshaders, 63}, + {IT_STRING|IT_CVAR, NULL, "Palette rendering", NULL, &cv_glpaletterendering, 73}, + {IT_STRING|IT_CVAR, NULL, "Lack of perspective", NULL, &cv_glshearing, 83}, + {IT_STRING | IT_CVAR, NULL, "Min Shader Brightness", NULL, &cv_glsecbright, 93}, + + {IT_HEADER, NULL, "Miscellaneous", NULL, NULL, 112}, + {IT_STRING|IT_CVAR, NULL, "Bit depth", NULL, &cv_scr_depth, 124}, + {IT_STRING|IT_CVAR, NULL, "Texture filter", NULL, &cv_glfiltermode, 134}, + {IT_STRING|IT_CVAR, NULL, "Anisotropic", NULL, &cv_glanisotropicmode, 144}, #ifdef ALAM_LIGHTING - {IT_SUBMENU|IT_STRING, NULL, "Lighting...", &OP_OpenGLLightingDef, 154}, + {IT_SUBMENU|IT_STRING, NULL, "Lighting...", NULL, &OP_OpenGLLightingDef, 154}, #endif #if defined (_WINDOWS) && (!(defined (__unix__) || defined (UNIXCOMMON) || defined (HAVE_SDL))) - {IT_STRING|IT_CVAR, NULL, "Fullscreen", &cv_fullscreen, 164}, + {IT_STRING|IT_CVAR, NULL, "Fullscreen", NULL, &cv_fullscreen, 164}, #endif }; #ifdef ALAM_LIGHTING static menuitem_t OP_OpenGLLightingMenu[] = { - {IT_STRING|IT_CVAR, NULL, "Coronas", &cv_glcoronas, 0}, - {IT_STRING|IT_CVAR, NULL, "Coronas size", &cv_glcoronasize, 10}, - {IT_STRING|IT_CVAR, NULL, "Dynamic lighting", &cv_gldynamiclighting, 20}, - {IT_STRING|IT_CVAR, NULL, "Static lighting", &cv_glstaticlighting, 30}, + {IT_STRING|IT_CVAR, NULL, "Coronas", NULL, &cv_glcoronas, 0}, + {IT_STRING|IT_CVAR, NULL, "Coronas size", NULL, &cv_glcoronasize, 10}, + {IT_STRING|IT_CVAR, NULL, "Dynamic lighting", NULL, &cv_gldynamiclighting, 20}, + {IT_STRING|IT_CVAR, NULL, "Static lighting", NULL, &cv_glstaticlighting, 30}, }; #endif // ALAM_LIGHTING @@ -1489,24 +1437,24 @@ static menuitem_t OP_OpenGLLightingMenu[] = static menuitem_t OP_SoundOptionsMenu[] = { - {IT_HEADER, NULL, "Game Audio", NULL, 0}, - {IT_STRING | IT_CVAR, NULL, "Sound Effects", &cv_gamesounds, 6}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Sound Volume", &cv_soundvolume, 11}, + {IT_HEADER, NULL, "Game Audio", NULL, NULL, 0}, + {IT_STRING | IT_CVAR, NULL, "Sound Effects", NULL, &cv_gamesounds, 6}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Sound Volume", NULL, &cv_soundvolume, 11}, - {IT_STRING | IT_CVAR, NULL, "Digital Music", &cv_gamedigimusic, 21}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Digital Music Volume", &cv_digmusicvolume, 26}, + {IT_STRING | IT_CVAR, NULL, "Digital Music", NULL, &cv_gamedigimusic, 21}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Digital Music Volume", NULL, &cv_digmusicvolume, 26}, - {IT_STRING | IT_CVAR, NULL, "MIDI Music", &cv_gamemidimusic, 36}, - {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "MIDI Music Volume", &cv_midimusicvolume, 41}, + {IT_STRING | IT_CVAR, NULL, "MIDI Music", NULL, &cv_gamemidimusic, 36}, + {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "MIDI Music Volume", NULL, &cv_midimusicvolume, 41}, - {IT_STRING | IT_CVAR, NULL, "Music Preference", &cv_musicpref, 51}, + {IT_STRING | IT_CVAR, NULL, "Music Preference", NULL, &cv_musicpref, 51}, - {IT_HEADER, NULL, "Miscellaneous", NULL, 61}, - {IT_STRING | IT_CVAR, NULL, "Closed Captioning", &cv_closedcaptioning, 67}, - {IT_STRING | IT_CVAR, NULL, "Reset Music Upon Dying", &cv_resetmusic, 72}, - {IT_STRING | IT_CVAR, NULL, "Default 1-Up sound", &cv_1upsound, 77}, + {IT_HEADER, NULL, "Miscellaneous", NULL, NULL, 61}, + {IT_STRING | IT_CVAR, NULL, "Closed Captioning", NULL, &cv_closedcaptioning, 67}, + {IT_STRING | IT_CVAR, NULL, "Reset Music Upon Dying", NULL, &cv_resetmusic, 72}, + {IT_STRING | IT_CVAR, NULL, "Default 1-Up sound", NULL, &cv_1upsound, 77}, - {IT_STRING | IT_SUBMENU, NULL, "Advanced Settings...", &OP_SoundAdvancedDef, 87}, + {IT_STRING | IT_SUBMENU, NULL, "Advanced Settings...", NULL, &OP_SoundAdvancedDef, 87}, }; #ifdef HAVE_OPENMPT @@ -1524,21 +1472,21 @@ static menuitem_t OP_SoundOptionsMenu[] = static menuitem_t OP_SoundAdvancedMenu[] = { #ifdef HAVE_OPENMPT - {IT_HEADER, NULL, "OpenMPT Settings", NULL, 0}, - {IT_STRING | IT_CVAR, NULL, "Instrument Filter", &cv_modfilter, 12}, + {IT_HEADER, NULL, "OpenMPT Settings", NULL, NULL, 0}, + {IT_STRING | IT_CVAR, NULL, "Instrument Filter", NULL, &cv_modfilter, 12}, #endif #ifdef HAVE_MIXERX - {IT_HEADER, NULL, "MIDI Settings", NULL, OPENMPT_MENUOFFSET}, - {IT_STRING | IT_CVAR, NULL, "MIDI Player", &cv_midiplayer, OPENMPT_MENUOFFSET+12}, - {IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "FluidSynth Sound Font File", &cv_midisoundfontpath, OPENMPT_MENUOFFSET+24}, - {IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "TiMidity++ Config Folder", &cv_miditimiditypath, OPENMPT_MENUOFFSET+51}, + {IT_HEADER, NULL, "MIDI Settings", NULL, NULL, OPENMPT_MENUOFFSET}, + {IT_STRING | IT_CVAR, NULL, "MIDI Player", NULL, &cv_midiplayer, OPENMPT_MENUOFFSET+12}, + {IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "FluidSynth Sound Font File", NULL, &cv_midisoundfontpath, OPENMPT_MENUOFFSET+24}, + {IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "TiMidity++ Config Folder", NULL, &cv_miditimiditypath, OPENMPT_MENUOFFSET+51}, #endif - {IT_HEADER, NULL, "Miscellaneous", NULL, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET}, - {IT_STRING | IT_CVAR, NULL, "Play Sound Effects if Unfocused", &cv_playsoundsifunfocused, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+12}, - {IT_STRING | IT_CVAR, NULL, "Play Music if Unfocused", &cv_playmusicifunfocused, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+22}, - {IT_STRING | IT_CVAR, NULL, "Let Levels Force Reset Music", &cv_resetmusicbyheader, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+32}, + {IT_HEADER, NULL, "Miscellaneous", NULL, NULL, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET}, + {IT_STRING | IT_CVAR, NULL, "Play Sound Effects if Unfocused", NULL, &cv_playsoundsifunfocused, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+12}, + {IT_STRING | IT_CVAR, NULL, "Play Music if Unfocused", NULL, &cv_playmusicifunfocused, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+22}, + {IT_STRING | IT_CVAR, NULL, "Let Levels Force Reset Music", NULL, &cv_resetmusicbyheader, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+32}, }; #undef OPENMPT_MENUOFFSET @@ -1546,39 +1494,39 @@ static menuitem_t OP_SoundAdvancedMenu[] = static menuitem_t OP_DataOptionsMenu[] = { - {IT_STRING | IT_CALL, NULL, "Add-on Options...", M_AddonsOptions, 10}, - {IT_STRING | IT_CALL, NULL, "Screenshot Options...", M_ScreenshotOptions, 20}, + {IT_STRING | IT_CALL, NULL, "Add-on Options...", NULL, M_AddonsOptions, 10}, + {IT_STRING | IT_CALL, NULL, "Screenshot Options...", NULL, M_ScreenshotOptions, 20}, - {IT_STRING | IT_SUBMENU, NULL, "\x85" "Erase Data...", &OP_EraseDataDef, 40}, + {IT_STRING | IT_SUBMENU, NULL, "\x85" "Erase Data...", "Erase game data", &OP_EraseDataDef, 40}, }; static menuitem_t OP_ScreenshotOptionsMenu[] = { - {IT_HEADER, NULL, "General", NULL, 0}, - {IT_STRING|IT_CVAR, NULL, "Use color profile", &cv_screenshot_colorprofile, 6}, - - {IT_HEADER, NULL, "Screenshots (F8)", NULL, 16}, - {IT_STRING|IT_CVAR, NULL, "Storage Location", &cv_screenshot_option, 22}, - {IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Custom Folder", &cv_screenshot_folder, 27}, - {IT_STRING|IT_CVAR, NULL, "Memory Level", &cv_zlib_memory, 42}, - {IT_STRING|IT_CVAR, NULL, "Compression Level", &cv_zlib_level, 47}, - {IT_STRING|IT_CVAR, NULL, "Strategy", &cv_zlib_strategy, 52}, - {IT_STRING|IT_CVAR, NULL, "Window Size", &cv_zlib_window_bits, 57}, - - {IT_HEADER, NULL, "Movie Mode (F9)", NULL, 64}, - {IT_STRING|IT_CVAR, NULL, "Storage Location", &cv_movie_option, 70}, - {IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Custom Folder", &cv_movie_folder, 75}, - {IT_STRING|IT_CVAR, NULL, "Capture Mode", &cv_moviemode, 90}, - - {IT_STRING|IT_CVAR, NULL, "Downscaling", &cv_gif_downscale, 95}, - {IT_STRING|IT_CVAR, NULL, "Region Optimizing", &cv_gif_optimize, 100}, - {IT_STRING|IT_CVAR, NULL, "Local Color Table", &cv_gif_localcolortable, 105}, - - {IT_STRING|IT_CVAR, NULL, "Downscaling", &cv_apng_downscale, 95}, - {IT_STRING|IT_CVAR, NULL, "Memory Level", &cv_zlib_memorya, 100}, - {IT_STRING|IT_CVAR, NULL, "Compression Level", &cv_zlib_levela, 105}, - {IT_STRING|IT_CVAR, NULL, "Strategy", &cv_zlib_strategya, 110}, - {IT_STRING|IT_CVAR, NULL, "Window Size", &cv_zlib_window_bitsa, 115}, + {IT_HEADER, NULL, "General", NULL, NULL, 0}, + {IT_STRING|IT_CVAR, NULL, "Use color profile", NULL, &cv_screenshot_colorprofile, 6}, + + {IT_HEADER, NULL, "Screenshots (F8)", NULL, NULL, 16}, + {IT_STRING|IT_CVAR, NULL, "Storage Location", NULL, &cv_screenshot_option, 22}, + {IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Custom Folder", NULL, &cv_screenshot_folder, 27}, + {IT_STRING|IT_CVAR, NULL, "Memory Level", NULL, &cv_zlib_memory, 42}, + {IT_STRING|IT_CVAR, NULL, "Compression Level", NULL, &cv_zlib_level, 47}, + {IT_STRING|IT_CVAR, NULL, "Strategy", NULL, &cv_zlib_strategy, 52}, + {IT_STRING|IT_CVAR, NULL, "Window Size", NULL, &cv_zlib_window_bits, 57}, + + {IT_HEADER, NULL, "Movie Mode (F9)", NULL, NULL, 64}, + {IT_STRING|IT_CVAR, NULL, "Storage Location", NULL, &cv_movie_option, 70}, + {IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Custom Folder", NULL, &cv_movie_folder, 75}, + {IT_STRING|IT_CVAR, NULL, "Capture Mode", NULL, &cv_moviemode, 90}, + + {IT_STRING|IT_CVAR, NULL, "Downscaling", NULL, &cv_gif_downscale, 95}, + {IT_STRING|IT_CVAR, NULL, "Region Optimizing", NULL, &cv_gif_optimize, 100}, + {IT_STRING|IT_CVAR, NULL, "Local Color Table", NULL, &cv_gif_localcolortable, 105}, + + {IT_STRING|IT_CVAR, NULL, "Downscaling", NULL, &cv_apng_downscale, 95}, + {IT_STRING|IT_CVAR, NULL, "Memory Level", NULL, &cv_zlib_memorya, 100}, + {IT_STRING|IT_CVAR, NULL, "Compression Level", NULL, &cv_zlib_levela, 105}, + {IT_STRING|IT_CVAR, NULL, "Strategy", NULL, &cv_zlib_strategya, 110}, + {IT_STRING|IT_CVAR, NULL, "Window Size", NULL, &cv_zlib_window_bitsa, 115}, }; enum @@ -1596,23 +1544,23 @@ enum static menuitem_t OP_EraseDataMenu[] = { - {IT_STRING | IT_CALL, NULL, "Erase Record Data", M_EraseData, 10}, - {IT_STRING | IT_CALL, NULL, "Erase Extras Data", M_EraseData, 20}, + {IT_STRING | IT_CALL, NULL, "Erase Record Data", "Erase all record attack records and demos", M_EraseData, 10}, + {IT_STRING | IT_CALL, NULL, "Erase Extras Data", "Erase all extra unlockable progress", M_EraseData, 20}, - {IT_STRING | IT_CALL, NULL, "\x85" "Erase ALL Data", M_EraseData, 40}, + {IT_STRING | IT_CALL, NULL, "\x85" "Erase ALL Data", "Erase ALL settings and factory reset the game", M_EraseData, 40}, }; static menuitem_t OP_AddonsOptionsMenu[] = { - {IT_HEADER, NULL, "Menu", NULL, 0}, - {IT_STRING|IT_CVAR, NULL, "Location", &cv_addons_option, 12}, - {IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Custom Folder", &cv_addons_folder, 22}, - {IT_STRING|IT_CVAR, NULL, "Identify add-ons via", &cv_addons_md5, 50}, - {IT_STRING|IT_CVAR, NULL, "Show unsupported file types", &cv_addons_showall, 60}, + {IT_HEADER, NULL, "Menu", NULL, NULL, 0}, + {IT_STRING|IT_CVAR, NULL, "Location", NULL, &cv_addons_option, 12}, + {IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Custom Folder", NULL, &cv_addons_folder, 22}, + {IT_STRING|IT_CVAR, NULL, "Identify add-ons via", NULL, &cv_addons_md5, 50}, + {IT_STRING|IT_CVAR, NULL, "Show unsupported file types", NULL, &cv_addons_showall, 60}, - {IT_HEADER, NULL, "Search", NULL, 78}, - {IT_STRING|IT_CVAR, NULL, "Matching", &cv_addons_search_type, 90}, - {IT_STRING|IT_CVAR, NULL, "Case-sensitive", &cv_addons_search_case, 100}, + {IT_HEADER, NULL, "Search", NULL, NULL, 78}, + {IT_STRING|IT_CVAR, NULL, "Matching", NULL, &cv_addons_search_type, 90}, + {IT_STRING|IT_CVAR, NULL, "Case-sensitive", NULL, &cv_addons_search_case, 100}, }; enum @@ -1622,76 +1570,76 @@ enum static menuitem_t OP_ServerOptionsMenu[] = { - {IT_HEADER, NULL, "General", NULL, 0}, + {IT_HEADER, NULL, "General", NULL, NULL, 0}, {IT_STRING | IT_CVAR | IT_CV_STRING, - NULL, "Server name", &cv_servername, 7}, - {IT_STRING | IT_CVAR, NULL, "Max Players", &cv_maxplayers, 21}, - {IT_STRING | IT_CVAR, NULL, "Allow Add-on Downloading", &cv_downloading, 26}, - {IT_STRING | IT_CVAR, NULL, "Allow players to join", &cv_allownewplayer, 31}, - {IT_STRING | IT_CVAR, NULL, "Minutes for reconnecting", &cv_rejointimeout, 36}, - {IT_STRING | IT_CVAR, NULL, "Map progression", &cv_advancemap, 41}, - {IT_STRING | IT_CVAR, NULL, "Intermission Timer", &cv_inttime, 46}, - - {IT_HEADER, NULL, "Characters", NULL, 55}, - {IT_STRING | IT_CVAR, NULL, "Force a character", &cv_forceskin, 61}, - {IT_STRING | IT_CVAR, NULL, "Restrict character changes", &cv_restrictskinchange, 66}, - - {IT_HEADER, NULL, "Items", NULL, 75}, - {IT_STRING | IT_CVAR, NULL, "Item respawn delay", &cv_itemrespawntime, 81}, - {IT_STRING | IT_SUBMENU, NULL, "Mystery Item Monitor Toggles...", &OP_MonitorToggleDef, 86}, - - {IT_HEADER, NULL, "Cooperative", NULL, 95}, - {IT_STRING | IT_CVAR, NULL, "Players required for exit", &cv_playersforexit, 101}, - {IT_STRING | IT_CVAR, NULL, "Starposts", &cv_coopstarposts, 106}, - {IT_STRING | IT_CVAR, NULL, "Life sharing", &cv_cooplives, 111}, - {IT_STRING | IT_CVAR, NULL, "Post-goal free roaming", &cv_exitmove, 116}, - - {IT_HEADER, NULL, "Race, Competition", NULL, 125}, - {IT_STRING | IT_CVAR, NULL, "Level completion countdown", &cv_countdowntime, 131}, - {IT_STRING | IT_CVAR, NULL, "Item Monitors", &cv_competitionboxes, 136}, - - {IT_HEADER, NULL, "Ringslinger (Match, CTF, Tag, H&S)", NULL, 145}, - {IT_STRING | IT_CVAR, NULL, "Time Limit", &cv_timelimit, 151}, - {IT_STRING | IT_CVAR, NULL, "Score Limit", &cv_pointlimit, 156}, - {IT_STRING | IT_CVAR, NULL, "Overtime on Tie", &cv_overtime, 161}, - {IT_STRING | IT_CVAR, NULL, "Player respawn delay", &cv_respawntime, 166}, - - {IT_STRING | IT_CVAR, NULL, "Item Monitors", &cv_matchboxes, 176}, - {IT_STRING | IT_CVAR, NULL, "Weapon Rings", &cv_specialrings, 181}, - {IT_STRING | IT_CVAR, NULL, "Power Stones", &cv_powerstones, 186}, - - {IT_STRING | IT_CVAR, NULL, "Flag respawn delay", &cv_flagtime, 196}, - {IT_STRING | IT_CVAR, NULL, "Hiding time", &cv_hidetime, 201}, - - {IT_HEADER, NULL, "Teams", NULL, 210}, - {IT_STRING | IT_CVAR, NULL, "Autobalance sizes", &cv_autobalance, 216}, - {IT_STRING | IT_CVAR, NULL, "Scramble on Map Change", &cv_scrambleonchange, 221}, - - {IT_HEADER, NULL, "Advanced", NULL, 230}, - {IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "Master server", &cv_masterserver, 236}, - - {IT_STRING | IT_CVAR, NULL, "Join delay", &cv_joindelay, 251}, - {IT_STRING | IT_CVAR, NULL, "Attempts to resynchronise", &cv_resynchattempts, 256}, - - {IT_STRING | IT_CVAR, NULL, "Show IP Address of Joiners", &cv_showjoinaddress, 261}, + NULL, "Server name", NULL, &cv_servername, 7}, + {IT_STRING | IT_CVAR, NULL, "Max Players", NULL, &cv_maxplayers, 21}, + {IT_STRING | IT_CVAR, NULL, "Allow Add-on Downloading", NULL, &cv_downloading, 26}, + {IT_STRING | IT_CVAR, NULL, "Allow players to join", NULL, &cv_allownewplayer, 31}, + {IT_STRING | IT_CVAR, NULL, "Minutes for reconnecting", NULL, &cv_rejointimeout, 36}, + {IT_STRING | IT_CVAR, NULL, "Map progression", NULL, &cv_advancemap, 41}, + {IT_STRING | IT_CVAR, NULL, "Intermission Timer", NULL, &cv_inttime, 46}, + + {IT_HEADER, NULL, "Characters", NULL, NULL, 55}, + {IT_STRING | IT_CVAR, NULL, "Force a character", NULL, &cv_forceskin, 61}, + {IT_STRING | IT_CVAR, NULL, "Restrict character changes", NULL, &cv_restrictskinchange, 66}, + + {IT_HEADER, NULL, "Items", NULL, NULL, 75}, + {IT_STRING | IT_CVAR, NULL, "Item respawn delay", NULL, &cv_itemrespawntime, 81}, + {IT_STRING | IT_SUBMENU, NULL, "Mystery Item Monitor Toggles...", "Edit spawn frequency of mystery items", &OP_MonitorToggleDef, 86}, + + {IT_HEADER, NULL, "Cooperative", NULL, NULL, 95}, + {IT_STRING | IT_CVAR, NULL, "Players required for exit", NULL, &cv_playersforexit, 101}, + {IT_STRING | IT_CVAR, NULL, "Starposts", NULL, &cv_coopstarposts, 106}, + {IT_STRING | IT_CVAR, NULL, "Life sharing", NULL, &cv_cooplives, 111}, + {IT_STRING | IT_CVAR, NULL, "Post-goal free roaming", NULL, &cv_exitmove, 116}, + + {IT_HEADER, NULL, "Race, Competition", NULL, NULL, 125}, + {IT_STRING | IT_CVAR, NULL, "Level completion countdown", NULL, &cv_countdowntime, 131}, + {IT_STRING | IT_CVAR, NULL, "Item Monitors", NULL, &cv_competitionboxes, 136}, + + {IT_HEADER, NULL, "Ringslinger (Match, CTF, Tag, H&S)", NULL, NULL, 145}, + {IT_STRING | IT_CVAR, NULL, "Time Limit", NULL, &cv_timelimit, 151}, + {IT_STRING | IT_CVAR, NULL, "Score Limit", NULL, &cv_pointlimit, 156}, + {IT_STRING | IT_CVAR, NULL, "Overtime on Tie", NULL, &cv_overtime, 161}, + {IT_STRING | IT_CVAR, NULL, "Player respawn delay", NULL, &cv_respawntime, 166}, + + {IT_STRING | IT_CVAR, NULL, "Item Monitors", NULL, &cv_matchboxes, 176}, + {IT_STRING | IT_CVAR, NULL, "Weapon Rings", NULL, &cv_specialrings, 181}, + {IT_STRING | IT_CVAR, NULL, "Power Stones", NULL, &cv_powerstones, 186}, + + {IT_STRING | IT_CVAR, NULL, "Flag respawn delay", NULL, &cv_flagtime, 196}, + {IT_STRING | IT_CVAR, NULL, "Hiding time", NULL, &cv_hidetime, 201}, + + {IT_HEADER, NULL, "Teams", NULL, NULL, 210}, + {IT_STRING | IT_CVAR, NULL, "Autobalance sizes", NULL, &cv_autobalance, 216}, + {IT_STRING | IT_CVAR, NULL, "Scramble on Map Change", NULL, &cv_scrambleonchange, 221}, + + {IT_HEADER, NULL, "Advanced", NULL, NULL, 230}, + {IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "Master server", NULL, &cv_masterserver, 236}, + + {IT_STRING | IT_CVAR, NULL, "Join delay", NULL, &cv_joindelay, 251}, + {IT_STRING | IT_CVAR, NULL, "Attempts to resynchronise", NULL, &cv_resynchattempts, 256}, + + {IT_STRING | IT_CVAR, NULL, "Show IP Address of Joiners", NULL, &cv_showjoinaddress, 261}, }; static menuitem_t OP_MonitorToggleMenu[] = { // Printing handled by drawing function - {IT_STRING|IT_CALL, NULL, "Reset to defaults", M_ResetCvars, 15}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Recycler", &cv_recycler, 30}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Teleport", &cv_teleporters, 40}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Super Ring", &cv_superring, 50}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Super Sneakers", &cv_supersneakers, 60}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Invincibility", &cv_invincibility, 70}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Whirlwind Shield", &cv_jumpshield, 80}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Elemental Shield", &cv_watershield, 90}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Attraction Shield", &cv_ringshield, 100}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Force Shield", &cv_forceshield, 110}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Armageddon Shield", &cv_bombshield, 120}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "1 Up", &cv_1up, 130}, - {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Eggman Box", &cv_eggmanbox, 140}, + {IT_STRING|IT_CALL, NULL, "Reset to defaults", "Reset settings to their default values", M_ResetCvars, 15}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Recycler", NULL, &cv_recycler, 30}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Teleport", NULL, &cv_teleporters, 40}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Super Ring", NULL, &cv_superring, 50}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Super Sneakers", NULL, &cv_supersneakers, 60}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Invincibility", NULL, &cv_invincibility, 70}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Whirlwind Shield", NULL, &cv_jumpshield, 80}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Elemental Shield", NULL, &cv_watershield, 90}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Attraction Shield", NULL, &cv_ringshield, 100}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Force Shield", NULL, &cv_forceshield, 110}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Armageddon Shield", NULL, &cv_bombshield, 120}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "1 Up", NULL, &cv_1up, 130}, + {IT_STRING|IT_CVAR|IT_CV_INVISSLIDER, NULL, "Eggman Box", NULL, &cv_eggmanbox, 140}, }; // ========================================================================== @@ -2136,7 +2084,7 @@ menu_t OP_Camera2OptionsDef = { NULL }; -static menuitem_t OP_PlaystyleMenu[] = {{IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandlePlaystyleMenu, 0}}; +static menuitem_t OP_PlaystyleMenu[] = {{IT_KEYHANDLER | IT_NOTHING, NULL, "", NULL, M_HandlePlaystyleMenu, 0}}; menu_t OP_PlaystyleDef = { MTREE3(MN_OP_MAIN, MN_OP_P1CONTROLS, MN_OP_PLAYSTYLE), ///@TODO the second level should be set in runtime @@ -4427,6 +4375,31 @@ static void M_DrawSplitText(INT32 x, INT32 y, INT32 option, const char* str, INT free(clines); } +static void M_DoToolTips(menu_t *menu) +{ + char *desc = NULL; + if (menu->menuitems[itemOn].desc != NULL) + { + desc = V_FontWordWrap(0, BASEVIDWIDTH, V_ALLOWLOWERCASE, FRACUNIT, menu->menuitems[itemOn].desc, tny_font); + } + else if (menu->menuitems[itemOn].status & IT_CVAR) + { + consvar_t *cvar = menu->menuitems[itemOn].itemaction; + if (cvar != NULL && cvar->desc != NULL) + { + desc = V_FontWordWrap(0, BASEVIDWIDTH, V_ALLOWLOWERCASE, FRACUNIT, cvar->desc, tny_font); + } + } + + if (desc != NULL) + { + M_DrawSplitText(BASEVIDWIDTH / 2, BASEVIDHEIGHT-50, V_ALLOWLOWERCASE|V_SNAPTOBOTTOM, desc, coolalphatimer); + Z_Free(desc); + if (coolalphatimer > 0) + coolalphatimer--; + } +} + static void M_DrawGenericMenu(void) { @@ -4568,6 +4541,8 @@ static void M_DrawGenericMenu(void) W_CachePatchName("M_CURSOR", PU_PATCH)); V_DrawString(currentMenu->x, cursory, V_YELLOWMAP, currentMenu->menuitems[itemOn].text); } + + M_DoToolTips(currentMenu); } const char *PlaystyleNames[4] = {"\x86Strafe\x80", "Manual", "Automatic", "Old Analog??"}; @@ -4814,7 +4789,7 @@ static void M_DrawGenericScrollMenu(void) V_DrawScaledPatch(currentMenu->x - 24, cursory, 0, W_CachePatchName("M_CURSOR", PU_PATCH)); - DoToolTips(OP_VideoOptionsDef, OP_VideoTooltips); + M_DoToolTips(currentMenu); } static void M_DrawPauseMenu(void) @@ -6189,7 +6164,7 @@ static void M_DrawMessageMenu(void); static menuitem_t MessageMenu[] = { // TO HACK - {0,NULL, NULL, NULL,0} + {0,NULL, NULL, NULL, NULL,0} }; menu_t MessageDef = @@ -8099,7 +8074,7 @@ static void M_SecretsMenu(INT32 choice) (void)choice; // Initialize array with placeholder entries - menuitem_t placeholder = {IT_DISABLED, NULL, "", NULL, 0}; + menuitem_t placeholder = {IT_DISABLED, NULL, "", NULL, NULL, 0}; for (i = 1; i <= MAXUNLOCKABLES; ++i) SR_MainMenu[i] = placeholder; diff --git a/src/m_menu.h b/src/m_menu.h index 45ca6c2f2e..5b884aea69 100644 --- a/src/m_menu.h +++ b/src/m_menu.h @@ -322,6 +322,7 @@ typedef struct menuitem_s const char *patch; const char *text; // used when FONTBxx lump is found + const char *desc; // FIXME: should be itemaction_t void *itemaction; @@ -578,15 +579,4 @@ void M_FreePlayerSetupColors(void); NULL\ } -#define DoToolTips(menu, tooltip)\ -if (currentMenu == &menu)\ -{\ - if (!(tooltip[itemOn] == NULL))\ - {\ - M_DrawSplitText(BASEVIDWIDTH / 2, BASEVIDHEIGHT-50, V_ALLOWLOWERCASE|V_SNAPTOBOTTOM, tooltip[itemOn], coolalphatimer);\ - if (coolalphatimer > 0)\ - coolalphatimer--;\ - }\ -} - #endif //__X_MENU__ -- GitLab From fa74a3b6c11a74a9124878fab4f47792a9d051b8 Mon Sep 17 00:00:00 2001 From: Hanicef <gustaf@hanicef.me> Date: Sat, 22 Mar 2025 14:12:17 +0100 Subject: [PATCH 3/6] Tweak console descriptions --- src/g_input.c | 2 +- src/hardware/hw_main.c | 6 +++--- src/r_fps.c | 2 +- src/r_main.c | 20 ++++++++++---------- src/sdl/i_video.c | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/g_input.c b/src/g_input.c index 9b9257a12f..69eebffbfa 100644 --- a/src/g_input.c +++ b/src/g_input.c @@ -31,7 +31,7 @@ consvar_t cv_mousesens = CVAR_INIT ("mousesens", "20", "Mouse X sensitivity", CV consvar_t cv_mousesens2 = CVAR_INIT ("mousesens2", "20", "Mouse X sensitivity for player 2", CV_SAVE, mousesens_cons_t, NULL); consvar_t cv_mouseysens = CVAR_INIT ("mouseysens", "20", "Mouse Y sensitivity", CV_SAVE, mousesens_cons_t, NULL); consvar_t cv_mouseysens2 = CVAR_INIT ("mouseysens2", "20", "Mouse Y sensitivity for player 2", CV_SAVE, mousesens_cons_t, NULL); -consvar_t cv_controlperkey = CVAR_INIT ("controlperkey", "One", "If set to Multiple, overlapping binds are allowed", CV_SAVE, onecontrolperkey_cons_t, NULL); +consvar_t cv_controlperkey = CVAR_INIT ("controlperkey", "One", "If set to Several, overlapping keybinds are allowed", CV_SAVE, onecontrolperkey_cons_t, NULL); mouse_t mouse; mouse_t mouse2; diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 8f06538b88..9b93001777 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -5757,7 +5757,7 @@ static CV_PossibleValue_t glfiltermode_cons_t[]= {{HWD_SET_TEXTUREFILTER_POINTSA CV_PossibleValue_t glanisotropicmode_cons_t[] = {{1, "MIN"}, {16, "MAX"}, {0, NULL}}; static CV_PossibleValue_t glsecbright_cons_t[] = {{0, "MIN"}, {255, "MAX"}, {0, NULL}}; -consvar_t cv_glshaders = CVAR_INIT ("gr_shaders", "On", "Enables OpenGL shaders", CV_SAVE|CV_CALL, glshaders_cons_t, CV_glshaders_OnChange); +consvar_t cv_glshaders = CVAR_INIT ("gr_shaders", "On", "Enables additional visual effects in OpenGL", CV_SAVE|CV_CALL, glshaders_cons_t, CV_glshaders_OnChange); consvar_t cv_glsecbright = CVAR_INIT("gr_secbright", "0", "Sets minimum sector brightness, useful for dark areas", CV_SAVE, glsecbright_cons_t, NULL); @@ -5772,7 +5772,7 @@ consvar_t cv_glmodels = CVAR_INIT ("gr_models", "Off", "If on, will use 3D model consvar_t cv_glmodelinterpolation = CVAR_INIT ("gr_modelinterpolation", "On", "If on, 3D models will interpolate on between frames", CV_SAVE, CV_OnOff, NULL); consvar_t cv_glmodellighting = CVAR_INIT ("gr_modellighting", "Off", NULL, CV_SAVE|CV_CALL, CV_OnOff, CV_glmodellighting_OnChange); -consvar_t cv_glshearing = CVAR_INIT ("gr_shearing", "Off", "Emulates Software's vertical look", CV_SAVE, glshearing_cons_t, NULL); +consvar_t cv_glshearing = CVAR_INIT ("gr_shearing", "Off", "Emulates Software's vertical camera view (requires shaders)", CV_SAVE, glshearing_cons_t, NULL); consvar_t cv_glspritebillboarding = CVAR_INIT ("gr_spritebillboarding", "Off", "Causes sprites to always face the camera", CV_SAVE, CV_OnOff, NULL); consvar_t cv_glskydome = CVAR_INIT ("gr_skydome", "On", "Bend skybox around the map, giving a higher skybox quality", CV_SAVE, CV_OnOff, NULL); consvar_t cv_glfakecontrast = CVAR_INIT ("gr_fakecontrast", "Smooth", NULL, CV_SAVE, glfakecontrast_cons_t, NULL); @@ -5787,7 +5787,7 @@ consvar_t cv_glbatching = CVAR_INIT ("gr_batching", "On", "Whetever to send poly static CV_PossibleValue_t glpalettedepth_cons_t[] = {{16, "16 bits"}, {24, "24 bits"}, {0, NULL}}; -consvar_t cv_glpaletterendering = CVAR_INIT ("gr_paletterendering", "On", "Emulate Software's color paletting", CV_SAVE|CV_CALL, CV_OnOff, CV_glpaletterendering_OnChange); +consvar_t cv_glpaletterendering = CVAR_INIT ("gr_paletterendering", "On", "Emulate Software's coloring graphics (requires shaders)", CV_SAVE|CV_CALL, CV_OnOff, CV_glpaletterendering_OnChange); consvar_t cv_glpalettedepth = CVAR_INIT ("gr_palettedepth", "16 bits", NULL, CV_SAVE|CV_CALL, glpalettedepth_cons_t, CV_glpalettedepth_OnChange); #define ONLY_IF_GL_LOADED if (vid.glstate != VID_GL_LIBRARY_LOADED) return; diff --git a/src/r_fps.c b/src/r_fps.c index fc814db4a8..5edce1db3a 100644 --- a/src/r_fps.c +++ b/src/r_fps.c @@ -39,7 +39,7 @@ static CV_PossibleValue_t fpscap_cons_t[] = { {0, "Match refresh rate"}, {0, NULL} }; -consvar_t cv_fpscap = CVAR_INIT ("fpscap", "Match refresh rate", "Maximum allowed framerate", CV_SAVE, fpscap_cons_t, NULL); +consvar_t cv_fpscap = CVAR_INIT ("fpscap", "Match refresh rate", "Limits the framerate to this value, useful for saving battery power", CV_SAVE, fpscap_cons_t, NULL); ps_metric_t ps_interp_frac = {0}; ps_metric_t ps_interp_lag = {0}; diff --git a/src/r_main.c b/src/r_main.c index 819dcce761..ebffd3c1dd 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -147,22 +147,22 @@ void SendWeaponPref(void); void SendWeaponPref2(void); consvar_t cv_tailspickup = CVAR_INIT ("tailspickup", "On", "If off, players will collide with each other (this does prevent tails from picking up players but it's the worst possible solution to the problem)", CV_NETVAR|CV_ALLOWLUA, CV_OnOff, NULL); -consvar_t cv_chasecam = CVAR_INIT ("chasecam", "On", NULL, CV_CALL, CV_OnOff, ChaseCam_OnChange); -consvar_t cv_chasecam2 = CVAR_INIT ("chasecam2", "On", NULL, CV_CALL, CV_OnOff, ChaseCam2_OnChange); -consvar_t cv_flipcam = CVAR_INIT ("flipcam", "No", NULL, CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, FlipCam_OnChange); -consvar_t cv_flipcam2 = CVAR_INIT ("flipcam2", "No", NULL, CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, FlipCam2_OnChange); +consvar_t cv_chasecam = CVAR_INIT ("chasecam", "On", "Place the camera behind the player character rather than from the character's eyes", CV_CALL, CV_OnOff, ChaseCam_OnChange); +consvar_t cv_chasecam2 = CVAR_INIT ("chasecam2", "On", "Place the camera behind the player character rather than from the character's eyes", CV_CALL, CV_OnOff, ChaseCam2_OnChange); +consvar_t cv_flipcam = CVAR_INIT ("flipcam", "No", "Causes the camera to orient itself with the player character", CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, FlipCam_OnChange); +consvar_t cv_flipcam2 = CVAR_INIT ("flipcam2", "No", "Causes the camera to orient itself with the player character", CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo, FlipCam2_OnChange); -consvar_t cv_shadow = CVAR_INIT ("shadow", "Drop", NULL, CV_SAVE, shadow_cons_t, NULL); -consvar_t cv_skybox = CVAR_INIT ("skybox", "On", NULL, CV_SAVE, CV_OnOff, NULL); +consvar_t cv_shadow = CVAR_INIT ("shadow", "Drop", "Changes how shadows are rendered", CV_SAVE, shadow_cons_t, NULL); +consvar_t cv_skybox = CVAR_INIT ("skybox", "On", "If on, the skybox view will be rendered if the map has one", CV_SAVE, CV_OnOff, NULL); consvar_t cv_allowmlook = CVAR_INIT ("allowmlook", "Yes", NULL, CV_NETVAR|CV_ALLOWLUA, CV_YesNo, NULL); -consvar_t cv_showhud = CVAR_INIT ("showhud", "Yes", NULL, CV_CALL|CV_ALLOWLUA, CV_YesNo, R_SetViewSize); -consvar_t cv_translucenthud = CVAR_INIT ("translucenthud", "10", NULL, CV_SAVE, translucenthud_cons_t, NULL); +consvar_t cv_showhud = CVAR_INIT ("showhud", "Yes", "If the HUD should be shown or not", CV_CALL|CV_ALLOWLUA, CV_YesNo, R_SetViewSize); +consvar_t cv_translucenthud = CVAR_INIT ("translucenthud", "10", "Opacity of the game's HUD elements", CV_SAVE, translucenthud_cons_t, NULL); -consvar_t cv_translucency = CVAR_INIT ("translucency", "On", NULL, CV_SAVE, CV_OnOff, NULL); +consvar_t cv_translucency = CVAR_INIT ("translucency", "On", "If off, all objects will be fully opaque", CV_SAVE, CV_OnOff, NULL); consvar_t cv_drawdist = CVAR_INIT ("drawdist", "Infinite", NULL, CV_SAVE, drawdist_cons_t, NULL); consvar_t cv_drawdist_nights = CVAR_INIT ("drawdist_nights", "2048", NULL, CV_SAVE, drawdist_cons_t, NULL); consvar_t cv_drawdist_precip = CVAR_INIT ("drawdist_precip", "1024", NULL, CV_SAVE, drawdist_precip_cons_t, NULL); -consvar_t cv_fov = CVAR_INIT ("fov", "90", NULL, CV_SAVE|CV_CALL, fov_cons_t, Fov_OnChange); +consvar_t cv_fov = CVAR_INIT ("fov", "90", "Sets the view range, higher effectively means larger camera lens", CV_SAVE|CV_CALL, fov_cons_t, Fov_OnChange); consvar_t cv_fovadjust = CVAR_INIT ("fovadjust", "On", NULL, CV_SAVE|CV_CALL, CV_OnOff, Fov_OnChange); consvar_t cv_fovchange = CVAR_INIT ("fovchange", "Off", NULL, CV_SAVE, CV_OnOff, NULL); consvar_t cv_maxportals = CVAR_INIT ("maxportals", "2", NULL, CV_SAVE, maxportals_cons_t, NULL); diff --git a/src/sdl/i_video.c b/src/sdl/i_video.c index 684962a332..d745eec8d3 100644 --- a/src/sdl/i_video.c +++ b/src/sdl/i_video.c @@ -93,7 +93,7 @@ rendermode_t chosenrendermode = render_none; // set by command line arguments static void VidWaitChanged(void); // synchronize page flipping with screen refresh -consvar_t cv_vidwait = CVAR_INIT ("vid_wait", "On", NULL, CV_SAVE | CV_CALL, CV_OnOff, VidWaitChanged); +consvar_t cv_vidwait = CVAR_INIT ("vid_wait", "On", "Synchronize framerate with refresh rate, eliminating screen tearing", CV_SAVE | CV_CALL, CV_OnOff, VidWaitChanged); static consvar_t cv_stretch = CVAR_INIT ("stretch", "Off", NULL, CV_SAVE|CV_NOSHOWHELP, CV_OnOff, NULL); static consvar_t cv_alwaysgrabmouse = CVAR_INIT ("alwaysgrabmouse", "Off", "If on, the game will never let go of the mouse, even when unused", CV_SAVE, CV_OnOff, NULL); -- GitLab From 7cc5a81f97678e63b1bb6e1379900afbf1dc38ab Mon Sep 17 00:00:00 2001 From: chromaticpipe2 <chromaticpipe@gmail.com> Date: Sat, 22 Mar 2025 09:24:28 -0500 Subject: [PATCH 4/6] Add note to secbright, and add descriptions for wall and slope contrast Add note to secbright, and add descriptions for wall and slope contrast --- src/hardware/hw_main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 9b93001777..421bd79c53 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -5759,7 +5759,7 @@ static CV_PossibleValue_t glsecbright_cons_t[] = {{0, "MIN"}, {255, "MAX"}, {0, consvar_t cv_glshaders = CVAR_INIT ("gr_shaders", "On", "Enables additional visual effects in OpenGL", CV_SAVE|CV_CALL, glshaders_cons_t, CV_glshaders_OnChange); -consvar_t cv_glsecbright = CVAR_INIT("gr_secbright", "0", "Sets minimum sector brightness, useful for dark areas", CV_SAVE, glsecbright_cons_t, NULL); +consvar_t cv_glsecbright = CVAR_INIT("gr_secbright", "0", "Sets minimum sector brightness, useful for dark areas (requires shaders)", CV_SAVE, glsecbright_cons_t, NULL); #ifdef ALAM_LIGHTING consvar_t cv_gldynamiclighting = CVAR_INIT ("gr_dynamiclighting", "On", NULL, CV_SAVE, CV_OnOff, NULL); @@ -5770,13 +5770,13 @@ consvar_t cv_glcoronasize = CVAR_INIT ("gr_coronasize", "1", NULL, CV_SAVE|CV_FL consvar_t cv_glmodels = CVAR_INIT ("gr_models", "Off", "If on, will use 3D models instead of sprites if available", CV_SAVE, CV_OnOff, NULL); consvar_t cv_glmodelinterpolation = CVAR_INIT ("gr_modelinterpolation", "On", "If on, 3D models will interpolate on between frames", CV_SAVE, CV_OnOff, NULL); -consvar_t cv_glmodellighting = CVAR_INIT ("gr_modellighting", "Off", NULL, CV_SAVE|CV_CALL, CV_OnOff, CV_glmodellighting_OnChange); +consvar_t cv_glmodellighting = CVAR_INIT ("gr_modellighting", "Off", "If on, 3d models will have ambient light effects", CV_SAVE|CV_CALL, CV_OnOff, CV_glmodellighting_OnChange); consvar_t cv_glshearing = CVAR_INIT ("gr_shearing", "Off", "Emulates Software's vertical camera view (requires shaders)", CV_SAVE, glshearing_cons_t, NULL); consvar_t cv_glspritebillboarding = CVAR_INIT ("gr_spritebillboarding", "Off", "Causes sprites to always face the camera", CV_SAVE, CV_OnOff, NULL); consvar_t cv_glskydome = CVAR_INIT ("gr_skydome", "On", "Bend skybox around the map, giving a higher skybox quality", CV_SAVE, CV_OnOff, NULL); -consvar_t cv_glfakecontrast = CVAR_INIT ("gr_fakecontrast", "Smooth", NULL, CV_SAVE, glfakecontrast_cons_t, NULL); -consvar_t cv_glslopecontrast = CVAR_INIT ("gr_slopecontrast", "Off", NULL, CV_SAVE, CV_OnOff, NULL); +consvar_t cv_glfakecontrast = CVAR_INIT ("gr_fakecontrast", "Smooth", "Adjust the contrast of walls to make them stand out more", CV_SAVE, glfakecontrast_cons_t, NULL); +consvar_t cv_glslopecontrast = CVAR_INIT ("gr_slopecontrast", "Off", "Adjust the contrast of sloped surfaces to make them stand out more", CV_SAVE, CV_OnOff, NULL); consvar_t cv_glfiltermode = CVAR_INIT ("gr_filtermode", "Nearest", "Texture filter to use when scaling", CV_SAVE|CV_CALL, glfiltermode_cons_t, CV_glfiltermode_OnChange); consvar_t cv_glanisotropicmode = CVAR_INIT ("gr_anisotropicmode", "1", NULL, CV_SAVE|CV_CALL, glanisotropicmode_cons_t, CV_glanisotropic_OnChange); -- GitLab From 51dae46fb95ea258d9c9e5f09dba7c7c1ee443a1 Mon Sep 17 00:00:00 2001 From: chromaticpipe2 <chromaticpipe@gmail.com> Date: Sat, 22 Mar 2025 11:35:03 -0500 Subject: [PATCH 5/6] Add tooltips to a bunch of stuff that didn't have them --- src/console.c | 2 +- src/hardware/hw_main.c | 2 +- src/m_menu.c | 2 +- src/netcode/d_netcmd.c | 4 ++-- src/r_main.c | 8 ++++---- src/screen.c | 2 +- src/v_video.c | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/console.c b/src/console.c index fa3da64c95..c0ca3217d6 100644 --- a/src/console.c +++ b/src/console.c @@ -151,7 +151,7 @@ static CV_PossibleValue_t backcolor_cons_t[] = {{0, "White"}, {1, "Black"}, { {0, NULL}}; -consvar_t cons_backcolor = CVAR_INIT ("con_backcolor", "Green", NULL, CV_CALL|CV_SAVE, backcolor_cons_t, CONS_backcolor_Change); +consvar_t cons_backcolor = CVAR_INIT ("con_backcolor", "Green", "Color of the console background", CV_CALL|CV_SAVE, backcolor_cons_t, CONS_backcolor_Change); static void CON_Print(char *msg); diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 421bd79c53..708b3cdf44 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -5779,7 +5779,7 @@ consvar_t cv_glfakecontrast = CVAR_INIT ("gr_fakecontrast", "Smooth", "Adjust th consvar_t cv_glslopecontrast = CVAR_INIT ("gr_slopecontrast", "Off", "Adjust the contrast of sloped surfaces to make them stand out more", CV_SAVE, CV_OnOff, NULL); consvar_t cv_glfiltermode = CVAR_INIT ("gr_filtermode", "Nearest", "Texture filter to use when scaling", CV_SAVE|CV_CALL, glfiltermode_cons_t, CV_glfiltermode_OnChange); -consvar_t cv_glanisotropicmode = CVAR_INIT ("gr_anisotropicmode", "1", NULL, CV_SAVE|CV_CALL, glanisotropicmode_cons_t, CV_glanisotropic_OnChange); +consvar_t cv_glanisotropicmode = CVAR_INIT ("gr_anisotropicmode", "1", "The intensity of anistropic texture filtering", CV_SAVE|CV_CALL, glanisotropicmode_cons_t, CV_glanisotropic_OnChange); consvar_t cv_glsolvetjoin = CVAR_INIT ("gr_solvetjoin", "On", NULL, 0, CV_OnOff, NULL); diff --git a/src/m_menu.c b/src/m_menu.c index a42e8f0d29..9b99457bc7 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1315,7 +1315,7 @@ static menuitem_t OP_VideoOptionsMenu[] = {IT_HEADER, NULL, "Color Profile", NULL, NULL, 55}, {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Brightness", NULL, &cv_globalgamma, 61}, {IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Saturation", NULL, &cv_globalsaturation, 66}, - {IT_SUBMENU|IT_STRING, NULL, "Advanced Settings...", NULL, &OP_ColorOptionsDef, 71}, + {IT_SUBMENU|IT_STRING, NULL, "Advanced Settings...", "Advanced color settings for the game", &OP_ColorOptionsDef, 71}, {IT_HEADER, NULL, "Heads-Up Display", NULL, NULL, 80}, {IT_STRING | IT_CVAR, NULL, "Show HUD", NULL, &cv_showhud, 86}, diff --git a/src/netcode/d_netcmd.c b/src/netcode/d_netcmd.c index 6ba7ea2127..da869084ee 100644 --- a/src/netcode/d_netcmd.c +++ b/src/netcode/d_netcmd.c @@ -320,10 +320,10 @@ consvar_t cv_overtime = CVAR_INIT ("overtime", "Yes", NULL, CV_SAVE|CV_NETVAR|CV consvar_t cv_rollingdemos = CVAR_INIT ("rollingdemos", "On", NULL, CV_SAVE, CV_OnOff, NULL); static CV_PossibleValue_t timetic_cons_t[] = {{0, "Classic"}, {1, "Centiseconds"}, {2, "Mania"}, {3, "Tics"}, {0, NULL}}; -consvar_t cv_timetic = CVAR_INIT ("timerres", "Mania", NULL, CV_SAVE, timetic_cons_t, NULL); +consvar_t cv_timetic = CVAR_INIT ("timerres", "Mania", "Style of the score, time, and rings display", CV_SAVE, timetic_cons_t, NULL); static CV_PossibleValue_t powerupdisplay_cons_t[] = {{0, "Never"}, {1, "First-person only"}, {2, "Always"}, {0, NULL}}; -consvar_t cv_powerupdisplay = CVAR_INIT ("powerupdisplay", "First-person only", NULL, CV_SAVE, powerupdisplay_cons_t, NULL); +consvar_t cv_powerupdisplay = CVAR_INIT ("powerupdisplay", "First-person only", "When to display remaining duration of power-up items", CV_SAVE, powerupdisplay_cons_t, NULL); static CV_PossibleValue_t pointlimit_cons_t[] = {{1, "MIN"}, {MAXSCORE, "MAX"}, {0, "None"}, {0, NULL}}; consvar_t cv_pointlimit = CVAR_INIT ("pointlimit", "None", NULL, CV_SAVE|CV_NETVAR|CV_CALL|CV_NOINIT|CV_ALLOWLUA, pointlimit_cons_t, PointLimit_OnChange); diff --git a/src/r_main.c b/src/r_main.c index ebffd3c1dd..52fc16e643 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -159,9 +159,9 @@ consvar_t cv_showhud = CVAR_INIT ("showhud", "Yes", "If the HUD should be shown consvar_t cv_translucenthud = CVAR_INIT ("translucenthud", "10", "Opacity of the game's HUD elements", CV_SAVE, translucenthud_cons_t, NULL); consvar_t cv_translucency = CVAR_INIT ("translucency", "On", "If off, all objects will be fully opaque", CV_SAVE, CV_OnOff, NULL); -consvar_t cv_drawdist = CVAR_INIT ("drawdist", "Infinite", NULL, CV_SAVE, drawdist_cons_t, NULL); -consvar_t cv_drawdist_nights = CVAR_INIT ("drawdist_nights", "2048", NULL, CV_SAVE, drawdist_cons_t, NULL); -consvar_t cv_drawdist_precip = CVAR_INIT ("drawdist_precip", "1024", NULL, CV_SAVE, drawdist_precip_cons_t, NULL); +consvar_t cv_drawdist = CVAR_INIT ("drawdist", "Infinite", "Draw distance for map objects", CV_SAVE, drawdist_cons_t, NULL); +consvar_t cv_drawdist_nights = CVAR_INIT ("drawdist_nights", "2048", "Draw distance for hoops in NiGHTS modec", CV_SAVE, drawdist_cons_t, NULL); +consvar_t cv_drawdist_precip = CVAR_INIT ("drawdist_precip", "1024", "Draw distance for rain and snow", CV_SAVE, drawdist_precip_cons_t, NULL); consvar_t cv_fov = CVAR_INIT ("fov", "90", "Sets the view range, higher effectively means larger camera lens", CV_SAVE|CV_CALL, fov_cons_t, Fov_OnChange); consvar_t cv_fovadjust = CVAR_INIT ("fovadjust", "On", NULL, CV_SAVE|CV_CALL, CV_OnOff, Fov_OnChange); consvar_t cv_fovchange = CVAR_INIT ("fovchange", "Off", NULL, CV_SAVE, CV_OnOff, NULL); @@ -174,7 +174,7 @@ consvar_t cv_renderthings = CVAR_INIT ("r_renderthings", "On", NULL, 0, CV_OnOff consvar_t cv_ffloorclip = CVAR_INIT ("r_ffloorclip", "On", NULL, 0, CV_OnOff, NULL); consvar_t cv_spriteclip = CVAR_INIT ("r_spriteclip", "On", NULL, 0, CV_OnOff, NULL); -consvar_t cv_homremoval = CVAR_INIT ("homremoval", "No", NULL, CV_SAVE, homremoval_cons_t, NULL); +consvar_t cv_homremoval = CVAR_INIT ("homremoval", "No", "Fixes the hall of mirrors bug in the Software renderer", CV_SAVE, homremoval_cons_t, NULL); consvar_t cv_renderstats = CVAR_INIT ("renderstats", "Off", NULL, 0, CV_OnOff, NULL); diff --git a/src/screen.c b/src/screen.c index b996c93a8a..f19c8171bc 100644 --- a/src/screen.c +++ b/src/screen.c @@ -91,7 +91,7 @@ consvar_t cv_scr_width = CVAR_INIT ("scr_width", "1280", NULL, CV_SAVE, CV_Unsig consvar_t cv_scr_height = CVAR_INIT ("scr_height", "800", NULL, CV_SAVE, CV_Unsigned, NULL); consvar_t cv_scr_width_w = CVAR_INIT ("scr_width_w", "640", NULL, CV_SAVE, CV_Unsigned, NULL); consvar_t cv_scr_height_w = CVAR_INIT ("scr_height_w", "400", NULL, CV_SAVE, CV_Unsigned, NULL); -consvar_t cv_scr_depth = CVAR_INIT ("scr_depth", "16 bits", NULL, CV_SAVE, scr_depth_cons_t, NULL); +consvar_t cv_scr_depth = CVAR_INIT ("scr_depth", "16 bits", "Bit depth of textures", CV_SAVE, scr_depth_cons_t, NULL); CV_PossibleValue_t cv_renderer_t[] = { {1, "Software"}, diff --git a/src/v_video.c b/src/v_video.c index 3e2a59a3a7..53791eb0df 100644 --- a/src/v_video.c +++ b/src/v_video.c @@ -52,7 +52,7 @@ static CV_PossibleValue_t gamma_cons_t[] = {{-15, "MIN"}, {5, "MAX"}, {0, NULL}} consvar_t cv_globalgamma = CVAR_INIT ("gamma", "0", "Sets the game brightness", CV_SAVE|CV_CALL, gamma_cons_t, CV_palette_OnChange); static CV_PossibleValue_t saturation_cons_t[] = {{0, "MIN"}, {10, "MAX"}, {0, NULL}}; -consvar_t cv_globalsaturation = CVAR_INIT ("saturation", "10", NULL, CV_SAVE|CV_CALL, saturation_cons_t, CV_palette_OnChange); +consvar_t cv_globalsaturation = CVAR_INIT ("saturation", "10", "Sets the game saturation, or how bright the colors are", CV_SAVE|CV_CALL, saturation_cons_t, CV_palette_OnChange); #define huecoloursteps 4 -- GitLab From 16bf5b99285333aa485adf4de186cf07471312d2 Mon Sep 17 00:00:00 2001 From: Hanicef <gustaf@hanicef.me> Date: Sat, 22 Mar 2025 18:09:02 +0100 Subject: [PATCH 6/6] Add remaining descriptions for player settings --- src/g_game.c | 18 +++++++++--------- src/m_menu.c | 2 +- src/p_user.c | 28 ++++++++++++++-------------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/g_game.c b/src/g_game.c index aada65f484..bbe6e7374c 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -315,14 +315,14 @@ consvar_t cv_instantretry = CVAR_INIT ("instantretry", "No", NULL, CV_SAVE, CV_Y consvar_t cv_crosshair = CVAR_INIT ("crosshair", "Cross", "What crosshair to use in first-person", CV_SAVE, crosshair_cons_t, NULL); consvar_t cv_crosshair2 = CVAR_INIT ("crosshair2", "Cross", "What crosshair to use in first-person for player 2", CV_SAVE, crosshair_cons_t, NULL); -consvar_t cv_invertmouse = CVAR_INIT ("invertmouse", "Off", "If mouse input should be inverted", CV_SAVE, CV_OnOff, NULL); -consvar_t cv_invertmouse2 = CVAR_INIT ("invertmouse2", "Off", "If mouse input should be inverted for player 2", CV_SAVE, CV_OnOff, NULL); -consvar_t cv_alwaysfreelook = CVAR_INIT ("alwaysmlook", "On", "Allow looking vertically with the mouse", CV_SAVE, CV_OnOff, NULL); -consvar_t cv_alwaysfreelook2 = CVAR_INIT ("alwaysmlook2", "On", "Allow looking vertically with the mouse for player 2", CV_SAVE, CV_OnOff, NULL); -consvar_t cv_chasefreelook = CVAR_INIT ("chasemlook", "Off", NULL, CV_SAVE, CV_OnOff, NULL); -consvar_t cv_chasefreelook2 = CVAR_INIT ("chasemlook2", "Off", NULL, CV_SAVE, CV_OnOff, NULL); +consvar_t cv_invertmouse = CVAR_INIT ("invertmouse", "Off", "If vertical mouse input should be inverted", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_invertmouse2 = CVAR_INIT ("invertmouse2", "Off", "If vertical mouse input should be inverted", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_alwaysfreelook = CVAR_INIT ("alwaysmlook", "On", "Allow looking up and down in first-person", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_alwaysfreelook2 = CVAR_INIT ("alwaysmlook2", "On", "Allow looking up and down in first-person", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_chasefreelook = CVAR_INIT ("chasemlook", "Off", "Allow looking up and down in third-person", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_chasefreelook2 = CVAR_INIT ("chasemlook2", "Off", "Allow looking up and down in third-person", CV_SAVE, CV_OnOff, NULL); consvar_t cv_mousemove = CVAR_INIT ("mousemove", "Off", "If enabled, vertical mouse movement will move the character", CV_SAVE, CV_OnOff, NULL); -consvar_t cv_mousemove2 = CVAR_INIT ("mousemove2", "Off", "If enabled, vertical mouse movement will move the character for player 2", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_mousemove2 = CVAR_INIT ("mousemove2", "Off", "If enabled, vertical mouse movement will move the character", CV_SAVE, CV_OnOff, NULL); // previously "analog", "analog2", "useranalog", and "useranalog2", invalidating 2.1-era copies of config.cfg // changed because it'd be nice to see people try out our actually good controls with gamepads now autobrake exists @@ -400,7 +400,7 @@ consvar_t cv_jumpaxis = CVAR_INIT ("joyaxis_jump", "None", NULL, CV_SAVE, joyaxi consvar_t cv_spinaxis = CVAR_INIT ("joyaxis_spin", "None", NULL, CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_fireaxis = CVAR_INIT ("joyaxis_fire", "Z-Rudder", NULL, CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_firenaxis = CVAR_INIT ("joyaxis_firenormal", "Z-Axis", NULL, CV_SAVE, joyaxis_cons_t, NULL); -consvar_t cv_deadzone = CVAR_INIT ("joy_deadzone", "0.125", NULL, CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL); +consvar_t cv_deadzone = CVAR_INIT ("joy_deadzone", "0.125", "How far a joystick have to be pushed before it registers any input", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL); consvar_t cv_digitaldeadzone = CVAR_INIT ("joy_digdeadzone", "0.25", NULL, CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL); consvar_t cv_moveaxis2 = CVAR_INIT ("joyaxis2_move", "Y-Axis", NULL, CV_SAVE, joyaxis_cons_t, NULL); @@ -411,7 +411,7 @@ consvar_t cv_jumpaxis2 = CVAR_INIT ("joyaxis2_jump", "None", NULL, CV_SAVE, joya consvar_t cv_spinaxis2 = CVAR_INIT ("joyaxis2_spin", "None", NULL, CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_fireaxis2 = CVAR_INIT ("joyaxis2_fire", "Z-Rudder", NULL, CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_firenaxis2 = CVAR_INIT ("joyaxis2_firenormal", "Z-Axis", NULL, CV_SAVE, joyaxis_cons_t, NULL); -consvar_t cv_deadzone2 = CVAR_INIT ("joy_deadzone2", "0.125", NULL, CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL); +consvar_t cv_deadzone2 = CVAR_INIT ("joy_deadzone2", "0.125", "How far a joystick have to be pushed before it registers any input", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL); consvar_t cv_digitaldeadzone2 = CVAR_INIT ("joy_digdeadzone2", "0.25", NULL, CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL); player_t *seenplayer; // player we're aiming at right now diff --git a/src/m_menu.c b/src/m_menu.c index 9b99457bc7..60a5205298 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -1497,7 +1497,7 @@ static menuitem_t OP_DataOptionsMenu[] = {IT_STRING | IT_CALL, NULL, "Add-on Options...", NULL, M_AddonsOptions, 10}, {IT_STRING | IT_CALL, NULL, "Screenshot Options...", NULL, M_ScreenshotOptions, 20}, - {IT_STRING | IT_SUBMENU, NULL, "\x85" "Erase Data...", "Erase game data", &OP_EraseDataDef, 40}, + {IT_STRING | IT_SUBMENU, NULL, "\x85" "Erase Data...", NULL, &OP_EraseDataDef, 40}, }; static menuitem_t OP_ScreenshotOptionsMenu[] = diff --git a/src/p_user.c b/src/p_user.c index b48134c9c8..893b3ac11d 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -9833,12 +9833,12 @@ static CV_PossibleValue_t campos_cons_t[] = { {INT32_MIN, "MIN"}, {INT32_MAX, "M consvar_t cv_cam_dist = CVAR_INIT ("cam_curdist", "160", NULL, CV_FLOAT|CV_ALLOWLUA, campos_cons_t, NULL); consvar_t cv_cam_height = CVAR_INIT ("cam_curheight", "25", NULL, CV_FLOAT|CV_ALLOWLUA, campos_cons_t, NULL); consvar_t cv_cam_still = CVAR_INIT ("cam_still", "Off", NULL, CV_ALLOWLUA, CV_OnOff, NULL); -consvar_t cv_cam_speed = CVAR_INIT ("cam_speed", "0.4", NULL, CV_FLOAT|CV_SAVE|CV_ALLOWLUA, CV_CamSpeed, NULL); +consvar_t cv_cam_speed = CVAR_INIT ("cam_speed", "0.4", "Camera movement relative to the player character; higher value makes the camera more \"stiff\"", CV_FLOAT|CV_SAVE|CV_ALLOWLUA, CV_CamSpeed, NULL); consvar_t cv_cam_rotate = CVAR_INIT ("cam_rotate", "0", NULL, CV_CALL|CV_NOINIT|CV_ALLOWLUA, CV_CamRotate, CV_CamRotate_OnChange); consvar_t cv_cam_rotspeed = CVAR_INIT ("cam_rotspeed", "10", NULL, CV_SAVE|CV_ALLOWLUA, rotation_cons_t, NULL); -consvar_t cv_cam_turnmultiplier = CVAR_INIT ("cam_turnmultiplier", "0.75", NULL, CV_FLOAT|CV_SAVE|CV_ALLOWLUA, multiplier_cons_t, NULL); -consvar_t cv_cam_orbit = CVAR_INIT ("cam_orbit", "Off", NULL, CV_SAVE|CV_ALLOWLUA, CV_OnOff, NULL); -consvar_t cv_cam_adjust = CVAR_INIT ("cam_adjust", "On", NULL, CV_SAVE|CV_ALLOWLUA, CV_OnOff, NULL); +consvar_t cv_cam_turnmultiplier = CVAR_INIT ("cam_turnmultiplier", "0.75", "Camera rotation speed when using keyboard controls (has no effect on mouse or controller)", CV_FLOAT|CV_SAVE|CV_ALLOWLUA, multiplier_cons_t, NULL); +consvar_t cv_cam_orbit = CVAR_INIT ("cam_orbit", "Off", "If enabled, vertical camera movement will rotate around the player character rather than staying in place", CV_SAVE|CV_ALLOWLUA, CV_OnOff, NULL); +consvar_t cv_cam_adjust = CVAR_INIT ("cam_adjust", "On", "Adjust camera angle relative to the slope the player is on", CV_SAVE|CV_ALLOWLUA, CV_OnOff, NULL); consvar_t cv_cam2_dist = CVAR_INIT ("cam2_curdist", "160", NULL, CV_FLOAT|CV_ALLOWLUA, campos_cons_t, NULL); consvar_t cv_cam2_height = CVAR_INIT ("cam2_curheight", "25", NULL, CV_FLOAT|CV_ALLOWLUA, campos_cons_t, NULL); consvar_t cv_cam2_still = CVAR_INIT ("cam2_still", "Off", NULL, CV_ALLOWLUA, CV_OnOff, NULL); @@ -9846,29 +9846,29 @@ consvar_t cv_cam2_speed = CVAR_INIT ("cam2_speed", "0.4", NULL, CV_FLOAT|CV_SAVE consvar_t cv_cam2_rotate = CVAR_INIT ("cam2_rotate", "0", NULL, CV_CALL|CV_NOINIT|CV_ALLOWLUA, CV_CamRotate, CV_CamRotate2_OnChange); consvar_t cv_cam2_rotspeed = CVAR_INIT ("cam2_rotspeed", "10", NULL, CV_SAVE|CV_ALLOWLUA, rotation_cons_t, NULL); consvar_t cv_cam2_turnmultiplier = CVAR_INIT ("cam2_turnmultiplier", "0.75", NULL, CV_FLOAT|CV_SAVE|CV_ALLOWLUA, multiplier_cons_t, NULL); -consvar_t cv_cam2_orbit = CVAR_INIT ("cam2_orbit", "Off", NULL, CV_SAVE|CV_ALLOWLUA, CV_OnOff, NULL); -consvar_t cv_cam2_adjust = CVAR_INIT ("cam2_adjust", "On", NULL, CV_SAVE|CV_ALLOWLUA, CV_OnOff, NULL); +consvar_t cv_cam2_orbit = CVAR_INIT ("cam2_orbit", "Off", "If enabled, vertical camera movement will rotate around the player character rather than staying in place", CV_SAVE|CV_ALLOWLUA, CV_OnOff, NULL); +consvar_t cv_cam2_adjust = CVAR_INIT ("cam2_adjust", "On", "Adjust camera angle relative to the slope the player is on", CV_SAVE|CV_ALLOWLUA, CV_OnOff, NULL); // [standard vs simple][p1 or p2] consvar_t cv_cam_savedist[2][2] = { { // standard - CVAR_INIT ("cam_dist", "192", NULL, CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCamDist), - CVAR_INIT ("cam2_dist", "192", NULL, CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCam2Dist), + CVAR_INIT ("cam_dist", "192", "Automatic camera distance from the player", CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCamDist), + CVAR_INIT ("cam2_dist", "192", "Automatic camera distance from the player", CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCam2Dist), }, { // simple - CVAR_INIT ("cam_simpledist", "256", NULL, CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCamDist), - CVAR_INIT ("cam2_simpledist", "256", NULL, CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCam2Dist), + CVAR_INIT ("cam_simpledist", "256", "Manual camera distance from the player", CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCamDist), + CVAR_INIT ("cam2_simpledist", "256", "Manual camera distance from the player", CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCam2Dist), } }; consvar_t cv_cam_saveheight[2][2] = { { // standard - CVAR_INIT ("cam_height", "40", NULL, CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCamDist), - CVAR_INIT ("cam2_height", "40", NULL, CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCam2Dist), + CVAR_INIT ("cam_height", "40", "Automatic camera elevation from the player", CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCamDist), + CVAR_INIT ("cam2_height", "40", "Automatic camera elevation from the player", CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCam2Dist), }, { // simple - CVAR_INIT ("cam_simpleheight", "60", NULL, CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCamDist), - CVAR_INIT ("cam2_simpleheight", "60", NULL, CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCam2Dist), + CVAR_INIT ("cam_simpleheight", "60", "Manual camera elevation from the player", CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCamDist), + CVAR_INIT ("cam2_simpleheight", "60", "Manual camera elevation from the player", CV_FLOAT|CV_SAVE|CV_CALL|CV_ALLOWLUA, campos_cons_t, CV_UpdateCam2Dist), } }; -- GitLab