From 3d016d4009a52ea455054fb6b8a635e0f731ddae Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Wed, 19 Mar 2025 13:47:42 +0100 Subject: [PATCH] Sweep through the remaining menus Server list remains untouched because I can't test it --- src/deh_soc.c | 10 ++++-- src/deh_tables.c | 31 +++++++++++++++- src/m_menu.c | 93 +++++++++++++++++++----------------------------- src/m_menu.h | 31 +++++++++++++++- 4 files changed, 104 insertions(+), 61 deletions(-) diff --git a/src/deh_soc.c b/src/deh_soc.c index 041a1f87e..452db4231 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -2219,6 +2219,8 @@ static void readmenuitem(MYFILE *f, menu_t *menudef, char *itemname) flags = IT_WHITESTRING; else if (fastcmp(word+4, "DISABLED")) flags = IT_DISABLED; + else if (fastcmp(word+4, "2")) + flags = IT_STRING2; else if (word[4]) { deh_warning("MenuItem %s: unknown word '%s'", "", word); @@ -2288,7 +2290,7 @@ static void readmenuitem(MYFILE *f, menu_t *menudef, char *itemname) menuitem->status |= IT_SUBMENU; menuitem->itemaction.submenu = menunum2menudef[mn]; } - else if (fastncmp(word, "CALL", 4) || fastcmp(word, "KEYHANDLER")) + else if (fastncmp(word, "CALL", 4) || fastcmp(word, "KEYHANDLER") || fastcmp(word, "ARROWS")) { UINT16 flags; if (word[0] == 'C') @@ -2302,8 +2304,12 @@ static void readmenuitem(MYFILE *f, menu_t *menudef, char *itemname) continue; } } - else + else if (word[0] == 'K') flags = IT_KEYHANDLER; + else if (word[0] == 'A') + flags = IT_ARROWS; + else + I_Error("bruh"); // i should probably just make "CALL" the stem for all of these if (actionset) { diff --git a/src/deh_tables.c b/src/deh_tables.c index 31d7db051..bbfe9de2f 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -682,7 +682,7 @@ const char *const MENUTYPES_LIST[] = { "CHANGELEVEL", "MAPAUSE", - // "HELP", + "HELP", // SRB2Kart "OP_HUD", @@ -699,6 +699,9 @@ const char *const MENUTYPES_LIST[] = { "MISC_REPLAYHUT", "MISC_DISCORDREQUESTS", "CHANGESPECTATE", + "MISC_REPLAYSTART", + "PLAYBACK", + "OP_CONTROLSETUP", "SPECIAL" }; @@ -771,6 +774,25 @@ struct menu_routine_s const MENU_ROUTINES[] = { { "CONFIRMTEAMCHANGE", &M_ConfirmTeamChange }, { "CONFIRMSPECTATECHANGE", &M_ConfirmSpectateChange }, { "CHANGELEVEL", &M_ChangeLevel }, + { "HUTSTARTREPLAY", &M_HutStartReplay }, + { "PLAYBACKREWIND", &M_PlaybackRewind }, + { "PLAYBACKPAUSE", &M_PlaybackPause }, + { "PLAYBACKFASTFORWARD", &M_PlaybackFastForward }, + { "PLAYBACKADVANCE", &M_PlaybackAdvance }, + { "PLAYBACKSETVIEWS", &M_PlaybackSetViews }, + { "PLAYBACKADJUSTVIEW", &M_PlaybackAdjustView }, + { "PLAYBACKTOGGLEFREECAM", &M_PlaybackToggleFreecam }, + { "PLAYBACKQUIT", &M_PlaybackQuit }, + { "HANDLEIMAGEDEF", &M_HandleImageDef }, + { "HANDLEMUSICTEST", &M_HandleMusicTest }, + { "SETUP1PJOYSTICKMENU", &M_Setup1PJoystickMenu }, + { "SETUP2PJOYSTICKMENU", &M_Setup2PJoystickMenu }, + { "SETUP3PJOYSTICKMENU", &M_Setup3PJoystickMenu }, + { "SETUP4PJOYSTICKMENU", &M_Setup4PJoystickMenu }, + { "RESETCONTROLS", &M_ResetControls }, + { "CHANGECONTROL", &M_ChangeControl }, + { "ASSIGNJOYSTICK", &M_AssignJoystick }, + { "HANDLEMONITORTOGGLES", &M_HandleMonitorToggles }, { NULL, NULL } }; @@ -791,6 +813,13 @@ struct menu_drawer_s const MENU_DRAWERS[] = { { "DRAWHUDOPTIONS", &M_DrawHUDOptions }, { "DRAWADDONS", &M_DrawAddons }, { "DRAWEMBLEMHINTS", &M_DrawEmblemHints }, + { "DRAWREPLAYSTARTMENU", &M_DrawReplayStartMenu }, + { "DRAWPLAYBACKMENU", &M_DrawPlaybackMenu }, + { "DRAWIMAGEDEF", &M_DrawImageDef }, + { "DRAWMUSICTEST", &M_DrawMusicTest }, + { "DRAWCONTROL", &M_DrawControl }, + { "DRAWJOYSTICK", &M_DrawJoystick }, + { "DRAWMONITORTOGGLES", &M_DrawMonitorToggles }, { NULL, NULL } }; diff --git a/src/m_menu.c b/src/m_menu.c index ae2bca645..d1416144a 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -252,15 +252,6 @@ static void M_Connect(INT32 choice); menu_t OP_ControlsDef, OP_AllControlsDef; menu_t OP_MouseOptionsDef; -static void M_Setup1PJoystickMenu(INT32 choice); -static void M_Setup2PJoystickMenu(INT32 choice); -static void M_Setup3PJoystickMenu(INT32 choice); -static void M_Setup4PJoystickMenu(INT32 choice); - -static void M_AssignJoystick(INT32 choice); -static void M_ChangeControl(INT32 choice); -static void M_ResetControls(INT32 choice); - //camera options menu menu_t OP_CamOptionsDef; menu_t OP_Player1CamOptionsDef, OP_Player2CamOptionsDef, OP_Player3CamOptionsDef, OP_Player4CamOptionsDef; @@ -291,39 +282,19 @@ static patch_t *addonsp[NUM_EXT+5]; // Replay hut menu_t MISC_ReplayHutDef; menu_t MISC_ReplayOptionsDef; -static void M_DrawReplayStartMenu(void); -static void M_HutStartReplay(INT32 choice); - -static void M_DrawPlaybackMenu(void); -static void M_PlaybackRewind(INT32 choice); -static void M_PlaybackPause(INT32 choice); -static void M_PlaybackFastForward(INT32 choice); -static void M_PlaybackAdvance(INT32 choice); -static void M_PlaybackSetViews(INT32 choice); -static void M_PlaybackAdjustView(INT32 choice); -static void M_PlaybackToggleFreecam(INT32 choice); -static void M_PlaybackQuit(INT32 choice); static UINT8 playback_enterheld = 0; // horrid hack to prevent holding the button from being extremely fucked // Drawing functions static void M_DrawGenericBackgroundMenu(void); -static void M_DrawMusicTest(void); static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade); -static void M_DrawImageDef(void); //static void M_DrawLoad(void); //static void M_DrawNightsAttackMenu(void); //static void M_DrawSetupChoosePlayerMenu(void); -static void M_DrawControl(void); -static void M_DrawMonitorToggles(void); static void M_DrawConnectMenu(void); -static void M_DrawJoystick(void); // Handling functions -static void M_HandleMusicTest(INT32 choice); -static void M_HandleImageDef(INT32 choice); //static void M_HandleLoadSave(INT32 choice); -static void M_HandleMonitorToggles(INT32 choice); // uhhhhhh hack? static void M_ChangecontrolResponse(event_t *ev); @@ -335,7 +306,7 @@ static void Dummymenuplayer_OnChange(void); static void Dummystaff_OnChange(void); // temporary measure until menu_t and menupres_t are merged (hopefully) -menu_t MP_PlayerSetupDef, MP_ServerDef, MP_OfflineServerDef, OP_AddonsOptionsDef, MISC_AddonsDef, MPauseDef, MAPauseDef, SR_EmblemHintDef, SR_PandoraDef, MISC_ChangeLevelDef; +menu_t MP_PlayerSetupDef, MP_ServerDef, MP_OfflineServerDef, OP_AddonsOptionsDef, MISC_AddonsDef, MPauseDef, MAPauseDef, SR_EmblemHintDef, SR_PandoraDef, MISC_ChangeLevelDef, MISC_ReplayStartDef, PlaybackMenuDef, MISC_HelpDef, SR_MusicTestDef, OP_JoystickSetDef; menu_t *menunum2menudef[NUMMENUTYPES] = { [MN_OP_CAMERA] = &OP_CamOptionsDef, [MN_OP_P1CAMERA] = &OP_Player1CamOptionsDef, @@ -344,7 +315,7 @@ menu_t *menunum2menudef[NUMMENUTYPES] = { [MN_OP_P4CAMERA] = &OP_Player4CamOptionsDef, [MN_OP_MAIN] = &OP_MainDef, - [MN_OP_CHANGECONTROLS] = &OP_ControlsDef, + [MN_OP_CONTROLSETUP] = &OP_ControlsDef, [MN_OP_VIDEO] = &OP_VideoOptionsDef, [MN_OP_VIDEOMODE] = &OP_VideoModeDef, [MN_OP_OPENGL] = &OP_OpenGLOptionsDef, @@ -391,6 +362,14 @@ menu_t *menunum2menudef[NUMMENUTYPES] = { [MN_CHANGESPECTATE] = &MISC_ChangeSpectateDef, [MN_CHANGELEVEL] = &MISC_ChangeLevelDef, + // who even cares how i sort this shit anymore + [MN_MISC_REPLAYSTART] = &MISC_ReplayStartDef, + [MN_PLAYBACK] = &PlaybackMenuDef, + [MN_HELP] = &MISC_HelpDef, + [MN_SR_SOUNDTEST] = &SR_MusicTestDef, + [MN_OP_CHANGECONTROLS] = &OP_AllControlsDef, + [MN_OP_JOYSTICKSET] = &OP_JoystickSetDef, + [MN_MAIN] = &MainDef, [MN_FIRSTFREESLOT] = &FreeslotTest, @@ -4762,7 +4741,7 @@ static void M_StopMessage(INT32 choice) // Draw an Image Def. Aka, Help images. // Defines what image is used in (menuitem_t)->text. // You can even put multiple images in one menu! -static void M_DrawImageDef(void) +void M_DrawImageDef(void) { patch_t *patch = W_CachePatchName(currentMenu->menuitems[itemOn].text,PU_CACHE); if (patch->width <= BASEVIDWIDTH) @@ -4790,7 +4769,7 @@ static void M_DrawImageDef(void) // Handles the ImageDefs. Just a specialized function that // uses left and right movement. -static void M_HandleImageDef(INT32 choice) +void M_HandleImageDef(INT32 choice) { boolean exitmenu = false; @@ -5833,7 +5812,7 @@ void M_DrawReplayHut(void) } } -static void M_DrawReplayStartMenu(void) +void M_DrawReplayStartMenu(void) { const char *warning; UINT8 i; @@ -5958,7 +5937,7 @@ void M_QuitReplayHut(INT32 choice) demo.inreplayhut = false; } -static void M_HutStartReplay(INT32 choice) +void M_HutStartReplay(INT32 choice) { (void)choice; @@ -5974,7 +5953,7 @@ void M_SetPlaybackMenuPointer(void) itemOn = playback_pause; } -static void M_DrawPlaybackMenu(void) +void M_DrawPlaybackMenu(void) { INT16 i; patch_t *icon; @@ -6105,7 +6084,7 @@ static void M_DrawPlaybackMenu(void) } } -static void M_PlaybackRewind(INT32 choice) +void M_PlaybackRewind(INT32 choice) { static tic_t lastconfirmtime; @@ -6131,7 +6110,7 @@ static void M_PlaybackRewind(INT32 choice) CV_SetValue(&cv_playbackspeed, 1); } -static void M_PlaybackPause(INT32 choice) +void M_PlaybackPause(INT32 choice) { (void)choice; @@ -6151,7 +6130,7 @@ static void M_PlaybackPause(INT32 choice) CV_SetValue(&cv_playbackspeed, 1); } -static void M_PlaybackFastForward(INT32 choice) +void M_PlaybackFastForward(INT32 choice) { (void)choice; @@ -6164,7 +6143,7 @@ static void M_PlaybackFastForward(INT32 choice) CV_SetValue(&cv_playbackspeed, cv_playbackspeed.value == 1 ? 4 : 1); } -static void M_PlaybackAdvance(INT32 choice) +void M_PlaybackAdvance(INT32 choice) { (void)choice; @@ -6174,7 +6153,7 @@ static void M_PlaybackAdvance(INT32 choice) } -static void M_PlaybackSetViews(INT32 choice) +void M_PlaybackSetViews(INT32 choice) { if (demo.freecam) @@ -6192,13 +6171,13 @@ static void M_PlaybackSetViews(INT32 choice) } } -static void M_PlaybackAdjustView(INT32 choice) +void M_PlaybackAdjustView(INT32 choice) { G_AdjustView(itemOn - playback_viewcount, (choice > 0) ? 1 : -1, true); } // this one's rather tricky -static void M_PlaybackToggleFreecam(INT32 choice) +void M_PlaybackToggleFreecam(INT32 choice) { (void)choice; M_ClearMenus(true); @@ -6223,7 +6202,7 @@ static void M_PlaybackToggleFreecam(INT32 choice) } -static void M_PlaybackQuit(INT32 choice) +void M_PlaybackQuit(INT32 choice) { (void)choice; G_StopDemo(); @@ -6785,7 +6764,7 @@ void M_MusicTest(INT32 choice) M_SetupNextMenu(&SR_MusicTestDef); } -static void M_DrawMusicTest(void) +void M_DrawMusicTest(void) { INT32 x, y, i; @@ -7001,7 +6980,7 @@ static void M_DrawMusicTest(void) } } -static void M_HandleMusicTest(INT32 choice) +void M_HandleMusicTest(INT32 choice) { boolean exitmenu = false; // exit to previous menu @@ -10743,7 +10722,7 @@ void M_ScreenshotOptions(INT32 choice) // Start the controls menu, setting it up for either the console player, // or the secondary splitscreen player -static void M_DrawJoystick(void) +void M_DrawJoystick(void) { INT32 i; INT32 compareval; @@ -10805,31 +10784,31 @@ void M_SetupJoystickMenu(INT32 choice) M_SetupNextMenu(&OP_JoystickSetDef); } -static void M_Setup1PJoystickMenu(INT32 choice) +void M_Setup1PJoystickMenu(INT32 choice) { setupcontrolplayer = 1; M_SetupJoystickMenu(choice); } -static void M_Setup2PJoystickMenu(INT32 choice) +void M_Setup2PJoystickMenu(INT32 choice) { setupcontrolplayer = 2; M_SetupJoystickMenu(choice); } -static void M_Setup3PJoystickMenu(INT32 choice) +void M_Setup3PJoystickMenu(INT32 choice) { setupcontrolplayer = 3; M_SetupJoystickMenu(choice); } -static void M_Setup4PJoystickMenu(INT32 choice) +void M_Setup4PJoystickMenu(INT32 choice) { setupcontrolplayer = 4; M_SetupJoystickMenu(choice); } -static void M_AssignJoystick(INT32 choice) +void M_AssignJoystick(INT32 choice) { const UINT8 p = setupcontrolplayer-1; @@ -11008,7 +10987,7 @@ void M_Setup4PControlsMenu(INT32 choice) #define controlheight 18 // Draws the Customise Controls menu -static void M_DrawControl(void) +void M_DrawControl(void) { char tmp[32*MAXINPUTMAPPING]; // should be enough :^) INT32 x, y, w, i, max, cursory = 0, iter; @@ -11228,7 +11207,7 @@ static void M_ChangecontrolResponse(event_t *ev) M_StopMessage(0); } -static void M_ChangeControl(INT32 choice) +void M_ChangeControl(INT32 choice) { // This buffer assumes a 35-character message (per below) plus a max control name limit of 32 chars (per controltochangetext) // If you change the below message, then change the size of this buffer! @@ -11265,7 +11244,7 @@ static void M_ResetControlsResponse(INT32 ch) S_StartSound(NULL, sfx_s224); } -static void M_ResetControls(INT32 choice) +void M_ResetControls(INT32 choice) { (void)choice; M_StartMessage(va(M_GetText("Reset Player %d's controls to defaults?\n\n(Press 'Y' to confirm)\n"), setupcontrolplayer), FUNCPTRCAST(M_ResetControlsResponse), MM_YESNO); @@ -11561,7 +11540,7 @@ void M_HandleVideoMode(INT32 ch) static tic_t shitsfree = 0; -static void M_DrawMonitorToggles(void) +void M_DrawMonitorToggles(void) { const INT32 edges = 4; const INT32 height = 4; @@ -11732,7 +11711,7 @@ static void M_DrawMonitorToggles(void) V_DrawCenteredString(BASEVIDWIDTH/2, currentMenu->y, highlightflags, va("* %s *", currentMenu->menuitems[itemOn].text)); } -static void M_HandleMonitorToggles(INT32 choice) +void M_HandleMonitorToggles(INT32 choice) { const INT32 width = 6, height = 4; INT32 column = itemOn/height, row = itemOn%height; diff --git a/src/m_menu.h b/src/m_menu.h index 47e3a363f..a342df50d 100644 --- a/src/m_menu.h +++ b/src/m_menu.h @@ -136,7 +136,7 @@ typedef enum MN_CHANGELEVEL, MN_MAPAUSE, - // MN_HELP, + MN_HELP, // SRB2Kart MN_OP_HUD, @@ -153,6 +153,9 @@ typedef enum MN_MISC_REPLAYHUT, MN_MISC_DISCORDREQUESTS, MN_CHANGESPECTATE, + MN_MISC_REPLAYSTART, + MN_PLAYBACK, + MN_OP_CONTROLSETUP, MN_SPECIAL, @@ -442,6 +445,25 @@ void M_ConfirmTeamScramble(INT32 choice); void M_ConfirmTeamChange(INT32 choice); void M_ConfirmSpectateChange(INT32 choice); void M_ChangeLevel(INT32 choice); +void M_HutStartReplay(INT32 choice); +void M_PlaybackRewind(INT32 choice); +void M_PlaybackPause(INT32 choice); +void M_PlaybackFastForward(INT32 choice); +void M_PlaybackAdvance(INT32 choice); +void M_PlaybackSetViews(INT32 choice); +void M_PlaybackAdjustView(INT32 choice); +void M_PlaybackToggleFreecam(INT32 choice); +void M_PlaybackQuit(INT32 choice); +void M_HandleImageDef(INT32 choice); +void M_HandleMusicTest(INT32 choice); +void M_Setup1PJoystickMenu(INT32 choice); +void M_Setup2PJoystickMenu(INT32 choice); +void M_Setup3PJoystickMenu(INT32 choice); +void M_Setup4PJoystickMenu(INT32 choice); +void M_ResetControls(INT32 choice); +void M_ChangeControl(INT32 choice); +void M_AssignJoystick(INT32 choice); +void M_HandleMonitorToggles(INT32 choice); void M_DrawGenericMenu(void); void M_DrawCenteredMenu(void); @@ -459,6 +481,13 @@ void M_DrawSkyRoom(void); void M_DrawHUDOptions(void); void M_DrawAddons(void); void M_DrawEmblemHints(void); +void M_DrawReplayStartMenu(void); +void M_DrawPlaybackMenu(void); +void M_DrawImageDef(void); +void M_DrawMusicTest(void); +void M_DrawControl(void); +void M_DrawJoystick(void); +void M_DrawMonitorToggles(void); // Maybe this goes here????? Who knows. boolean M_MouseNeeded(void);