diff --git a/src/cvars.cpp b/src/cvars.cpp index 2f4cf956f..0c23a2a97 100644 --- a/src/cvars.cpp +++ b/src/cvars.cpp @@ -532,7 +532,7 @@ consvar_t cv_masterserver_token = Server("masterserver_token", ""); void MasterClient_Ticker(void); consvar_t cv_masterserver_update_rate = Server("masterserver_update_rate", "15").min_max(2, 60).onchange_noinit(MasterClient_Ticker); -consvar_t cv_maxping = Server("maxdelay", "20").values(CV_Unsigned); +consvar_t cv_maxping = Server("maxdelay", "20").min_max(0, 30); consvar_t cv_menujam = Server("menujam", "menu").values({{0, "menu"}, {1, "menu2"}, {2, "menu3"}}); consvar_t cv_menujam_update = Server("menujam_update", "Off").on_off(); consvar_t cv_netdemosyncquality = Server("netdemo_syncquality", "1").min_max(1, 35); @@ -541,7 +541,7 @@ consvar_t cv_netdemosize = Server("netdemo_size", "6").values(CV_Natural); void NetTimeout_OnChange(void); consvar_t cv_nettimeout = Server("nettimeout", "210").min_max(TICRATE/7, 60*TICRATE).onchange(NetTimeout_OnChange); -consvar_t cv_pause = NetVar("pausepermission", "Server").values({{0, "Server"}, {1, "All"}}); +consvar_t cv_pause = NetVar("pausepermission", "Server Admins").values({{0, "Server Admins"}, {1, "Everyone"}}); consvar_t cv_pingmeasurement = Server("pingmeasurement", "Frames").values({{0, "Frames"}, {1, "Milliseconds"}}); consvar_t cv_playbackspeed = Server("playbackspeed", "1").min_max(1, 10).dont_save(); @@ -1327,7 +1327,7 @@ consvar_t cv_chattime = Player("chattime", "8").min_max(5, 999); consvar_t cv_chatwidth = Player("chatwidth", "150").min_max(64, 150); // old shit console chat. (mostly exists for stuff like terminal, not because I cared if anyone liked the old chat.) -consvar_t cv_consolechat = Player("chatmode", "Window").values({{0, "Window"}, {1, "Console"}, {2, "Window (Hidden)"}}); +consvar_t cv_consolechat = Player("chatmode", "Yes").values({{0, "Yes"}, {2, "No"}}); consvar_t cv_gamestochat = Player("gamestochat", "0").values(CV_Unsigned); @@ -1348,7 +1348,7 @@ consvar_t cv_mute = UnsavedNetVar("mute", "Off").on_off().onchange(Mute_OnChange extern CV_PossibleValue_t glanisotropicmode_cons_t[]; void CV_glanisotropic_OnChange(void); - consvar_t cv_glanisotropicmode = OpenGL("gr_anisotropicmode", "1").values(glanisotropicmode_cons_t).onchange(CV_glanisotropic_OnChange).dont_save(); + consvar_t cv_glanisotropicmode = OpenGL("gr_anisotropicmode", "1").values(glanisotropicmode_cons_t).onchange(CV_glanisotropic_OnChange); consvar_t cv_glbatching = OpenGL("gr_batching", "On").on_off().dont_save(); @@ -1368,7 +1368,7 @@ consvar_t cv_mute = UnsavedNetVar("mute", "Off").on_off().onchange(Mute_OnChange consvar_t cv_glmodellighting = OpenGL("gr_modellighting", "Off").on_off(); #endif - consvar_t cv_glmodels = OpenGL("gr_models", "Off").on_off(); + consvar_t cv_glmodels = OpenGL("gr_models", "On").on_off(); consvar_t cv_glshearing = OpenGL("gr_shearing", "Off").values({{0, "Off"}, {1, "On"}, {2, "Third-person"}}); consvar_t cv_glskydome = OpenGL("gr_skydome", "On").on_off(); consvar_t cv_glsolvetjoin = OpenGL("gr_solvetjoin", "On").on_off().dont_save(); diff --git a/src/d_main.cpp b/src/d_main.cpp index d720639a4..9d1b25edb 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -687,7 +687,7 @@ static bool D_Display(void) } } - if (Playing()) + if (Playing() || demo.playback) { HU_Drawer(); } diff --git a/src/hu_stuff.c b/src/hu_stuff.c index 61d925aba..d2761852a 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -1958,43 +1958,6 @@ static void HU_DrawTitlecardCEcho(size_t num) UINT32 hu_demotime; UINT32 hu_demolap; -static void HU_DrawDemoInfo(void) -{ - if (!multiplayer)/* netreplay */ - { - V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-40, 0, M_GetText("Replay:")); - V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, 0, player_names[0]); - } - else - { - V_DrawRightAlignedThinString(BASEVIDWIDTH-2, BASEVIDHEIGHT-10, 0, demo.titlename); - } - - if (modeattacking & ATTACKING_TIME) - { - V_DrawRightAlignedString((BASEVIDWIDTH/2)-4, BASEVIDHEIGHT-24, V_YELLOWMAP|V_MONOSPACE, "BEST TIME:"); - if (hu_demotime != UINT32_MAX) - V_DrawString((BASEVIDWIDTH/2)+4, BASEVIDHEIGHT-24, V_MONOSPACE, va("%i'%02i\"%02i", - G_TicsToMinutes(hu_demotime,true), - G_TicsToSeconds(hu_demotime), - G_TicsToCentiseconds(hu_demotime))); - else - V_DrawString((BASEVIDWIDTH/2)+4, BASEVIDHEIGHT-24, V_MONOSPACE, "--'--\"--"); - } - - if (modeattacking & ATTACKING_LAP) - { - V_DrawRightAlignedString((BASEVIDWIDTH/2)-4, BASEVIDHEIGHT-16, V_YELLOWMAP|V_MONOSPACE, "BEST LAP:"); - if (hu_demolap != UINT32_MAX) - V_DrawString((BASEVIDWIDTH/2)+4, BASEVIDHEIGHT-16, V_MONOSPACE, va("%i'%02i\"%02i", - G_TicsToMinutes(hu_demolap,true), - G_TicsToSeconds(hu_demolap), - G_TicsToCentiseconds(hu_demolap))); - else - V_DrawString((BASEVIDWIDTH/2)+4, BASEVIDHEIGHT-16, V_MONOSPACE, "--'--\"--"); - } -} - // // Song credits @@ -2068,11 +2031,6 @@ void HU_Drawer(void) } LUA_HUD_DrawList(luahuddrawlist_scores); } - - if (demo.playback) - { - HU_DrawDemoInfo(); - } } if (cv_vhseffect.value && (paused || (demo.playback && cv_playbackspeed.value > 1))) @@ -2253,8 +2211,6 @@ void HU_drawPing(fixed_t x, fixed_t y, UINT32 lag, UINT32 pl, INT32 flags, boole boolean drawlocal = (offline && cv_mindelay.value && lag <= (tic_t)cv_mindelay.value); fixed_t x2, y2; - y = y - 10*FRACUNIT; // Making space for connection quality, sorry. - if (!server && lag <= (tic_t)cv_mindelay.value) { lag = cv_mindelay.value; diff --git a/src/k_hud.cpp b/src/k_hud.cpp index 04b0041b3..7ed6d593a 100644 --- a/src/k_hud.cpp +++ b/src/k_hud.cpp @@ -6005,13 +6005,41 @@ void K_drawKartHUD(void) bool ta = modeattacking && !demo.playback; INT32 flags = V_HUDTRANS|V_SLIDEIN|V_SNAPTOTOP|V_SNAPTORIGHT; K_drawKartTimestamp(stplyr->realtime, TIME_X, TIME_Y + (ta ? 2 : 0), flags, 0); - if (ta) + if (modeattacking) { - using srb2::Draw; - Draw(BASEVIDWIDTH - 19, 2) - .flags(flags | V_YELLOWMAP) - .align(Draw::Align::kRight) - .text("\xBE Restart"); + if (ta) + { + using srb2::Draw; + Draw(BASEVIDWIDTH - 19, 2) + .flags(flags | V_YELLOWMAP) + .align(Draw::Align::kRight) + .text("\xBE Restart"); + } + else + { + using srb2::Draw; + Draw row = Draw(BASEVIDWIDTH - 20, TIME_Y + 18).flags(flags).align(Draw::Align::kRight); + auto insert = [&](const char *label, UINT32 tics) + { + Draw::TextElement text = + tics != UINT32_MAX ? + Draw::TextElement( + "{}'{}\"{}", + G_TicsToMinutes(tics, true), + G_TicsToSeconds(tics), + G_TicsToCentiseconds(tics) + ) : + Draw::TextElement("--'--\"--"); + text.font(Draw::Font::kZVote); + row.x(-text.width()).flags(V_ORANGEMAP).text(label); + row.y(1).text(text); + row = row.y(10); + }; + if (modeattacking & ATTACKING_TIME) + insert("Finish: ", hu_demotime); + if (modeattacking & ATTACKING_LAP) + insert("Best Lap: ", hu_demolap); + } } } diff --git a/src/k_menu.h b/src/k_menu.h index c39984a37..a9348442d 100644 --- a/src/k_menu.h +++ b/src/k_menu.h @@ -353,11 +353,10 @@ typedef enum typedef enum { dopt_screenshot = 0, - dopt_addon, + dopt_advanced, dopt_spacer1, dopt_replay, dopt_rprecord, - dopt_rpsync, dopt_rpsize, #ifdef HAVE_DISCORDRPC dopt_discord, @@ -370,6 +369,14 @@ typedef enum dopt_erase, } dopt_e; +typedef enum +{ + daopt_addon = 0, + daopt_spacer1, + daopt_replay, + daopt_replaycons, +} daopt_e; + extern menuitem_t OPTIONS_Profiles[]; extern menu_t OPTIONS_ProfilesDef; @@ -404,10 +411,8 @@ extern menu_t OPTIONS_VideoDef; extern menuitem_t OPTIONS_VideoModes[]; extern menu_t OPTIONS_VideoModesDef; -#ifdef HWRENDER -extern menuitem_t OPTIONS_VideoOGL[]; -extern menu_t OPTIONS_VideoOGLDef; -#endif +extern menuitem_t OPTIONS_VideoAdvanced[]; +extern menu_t OPTIONS_VideoAdvancedDef; extern menuitem_t OPTIONS_Sound[]; extern menu_t OPTIONS_SoundDef; @@ -420,7 +425,8 @@ extern menu_t OPTIONS_HUDOnlineDef; typedef enum { - gopt_gamespeed = 0, + gopt_spacer0 = 0, + gopt_gamespeed, gopt_baselapcount, gopt_frantic, gopt_encore, @@ -451,8 +457,11 @@ extern menu_t OPTIONS_DataDef; extern menuitem_t OPTIONS_DataScreenshot[]; extern menu_t OPTIONS_DataScreenshotDef; -extern menuitem_t OPTIONS_DataAddon[]; -extern menu_t OPTIONS_DataAddonDef; +extern menuitem_t OPTIONS_DataAdvanced[]; +extern menu_t OPTIONS_DataAdvancedDef; + +extern menuitem_t OPTIONS_DataAdvancedAddon[]; +extern menu_t OPTIONS_DataAdvancedAddonDef; extern menuitem_t OPTIONS_DataErase[]; extern menu_t OPTIONS_DataEraseDef; @@ -1104,7 +1113,6 @@ void M_ProfileTryController(INT32 choice); void M_ProfileControlsConfirm(INT32 choice); // video modes menu (resolution) -void M_VideoModeMenu(INT32 choice); void M_HandleVideoModes(INT32 ch); // data stuff diff --git a/src/k_menudraw.c b/src/k_menudraw.c index 666add657..c1d8340c4 100644 --- a/src/k_menudraw.c +++ b/src/k_menudraw.c @@ -3338,38 +3338,25 @@ static void M_DrawHighLowLevelTitle(INT16 x, INT16 y, INT16 map) } else { - boolean donewithone = false; - char *ttlsource = mapheaderinfo[map]->menuttl[0] ? mapheaderinfo[map]->menuttl : mapheaderinfo[map]->lvlttl; - for (i = 0; i < 22; i++) + // If there are 2 or more words: + // - Last word goes on word2 + // - Everything else on word1 + char *p = strrchr(ttlsource, ' '); + if (p) { - if (!ttlsource[i]) - break; - - if (ttlsource[i] == ' ') - { - if (!donewithone) - { - donewithone = true; - continue; - } - } - - if (donewithone) - { - word2[word2len] = ttlsource[i]; - word2len++; - } - else - { - word1[word1len] = ttlsource[i]; - word1len++; - } + word2len = strlen(p + 1); + memcpy(word2, p + 1, word2len); } + else + p = ttlsource + strlen(ttlsource); + + word1len = p - ttlsource; + memcpy(word1, ttlsource, word1len); } if (!mapheaderinfo[map]->menuttl[0] && mapheaderinfo[map]->actnum) @@ -4545,9 +4532,12 @@ box_found: } /* FALLTHRU */ case IT_NOTHING: - case IT_DYBIGSPACE: y += SMALLLINEHEIGHT; break; + + case IT_DYBIGSPACE: + y += SMALLLINEHEIGHT/2; + break; #if 0 case IT_BIGSLIDER: M_DrawThermo(x, y, currentMenu->menuitems[i].itemaction.cvar); diff --git a/src/k_menufunc.c b/src/k_menufunc.c index 881b9b044..d402d7d9b 100644 --- a/src/k_menufunc.c +++ b/src/k_menufunc.c @@ -176,8 +176,6 @@ void M_ChangeCvarDirect(INT32 choice, consvar_t *cv) choice *= (TICRATE/7); else if (cv == &cv_maxsend) choice *= 512; - else if (cv == &cv_maxping) - choice *= 50; CV_AddValue(cv, choice); } diff --git a/src/menus/CMakeLists.txt b/src/menus/CMakeLists.txt index 728d29303..be72a4996 100644 --- a/src/menus/CMakeLists.txt +++ b/src/menus/CMakeLists.txt @@ -10,7 +10,8 @@ target_sources(SRB2SDL2 PRIVATE main-profile-select.c options-1.c options-data-1.c - options-data-addons.c + options-data-advanced-1.c + options-data-advanced-addon.c options-data-erase-1.c options-data-erase-profile.c options-data-screenshots.c @@ -26,7 +27,7 @@ target_sources(SRB2SDL2 PRIVATE options-server-advanced.c options-sound.cpp options-video-1.c - options-video-gl.c + options-video-advanced.c options-video-modes.c play-1.c play-char-select.c diff --git a/src/menus/options-1.c b/src/menus/options-1.c index d369e1084..a4b60feba 100644 --- a/src/menus/options-1.c +++ b/src/menus/options-1.c @@ -11,25 +11,25 @@ menuitem_t OPTIONS_Main[] = { - {IT_STRING | IT_CALL, "Profile Setup", "Remap keys & buttons to your likings.", + {IT_STRING | IT_CALL, "Profile Setup", "Remap keys & buttons.", NULL, {.routine = M_ProfileSelectInit}, 0, 0}, - {IT_STRING | IT_CALL, "Video Options", "Change video settings such as the resolution.", + {IT_STRING | IT_CALL, "Video Options", "Change the resolution.", NULL, {.routine = M_VideoOptions}, 0, 0}, - {IT_STRING | IT_CALL, "Sound Options", "Adjust various sound settings such as the volume.", + {IT_STRING | IT_CALL, "Sound Options", "Adjust the volume.", NULL, {.routine = M_SoundOptions}, 0, 0}, - {IT_STRING | IT_SUBMENU, "HUD Options", "Options related to the Heads-Up Display.", + {IT_STRING | IT_SUBMENU, "HUD Options", "Tweak the Heads-Up Display.", NULL, {.submenu = &OPTIONS_HUDDef}, 0, 0}, - {IT_STRING | IT_CALL, "Gameplay Options", "Change various game related options", + {IT_STRING | IT_CALL, "Gameplay Options", "Modify game mechanics.", NULL, {.routine = M_GameplayOptions}, 0, 0}, - {IT_STRING | IT_CALL, "Server Options", "Change various specific options for your game server.", + {IT_STRING | IT_CALL, "Server Options", "Update server settings.", NULL, {.routine = M_ServerOptions}, 0, 0}, - {IT_STRING | IT_SUBMENU, "Data Options", "Miscellaneous data options such as the screenshot format.", + {IT_STRING | IT_SUBMENU, "Data Options", "Video recording, file saving, Discord status.", NULL, {.submenu = &OPTIONS_DataDef}, 0, 0}, #ifdef TODONEWMANUAL @@ -96,9 +96,9 @@ void M_InitOptions(INT32 choice) (M_SecretUnlocked(SECRET_ENCORE, false) ? (IT_STRING | IT_CVAR) : IT_DISABLED); } - OPTIONS_DataDef.menuitems[dopt_addon].status = (M_SecretUnlocked(SECRET_ADDONS, true) + OPTIONS_DataAdvancedDef.menuitems[daopt_addon].status = (M_SecretUnlocked(SECRET_ADDONS, true) ? (IT_STRING | IT_SUBMENU) - : (IT_TRANSTEXT2 | IT_SPACE)); + : (IT_NOTHING | IT_SPACE)); OPTIONS_DataDef.menuitems[dopt_erase].status = (gamestate == GS_MENU ? (IT_STRING | IT_SUBMENU) : (IT_TRANSTEXT2 | IT_SPACE)); @@ -212,6 +212,11 @@ static void M_OptionsMenuGoto(menu_t *assignment) { assignment->prevMenu = currentMenu; M_SetupNextMenu(assignment, false); + if (currentMenu != &OPTIONS_MainDef) + { + optionsmenu.ticker = 0; + M_OptionsTick(); + } } void M_VideoOptions(INT32 choice) @@ -232,12 +237,14 @@ void M_GameplayOptions(INT32 choice) { (void)choice; M_OptionsMenuGoto(&OPTIONS_GameplayDef); + OPTIONS_MainDef.lastOn = mopt_gameplay; } void M_ServerOptions(INT32 choice) { (void)choice; M_OptionsMenuGoto(&OPTIONS_ServerDef); + OPTIONS_MainDef.lastOn = mopt_server; } boolean M_OptionsInputs(INT32 ch) diff --git a/src/menus/options-data-1.c b/src/menus/options-data-1.c index fd7f830d6..af6e7829d 100644 --- a/src/menus/options-data-1.c +++ b/src/menus/options-data-1.c @@ -10,11 +10,11 @@ extern consvar_t cv_netdemosize; menuitem_t OPTIONS_Data[] = { - {IT_STRING | IT_SUBMENU, "Video Recording...", "Set options relative to screenshot and movie capture.", + {IT_STRING | IT_SUBMENU, "Video Recording...", "Options for recording clips.", NULL, {.submenu = &OPTIONS_DataScreenshotDef}, 0, 0}, - {IT_STRING | IT_SUBMENU, "Addons...", "Set options relative to the addons menu.", - NULL, {.submenu = &OPTIONS_DataAddonDef}, 0, 0}, + {IT_STRING | IT_SUBMENU, "Advanced...", "Technical settings that you probably don't want to change.", + NULL, {.submenu = &OPTIONS_DataAdvancedDef}, 0, 0}, {IT_SPACE | IT_NOTHING, NULL, NULL, NULL, {NULL}, 0, 0}, @@ -22,12 +22,9 @@ menuitem_t OPTIONS_Data[] = {IT_HEADER, "Replays...", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Record Replays", "Select when to save replays.", + {IT_STRING | IT_CVAR, "Record Replays", "How the save prompt should appear.", NULL, {.cvar = &cv_recordmultiplayerdemos}, 0, 0}, - {IT_STRING | IT_CVAR, "Net Consistency Quality", "For filesize, how often do we write position data in online replays?", - NULL, {.cvar = &cv_netdemosyncquality}, 0, 0}, - {IT_STRING | IT_CVAR, "Buffer Size (MB)", "Lets replays last longer with more players. Uses more RAM.", NULL, {.cvar = &cv_netdemosize}, 0, 0}, @@ -51,7 +48,7 @@ menuitem_t OPTIONS_Data[] = {IT_SPACE | IT_DYBIGSPACE, NULL, NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_SUBMENU, "\x85""Erase Data...", "Erase specific data. Be careful, what's deleted is gone forever!", + {IT_STRING | IT_SUBMENU, "\x85""Erase Data...", "Erase save data. Be careful, what's deleted is gone forever!", NULL, {.submenu = &OPTIONS_DataEraseDef}, 0, 0}, }; diff --git a/src/menus/options-data-advanced-1.c b/src/menus/options-data-advanced-1.c new file mode 100644 index 000000000..4edc26ae9 --- /dev/null +++ b/src/menus/options-data-advanced-1.c @@ -0,0 +1,41 @@ +/// \file menus/options-data-advanced.c +/// \brief Advanced Data Options + +#include "../k_menu.h" +#include "../filesrch.h" // addons cvars + +// advanced data options menu -- see daopt_e +menuitem_t OPTIONS_DataAdvanced[] = +{ + + {IT_STRING | IT_SUBMENU, "Addons...", NULL, + NULL, {.submenu = &OPTIONS_DataAdvancedAddonDef}, 0, 0}, + + {IT_NOTHING | IT_SPACE, NULL, NULL, + NULL, {NULL}, 0, 0}, + + {IT_HEADER, "Replays (Advanced)...", NULL, + NULL, {NULL}, 0, 0}, + + {IT_STRING | IT_CVAR, "Net Consistency Quality", "For filesize, how often do we write position data in online replays?", + NULL, {.cvar = &cv_netdemosyncquality}, 0, 0}, + +}; + +menu_t OPTIONS_DataAdvancedDef = { + sizeof (OPTIONS_DataAdvanced) / sizeof (menuitem_t), + &OPTIONS_DataDef, + 0, + OPTIONS_DataAdvanced, + 48, 80, + SKINCOLOR_BLUEBERRY, 0, + MBF_DRAWBGWHILEPLAYING, + NULL, + 2, 5, + M_DrawGenericOptions, + M_DrawOptionsCogs, + M_OptionsTick, + NULL, + NULL, + NULL, +}; diff --git a/src/menus/options-data-addons.c b/src/menus/options-data-advanced-addon.c similarity index 81% rename from src/menus/options-data-addons.c rename to src/menus/options-data-advanced-addon.c index 53a9ebac4..159fe6061 100644 --- a/src/menus/options-data-addons.c +++ b/src/menus/options-data-advanced-addon.c @@ -1,10 +1,7 @@ -/// \file menus/options-data-addons.c -/// \brief Addon Options - #include "../k_menu.h" #include "../filesrch.h" // addons cvars -menuitem_t OPTIONS_DataAddon[] = +menuitem_t OPTIONS_DataAdvancedAddon[] = { {IT_HEADER, "Addon List", NULL, @@ -27,11 +24,11 @@ menuitem_t OPTIONS_DataAddon[] = }; -menu_t OPTIONS_DataAddonDef = { - sizeof (OPTIONS_DataAddon) / sizeof (menuitem_t), - &OPTIONS_DataDef, +menu_t OPTIONS_DataAdvancedAddonDef = { + sizeof (OPTIONS_DataAdvancedAddon) / sizeof (menuitem_t), + &OPTIONS_DataAdvancedDef, 0, - OPTIONS_DataAddon, + OPTIONS_DataAdvancedAddon, 48, 80, SKINCOLOR_BLUEBERRY, 0, MBF_DRAWBGWHILEPLAYING, diff --git a/src/menus/options-data-screenshots.c b/src/menus/options-data-screenshots.c index ec84cebac..515b25505 100644 --- a/src/menus/options-data-screenshots.c +++ b/src/menus/options-data-screenshots.c @@ -10,7 +10,7 @@ menuitem_t OPTIONS_DataScreenshot[] = { #ifdef SRB2_CONFIG_ENABLE_WEBM_MOVIES - {IT_HEADER, "Movie Recording (F9)", NULL, + {IT_HEADER, "WebM Recording (F9)", NULL, NULL, {NULL}, 0, 0}, {IT_STRING | IT_CVAR, "Max. Duration (s)", "Automatically stop recording after this much time.", @@ -28,10 +28,10 @@ menuitem_t OPTIONS_DataScreenshot[] = {IT_SPACE | IT_NOTHING, NULL, NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Resolution", "Video resolution", + {IT_STRING | IT_CVAR, "Resolution", "Video resolution.", NULL, {.cvar = &cv_movie_resolution}, 0, 0}, - {IT_STRING | IT_CVAR, "Max. FPS", "Video framerate", + {IT_STRING | IT_CVAR, "Max. FPS", "Video framerate.", NULL, {.cvar = &cv_movie_fps}, 0, 0}, {IT_STRING | IT_CVAR, "Record Audio", "Record audio.", @@ -41,7 +41,7 @@ menuitem_t OPTIONS_DataScreenshot[] = {IT_HEADER, "Lossless Recording (F10)", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Recording Format", "What file format will lossless recordings use?", + {IT_STRING | IT_CVAR, "Recording Format", "Which file format will lossless recordings use?", NULL, {.cvar = &cv_lossless_recorder}, 0, 0}, }; diff --git a/src/menus/options-gameplay-1.c b/src/menus/options-gameplay-1.c index e6fb71750..38aeb4925 100644 --- a/src/menus/options-gameplay-1.c +++ b/src/menus/options-gameplay-1.c @@ -10,16 +10,16 @@ menuitem_t OPTIONS_Gameplay[] = {IT_HEADER, "Race...", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Game Speed", "Change Game Speed for the next map.", + {IT_STRING | IT_CVAR, "Game Speed", "Gear for the next map.", NULL, {.cvar = &cv_kartspeed}, 0, 0}, - {IT_STRING | IT_CVAR, "Base Lap Count", "Change how many laps must be completed per race.", + {IT_STRING | IT_CVAR, "Base Lap Count", "How many laps must be completed per race.", NULL, {.cvar = &cv_numlaps}, 0, 0}, {IT_STRING | IT_CVAR, "Frantic Items", "Make item odds crazier with more powerful items!", NULL, {.cvar = &cv_kartfrantic}, 0, 0}, - {IT_STRING | IT_CVAR, "Encore Mode", "Forces Encore Mode on for the next map.", + {IT_STRING | IT_CVAR, "Encore Mode", "Play in Encore Mode next map.", NULL, {.cvar = &cv_kartencore}, 0, 0}, {IT_STRING | IT_CVAR, "Exit Countdown", "How long players have to finish after 1st place finishes.", @@ -29,20 +29,20 @@ menuitem_t OPTIONS_Gameplay[] = {IT_HEADER, "Battle...", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Time Limit", "Change the time limit for Battle rounds.", + {IT_STRING | IT_CVAR, "Time Limit", "Time limit for Battle rounds.", NULL, {.cvar = &cv_timelimit}, 0, 0}, {IT_STRING | IT_CVAR, "Point Limit", "How many strikes it takes to win a Battle.", NULL, {.cvar = &cv_pointlimit}, 0, 0}, - {IT_STRING | IT_CVAR, "Starting Bumpers", "Change how many bumpers player start with in Battle.", + {IT_STRING | IT_CVAR, "Starting Bumpers", "How many bumpers players start with in Battle.", NULL, {.cvar = &cv_kartbumpers}, 0, 0}, {IT_SPACE | IT_DYBIGSPACE, NULL, NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_SUBMENU, "Random Item Toggles...", "Change which items to enable for your games.", + {IT_STRING | IT_SUBMENU, "Random Item Toggles...", "Which items appear in your games.", NULL, {.submenu = &OPTIONS_GameplayItemsDef}, 0, 0}, }; diff --git a/src/menus/options-hud-1.c b/src/menus/options-hud-1.c index 34c494955..3b7809937 100644 --- a/src/menus/options-hud-1.c +++ b/src/menus/options-hud-1.c @@ -8,35 +8,31 @@ menuitem_t OPTIONS_HUD[] = { - {IT_STRING | IT_CVAR, "Show HUD (F3)", "Toggles HUD display. Great for taking screenshots!", + {IT_STRING | IT_CVAR, "Show HUD (F3)", "Toggles the Heads-Up display. Great for taking screenshots!", NULL, {.cvar = &cv_showhud}, 0, 0}, {IT_SPACE | IT_NOTHING, NULL, NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Speedometer", "Choose to what speed unit to display or toggle off the speedometer.", + {IT_STRING | IT_CVAR, "Speedometer", "Choose which speed unit to display on the speedometer.", NULL, {.cvar = &cv_kartspeedometer}, 0, 0}, {IT_SPACE | IT_NOTHING, NULL, NULL, NULL, {NULL}, 0, 0}, -/* -- Nah, console isn't even bound by default, if you know how to use it you can change the size there - {IT_STRING | IT_CVAR, "Console Text Size", "Size of the text within the console.", - NULL, {.cvar = &cv_constextsize}, 0, 0},*/ - - {IT_STRING | IT_CVAR, "Show FPS", "Displays the game framerate at the lower right corner of the screen.", + {IT_STRING | IT_CVAR, "Show FPS", "Displays the framerate in the lower right corner of the screen.", NULL, {.cvar = &cv_ticrate}, 0, 0}, - {IT_STRING | IT_CVAR, "Show Input Delay", "Displays your input delay at the lower right corner of the screen.", + {IT_STRING | IT_CVAR, "Show Input Delay", "Displays your input delay in the lower right corner of the screen.", NULL, {.cvar = &cv_showping}, 0, 0}, - {IT_STRING | IT_CVAR, "Show \"FOCUS LOST\"", "Displays \"FOCUS LOST\" when the game window isn't the active window.", + {IT_STRING | IT_CVAR, "Show \"FOCUS LOST\"", "Displays \"FOCUS LOST\" when the game cannot accept inputs.", NULL, {.cvar = &cv_showfocuslost}, 0, 0}, {IT_SPACE | IT_NOTHING, NULL, NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_SUBMENU, "Online Chat Options...", "HUD options related to the online chat box.", + {IT_STRING | IT_SUBMENU, "Online Chat Options...", "Visual options for the online chat box.", NULL, {.submenu = &OPTIONS_HUDOnlineDef}, 0, 0}, }; diff --git a/src/menus/options-hud-online.c b/src/menus/options-hud-online.c index b7449d28d..4eda3528e 100644 --- a/src/menus/options-hud-online.c +++ b/src/menus/options-hud-online.c @@ -7,7 +7,7 @@ menuitem_t OPTIONS_HUDOnline[] = { - {IT_STRING | IT_CVAR, "Chat Mode", "Choose whether to display chat in its own window or the console.", + {IT_STRING | IT_CVAR, "Show Chat", "Show chat by default or keep it hidden until you open it.", NULL, {.cvar = &cv_consolechat}, 0, 0}, {IT_SPACE | IT_NOTHING, NULL, NULL, @@ -28,7 +28,7 @@ menuitem_t OPTIONS_HUDOnline[] = {IT_STRING | IT_CVAR, "Message Fadeout Time (s)", "How long chat messages stay displayed with the chat closed.", NULL, {.cvar = &cv_chattime}, 0, 0}, - {IT_STRING | IT_CVAR, "Message Tint", "Shows the tint for new chat messages when the box is closed.", + {IT_STRING | IT_CVAR, "Message Fadeout Tint", "Shows the tint for new chat messages when the box is closed.", NULL, {.cvar = &cv_chatbacktint}, 0, 0}, }; diff --git a/src/menus/options-profiles-edit-1.c b/src/menus/options-profiles-edit-1.c index 65eca8819..ef6a7212c 100644 --- a/src/menus/options-profiles-edit-1.c +++ b/src/menus/options-profiles-edit-1.c @@ -12,16 +12,16 @@ menuitem_t OPTIONS_EditProfile[] = { {IT_STRING | IT_CVAR | IT_CV_STRING, "Profile ID", "6-character long name to identify this Profile.", NULL, {.cvar = &cv_dummyprofilename}, 0, 41}, - {IT_STRING | IT_CALL, "Controls", "Select the button mappings for this Profile.", + {IT_STRING | IT_CALL, "Controls", "Change the button mappings.", NULL, {.routine = M_ProfileDeviceSelect}, 0, 71}, {IT_STRING | IT_SUBMENU, "Accessibility", "Acccessibility and quality of life options.", NULL, {.submenu = &OPTIONS_ProfileAccessibilityDef}, 0, 91}, - {IT_STRING | IT_CALL, "Character", "Default character and color for this Profile.", + {IT_STRING | IT_CALL, "Character", "Default character and color.", NULL, {.routine = M_CharacterSelect}, 0, 111}, - {IT_STRING | IT_CVAR | IT_CV_STRING, "Player Tag", "Name displayed online when using this Profile.", + {IT_STRING | IT_CVAR | IT_CV_STRING, "Player Tag", "Name displayed online and in replays.", NULL, {.cvar = &cv_dummyprofileplayername}, 0, 141}, {IT_STRING | IT_CALL, "Confirm", "Confirm changes.", diff --git a/src/menus/options-server-1.c b/src/menus/options-server-1.c index 1a83b6af1..7feab84b2 100644 --- a/src/menus/options-server-1.c +++ b/src/menus/options-server-1.c @@ -9,13 +9,13 @@ menuitem_t OPTIONS_Server[] = {IT_HEADER, "Advertising...", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR | IT_CV_STRING, "Server Name", "Change the name of your server.", + {IT_STRING | IT_CVAR | IT_CV_STRING, "Server Name", "Name of your server.", NULL, {.cvar = &cv_servername}, 0, 0}, - {IT_STRING | IT_CVAR | IT_CV_STRING, "Server Contact", "Where you should be contacted for Master Server moderation.", + {IT_STRING | IT_CVAR | IT_CV_STRING, "Server Contact", "How you should be contacted for Master Server moderation.", NULL, {.cvar = &cv_server_contact}, 0, 0}, - {IT_STRING | IT_CVAR, "Advertise", "Display your game in the Server Browser for other players.", + {IT_STRING | IT_CVAR, "Advertise", "Display your server in the Browser for other players to join.", NULL, {.cvar = &cv_advertise}, 0, 0}, @@ -28,49 +28,49 @@ menuitem_t OPTIONS_Server[] = {IT_STRING | IT_CVAR, "Maximum Connections", "How many players & spectators can connect to the server.", NULL, {.cvar = &cv_maxconnections}, 0, 0}, - {IT_STRING | IT_CVAR, "CPU Difficulty", "Bots can fill unused slots. How strong should they be?", + {IT_STRING | IT_CVAR, "CPU Level", "Bots can fill unused slots. How strong should they be?", NULL, {.cvar = &cv_kartbot}, 0, 0}, - {IT_STRING | IT_CVAR, "Use PWR.LV", "Set whether players should be rated on their performance.", + {IT_STRING | IT_CVAR, "Use PWR.LV", "Should players should be rated on their performance?", NULL, {.cvar = &cv_kartusepwrlv}, 0, 0}, {IT_HEADER, "Progression...", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Intermission", "Set how long to stay on the result screen.", + {IT_STRING | IT_CVAR, "Intermission", "How long to stay on the result screen.", NULL, {.cvar = &cv_inttime}, 0, 0}, - {IT_STRING | IT_CVAR, "Map Progression", "Set how the next map is chosen.", + {IT_STRING | IT_CVAR, "Map Progression", "How the next map is chosen.", NULL, {.cvar = &cv_advancemap}, 0, 0}, - {IT_STRING | IT_CVAR, "Vote Timer", "Set how long players have to vote.", + {IT_STRING | IT_CVAR, "Vote Timer", "How long players have to vote.", NULL, {.cvar = &cv_votetime}, 0, 0}, {IT_HEADER, "Permissions...", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Allow Joining", "Sets whether players can connect to your server.", + {IT_STRING | IT_CVAR, "Allow Joining", "Let players connect to your server.", NULL, {.cvar = &cv_allownewplayer}, 0, 0}, - {IT_STRING | IT_CVAR, "Allow Downloads", "Allows joiners to download missing files from you.", + {IT_STRING | IT_CVAR, "Allow Downloads", "Let players download missing files from your server.", NULL, {.cvar = &cv_downloading}, 0, 0}, - {IT_STRING | IT_CVAR, "Pause Permissions", "Sets who can pause the game.", + {IT_STRING | IT_CVAR, "Pause Permissions", "Who is allowed to pause the game?", NULL, {.cvar = &cv_pause}, 0, 0}, {IT_HEADER, "Chat...", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Mute Chat", "Prevents non-admins from sending chat messages.", + {IT_STRING | IT_CVAR, "Mute Chat", "Prevent everyone but admins from sending chat messages.", NULL, {.cvar = &cv_mute}, 0, 0}, - {IT_STRING | IT_CVAR, "Chat Spam Protection", "Prevents too many message from a single player.", + {IT_STRING | IT_CVAR, "Chat Spam Protection", "Prevent too many messages from a single player.", NULL, {.cvar = &cv_chatspamprotection}, 0, 0}, - {IT_HEADER, "Advanced...", NULL, + {IT_SPACE | IT_DYBIGSPACE, NULL, NULL, NULL, {NULL}, 0, 0}, {IT_STRING | IT_SUBMENU, "Advanced...", "Advanced options. Be careful when messing with these!", diff --git a/src/menus/options-server-advanced.c b/src/menus/options-server-advanced.c index 77f0052d4..7488e2d33 100644 --- a/src/menus/options-server-advanced.c +++ b/src/menus/options-server-advanced.c @@ -22,13 +22,13 @@ menuitem_t OPTIONS_ServerAdvanced[] = {IT_STRING | IT_CVAR, "Resynch. Attempts", "How many times to attempt sending data to desynchronized players.", NULL, {.cvar = &cv_resynchattempts}, 0, 0}, - {IT_STRING | IT_CVAR, "Ping Limit (ms)", "Players above the ping limit will get kicked from the server.", + {IT_STRING | IT_CVAR, "Delay Limit (tics)", "Players above the delay limit will get kicked from the server.", NULL, {.cvar = &cv_maxping}, 0, 0}, - {IT_STRING | IT_CVAR, "Ping Timeout (s)", "Players must be above the ping limit for this long before being kicked.", + {IT_STRING | IT_CVAR, "Delay Timeout (seconds)", "Players must be above the delay limit for this long before being kicked.", NULL, {.cvar = &cv_pingtimeout}, 0, 0}, - {IT_STRING | IT_CVAR, "Connection Timeout (tics)", "Players not giving any netowrk activity for this long are kicked.", + {IT_STRING | IT_CVAR, "Connection Timeout (tics)", "Players not giving any network activity for this long are kicked.", NULL, {.cvar = &cv_nettimeout}, 0, 0}, {IT_STRING | IT_CVAR, "Join Timeout (tics)", "Players taking too long to join are kicked.", @@ -38,7 +38,7 @@ menuitem_t OPTIONS_ServerAdvanced[] = {IT_HEADER, "Addon Downloading", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Max File Transfer", "Maximum size of the files that can be downloaded from joining clients. (KB)", + {IT_STRING | IT_CVAR, "Max File Transfer", "Maximum size of each file that joining players may download. (KB)", NULL, {.cvar = &cv_maxsend}, 0, 0}, {IT_STRING | IT_CVAR, "File Transfer Speed", "File transfer packet rate. Larger values send more data.", @@ -48,13 +48,13 @@ menuitem_t OPTIONS_ServerAdvanced[] = {IT_HEADER, "Logging", NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Log Joiner IPs", "Shows the IP of connecting players.", + {IT_STRING | IT_CVAR, "Log Joiner IPs", "Shows the IP address of connecting players as they join.", NULL, {.cvar = &cv_showjoinaddress}, 0, 0}, {IT_STRING | IT_CVAR, "Log Resynch", "Shows which players need resynchronization.", NULL, {.cvar = &cv_blamecfail}, 0, 0}, - {IT_STRING | IT_CVAR, "Log Transfers", "Shows when clients are downloading files from you.", + {IT_STRING | IT_CVAR, "Log Transfers", "Shows when players are downloading files from you.", NULL, {.cvar = &cv_noticedownload}, 0, 0}, }; diff --git a/src/menus/options-sound.cpp b/src/menus/options-sound.cpp index e5d0eeff6..716ee5752 100644 --- a/src/menus/options-sound.cpp +++ b/src/menus/options-sound.cpp @@ -220,22 +220,22 @@ boolean input_routine(INT32) menuitem_t OPTIONS_Sound[] = { - {IT_STRING | IT_ARROWS | IT_CV_SLIDER, "Volume", "Adjust the volume of game audio.", + {IT_STRING | IT_ARROWS | IT_CV_SLIDER, "Volume", "Loudness of all game audio.", NULL, {.routine = slider_routine}, 0, Slider::kMasterVolume}, - {IT_STRING | IT_ARROWS | IT_CV_SLIDER, "SFX Volume", "Adjust the volume of sound effects.", + {IT_STRING | IT_ARROWS | IT_CV_SLIDER, "SFX Volume", "Loudness of sound effects.", NULL, {.routine = slider_routine}, 0, Slider::kSfxVolume}, - {IT_STRING | IT_ARROWS | IT_CV_SLIDER, "Music Volume", "Adjust the volume of music playback.", + {IT_STRING | IT_ARROWS | IT_CV_SLIDER, "Music Volume", "Loudness of music.", NULL, {.routine = slider_routine}, 0, Slider::kMusicVolume}, {IT_SPACE | IT_NOTHING, NULL, NULL, NULL, {NULL}, 0, 0}, - {IT_STRING | IT_CVAR, "Chat Notifications", "Set when to play notification sounds when chat messages are received.", + {IT_STRING | IT_CVAR, "Chat Notifications", "Play a sound effect when chat messages appear.", NULL, {.cvar = &cv_chatnotifications}, 0, 0}, - {IT_STRING | IT_CVAR, "Character Voices", "Set how often to play character voices in game.", + {IT_STRING | IT_CVAR, "Character Voices", "How often to play character voices in a race.", NULL, {.cvar = &cv_kartvoices}, 0, 0}, {IT_SPACE | IT_NOTHING, NULL, NULL, diff --git a/src/menus/options-video-1.c b/src/menus/options-video-1.c index b4d2bb0f9..8c2e34537 100644 --- a/src/menus/options-video-1.c +++ b/src/menus/options-video-1.c @@ -2,7 +2,6 @@ /// \brief Video Options #include "../k_menu.h" -#include "../r_main.h" // cv_skybox #include "../v_video.h" // cv_globalgamma #include "../r_fps.h" // fps cvars @@ -10,21 +9,21 @@ menuitem_t OPTIONS_Video[] = { - {IT_STRING | IT_CALL, "Set Resolution...", "Change the screen resolution for the game.", - NULL, {.routine = M_VideoModeMenu}, 0, 0}, + {IT_STRING | IT_SUBMENU, "Resolution...", "Change the aspect ratio and image quality.", + NULL, {.submenu = &OPTIONS_VideoModesDef}, 0, 0}, {IT_NOTHING|IT_SPACE, NULL, NULL, NULL, {NULL}, 0, 0}, #if (defined (__unix__) && !defined (MSDOS)) || defined (UNIXCOMMON) || defined (HAVE_SDL) - {IT_STRING | IT_CVAR, "Fullscreen", "Set whether you want to use fullscreen or windowed mode.", + {IT_STRING | IT_CVAR, "Fullscreen", "Play on the big screen or in a small window.", NULL, {.cvar = &cv_fullscreen}, 0, 0}, #endif - {IT_STRING | IT_CVAR, "Vertical Sync", "Works with your screen to reduce image tearing and judder.", + {IT_STRING | IT_CVAR, "V-Sync", "Reduce image tearing and judder.", NULL, {.cvar = &cv_vidwait}, 0, 0}, - {IT_STRING | IT_CVAR, "FPS Cap", "Handles the frame rate of the game (35 to match game logic)", + {IT_STRING | IT_CVAR, "FPS Cap", "Limit the frame rate. Higher values may consume more CPU usage.", NULL, {.cvar = &cv_fpscap}, 0, 0}, {IT_STRING | IT_CVAR, "Screen Effect", "Uses a special effect when displaying the game.", @@ -33,45 +32,11 @@ menuitem_t OPTIONS_Video[] = {IT_NOTHING|IT_SPACE, NULL, NULL, NULL, {NULL}, 0, 0}, -#if 0 // See Profiles/Accessibility - {IT_STRING | IT_CVAR, "Screen Tilting", "The view rotatation on inclines can be disabled to reduce motion sickness.", - NULL, {.cvar = &cv_tilting}, 0, 0}, - - {IT_STRING | IT_CVAR, "Reduce Visual Effects", "If on, some less-important particle cues will be hidden.", - NULL, {.cvar = &cv_reducevfx}, 0, 0}, -#endif - - /* - {IT_STRING | IT_CVAR | IT_CV_SLIDER, "Gamma", "Adjusts the overall brightness of the game.", - NULL, {.cvar = &cv_globalgamma}, 0, 0}, - {IT_NOTHING|IT_SPACE, NULL, NULL, NULL, {NULL}, 0, 0}, - */ - - {IT_HEADER, "Advanced...", NULL, - NULL, {NULL}, 0, 0}, - - {IT_STRING | IT_CVAR, "Draw Distance", "How far objects can be drawn. A tradeoff between performance & visibility.", - NULL, {.cvar = &cv_drawdist}, 0, 0}, - - {IT_STRING | IT_CVAR, "Weather Draw Distance", "Affects how far weather visuals can be drawn. Lower values improve performance.", - NULL, {.cvar = &cv_drawdist_precip}, 0, 0}, - - {IT_STRING | IT_CVAR, "Enable Skyboxes", "Turning this off may improve performance, but reduces courses' background details.", - NULL, {.cvar = &cv_skybox}, 0, 0}, - - {IT_STRING | IT_CVAR, "Parallel Software", "Uses multiple CPU cores for the software renderer if available, for a FPS boost.", - NULL, {.cvar = &cv_parallelsoftware}, 0, 0}, - -#ifdef HWRENDER - {IT_NOTHING|IT_SPACE, NULL, NULL, - NULL, {NULL}, 0, 0}, - - {IT_STRING | IT_SUBMENU, "Hardware Options...", "For usage and configuration of the OpenGL renderer.", - NULL, {.submenu = &OPTIONS_VideoOGLDef}, 0, 0}, -#endif + {IT_STRING | IT_SUBMENU, "Advanced...", "Advanced performance options and experimental rendering features.", + NULL, {.submenu = &OPTIONS_VideoAdvancedDef}, 0, 0}, }; diff --git a/src/menus/options-video-gl.c b/src/menus/options-video-advanced.c similarity index 72% rename from src/menus/options-video-gl.c rename to src/menus/options-video-advanced.c index 4c63601d1..e5b941ccf 100644 --- a/src/menus/options-video-gl.c +++ b/src/menus/options-video-advanced.c @@ -2,10 +2,26 @@ /// \brief OpenGL Options #include "../k_menu.h" +#include "../r_main.h" // cv_skybox #include "../hardware/hw_main.h" // gl consvars -menuitem_t OPTIONS_VideoOGL[] = +menuitem_t OPTIONS_VideoAdvanced[] = { + {IT_HEADER, "Performance...", NULL, + NULL, {NULL}, 0, 0}, + + {IT_STRING | IT_CVAR, "Draw Distance", "How far objects can be drawn. A tradeoff between performance & visibility.", + NULL, {.cvar = &cv_drawdist}, 0, 0}, + + {IT_STRING | IT_CVAR, "Weather Draw Distance", "Affects how far weather visuals can be drawn. Lower values improve performance.", + NULL, {.cvar = &cv_drawdist_precip}, 0, 0}, + + {IT_STRING | IT_CVAR, "Enable Skyboxes", "Turning this off may improve performance, but reduces courses' background details.", + NULL, {.cvar = &cv_skybox}, 0, 0}, + + {IT_STRING | IT_CVAR, "Parallel Software", "Uses multiple CPU cores for the software renderer if available, for a FPS boost.", + NULL, {.cvar = &cv_parallelsoftware}, 0, 0}, + {IT_HEADER, "Rendering Backend...", "Watch people get confused anyway!!", NULL, {NULL}, 0, 0}, @@ -67,11 +83,11 @@ menuitem_t OPTIONS_VideoOGL[] = NULL, {.cvar = &cv_glshearing}, 0, 0}, }; -menu_t OPTIONS_VideoOGLDef = { - sizeof (OPTIONS_VideoOGL) / sizeof (menuitem_t), +menu_t OPTIONS_VideoAdvancedDef = { + sizeof (OPTIONS_VideoAdvanced) / sizeof (menuitem_t), &OPTIONS_VideoDef, 0, - OPTIONS_VideoOGL, + OPTIONS_VideoAdvanced, 48, 80, SKINCOLOR_PLAGUE, 0, MBF_DRAWBGWHILEPLAYING, diff --git a/src/menus/options-video-modes.c b/src/menus/options-video-modes.c index a7648b7d6..ee360491c 100644 --- a/src/menus/options-video-modes.c +++ b/src/menus/options-video-modes.c @@ -12,6 +12,8 @@ menuitem_t OPTIONS_VideoModes[] = { }; +static void M_VideoModeMenu(void); + menu_t OPTIONS_VideoModesDef = { sizeof (OPTIONS_VideoModes) / sizeof (menuitem_t), &OPTIONS_VideoDef, @@ -25,20 +27,18 @@ menu_t OPTIONS_VideoModesDef = { M_DrawVideoModes, M_DrawOptionsCogs, M_OptionsTick, - NULL, + M_VideoModeMenu, NULL, NULL, }; // setup video mode menu -void M_VideoModeMenu(INT32 choice) +static void M_VideoModeMenu(void) { INT32 i, j, vdup, nummodes; UINT32 width, height; const char *desc; - (void)choice; - memset(optionsmenu.modedescs, 0, sizeof(optionsmenu.modedescs)); #if (defined (__unix__) && !defined (MSDOS)) || defined (UNIXCOMMON) || defined (HAVE_SDL) @@ -100,8 +100,6 @@ void M_VideoModeMenu(INT32 choice) } optionsmenu.vidm_column_size = (optionsmenu.vidm_nummodes+2) / 3; - - M_SetupNextMenu(&OPTIONS_VideoModesDef, false); } // special menuitem key handler for video mode list diff --git a/src/menus/play-local-race-difficulty.c b/src/menus/play-local-race-difficulty.c index 26feabfd1..e8874c8e3 100644 --- a/src/menus/play-local-race-difficulty.c +++ b/src/menus/play-local-race-difficulty.c @@ -52,6 +52,8 @@ static void tick_routine(void) { case drace_mritems: M_SetupNextMenu(&OPTIONS_GameplayItemsDef, false); + optionsmenu.ticker = 0; + M_OptionsTick(); break; case drace_encore: diff --git a/src/menus/play-online-host.c b/src/menus/play-online-host.c index 3c6f344d6..02613ef54 100644 --- a/src/menus/play-online-host.c +++ b/src/menus/play-online-host.c @@ -41,10 +41,10 @@ menuitem_t PLAY_MP_Host[] = {IT_STRING | IT_ARROWS, "Gametype", "Choose the type of play on your serer.", NULL, {.routine = M_HandleHostMenuGametype}, 0, 0}, - {IT_STRING2 | IT_CALL, "Gameplay Options...", "Adjust settings pertaining to gameplay.", + {IT_STRING2 | IT_CALL, "Gameplay Options...", "Modify game mechanics.", NULL, {.routine = M_GameplayOptions}, 0, 0}, - {IT_STRING2 | IT_CALL, "Server Options...", "Adjust settings pertaining to online play.", + {IT_STRING2 | IT_CALL, "Server Options...", "Update server settings.", NULL, {.routine = M_ServerOptions}, 0, 0}, {IT_STRING | IT_CALL, "Map Select", "Go on and select a level!", diff --git a/src/st_stuff.c b/src/st_stuff.c index 65f048b7c..0b3c1a490 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -1279,20 +1279,30 @@ static void ST_overlayDrawer(void) { if (!demo.attract && !P_IsLocalPlayer(stplyr) && !camera[viewnum].freecam) { - if (!r_splitscreen) + if (r_splitscreen <= 1) { - V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-40, V_HUDTRANSHALF, M_GetText("VIEWPOINT:")); - V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, V_HUDTRANSHALF, player_names[stplyr-players]); - } - else if (r_splitscreen == 1) - { - char name[MAXPLAYERNAME+12]; + INT32 flags = V_SNAPTOBOTTOM | V_SPLITSCREEN | V_HUDTRANS; + INT32 x = BASEVIDWIDTH/2; + INT32 y = (BASEVIDHEIGHT / (r_splitscreen + 1)) - 34; + INT32 width = 50; - INT32 y = (viewnum == 0) ? 4 : BASEVIDHEIGHT/2-12; - sprintf(name, "VIEWPOINT: %s", player_names[stplyr-players]); - V_DrawRightAlignedThinString(BASEVIDWIDTH-40, y, V_HUDTRANSHALF|V_SNAPTOTOP|V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SPLITSCREEN, name); + if (r_splitscreen) + { + flags = (flags & ~V_ALPHAMASK) | V_HUDTRANSHALF; + y += 4; + } + else + { + V_DrawFill(x - width/2, y + 6, width, 2, flags | 31); + V_DrawCenteredThinString(x, y, flags | V_ORANGEMAP, "Watching"); + } + + const char *text = player_names[stplyr-players]; + fixed_t textwidth = V_StringScaledWidth(FRACUNIT, FRACUNIT, FRACUNIT, flags, KART_FONT, text); + V_DrawStringScaled(x*FRACUNIT - textwidth/2, (y+10)*FRACUNIT, + FRACUNIT, FRACUNIT, FRACUNIT, flags, NULL, KART_FONT, text); } - else if (r_splitscreen) + else { V_DrawCenteredThinString((vid.width/vid.dupx)/4, BASEVIDHEIGHT/2 - 12, V_HUDTRANSHALF|V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_SPLITSCREEN, player_names[stplyr-players]); }