SOC the entire main menu

This commit is contained in:
GenericHeroGuy 2025-03-18 23:16:44 +01:00
parent d916fee3a6
commit 56dcba3594
4 changed files with 125 additions and 56 deletions

View file

@ -2147,6 +2147,10 @@ void readtextprompt(MYFILE *f, INT32 num)
// super secret menu cvars... :shushing_face: // super secret menu cvars... :shushing_face:
static struct { const char *name; consvar_t *var; } HIDDENVARS[] = { static struct { const char *name; consvar_t *var; } HIDDENVARS[] = {
{ "CHOOSESKIN", &cv_chooseskin },
{ "DUMMYGPDIFFICULTY", &cv_dummygpdifficulty },
{ "DUMMYGPENCORE", &cv_dummygpencore },
{ "DUMMYGPCUP", &cv_dummygpcup },
{ "NEXTMAP", &cv_nextmap }, { "NEXTMAP", &cv_nextmap },
{ "NEWGAMETYPE", &cv_newgametype }, { "NEWGAMETYPE", &cv_newgametype },
{ NULL, NULL } { NULL, NULL }
@ -2207,6 +2211,8 @@ static void readmenuitem(MYFILE *f, menu_t *menudef, char *itemname)
flags = IT_SECRET; flags = IT_SECRET;
else if (fastcmp(word+4, "WHITE")) else if (fastcmp(word+4, "WHITE"))
flags = IT_WHITESTRING; flags = IT_WHITESTRING;
else if (fastcmp(word+4, "DISABLED"))
flags = IT_DISABLED;
else if (word[4]) else if (word[4])
{ {
deh_warning("MenuItem %s: unknown word '%s'", "", word); deh_warning("MenuItem %s: unknown word '%s'", "", word);
@ -2276,8 +2282,23 @@ static void readmenuitem(MYFILE *f, menu_t *menudef, char *itemname)
menuitem->status |= IT_SUBMENU; menuitem->status |= IT_SUBMENU;
menuitem->itemaction.submenu = menunum2menudef[mn]; menuitem->itemaction.submenu = menunum2menudef[mn];
} }
else if (fastcmp(word, "CALL") || fastcmp(word, "KEYHANDLER")) else if (fastncmp(word, "CALL", 4) || fastcmp(word, "KEYHANDLER"))
{ {
UINT16 flags;
if (word[0] == 'C')
{
flags = IT_CALL;
if (fastcmp(word+4, "NOTMODIFIED"))
flags |= IT_CALL_NOTMODIFIED;
else if (word[4])
{
deh_warning("MenuItem %s: unknown word '%s'", "", word);
continue;
}
}
else
flags = IT_KEYHANDLER;
if (actionset) if (actionset)
{ {
deh_warning("MenuItem %s: action already set!", ""); deh_warning("MenuItem %s: action already set!", "");
@ -2290,7 +2311,7 @@ static void readmenuitem(MYFILE *f, menu_t *menudef, char *itemname)
continue; continue;
} }
actionset = true; actionset = true;
menuitem->status |= word[0] == 'C' ? IT_CALL : IT_KEYHANDLER; menuitem->status |= flags;
menuitem->itemaction.routine = routine; menuitem->itemaction.routine = routine;
} }
else if (fastcmp(word, "ALPHAKEY") || fastcmp(word, "Y")) else if (fastcmp(word, "ALPHAKEY") || fastcmp(word, "Y"))
@ -2302,6 +2323,10 @@ static void readmenuitem(MYFILE *f, menu_t *menudef, char *itemname)
} }
while (!myfeof(f)); // finish when the line is empty while (!myfeof(f)); // finish when the line is empty
// text pointer cannot be null
if (!textset)
menuitem->text = "";
Z_Free(s); Z_Free(s);
} }

View file

@ -693,13 +693,33 @@ const char *const MENUTYPES_LIST[] = {
"OP_CAMERA", "OP_CAMERA",
"OP_P3CAMERA", "OP_P3CAMERA",
"OP_P4CAMERA", "OP_P4CAMERA",
"MISC_REPLAY", "MISC_REPLAYOPTIONS",
"MP_OFFLINESERVER", "MP_OFFLINESERVER",
"SP_GRANDPRIX",
"MISC_REPLAYHUT",
"SPECIAL" "SPECIAL"
}; };
struct menu_routine_s const MENU_ROUTINES[] = { struct menu_routine_s const MENU_ROUTINES[] = {
{ "SINGLEPLAYERMENU", &M_SinglePlayerMenu },
{ "OPTIONS", &M_Options },
{ "ADDONS", &M_Addons },
{ "QUITSRB2", &M_QuitSRB2 },
{ "STATISTICS", &M_Statistics },
{ "HANDLELEVELSTATS", &M_HandleLevelStats },
{ "REPLAYHUT", &M_ReplayHut },
{ "QUITREPLAYHUT", &M_QuitReplayHut },
{ "HANDLEREPLAYHUTLIST", &M_HandleReplayHutList },
{ "GRANDPRIXTEMP", &M_GrandPrixTemp },
{ "TIMEATTACK", &M_TimeAttack },
{ "ITEMBREAKER", &M_ItemBreaker },
{ "STARTGRANDPRIX", &M_StartGrandPrix },
{ "QUITTIMEATTACKMENU", &M_QuitTimeAttackMenu },
{ "CHOOSETIMEATTACK", &M_ChooseTimeAttack },
{ "SETGUESTREPLAY", &M_SetGuestReplay },
{ "REPLAYTIMEATTACK", &M_ReplayTimeAttack },
{ "HANDLESTAFFREPLAY", &M_HandleStaffReplay },
{ "SETUPMULTIHANDLER", &M_SetupMultiHandler }, { "SETUPMULTIHANDLER", &M_SetupMultiHandler },
{ "HANDLESETUPMULTIPLAYER", &M_HandleSetupMultiPlayer }, { "HANDLESETUPMULTIPLAYER", &M_HandleSetupMultiPlayer },
{ "QUITMULTIPLAYERMENU", &M_QuitMultiPlayerMenu }, { "QUITMULTIPLAYERMENU", &M_QuitMultiPlayerMenu },
@ -726,11 +746,17 @@ struct menu_routine_s const MENU_ROUTINES[] = {
{ "MANUAL", &M_Manual }, { "MANUAL", &M_Manual },
{ "CREDITS", &M_Credits }, { "CREDITS", &M_Credits },
{ "BLANCREDITS", &M_BlanCredits }, { "BLANCREDITS", &M_BlanCredits },
{ "HANDLEADDONS", &M_HandleAddons },
{ NULL, NULL } { NULL, NULL }
}; };
struct menu_drawer_s const MENU_DRAWERS[] = { struct menu_drawer_s const MENU_DRAWERS[] = {
{ "DRAWGENERICMENU", &M_DrawGenericMenu }, { "DRAWGENERICMENU", &M_DrawGenericMenu },
{ "DRAWCENTEREDMENU", &M_DrawCenteredMenu },
{ "DRAWCHECKLIST", &M_DrawChecklist },
{ "DRAWLEVELSTATS", &M_DrawLevelStats },
{ "DRAWREPLAYHUT", &M_DrawReplayHut },
{ "DRAWTIMEATTACKMENU", &M_DrawTimeAttackMenu },
{ "DRAWMPMAINMENU", &M_DrawMPMainMenu }, { "DRAWMPMAINMENU", &M_DrawMPMainMenu },
{ "DRAWSETUPMULTIPLAYERMENU", &M_DrawSetupMultiPlayerMenu }, { "DRAWSETUPMULTIPLAYERMENU", &M_DrawSetupMultiPlayerMenu },
{ "DRAWSERVERMENU", &M_DrawServerMenu }, { "DRAWSERVERMENU", &M_DrawServerMenu },
@ -738,6 +764,7 @@ struct menu_drawer_s const MENU_DRAWERS[] = {
{ "DRAWVIDEOMODE", &M_DrawVideoMode }, { "DRAWVIDEOMODE", &M_DrawVideoMode },
{ "DRAWSKYROOM", &M_DrawSkyRoom }, { "DRAWSKYROOM", &M_DrawSkyRoom },
{ "DRAWHUDOPTIONS", &M_DrawHUDOptions }, { "DRAWHUDOPTIONS", &M_DrawHUDOptions },
{ "DRAWADDONS", &M_DrawAddons },
{ NULL, NULL } { NULL, NULL }
}; };

View file

@ -233,8 +233,6 @@ static char *M_GetConditionString(condition_t cond);
menu_t SR_MainDef, SR_UnlockChecklistDef; menu_t SR_MainDef, SR_UnlockChecklistDef;
// Misc. Main Menu // Misc. Main Menu
static void M_SinglePlayerMenu(INT32 choice);
static void M_Options(INT32 choice);
static void M_SelectableClearMenus(INT32 choice); static void M_SelectableClearMenus(INT32 choice);
static void M_Retry(INT32 choice); static void M_Retry(INT32 choice);
static void M_EndGame(INT32 choice); static void M_EndGame(INT32 choice);
@ -247,23 +245,12 @@ static void M_ConfirmTeamChange(INT32 choice);
static void M_ConfirmSpectateChange(INT32 choice); static void M_ConfirmSpectateChange(INT32 choice);
//static void M_SecretsMenu(INT32 choice); //static void M_SecretsMenu(INT32 choice);
//static void M_SetupChoosePlayer(INT32 choice); //static void M_SetupChoosePlayer(INT32 choice);
static void M_QuitSRB2(INT32 choice);
menu_t SP_MainDef, MP_MainDef, OP_MainDef; menu_t SP_MainDef, MP_MainDef, OP_MainDef;
menu_t MISC_ScrambleTeamDef, MISC_ChangeTeamDef, MISC_ChangeSpectateDef; menu_t MISC_ScrambleTeamDef, MISC_ChangeTeamDef, MISC_ChangeSpectateDef;
// Single Player // Single Player
static void M_GrandPrixTemp(INT32 choice);
static void M_StartGrandPrix(INT32 choice);
static void M_TimeAttack(INT32 choice);
static void M_QuitTimeAttackMenu(INT32 choice);
static void M_ItemBreaker(INT32 choice);
static void M_Statistics(INT32 choice);
static void M_HandleStaffReplay(INT32 choice);
static void M_ReplayTimeAttack(INT32 choice);
static void M_ChooseTimeAttack(INT32 choice);
//static void M_ChooseNightsAttack(INT32 choice); //static void M_ChooseNightsAttack(INT32 choice);
static void M_ModeAttackEndGame(INT32 choice); static void M_ModeAttackEndGame(INT32 choice);
static void M_SetGuestReplay(INT32 choice);
//static void M_ChoosePlayer(INT32 choice); //static void M_ChoosePlayer(INT32 choice);
menu_t SP_LevelStatsDef; menu_t SP_LevelStatsDef;
static menu_t SP_GrandPrixTempDef; static menu_t SP_GrandPrixTempDef;
@ -317,7 +304,6 @@ menu_t OP_AdvServerOptionsDef;
//menu_t OP_NetgameOptionsDef, OP_GametypeOptionsDef; //menu_t OP_NetgameOptionsDef, OP_GametypeOptionsDef;
menu_t OP_MonitorToggleDef; menu_t OP_MonitorToggleDef;
static void M_Addons(INT32 choice);
static patch_t *addonsp[NUM_EXT+5]; static patch_t *addonsp[NUM_EXT+5];
#define numaddonsshown 4 #define numaddonsshown 4
@ -325,10 +311,7 @@ static patch_t *addonsp[NUM_EXT+5];
// Replay hut // Replay hut
menu_t MISC_ReplayHutDef; menu_t MISC_ReplayHutDef;
menu_t MISC_ReplayOptionsDef; menu_t MISC_ReplayOptionsDef;
static void M_HandleReplayHutList(INT32 choice);
static void M_DrawReplayHut(void);
static void M_DrawReplayStartMenu(void); static void M_DrawReplayStartMenu(void);
static void M_QuitReplayHut(INT32 choice);
static void M_HutStartReplay(INT32 choice); static void M_HutStartReplay(INT32 choice);
static void M_DrawPlaybackMenu(void); static void M_DrawPlaybackMenu(void);
@ -345,17 +328,12 @@ static UINT8 playback_enterheld = 0; // horrid hack to prevent holding the butto
// Drawing functions // Drawing functions
static void M_DrawGenericBackgroundMenu(void); static void M_DrawGenericBackgroundMenu(void);
static void M_DrawCenteredMenu(void);
static void M_DrawAddons(void);
static void M_DrawChecklist(void);
static void M_DrawMusicTest(void); static void M_DrawMusicTest(void);
static void M_DrawEmblemHints(void); static void M_DrawEmblemHints(void);
static void M_DrawPauseMenu(void); static void M_DrawPauseMenu(void);
static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade); static void M_DrawLevelSelectOnly(boolean leftfade, boolean rightfade);
static void M_DrawImageDef(void); static void M_DrawImageDef(void);
//static void M_DrawLoad(void); //static void M_DrawLoad(void);
static void M_DrawLevelStats(void);
static void M_DrawTimeAttackMenu(void);
//static void M_DrawNightsAttackMenu(void); //static void M_DrawNightsAttackMenu(void);
//static void M_DrawSetupChoosePlayerMenu(void); //static void M_DrawSetupChoosePlayerMenu(void);
static void M_DrawControl(void); static void M_DrawControl(void);
@ -365,11 +343,9 @@ static void M_DrawJoystick(void);
// Handling functions // Handling functions
static void M_ExitPandorasBox(INT32 choice); static void M_ExitPandorasBox(INT32 choice);
static void M_HandleAddons(INT32 choice);
static void M_HandleMusicTest(INT32 choice); static void M_HandleMusicTest(INT32 choice);
static void M_HandleImageDef(INT32 choice); static void M_HandleImageDef(INT32 choice);
//static void M_HandleLoadSave(INT32 choice); //static void M_HandleLoadSave(INT32 choice);
static void M_HandleLevelStats(INT32 choice);
static void M_HandleMonitorToggles(INT32 choice); static void M_HandleMonitorToggles(INT32 choice);
// uhhhhhh hack? // uhhhhhh hack?
@ -382,7 +358,7 @@ static void Dummymenuplayer_OnChange(void);
static void Dummystaff_OnChange(void); static void Dummystaff_OnChange(void);
// temporary measure until menu_t and menupres_t are merged (hopefully) // temporary measure until menu_t and menupres_t are merged (hopefully)
menu_t MP_PlayerSetupDef, MP_ServerDef, MP_OfflineServerDef, OP_AddonsOptionsDef; menu_t MP_PlayerSetupDef, MP_ServerDef, MP_OfflineServerDef, OP_AddonsOptionsDef, MISC_AddonsDef;
menu_t *menunum2menudef[NUMMENUTYPES] = { menu_t *menunum2menudef[NUMMENUTYPES] = {
[MN_OP_CAMERA] = &OP_CamOptionsDef, [MN_OP_CAMERA] = &OP_CamOptionsDef,
[MN_OP_P1CAMERA] = &OP_Player1CamOptionsDef, [MN_OP_P1CAMERA] = &OP_Player1CamOptionsDef,
@ -407,13 +383,27 @@ menu_t *menunum2menudef[NUMMENUTYPES] = {
[MN_OP_ADDONS] = &OP_AddonsOptionsDef, [MN_OP_ADDONS] = &OP_AddonsOptionsDef,
[MN_OP_SCREENSHOTS] = &OP_ScreenshotOptionsDef, [MN_OP_SCREENSHOTS] = &OP_ScreenshotOptionsDef,
[MN_OP_ERASEDATA] = &OP_EraseDataDef, [MN_OP_ERASEDATA] = &OP_EraseDataDef,
[MN_MISC_REPLAY] = &MISC_ReplayOptionsDef, [MN_MISC_REPLAYOPTIONS] = &MISC_ReplayOptionsDef,
[MN_MP_MAIN] = &MP_MainDef, [MN_MP_MAIN] = &MP_MainDef,
[MN_MP_PLAYERSETUP] = &MP_PlayerSetupDef, [MN_MP_PLAYERSETUP] = &MP_PlayerSetupDef,
[MN_MP_SERVER] = &MP_ServerDef, [MN_MP_SERVER] = &MP_ServerDef,
[MN_MP_OFFLINESERVER] = &MP_OfflineServerDef, [MN_MP_OFFLINESERVER] = &MP_OfflineServerDef,
[MN_SP_MAIN] = &SP_MainDef,
[MN_SP_GRANDPRIX] = &SP_GrandPrixTempDef,
[MN_SP_TIMEATTACK] = &SP_TimeAttackDef,
[MN_SP_GUESTREPLAY] = &SP_GuestReplayDef,
[MN_SP_REPLAY] = &SP_ReplayDef,
[MN_SP_GHOST] = &SP_GhostDef,
[MN_SR_MAIN] = &SR_MainDef,
[MN_SR_UNLOCKCHECKLIST] = &SR_UnlockChecklistDef,
[MN_SP_LEVELSTATS] = &SP_LevelStatsDef,
[MN_MISC_REPLAYHUT] = &MISC_ReplayHutDef,
[MN_AD_MAIN] = &MISC_AddonsDef,
[MN_MAIN] = &MainDef, [MN_MAIN] = &MainDef,
[MN_FIRSTFREESLOT] = &FreeslotTest, [MN_FIRSTFREESLOT] = &FreeslotTest,
@ -498,9 +488,9 @@ static consvar_t cv_dummystaff = CVAR_INIT ("dummystaff", "0", CV_HIDEN|CV_CALL,
static CV_PossibleValue_t dummygpdifficulty_cons_t[] = {{0, "Easy"}, {1, "Normal"}, {2, "Hard"}, {3, "Master"}, {0, NULL}}; static CV_PossibleValue_t dummygpdifficulty_cons_t[] = {{0, "Easy"}, {1, "Normal"}, {2, "Hard"}, {3, "Master"}, {0, NULL}};
static CV_PossibleValue_t dummygpcup_cons_t[50] = {{1, "TEMP"}}; // A REALLY BIG NUMBER, SINCE THIS IS TEMP UNTIL NEW MENUS static CV_PossibleValue_t dummygpcup_cons_t[50] = {{1, "TEMP"}}; // A REALLY BIG NUMBER, SINCE THIS IS TEMP UNTIL NEW MENUS
static consvar_t cv_dummygpdifficulty = CVAR_INIT ("dummygpdifficulty", "Normal", CV_HIDEN, dummygpdifficulty_cons_t, NULL); consvar_t cv_dummygpdifficulty = CVAR_INIT ("dummygpdifficulty", "Normal", CV_HIDEN, dummygpdifficulty_cons_t, NULL);
static consvar_t cv_dummygpencore = CVAR_INIT ("dummygpencore", "Off", CV_HIDEN, CV_OnOff, NULL); consvar_t cv_dummygpencore = CVAR_INIT ("dummygpencore", "Off", CV_HIDEN, CV_OnOff, NULL);
static consvar_t cv_dummygpcup = CVAR_INIT ("dummygpcup", "TEMP", CV_HIDEN, dummygpcup_cons_t, NULL); consvar_t cv_dummygpcup = CVAR_INIT ("dummygpcup", "TEMP", CV_HIDEN, dummygpcup_cons_t, NULL);
// ========================================================================== // ==========================================================================
// ORGANIZATION START. // ORGANIZATION START.
@ -4252,7 +4242,7 @@ static void M_DrawPauseMenu(void)
M_DrawGenericMenu(); M_DrawGenericMenu();
} }
static void M_DrawCenteredMenu(void) void M_DrawCenteredMenu(void)
{ {
INT32 x, y, i, cursory = 0; INT32 x, y, i, cursory = 0;
@ -4864,7 +4854,7 @@ void M_AddonsOptions(INT32 choice)
#define LOCATIONSTRING1 "Visit \x83SRB2.ORG/MODS\x80 to get & make addons!" #define LOCATIONSTRING1 "Visit \x83SRB2.ORG/MODS\x80 to get & make addons!"
#define LOCATIONSTRING2 "Visit \x88SRB2.ORG/MODS\x80 to get & make addons!" #define LOCATIONSTRING2 "Visit \x88SRB2.ORG/MODS\x80 to get & make addons!"
static void M_Addons(INT32 choice) void M_Addons(INT32 choice)
{ {
const char *pathname = "."; const char *pathname = ".";
@ -5071,7 +5061,7 @@ static boolean M_AddonsRefresh(void)
return false; return false;
} }
static void M_DrawAddons(void) void M_DrawAddons(void)
{ {
INT32 x, y; INT32 x, y;
ssize_t i, m; ssize_t i, m;
@ -5257,7 +5247,7 @@ static boolean M_ChangeStringAddons(INT32 choice)
} }
#undef len #undef len
static void M_HandleAddons(INT32 choice) void M_HandleAddons(INT32 choice)
{ {
boolean exitmenu = false; // exit to previous menu boolean exitmenu = false; // exit to previous menu
@ -5471,7 +5461,7 @@ void M_ReplayHut(INT32 choice)
S_ChangeMusicInternal("replst", true); S_ChangeMusicInternal("replst", true);
} }
static void M_HandleReplayHutList(INT32 choice) void M_HandleReplayHutList(INT32 choice)
{ {
switch (choice) switch (choice)
{ {
@ -5710,7 +5700,7 @@ static void DrawReplayHutReplayInfo(void)
} }
} }
static void M_DrawReplayHut(void) void M_DrawReplayHut(void)
{ {
INT32 x, y, cursory = 0; INT32 x, y, cursory = 0;
INT16 i; INT16 i;
@ -5966,7 +5956,7 @@ static void M_DrawReplayStartMenu(void)
V_DrawSmallString(4, BASEVIDHEIGHT-14, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, warning); V_DrawSmallString(4, BASEVIDHEIGHT-14, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, warning);
} }
static void M_QuitReplayHut(INT32 choice) void M_QuitReplayHut(INT32 choice)
{ {
(void)choice; (void)choice;
@ -6381,7 +6371,7 @@ static void M_ConfirmSpectateChange(INT32 choice)
} }
} }
static void M_Options(INT32 choice) void M_Options(INT32 choice)
{ {
(void)choice; (void)choice;
@ -6563,7 +6553,7 @@ static char *M_GetConditionString(condition_t cond)
} }
#define NUMCHECKLIST 23 #define NUMCHECKLIST 23
static void M_DrawChecklist(void) void M_DrawChecklist(void)
{ {
UINT32 i, line = 0, c; UINT32 i, line = 0, c;
INT32 lastid; INT32 lastid;
@ -7251,7 +7241,7 @@ void M_BlanCredits(INT32 choice)
// SINGLE PLAYER MENU // SINGLE PLAYER MENU
// ================== // ==================
static void M_SinglePlayerMenu(INT32 choice) void M_SinglePlayerMenu(INT32 choice)
{ {
(void)choice; (void)choice;
@ -7938,7 +7928,7 @@ static statpage_t statsPages[] = {
#define LENSTATSPAGES (sizeof(statsPages)/sizeof(statsPages[0])) #define LENSTATSPAGES (sizeof(statsPages)/sizeof(statsPages[0]))
#define NUMSTATSPAGES (kartstats.vanilla ? 2 : LENSTATSPAGES) #define NUMSTATSPAGES (kartstats.vanilla ? 2 : LENSTATSPAGES)
static void M_Statistics(INT32 choice) void M_Statistics(INT32 choice)
{ {
INT16 i, j = 0; INT16 i, j = 0;
@ -8160,7 +8150,7 @@ static void M_DrawStatsExtra(void)
#undef DRAWAMOUNTSTAT #undef DRAWAMOUNTSTAT
#undef DRAWTIMESTAT #undef DRAWTIMESTAT
static void M_DrawLevelStats(void) void M_DrawLevelStats(void)
{ {
M_DrawMenuTitle(); M_DrawMenuTitle();
@ -8176,7 +8166,7 @@ static void M_DrawLevelStats(void)
} }
// Handle statistics. // Handle statistics.
static void M_HandleLevelStats(INT32 choice) void M_HandleLevelStats(INT32 choice)
{ {
boolean exitmenu = false; // exit to previous menu boolean exitmenu = false; // exit to previous menu
@ -8240,7 +8230,7 @@ static void M_HandleLevelStats(INT32 choice)
} }
} }
static void M_GrandPrixTemp(INT32 choice) void M_GrandPrixTemp(INT32 choice)
{ {
(void)choice; (void)choice;
if (!M_PrepareCupList()) if (!M_PrepareCupList())
@ -8253,7 +8243,7 @@ static void M_GrandPrixTemp(INT32 choice)
} }
// Start Grand Prix! // Start Grand Prix!
static void M_StartGrandPrix(INT32 choice) void M_StartGrandPrix(INT32 choice)
{ {
cupheader_t *gpcup = kartcupheaders; cupheader_t *gpcup = kartcupheaders;
INT32 levelNum; INT32 levelNum;
@ -8513,7 +8503,7 @@ void M_DrawTimeAttackMenu(void)
} }
// Going to Time Attack menu... // Going to Time Attack menu...
static void M_TimeAttack(INT32 choice) void M_TimeAttack(INT32 choice)
{ {
(void)choice; (void)choice;
@ -8546,7 +8536,7 @@ static void M_TimeAttack(INT32 choice)
} }
// Same as above, but sets a different levellistmode. Should probably be merged... // Same as above, but sets a different levellistmode. Should probably be merged...
static void M_ItemBreaker(INT32 choice) void M_ItemBreaker(INT32 choice)
{ {
(void)choice; (void)choice;
@ -8578,7 +8568,7 @@ static void M_ItemBreaker(INT32 choice)
S_ChangeMusicInternal("racent", true); S_ChangeMusicInternal("racent", true);
} }
static void M_QuitTimeAttackMenu(INT32 choice) void M_QuitTimeAttackMenu(INT32 choice)
{ {
(void)choice; (void)choice;
@ -8587,7 +8577,7 @@ static void M_QuitTimeAttackMenu(INT32 choice)
} }
// Player has selected the "START" from the time attack screen // Player has selected the "START" from the time attack screen
static void M_ChooseTimeAttack(INT32 choice) void M_ChooseTimeAttack(INT32 choice)
{ {
char *gpath; char *gpath;
char nameofdemo[256]; char nameofdemo[256];
@ -8613,7 +8603,7 @@ static void M_ChooseTimeAttack(INT32 choice)
G_DeferedInitNew(false, cv_nextmap.value, (UINT8)(cv_chooseskin.value-1), 0, false); G_DeferedInitNew(false, cv_nextmap.value, (UINT8)(cv_chooseskin.value-1), 0, false);
} }
static void M_HandleStaffReplay(INT32 choice) void M_HandleStaffReplay(INT32 choice)
{ {
boolean exitmenu = false; // exit to previous menu boolean exitmenu = false; // exit to previous menu
lumpnum_t l = W_CheckNumForName(va("%sS%02u",G_BuildMapName(cv_nextmap.value),cv_dummystaff.value)); lumpnum_t l = W_CheckNumForName(va("%sS%02u",G_BuildMapName(cv_nextmap.value),cv_dummystaff.value));
@ -8661,7 +8651,7 @@ static void M_HandleStaffReplay(INT32 choice)
} }
// Player has selected the "REPLAY" from the time attack screen // Player has selected the "REPLAY" from the time attack screen
static void M_ReplayTimeAttack(INT32 choice) void M_ReplayTimeAttack(INT32 choice)
{ {
const char *which; const char *which;
const char *gamemode = (levellistmode == LLM_ITEMBREAKER) ? "IB" : "RA"; const char *gamemode = (levellistmode == LLM_ITEMBREAKER) ? "IB" : "RA";
@ -8786,7 +8776,7 @@ static void M_OverwriteGuest_Last(INT32 choice)
M_OverwriteGuest("last"); M_OverwriteGuest("last");
} }
static void M_SetGuestReplay(INT32 choice) void M_SetGuestReplay(INT32 choice)
{ {
void (*which)(INT32); void (*which)(INT32);
switch(choice) switch(choice)
@ -11916,7 +11906,7 @@ void M_QuitResponse(INT32 ch)
I_Quit(); I_Quit();
} }
static void M_QuitSRB2(INT32 choice) void M_QuitSRB2(INT32 choice)
{ {
// We pick index 0 which is language sensitive, or one at random, // We pick index 0 which is language sensitive, or one at random,
// between 1 and maximum number. // between 1 and maximum number.

View file

@ -147,8 +147,10 @@ typedef enum
MN_OP_CAMERA, MN_OP_CAMERA,
MN_OP_P3CAMERA, MN_OP_P3CAMERA,
MN_OP_P4CAMERA, MN_OP_P4CAMERA,
MN_MISC_REPLAY, MN_MISC_REPLAYOPTIONS,
MN_MP_OFFLINESERVER, MN_MP_OFFLINESERVER,
MN_SP_GRANDPRIX,
MN_MISC_REPLAYHUT,
MN_SPECIAL, MN_SPECIAL,
@ -373,6 +375,23 @@ struct menu_t
void M_SetupNextMenu(menu_t *menudef); void M_SetupNextMenu(menu_t *menudef);
void M_ClearMenus(boolean callexitmenufunc); void M_ClearMenus(boolean callexitmenufunc);
void M_SinglePlayerMenu(INT32 choice);
void M_Options(INT32 choice);
void M_Addons(INT32 choice);
void M_QuitSRB2(INT32 choice);
void M_Statistics(INT32 choice);
void M_HandleLevelStats(INT32 choice);
void M_QuitReplayHut(INT32 choice);
void M_HandleReplayHutList(INT32 choice);
void M_GrandPrixTemp(INT32 choice);
void M_TimeAttack(INT32 choice);
void M_ItemBreaker(INT32 choice);
void M_StartGrandPrix(INT32 choice);
void M_QuitTimeAttackMenu(INT32 choice);
void M_ChooseTimeAttack(INT32 choice);
void M_SetGuestReplay(INT32 choice);
void M_ReplayTimeAttack(INT32 choice);
void M_HandleStaffReplay(INT32 choice);
void M_SetupMultiHandler(INT32 choice); void M_SetupMultiHandler(INT32 choice);
void M_HandleSetupMultiPlayer(INT32 choice); void M_HandleSetupMultiPlayer(INT32 choice);
void M_QuitMultiPlayerMenu(INT32 choice); void M_QuitMultiPlayerMenu(INT32 choice);
@ -399,8 +418,14 @@ void M_EraseData(INT32 choice);
void M_Manual(INT32 choice); void M_Manual(INT32 choice);
void M_Credits(INT32 choice); void M_Credits(INT32 choice);
void M_BlanCredits(INT32 choice); void M_BlanCredits(INT32 choice);
void M_HandleAddons(INT32 choice);
void M_DrawGenericMenu(void); void M_DrawGenericMenu(void);
void M_DrawCenteredMenu(void);
void M_DrawChecklist(void);
void M_DrawLevelStats(void);
void M_DrawReplayHut(void);
void M_DrawTimeAttackMenu(void);
void M_DrawMPMainMenu(void); void M_DrawMPMainMenu(void);
void M_DrawSetupMultiPlayerMenu(void); void M_DrawSetupMultiPlayerMenu(void);
void M_DrawServerMenu(void); void M_DrawServerMenu(void);
@ -408,6 +433,7 @@ void M_DrawVideoMenu(void);
void M_DrawVideoMode(void); void M_DrawVideoMode(void);
void M_DrawSkyRoom(void); void M_DrawSkyRoom(void);
void M_DrawHUDOptions(void); void M_DrawHUDOptions(void);
void M_DrawAddons(void);
// Maybe this goes here????? Who knows. // Maybe this goes here????? Who knows.
boolean M_MouseNeeded(void); boolean M_MouseNeeded(void);
@ -494,6 +520,7 @@ extern description_t description[MAXSKINS];
extern consvar_t cv_showfocuslost; extern consvar_t cv_showfocuslost;
extern consvar_t cv_newgametype, cv_nextmap, cv_chooseskin, cv_serversort; extern consvar_t cv_newgametype, cv_nextmap, cv_chooseskin, cv_serversort;
extern consvar_t cv_dummygpdifficulty, cv_dummygpencore, cv_dummygpcup;
extern CV_PossibleValue_t gametype_cons_t[]; extern CV_PossibleValue_t gametype_cons_t[];
extern char dummystaffname[22]; extern char dummystaffname[22];