Use a named macro for menu hierarchy

This _really_ needs to be a UINT8 array instead of
all this bit-shifting nonsense that saves no space,
but at least this way reading the menu structs doesn't
make me want to die.
This commit is contained in:
fickleheart 2020-02-24 18:00:17 -06:00
parent da122ca2fd
commit 141df606c2
2 changed files with 66 additions and 63 deletions

View File

@ -1687,7 +1687,7 @@ static INT32 highlightflags, recommendedflags, warningflags;
// Sky Room // Sky Room
menu_t SR_PandoraDef = menu_t SR_PandoraDef =
{ {
MN_SR_MAIN + (MN_SR_PANDORA << 6), MTREE2(MN_SR_MAIN, MN_SR_PANDORA),
"M_PANDRA", "M_PANDRA",
sizeof (SR_PandorasBox)/sizeof (menuitem_t), sizeof (SR_PandorasBox)/sizeof (menuitem_t),
&SPauseDef, &SPauseDef,
@ -1701,12 +1701,12 @@ menu_t SR_PandoraDef =
menu_t SR_MainDef = DEFAULTMENUSTYLE(MN_SR_MAIN, "M_SECRET", SR_MainMenu, &MainDef, 60, 40); menu_t SR_MainDef = DEFAULTMENUSTYLE(MN_SR_MAIN, "M_SECRET", SR_MainMenu, &MainDef, 60, 40);
menu_t SR_LevelSelectDef = MAPPLATTERMENUSTYLE( menu_t SR_LevelSelectDef = MAPPLATTERMENUSTYLE(
MN_SR_MAIN + (MN_SR_LEVELSELECT << 6), MTREE2(MN_SR_MAIN, MN_SR_LEVELSELECT),
NULL, SR_LevelSelectMenu); NULL, SR_LevelSelectMenu);
menu_t SR_UnlockChecklistDef = menu_t SR_UnlockChecklistDef =
{ {
MN_SR_MAIN + (MN_SR_UNLOCKCHECKLIST << 6), MTREE2(MN_SR_MAIN, MN_SR_UNLOCKCHECKLIST),
"M_SECRET", "M_SECRET",
1, 1,
&SR_MainDef, &SR_MainDef,
@ -1719,7 +1719,7 @@ menu_t SR_UnlockChecklistDef =
menu_t SR_SoundTestDef = menu_t SR_SoundTestDef =
{ {
MN_SR_MAIN + (MN_SR_SOUNDTEST << 6), MTREE2(MN_SR_MAIN, MN_SR_SOUNDTEST),
NULL, NULL,
sizeof (SR_SoundTestMenu)/sizeof (menuitem_t), sizeof (SR_SoundTestMenu)/sizeof (menuitem_t),
&SR_MainDef, &SR_MainDef,
@ -1732,7 +1732,7 @@ menu_t SR_SoundTestDef =
menu_t SR_EmblemHintDef = menu_t SR_EmblemHintDef =
{ {
MN_SR_MAIN + (MN_SR_EMBLEMHINT << 6), MTREE2(MN_SR_MAIN, MN_SR_EMBLEMHINT),
NULL, NULL,
sizeof (SR_EmblemHintMenu)/sizeof (menuitem_t), sizeof (SR_EmblemHintMenu)/sizeof (menuitem_t),
&SPauseDef, &SPauseDef,
@ -1759,7 +1759,7 @@ menu_t SP_MainDef = //CENTERMENUSTYLE(NULL, SP_MainMenu, &MainDef, 72);
menu_t SP_LoadDef = menu_t SP_LoadDef =
{ {
MN_SP_MAIN + (MN_SP_LOAD << 6), MTREE2(MN_SP_MAIN, MN_SP_LOAD),
"M_PICKG", "M_PICKG",
1, 1,
&SP_MainDef, &SP_MainDef,
@ -1771,12 +1771,12 @@ menu_t SP_LoadDef =
}; };
menu_t SP_LevelSelectDef = MAPPLATTERMENUSTYLE( menu_t SP_LevelSelectDef = MAPPLATTERMENUSTYLE(
MN_SP_MAIN + (MN_SP_LOAD << 6) + (MN_SP_PLAYER << 12) + (MN_SP_LEVELSELECT << 18), MTREE4(MN_SP_MAIN, MN_SP_LOAD, MN_SP_PLAYER, MN_SP_LEVELSELECT),
NULL, SP_LevelSelectMenu); NULL, SP_LevelSelectMenu);
menu_t SP_LevelStatsDef = menu_t SP_LevelStatsDef =
{ {
MN_SP_MAIN + (MN_SP_LEVELSTATS << 6), MTREE2(MN_SP_MAIN, MN_SP_LEVELSTATS),
"M_STATS", "M_STATS",
1, 1,
&SP_MainDef, &SP_MainDef,
@ -1788,12 +1788,12 @@ menu_t SP_LevelStatsDef =
}; };
menu_t SP_TimeAttackLevelSelectDef = MAPPLATTERMENUSTYLE( menu_t SP_TimeAttackLevelSelectDef = MAPPLATTERMENUSTYLE(
MN_SP_MAIN + (MN_SP_TIMEATTACK << 6) + (MN_SP_TIMEATTACK_LEVELSELECT << 12), MTREE3(MN_SP_MAIN, MN_SP_TIMEATTACK, MN_SP_TIMEATTACK_LEVELSELECT),
"M_ATTACK", SP_TimeAttackLevelSelectMenu); "M_ATTACK", SP_TimeAttackLevelSelectMenu);
static menu_t SP_TimeAttackDef = static menu_t SP_TimeAttackDef =
{ {
MN_SP_MAIN + (MN_SP_TIMEATTACK << 6), MTREE2(MN_SP_MAIN, MN_SP_TIMEATTACK),
"M_ATTACK", "M_ATTACK",
sizeof (SP_TimeAttackMenu)/sizeof (menuitem_t), sizeof (SP_TimeAttackMenu)/sizeof (menuitem_t),
&MainDef, // Doesn't matter. &MainDef, // Doesn't matter.
@ -1805,7 +1805,7 @@ static menu_t SP_TimeAttackDef =
}; };
static menu_t SP_ReplayDef = static menu_t SP_ReplayDef =
{ {
MN_SP_MAIN + (MN_SP_TIMEATTACK << 6) + (MN_SP_REPLAY << 12), MTREE3(MN_SP_MAIN, MN_SP_TIMEATTACK, MN_SP_REPLAY),
"M_ATTACK", "M_ATTACK",
sizeof(SP_ReplayMenu)/sizeof(menuitem_t), sizeof(SP_ReplayMenu)/sizeof(menuitem_t),
&SP_TimeAttackDef, &SP_TimeAttackDef,
@ -1817,7 +1817,7 @@ static menu_t SP_ReplayDef =
}; };
static menu_t SP_GuestReplayDef = static menu_t SP_GuestReplayDef =
{ {
MN_SP_MAIN + (MN_SP_TIMEATTACK << 6) + (MN_SP_GUESTREPLAY << 12), MTREE3(MN_SP_MAIN, MN_SP_TIMEATTACK, MN_SP_GUESTREPLAY),
"M_ATTACK", "M_ATTACK",
sizeof(SP_GuestReplayMenu)/sizeof(menuitem_t), sizeof(SP_GuestReplayMenu)/sizeof(menuitem_t),
&SP_TimeAttackDef, &SP_TimeAttackDef,
@ -1829,7 +1829,7 @@ static menu_t SP_GuestReplayDef =
}; };
static menu_t SP_GhostDef = static menu_t SP_GhostDef =
{ {
MN_SP_MAIN + (MN_SP_TIMEATTACK << 6) + (MN_SP_GHOST << 12), MTREE3(MN_SP_MAIN, MN_SP_TIMEATTACK, MN_SP_GHOST),
"M_ATTACK", "M_ATTACK",
sizeof(SP_GhostMenu)/sizeof(menuitem_t), sizeof(SP_GhostMenu)/sizeof(menuitem_t),
&SP_TimeAttackDef, &SP_TimeAttackDef,
@ -1841,12 +1841,12 @@ static menu_t SP_GhostDef =
}; };
menu_t SP_NightsAttackLevelSelectDef = MAPPLATTERMENUSTYLE( menu_t SP_NightsAttackLevelSelectDef = MAPPLATTERMENUSTYLE(
MN_SP_MAIN + (MN_SP_NIGHTSATTACK << 6) + (MN_SP_NIGHTS_LEVELSELECT << 12), MTREE3(MN_SP_MAIN, MN_SP_NIGHTSATTACK, MN_SP_NIGHTS_LEVELSELECT),
"M_NIGHTS", SP_NightsAttackLevelSelectMenu); "M_NIGHTS", SP_NightsAttackLevelSelectMenu);
static menu_t SP_NightsAttackDef = static menu_t SP_NightsAttackDef =
{ {
MN_SP_MAIN + (MN_SP_NIGHTSATTACK << 6), MTREE2(MN_SP_MAIN, MN_SP_NIGHTSATTACK),
"M_NIGHTS", "M_NIGHTS",
sizeof (SP_NightsAttackMenu)/sizeof (menuitem_t), sizeof (SP_NightsAttackMenu)/sizeof (menuitem_t),
&MainDef, // Doesn't matter. &MainDef, // Doesn't matter.
@ -1858,7 +1858,7 @@ static menu_t SP_NightsAttackDef =
}; };
static menu_t SP_NightsReplayDef = static menu_t SP_NightsReplayDef =
{ {
MN_SP_MAIN + (MN_SP_NIGHTSATTACK << 6) + (MN_SP_NIGHTS_REPLAY << 12), MTREE3(MN_SP_MAIN, MN_SP_NIGHTSATTACK, MN_SP_NIGHTS_REPLAY),
"M_NIGHTS", "M_NIGHTS",
sizeof(SP_NightsReplayMenu)/sizeof(menuitem_t), sizeof(SP_NightsReplayMenu)/sizeof(menuitem_t),
&SP_NightsAttackDef, &SP_NightsAttackDef,
@ -1870,7 +1870,7 @@ static menu_t SP_NightsReplayDef =
}; };
static menu_t SP_NightsGuestReplayDef = static menu_t SP_NightsGuestReplayDef =
{ {
MN_SP_MAIN + (MN_SP_NIGHTSATTACK << 6) + (MN_SP_NIGHTS_GUESTREPLAY << 12), MTREE3(MN_SP_MAIN, MN_SP_NIGHTSATTACK, MN_SP_NIGHTS_GUESTREPLAY),
"M_NIGHTS", "M_NIGHTS",
sizeof(SP_NightsGuestReplayMenu)/sizeof(menuitem_t), sizeof(SP_NightsGuestReplayMenu)/sizeof(menuitem_t),
&SP_NightsAttackDef, &SP_NightsAttackDef,
@ -1882,7 +1882,7 @@ static menu_t SP_NightsGuestReplayDef =
}; };
static menu_t SP_NightsGhostDef = static menu_t SP_NightsGhostDef =
{ {
MN_SP_MAIN + (MN_SP_NIGHTSATTACK << 6) + (MN_SP_NIGHTS_GHOST << 12), MTREE3(MN_SP_MAIN, MN_SP_NIGHTSATTACK, MN_SP_NIGHTS_GHOST),
"M_NIGHTS", "M_NIGHTS",
sizeof(SP_NightsGhostMenu)/sizeof(menuitem_t), sizeof(SP_NightsGhostMenu)/sizeof(menuitem_t),
&SP_NightsAttackDef, &SP_NightsAttackDef,
@ -1896,7 +1896,7 @@ static menu_t SP_NightsGhostDef =
menu_t SP_PlayerDef = menu_t SP_PlayerDef =
{ {
MN_SP_MAIN + (MN_SP_LOAD << 6) + (MN_SP_PLAYER << 12), MTREE3(MN_SP_MAIN, MN_SP_LOAD, MN_SP_PLAYER),
"M_PICKP", "M_PICKP",
sizeof (SP_PlayerMenu)/sizeof (menuitem_t), sizeof (SP_PlayerMenu)/sizeof (menuitem_t),
&SP_MainDef, &SP_MainDef,
@ -1911,7 +1911,7 @@ menu_t SP_PlayerDef =
menu_t MP_SplitServerDef = menu_t MP_SplitServerDef =
{ {
MN_MP_MAIN + (MN_MP_SPLITSCREEN << 6), MTREE2(MN_MP_MAIN, MN_MP_SPLITSCREEN),
"M_MULTI", "M_MULTI",
sizeof (MP_SplitServerMenu)/sizeof (menuitem_t), sizeof (MP_SplitServerMenu)/sizeof (menuitem_t),
#ifndef NONET #ifndef NONET
@ -1943,7 +1943,7 @@ menu_t MP_MainDef =
menu_t MP_ServerDef = menu_t MP_ServerDef =
{ {
MN_MP_MAIN + (MN_MP_SERVER << 6), MTREE2(MN_MP_MAIN, MN_MP_SERVER),
"M_MULTI", "M_MULTI",
sizeof (MP_ServerMenu)/sizeof (menuitem_t), sizeof (MP_ServerMenu)/sizeof (menuitem_t),
&MP_MainDef, &MP_MainDef,
@ -1956,7 +1956,7 @@ menu_t MP_ServerDef =
menu_t MP_ConnectDef = menu_t MP_ConnectDef =
{ {
MN_MP_MAIN + (MN_MP_CONNECT << 6), MTREE2(MN_MP_MAIN, MN_MP_CONNECT),
"M_MULTI", "M_MULTI",
sizeof (MP_ConnectMenu)/sizeof (menuitem_t), sizeof (MP_ConnectMenu)/sizeof (menuitem_t),
&MP_MainDef, &MP_MainDef,
@ -1969,7 +1969,7 @@ menu_t MP_ConnectDef =
menu_t MP_RoomDef = menu_t MP_RoomDef =
{ {
MN_MP_MAIN + (MN_MP_ROOM << 6), MTREE2(MN_MP_MAIN, MN_MP_ROOM),
"M_MULTI", "M_MULTI",
sizeof (MP_RoomMenu)/sizeof (menuitem_t), sizeof (MP_RoomMenu)/sizeof (menuitem_t),
&MP_ConnectDef, &MP_ConnectDef,
@ -1984,9 +1984,9 @@ menu_t MP_RoomDef =
menu_t MP_PlayerSetupDef = menu_t MP_PlayerSetupDef =
{ {
#ifdef NONET #ifdef NONET
MN_MP_MAIN + (MN_MP_PLAYERSETUP << 6), MTREE2(MN_MP_MAIN, MN_MP_PLAYERSETUP),
#else #else
MN_MP_MAIN + (MN_MP_SPLITSCREEN << 6) + (MN_MP_PLAYERSETUP << 12), MTREE3(MN_MP_MAIN, MN_MP_SPLITSCREEN, MN_MP_PLAYERSETUP),
#endif #endif
"M_SPLAYR", "M_SPLAYR",
sizeof (MP_PlayerSetupMenu)/sizeof (menuitem_t), sizeof (MP_PlayerSetupMenu)/sizeof (menuitem_t),
@ -2002,12 +2002,13 @@ menu_t MP_PlayerSetupDef =
menu_t OP_MainDef = DEFAULTMENUSTYLE( menu_t OP_MainDef = DEFAULTMENUSTYLE(
MN_OP_MAIN, MN_OP_MAIN,
"M_OPTTTL", OP_MainMenu, &MainDef, 50, 30); "M_OPTTTL", OP_MainMenu, &MainDef, 50, 30);
menu_t OP_ChangeControlsDef = CONTROLMENUSTYLE( menu_t OP_ChangeControlsDef = CONTROLMENUSTYLE(
MN_OP_MAIN + (MN_OP_CHANGECONTROLS << 12), // second level (<<6) set on runtime MTREE3(MN_OP_MAIN, 0, MN_OP_CHANGECONTROLS), // second level set on runtime
OP_ChangeControlsMenu, &OP_MainDef); OP_ChangeControlsMenu, &OP_MainDef);
menu_t OP_P1ControlsDef = { menu_t OP_P1ControlsDef = {
MN_OP_MAIN + (MN_OP_P1CONTROLS << 6), MTREE2(MN_OP_MAIN, MN_OP_P1CONTROLS),
"M_CONTRO", "M_CONTRO",
sizeof(OP_P1ControlsMenu)/sizeof(menuitem_t), sizeof(OP_P1ControlsMenu)/sizeof(menuitem_t),
&OP_MainDef, &OP_MainDef,
@ -2015,7 +2016,7 @@ menu_t OP_P1ControlsDef = {
M_DrawControlsDefMenu, M_DrawControlsDefMenu,
50, 30, 0, NULL}; 50, 30, 0, NULL};
menu_t OP_P2ControlsDef = { menu_t OP_P2ControlsDef = {
MN_OP_MAIN + (MN_OP_P2CONTROLS << 6), MTREE2(MN_OP_MAIN, MN_OP_P2CONTROLS),
"M_CONTRO", "M_CONTRO",
sizeof(OP_P2ControlsMenu)/sizeof(menuitem_t), sizeof(OP_P2ControlsMenu)/sizeof(menuitem_t),
&OP_MainDef, &OP_MainDef,
@ -2024,20 +2025,22 @@ menu_t OP_P2ControlsDef = {
50, 30, 0, NULL}; 50, 30, 0, NULL};
menu_t OP_MouseOptionsDef = DEFAULTMENUSTYLE( menu_t OP_MouseOptionsDef = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_P1CONTROLS << 6) + (MN_OP_P1MOUSE << 12), MTREE3(MN_OP_MAIN, MN_OP_P1CONTROLS, MN_OP_P1MOUSE),
"M_CONTRO", OP_MouseOptionsMenu, &OP_P1ControlsDef, 35, 30); "M_CONTRO", OP_MouseOptionsMenu, &OP_P1ControlsDef, 35, 30);
menu_t OP_Mouse2OptionsDef = DEFAULTMENUSTYLE( menu_t OP_Mouse2OptionsDef = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_P2CONTROLS << 6) + (MN_OP_P2MOUSE << 12), MTREE3(MN_OP_MAIN, MN_OP_P2CONTROLS, MN_OP_P2MOUSE),
"M_CONTRO", OP_Mouse2OptionsMenu, &OP_P2ControlsDef, 35, 30); "M_CONTRO", OP_Mouse2OptionsMenu, &OP_P2ControlsDef, 35, 30);
menu_t OP_Joystick1Def = DEFAULTMENUSTYLE( menu_t OP_Joystick1Def = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_P1CONTROLS << 6) + (MN_OP_P1JOYSTICK << 12), MTREE3(MN_OP_MAIN, MN_OP_P1CONTROLS, MN_OP_P1JOYSTICK),
"M_CONTRO", OP_Joystick1Menu, &OP_P1ControlsDef, 50, 30); "M_CONTRO", OP_Joystick1Menu, &OP_P1ControlsDef, 50, 30);
menu_t OP_Joystick2Def = DEFAULTMENUSTYLE( menu_t OP_Joystick2Def = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_P2CONTROLS << 6) + (MN_OP_P2JOYSTICK << 12), MTREE3(MN_OP_MAIN, MN_OP_P2CONTROLS, MN_OP_P2JOYSTICK),
"M_CONTRO", OP_Joystick2Menu, &OP_P2ControlsDef, 50, 30); "M_CONTRO", OP_Joystick2Menu, &OP_P2ControlsDef, 50, 30);
menu_t OP_JoystickSetDef = menu_t OP_JoystickSetDef =
{ {
MN_OP_MAIN + (MN_OP_JOYSTICKSET << MENUBITS*3), // second (<<6) and third level (<<12) set on runtime MTREE4(MN_OP_MAIN, 0, 0, MN_OP_JOYSTICKSET), // second and third level set on runtime
"M_CONTRO", "M_CONTRO",
sizeof (OP_JoystickSetMenu)/sizeof (menuitem_t), sizeof (OP_JoystickSetMenu)/sizeof (menuitem_t),
&OP_Joystick1Def, &OP_Joystick1Def,
@ -2049,7 +2052,7 @@ menu_t OP_JoystickSetDef =
}; };
menu_t OP_CameraOptionsDef = { menu_t OP_CameraOptionsDef = {
MN_OP_MAIN + (MN_OP_P1CONTROLS << 6) + (MN_OP_P1CAMERA << 12), MTREE3(MN_OP_MAIN, MN_OP_P1CONTROLS, MN_OP_P1CAMERA),
"M_CONTRO", "M_CONTRO",
sizeof (OP_CameraOptionsMenu)/sizeof (menuitem_t), sizeof (OP_CameraOptionsMenu)/sizeof (menuitem_t),
&OP_P1ControlsDef, &OP_P1ControlsDef,
@ -2060,7 +2063,7 @@ menu_t OP_CameraOptionsDef = {
NULL NULL
}; };
menu_t OP_Camera2OptionsDef = { menu_t OP_Camera2OptionsDef = {
MN_OP_MAIN + (MN_OP_P2CONTROLS << 6) + (MN_OP_P2CAMERA << 12), MTREE3(MN_OP_MAIN, MN_OP_P2CONTROLS, MN_OP_P2CAMERA),
"M_CONTRO", "M_CONTRO",
sizeof (OP_Camera2OptionsMenu)/sizeof (menuitem_t), sizeof (OP_Camera2OptionsMenu)/sizeof (menuitem_t),
&OP_P2ControlsDef, &OP_P2ControlsDef,
@ -2074,7 +2077,7 @@ menu_t OP_Camera2OptionsDef = {
static menuitem_t OP_PlaystyleMenu[] = {{IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandlePlaystyleMenu, 0}}; static menuitem_t OP_PlaystyleMenu[] = {{IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandlePlaystyleMenu, 0}};
menu_t OP_PlaystyleDef = { menu_t OP_PlaystyleDef = {
MN_OP_MAIN + (MN_OP_P1CONTROLS << 6) + (MN_OP_PLAYSTYLE << 12), MTREE3(MN_OP_MAIN, MN_OP_P1CONTROLS, MN_OP_PLAYSTYLE), ///@TODO the second level should be set in runtime
NULL, NULL,
1, 1,
&OP_P1ControlsDef, &OP_P1ControlsDef,
@ -2086,7 +2089,7 @@ menu_t OP_PlaystyleDef = {
menu_t OP_VideoOptionsDef = menu_t OP_VideoOptionsDef =
{ {
MN_OP_MAIN + (MN_OP_VIDEO << 6), MTREE2(MN_OP_MAIN, MN_OP_VIDEO),
"M_VIDEO", "M_VIDEO",
sizeof (OP_VideoOptionsMenu)/sizeof (menuitem_t), sizeof (OP_VideoOptionsMenu)/sizeof (menuitem_t),
&OP_MainDef, &OP_MainDef,
@ -2098,7 +2101,7 @@ menu_t OP_VideoOptionsDef =
}; };
menu_t OP_VideoModeDef = menu_t OP_VideoModeDef =
{ {
MN_OP_MAIN + (MN_OP_VIDEO << 6) + (MN_OP_VIDEOMODE << 12), MTREE3(MN_OP_MAIN, MN_OP_VIDEO, MN_OP_VIDEOMODE),
"M_VIDEO", "M_VIDEO",
1, 1,
&OP_VideoOptionsDef, &OP_VideoOptionsDef,
@ -2110,7 +2113,7 @@ menu_t OP_VideoModeDef =
}; };
menu_t OP_ColorOptionsDef = menu_t OP_ColorOptionsDef =
{ {
MN_OP_MAIN + (MN_OP_VIDEO << 6) + (MN_OP_COLOR << 12), MTREE3(MN_OP_MAIN, MN_OP_VIDEO, MN_OP_COLOR),
"M_VIDEO", "M_VIDEO",
sizeof (OP_ColorOptionsMenu)/sizeof (menuitem_t), sizeof (OP_ColorOptionsMenu)/sizeof (menuitem_t),
&OP_VideoOptionsDef, &OP_VideoOptionsDef,
@ -2121,17 +2124,19 @@ menu_t OP_ColorOptionsDef =
NULL NULL
}; };
menu_t OP_SoundOptionsDef = DEFAULTMENUSTYLE( menu_t OP_SoundOptionsDef = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_SOUND << 6), MTREE2(MN_OP_MAIN, MN_OP_SOUND),
"M_SOUND", OP_SoundOptionsMenu, &OP_MainDef, 30, 30); "M_SOUND", OP_SoundOptionsMenu, &OP_MainDef, 30, 30);
menu_t OP_SoundAdvancedDef = DEFAULTMENUSTYLE(MN_OP_MAIN + (MN_OP_SOUND << 6), "M_SOUND", OP_SoundAdvancedMenu, &OP_SoundOptionsDef, 30, 30); menu_t OP_SoundAdvancedDef = DEFAULTMENUSTYLE(
MTREE2(MN_OP_MAIN, MN_OP_SOUND),
"M_SOUND", OP_SoundAdvancedMenu, &OP_SoundOptionsDef, 30, 30);
menu_t OP_ServerOptionsDef = DEFAULTSCROLLMENUSTYLE( menu_t OP_ServerOptionsDef = DEFAULTSCROLLMENUSTYLE(
MN_OP_MAIN + (MN_OP_SERVER << 6), MTREE2(MN_OP_MAIN, MN_OP_SERVER),
"M_SERVER", OP_ServerOptionsMenu, &OP_MainDef, 30, 30); "M_SERVER", OP_ServerOptionsMenu, &OP_MainDef, 30, 30);
menu_t OP_MonitorToggleDef = menu_t OP_MonitorToggleDef =
{ {
MN_OP_MAIN + (MN_OP_SERVER << 6) + (MN_OP_MONITORTOGGLE << 12), MTREE3(MN_OP_MAIN, MN_OP_SOUND, MN_OP_MONITORTOGGLE),
"M_SERVER", "M_SERVER",
sizeof (OP_MonitorToggleMenu)/sizeof (menuitem_t), sizeof (OP_MonitorToggleMenu)/sizeof (menuitem_t),
&OP_ServerOptionsDef, &OP_ServerOptionsDef,
@ -2152,16 +2157,16 @@ static void M_OpenGLOptionsMenu(void)
} }
menu_t OP_OpenGLOptionsDef = DEFAULTMENUSTYLE( menu_t OP_OpenGLOptionsDef = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_VIDEO << 6) + (MN_OP_OPENGL << 12), MTREE3(MN_OP_MAIN, MN_OP_VIDEO, MN_OP_OPENGL),
"M_VIDEO", OP_OpenGLOptionsMenu, &OP_VideoOptionsDef, 30, 30); "M_VIDEO", OP_OpenGLOptionsMenu, &OP_VideoOptionsDef, 30, 30);
#ifdef ALAM_LIGHTING #ifdef ALAM_LIGHTING
menu_t OP_OpenGLLightingDef = DEFAULTMENUSTYLE( menu_t OP_OpenGLLightingDef = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_VIDEO << 6) + (MN_OP_OPENGL << 12) + (MN_OP_OPENGL_LIGHTING << 18), MTREE4(MN_OP_MAIN, MN_OP_VIDEO, MN_OP_OPENGL, MN_OP_OPENGL_LIGHTING),
"M_VIDEO", OP_OpenGLLightingMenu, &OP_OpenGLOptionsDef, 60, 40); "M_VIDEO", OP_OpenGLLightingMenu, &OP_OpenGLOptionsDef, 60, 40);
#endif #endif
menu_t OP_OpenGLFogDef = menu_t OP_OpenGLFogDef =
{ {
MN_OP_MAIN + (MN_OP_VIDEO << 6) + (MN_OP_OPENGL << 12) + (MN_OP_OPENGL_FOG << 18), MTREE4(MN_OP_MAIN, MN_OP_VIDEO, MN_OP_OPENGL, MN_OP_OPENGL_FOG),
"M_VIDEO", "M_VIDEO",
sizeof (OP_OpenGLFogMenu)/sizeof (menuitem_t), sizeof (OP_OpenGLFogMenu)/sizeof (menuitem_t),
&OP_OpenGLOptionsDef, &OP_OpenGLOptionsDef,
@ -2173,12 +2178,12 @@ menu_t OP_OpenGLFogDef =
}; };
#endif #endif
menu_t OP_DataOptionsDef = DEFAULTMENUSTYLE( menu_t OP_DataOptionsDef = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_DATA << 6), MTREE2(MN_OP_MAIN, MN_OP_DATA),
"M_DATA", OP_DataOptionsMenu, &OP_MainDef, 60, 30); "M_DATA", OP_DataOptionsMenu, &OP_MainDef, 60, 30);
menu_t OP_ScreenshotOptionsDef = menu_t OP_ScreenshotOptionsDef =
{ {
MN_OP_MAIN + (MN_OP_DATA << 6) + (MN_OP_SCREENSHOTS << 12), MTREE3(MN_OP_MAIN, MN_OP_DATA, MN_OP_SCREENSHOTS),
"M_DATA", "M_DATA",
sizeof (OP_ScreenshotOptionsMenu)/sizeof (menuitem_t), sizeof (OP_ScreenshotOptionsMenu)/sizeof (menuitem_t),
&OP_DataOptionsDef, &OP_DataOptionsDef,
@ -2190,11 +2195,11 @@ menu_t OP_ScreenshotOptionsDef =
}; };
menu_t OP_AddonsOptionsDef = DEFAULTMENUSTYLE( menu_t OP_AddonsOptionsDef = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_DATA << 6) + (MN_OP_ADDONS << 12), MTREE3(MN_OP_MAIN, MN_OP_DATA, MN_OP_ADDONS),
"M_ADDONS", OP_AddonsOptionsMenu, &OP_DataOptionsDef, 30, 30); "M_ADDONS", OP_AddonsOptionsMenu, &OP_DataOptionsDef, 30, 30);
menu_t OP_EraseDataDef = DEFAULTMENUSTYLE( menu_t OP_EraseDataDef = DEFAULTMENUSTYLE(
MN_OP_MAIN + (MN_OP_DATA << 6) + (MN_OP_ERASEDATA << 12), MTREE3(MN_OP_MAIN, MN_OP_DATA, MN_OP_ERASEDATA),
"M_DATA", OP_EraseDataMenu, &OP_DataOptionsDef, 60, 30); "M_DATA", OP_EraseDataMenu, &OP_DataOptionsDef, 60, 30);
// ========================================================================== // ==========================================================================
@ -8844,16 +8849,11 @@ static void M_SetupChoosePlayer(INT32 choice)
/* the menus suck -James */ /* the menus suck -James */
if (currentMenu == &SP_LoadDef)/* from save states */ if (currentMenu == &SP_LoadDef)/* from save states */
{ {
SP_PlayerDef.menuid = SP_PlayerDef.menuid = MTREE3(MN_SP_MAIN, MN_SP_LOAD, MN_SP_PLAYER);
MN_SP_MAIN +
( MN_SP_LOAD << 6 ) +
( MN_SP_PLAYER << 12 );
} }
else/* from Secret level select */ else/* from Secret level select */
{ {
SP_PlayerDef.menuid = SP_PlayerDef.menuid = MTREE2(MN_SR_MAIN, MN_SR_PLAYER);
MN_SR_MAIN +
( MN_SR_PLAYER << 6 );
} }
SP_PlayerDef.prevMenu = currentMenu; SP_PlayerDef.prevMenu = currentMenu;
@ -10747,9 +10747,9 @@ static void M_ServerOptions(INT32 choice)
/* Disable fading because of different menu head. */ /* Disable fading because of different menu head. */
if (currentMenu == &OP_MainDef)/* from Options menu */ if (currentMenu == &OP_MainDef)/* from Options menu */
OP_ServerOptionsDef.menuid = MN_OP_MAIN + ( MN_OP_SERVER << 6 ); OP_ServerOptionsDef.menuid = MTREE2(MN_OP_MAIN, MN_OP_SERVER);
else/* from Multiplayer menu */ else/* from Multiplayer menu */
OP_ServerOptionsDef.menuid = MN_MP_MAIN + ( MN_MP_SERVER_OPTIONS << 6 ); OP_ServerOptionsDef.menuid = MTREE2(MN_MP_MAIN, MN_MP_SERVER_OPTIONS);
OP_ServerOptionsDef.prevMenu = currentMenu; OP_ServerOptionsDef.prevMenu = currentMenu;
M_SetupNextMenu(&OP_ServerOptionsDef); M_SetupNextMenu(&OP_ServerOptionsDef);
@ -11666,8 +11666,8 @@ static void M_Setup1PControlsMenu(INT32 choice)
OP_ChangeControlsMenu[27+3].status = IT_CALL|IT_STRING2; OP_ChangeControlsMenu[27+3].status = IT_CALL|IT_STRING2;
OP_ChangeControlsDef.prevMenu = &OP_P1ControlsDef; OP_ChangeControlsDef.prevMenu = &OP_P1ControlsDef;
OP_ChangeControlsDef.menuid &= ~(((1 << MENUBITS) - 1) << MENUBITS); // remove first level (<< 6) OP_ChangeControlsDef.menuid &= ~(((1 << MENUBITS) - 1) << MENUBITS); // remove second level
OP_ChangeControlsDef.menuid |= MN_OP_P1CONTROLS << MENUBITS; // combine first level (<< 6) OP_ChangeControlsDef.menuid |= MN_OP_P1CONTROLS << MENUBITS; // combine second level
M_SetupNextMenu(&OP_ChangeControlsDef); M_SetupNextMenu(&OP_ChangeControlsDef);
} }
@ -11697,8 +11697,8 @@ static void M_Setup2PControlsMenu(INT32 choice)
OP_ChangeControlsMenu[27+3].status = IT_GRAYEDOUT2; OP_ChangeControlsMenu[27+3].status = IT_GRAYEDOUT2;
OP_ChangeControlsDef.prevMenu = &OP_P2ControlsDef; OP_ChangeControlsDef.prevMenu = &OP_P2ControlsDef;
OP_ChangeControlsDef.menuid &= ~(((1 << MENUBITS) - 1) << MENUBITS); // remove first level (<< 6) OP_ChangeControlsDef.menuid &= ~(((1 << MENUBITS) - 1) << MENUBITS); // remove second level
OP_ChangeControlsDef.menuid |= MN_OP_P2CONTROLS << MENUBITS; // combine first level (<< 6) OP_ChangeControlsDef.menuid |= MN_OP_P2CONTROLS << MENUBITS; // combine second level
M_SetupNextMenu(&OP_ChangeControlsDef); M_SetupNextMenu(&OP_ChangeControlsDef);
} }

View File

@ -131,6 +131,9 @@ typedef enum
MN_SPECIAL, MN_SPECIAL,
NUMMENUTYPES, NUMMENUTYPES,
} menutype_t; // up to 63; MN_SPECIAL = 53 } menutype_t; // up to 63; MN_SPECIAL = 53
#define MTREE2(a,b) (a | (b<<MENUBITS))
#define MTREE3(a,b,c) MTREE2(a, MTREE2(b,c))
#define MTREE4(a,b,c,d) MTREE2(a, MTREE3(b,c,d))
typedef struct typedef struct
{ {