menu_t: Add bgroutine

All backgrounds are now handled by a seperate routine.
This will allow more fine handling without a ton of special cases everywhere.
Creates an absolutely nasty diff because all menu_t have been updated in one blast 🥹
For the things that DO need to draw outside of GS_MENU (M_DrawOptionsCogs, the Wrongwarp), the behaviourflag MBF_DRAWBGWHILEPLAYING has also been added.
This commit is contained in:
toaster 2023-12-04 20:10:03 +00:00
parent 792fcf2ad8
commit 85d8cfdf85
46 changed files with 213 additions and 153 deletions

View file

@ -136,6 +136,7 @@ typedef enum
MBF_UD_LR_FLIPPED = 1, // flip up-down and left-right axes
MBF_SOUNDLESS = 1<<1, // do not play base menu sounds
MBF_NOLOOPENTRIES = 1<<2, // do not loop M_NextOpt/M_PrevOpt
MBF_DRAWBGWHILEPLAYING = 1<<3, // run backroutine() outside of GS_MENU
} menubehaviourflags_t;
struct menuitem_t
@ -170,6 +171,7 @@ struct menu_t
INT16 transitionTics; // tics for transitions out
void (*drawroutine)(void); // draw routine
void (*bgroutine)(void); // draw routine, but, like, for the background
void (*tickroutine)(void); // ticker routine
void (*initroutine)(void); // called when starting a new menu
boolean (*quitroutine)(void); // called before quit a menu return true if we can
@ -1214,6 +1216,7 @@ void M_DrawProfileErase(void);
extern tic_t shitsfree;
// Extras menu:
void M_DrawExtrasBack(void);
void M_DrawExtrasMovingButton(void);
void M_DrawExtras(void);
@ -1392,6 +1395,7 @@ const char *M_GetDiscordName(discordRequest_t *r);
NULL,\
NULL,\
NULL,\
NULL,\
NULL\
}
@ -1411,6 +1415,7 @@ const char *M_GetDiscordName(discordRequest_t *r);
NULL,\
NULL,\
NULL,\
NULL,\
NULL\
}
@ -1429,6 +1434,7 @@ const char *M_GetDiscordName(discordRequest_t *r);
NULL,\
NULL,\
NULL,\
NULL,\
NULL\
}

View file

@ -231,6 +231,12 @@ void M_DrawMenuBackground(void)
}
}
void M_DrawExtrasBack(void)
{
patch_t *bg = W_CachePatchName("M_XTRABG", PU_CACHE);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, bg, NULL);
}
UINT16 M_GetCvPlayerColor(UINT8 pnum)
{
if (pnum >= MAXSPLITSCREENPLAYERS)
@ -778,14 +784,28 @@ void M_Drawer(void)
// background layer
if (menuactive)
{
boolean drawbgroutine = false;
if (gamestate == GS_MENU)
{
M_DrawMenuBackground();
if (currentMenu->bgroutine)
drawbgroutine = true;
else
M_DrawMenuBackground();
}
else if (!WipeInAction && currentMenu != &PAUSE_PlaybackMenuDef)
else
{
V_DrawFadeScreen(122, 3);
if (currentMenu->bgroutine
&& (currentMenu->behaviourflags & MBF_DRAWBGWHILEPLAYING))
drawbgroutine = true;
if (!WipeInAction && currentMenu != &PAUSE_PlaybackMenuDef)
{
V_DrawFadeScreen(122, 3);
}
}
if (drawbgroutine)
currentMenu->bgroutine();
}
// draw pause pic
@ -2151,15 +2171,9 @@ void M_DrawCharacterSelect(void)
UINT8 priority = 0;
INT16 quadx, quady;
INT16 skin;
INT32 basex = 0;
INT32 basex = optionsmenu.profile ? (64 + (menutransition.tics*32)) : 0;
boolean forceskin = (Playing() && K_CanChangeRules(true) == true) && (cv_forceskin.value != -1);
if (optionsmenu.profile)
{
basex = (64 + (menutransition.tics*32));
M_DrawOptionsCogs();
}
if (setup_numplayers > 0)
{
priority = setup_animcounter % setup_numplayers;
@ -3034,12 +3048,6 @@ void M_DrawLevelSelect(void)
INT16 y = 80 - (12 * levellist.y);
boolean tatransition = ((menutransition.startmenu == &PLAY_TimeAttackDef || menutransition.endmenu == &PLAY_TimeAttackDef) && menutransition.tics);
if (levellist.levelsearch.tutorial)
{
patch_t *bg = W_CachePatchName("M_XTRABG", PU_CACHE);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, bg, NULL);
}
if (tatransition)
{
t = -t;
@ -3298,7 +3306,6 @@ void M_DrawEggaChannel(void)
// Multiplayer mode option select
void M_DrawMPOptSelect(void)
{
M_DrawEggaChannel();
M_DrawMenuTooltips();
M_MPOptDrawer(&PLAY_MP_OptSelectDef, mpmenu.modewinextend);
M_DrawMasterServerReminder();
@ -3308,7 +3315,6 @@ void M_DrawMPOptSelect(void)
// A rehash of the generic menu drawer adapted to fit into that cramped space. ...A small sacrifice for utility
void M_DrawMPHost(void)
{
patch_t *gobutt = W_CachePatchName("M_BUTTGO", PU_CACHE); // I'm very mature
INT32 xp = 40, yp = 64, i = 0, w = 0; // Starting position for the text drawing.
@ -3413,7 +3419,6 @@ void M_DrawMPHost(void)
// (I don't like duplicating code but I rather this than some horrible all-in-one function with too many options...)
void M_DrawMPJoinIP(void)
{
//patch_t *minibutt = W_CachePatchName("M_SBUTT", PU_CACHE);
// There is no such things as mini butts, only thick thighs to rest your head on.
//patch_t *minigo = W_CachePatchName("M_SGO", PU_CACHE);
@ -3786,8 +3791,6 @@ void M_DrawOptions(void)
UINT8 *c = NULL;
M_DrawOptionsCogs();
for (i=0; i < currentMenu->numitems; i++)
{
INT32 py = y - (itemOn*48);
@ -3823,7 +3826,6 @@ void M_DrawGenericOptions(void)
{
INT32 x = currentMenu->x - menutransition.tics*48, y = currentMenu->y, w, i, cursory = 0;
M_DrawOptionsCogs();
M_DrawMenuTooltips();
M_DrawOptionsMovingButton();
@ -3973,7 +3975,6 @@ void M_DrawProfileErase(void)
INT32 x = currentMenu->x - menutransition.tics*48, y = currentMenu->y-SMALLLINEHEIGHT, i, cursory = 0;
UINT8 np = PR_GetNumProfiles();
M_DrawOptionsCogs();
M_DrawMenuTooltips();
M_DrawOptionsMovingButton();
@ -4005,7 +4006,6 @@ void M_DrawProfileSelect(void)
INT32 x = 160 - optionsmenu.profilen*(128 + 128/8) + optionsmenu.offset;
INT32 y = 35 + menutransition.tics*32;
M_DrawOptionsCogs();
M_DrawMenuTooltips();
// This shouldn't be drawn when a profile is selected as optx/opty are used to move the card.
@ -4038,8 +4038,6 @@ void M_DrawEditProfile(void)
INT32 x = (145 + (menutransition.tics*32));
INT32 i;
M_DrawOptionsCogs();
// Tooltip
// The text is slightly shifted hence why we don't just use M_DrawMenuTooltips()
V_DrawFixedPatch(0, 0, FRACUNIT, 0, W_CachePatchName("MENUHINT", PU_CACHE), NULL);
@ -4138,8 +4136,6 @@ void M_DrawProfileControls(void)
INT32 i, j, k;
const UINT8 pid = 0;
M_DrawOptionsCogs();
V_DrawScaledPatch(BASEVIDWIDTH*2/3 - optionsmenu.contx, BASEVIDHEIGHT/2 -optionsmenu.conty, 0, W_CachePatchName("PR_CONT", PU_CACHE));
// Draw button presses...
@ -4368,7 +4364,6 @@ void M_DrawVideoModes(void)
{
INT32 i, j, row, col;
M_DrawOptionsCogs();
M_DrawMenuTooltips();
M_DrawOptionsMovingButton();
@ -4452,7 +4447,6 @@ void M_DrawItemToggles(void)
consvar_t *cv;
INT32 i, translucent, drawnum;
M_DrawOptionsCogs();
M_DrawMenuTooltips();
M_DrawOptionsMovingButton();
@ -4595,12 +4589,9 @@ void M_DrawExtras(void)
INT32 x = 140 - (48*itemOn) + extrasmenu.offset;
INT32 y = 70 + extrasmenu.offset;
patch_t *buttback = W_CachePatchName("OPT_BUTT", PU_CACHE);
patch_t *bg = W_CachePatchName("M_XTRABG", PU_CACHE);
UINT8 *c = NULL;
V_DrawFixedPatch(0, 0, FRACUNIT, 0, bg, NULL);
for (i=0; i < currentMenu->numitems; i++)
{
INT32 py = y - (itemOn*48);
@ -5115,14 +5106,6 @@ void M_DrawAddons(void)
M_CacheAddonPatches();
// hack: If we're calling this from GS_MENU, that means we're in the extras menu!
// so draw the apropriate background
if (gamestate == GS_MENU)
{
patch_t *bg = W_CachePatchName("M_XTRABG", PU_CACHE);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, bg, NULL);
}
if (Playing())
V_DrawCenteredString(BASEVIDWIDTH/2, 4, warningflags, "Adding files mid-game may cause problems.");
else
@ -6939,11 +6922,6 @@ void M_DrawStatistics(void)
char beststr[256];
tic_t besttime = 0;
{
patch_t *bg = W_CachePatchName("M_XTRABG", PU_CACHE);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, bg, NULL);
}
{
const char *pagename = NULL;
INT32 pagenamewidth = 0;
@ -7060,28 +7038,6 @@ void M_DrawStatistics(void)
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 50, 0, beststr);
}
static INT32 M_WrongWarpFallingHelper(INT32 y, INT32 falltime)
{
if (wrongwarp.ticker < falltime)
{
return y;
}
if (wrongwarp.ticker > falltime + 2*TICRATE)
{
return INT32_MAX;
}
if (wrongwarp.ticker < falltime + TICRATE)
{
y += + ((wrongwarp.ticker - falltime) & 1 ? 1 : -1);
return y;
}
y += floor(pow(1.5, (double)(wrongwarp.ticker - (falltime + TICRATE))));
return y;
}
static void M_DrawWrongPlayer(UINT8 i)
{
#define wrongpl wrongwarp.wrongplayers[i]
@ -7107,60 +7063,6 @@ void M_DrawWrongWarp(void)
INT32 titleoffset = 0, titlewidth, x, y;
const char *titletext = "WRONG GAME? WRONG GAME! ";
if (gamestate == GS_MENU)
{
patch_t *pat, *pat2;
INT32 animtimer, anim2 = 0;
pat = W_CachePatchName("TITLEBG1", PU_CACHE);
pat2 = W_CachePatchName("TITLEBG2", PU_CACHE);
animtimer = ((wrongwarp.ticker*5)/16) % SHORT(pat->width);
anim2 = SHORT(pat2->width) - (((wrongwarp.ticker*5)/16) % SHORT(pat2->width));
// SRB2Kart: F_DrawPatchCol is over-engineered; recoded to be less shitty and error-prone
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 0);
x = -((INT32)animtimer);
y = 0;
while (x < BASEVIDWIDTH)
{
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT, 0, pat, NULL);
x += SHORT(pat->width);
}
x = -anim2;
y = BASEVIDHEIGHT - SHORT(pat2->height);
while (x < BASEVIDWIDTH)
{
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT, 0, pat2, NULL);
x += SHORT(pat2->width);
}
}
{
patch_t *ttcheckers = W_CachePatchName("TTCHECK", PU_CACHE);
y = FixedMul(40<<FRACBITS, FixedDiv(wrongwarp.ticker%70, 70));
V_DrawSciencePatch(0, -y, 0, ttcheckers, FRACUNIT);
V_DrawSciencePatch(280<<FRACBITS, -(40<<FRACBITS) + y, 0, ttcheckers, FRACUNIT);
y = M_WrongWarpFallingHelper(36, 7*TICRATE/4);
if (y != INT32_MAX)
{
patch_t *ttbanner = W_CachePatchName("TTKBANNR", PU_CACHE);
V_DrawSmallScaledPatch(84, y, 0, ttbanner);
}
y = M_WrongWarpFallingHelper(87, 4*TICRATE/3);
if (y != INT32_MAX)
{
patch_t *ttkart = W_CachePatchName("TTKART", PU_CACHE);
V_DrawSmallScaledPatch(84, y, 0, ttkart);
}
}
if (wrongwarp.ticker < 2*TICRATE/3)
return;
@ -7211,12 +7113,6 @@ void M_DrawSoundTest(void)
patch_t *btn = W_CachePatchName("STER_BTN", PU_CACHE);
if (gamestate == GS_MENU)
{
patch_t *bg = W_CachePatchName("M_XTRABG", PU_CACHE);
V_DrawFixedPatch(0, 0, FRACUNIT, 0, bg, NULL);
}
V_DrawFixedPatch(0, 0, FRACUNIT, 0, W_CachePatchName("STER_BG", PU_CACHE), NULL);
x = 24;

View file

@ -58,6 +58,7 @@ menu_t EXTRAS_MainDef = {
"EXTRAS",
28, 5,
M_DrawExtras,
M_DrawExtrasBack,
M_ExtrasTick,
NULL,
NULL,

View file

@ -27,6 +27,7 @@ menu_t MISC_AddonsDef = {
"EXTRAS",
0, 0,
M_DrawAddons,
M_DrawExtrasBack,
M_AddonsRefresh,
NULL,
NULL,

View file

@ -27,6 +27,7 @@ menu_t MISC_ChallengesDef = {
"UNLOCK",
98, 0,
M_DrawChallenges,
NULL,
M_ChallengesTick,
NULL,
NULL,
@ -46,6 +47,7 @@ menu_t MISC_StatisticsDef = {
"EXTRAS",
98, 0,
M_DrawStatistics,
M_DrawExtrasBack,
NULL,
NULL,
NULL,

View file

@ -112,6 +112,7 @@ menu_t EXTRAS_EggTVDef =
M_DrawEggTV,
NULL,
NULL,
NULL,
M_QuitEggTV,
M_HandleEggTV
};

View file

@ -6,6 +6,8 @@
#include "../m_random.h"
#include "../music.h"
#include "../r_skins.h"
#include "../v_video.h"
#include "../z_zone.h"
struct wrongwarp_s wrongwarp;
@ -137,6 +139,87 @@ static boolean M_WrongWarpInputs(INT32 ch)
return false;
}
static INT32 M_WrongWarpFallingHelper(INT32 y, INT32 falltime)
{
if (wrongwarp.ticker < falltime)
{
return y;
}
if (wrongwarp.ticker > falltime + 2*TICRATE)
{
return INT32_MAX;
}
if (wrongwarp.ticker < falltime + TICRATE)
{
y += + ((wrongwarp.ticker - falltime) & 1 ? 1 : -1);
return y;
}
y += floor(pow(1.5, (double)(wrongwarp.ticker - (falltime + TICRATE))));
return y;
}
static void M_DrawWrongWarpBack(void)
{
INT32 x, y;
if (gamestate == GS_MENU)
{
patch_t *pat, *pat2;
INT32 animtimer, anim2 = 0;
pat = W_CachePatchName("TITLEBG1", PU_CACHE);
pat2 = W_CachePatchName("TITLEBG2", PU_CACHE);
animtimer = ((wrongwarp.ticker*5)/16) % SHORT(pat->width);
anim2 = SHORT(pat2->width) - (((wrongwarp.ticker*5)/16) % SHORT(pat2->width));
// SRB2Kart: F_DrawPatchCol is over-engineered; recoded to be less shitty and error-prone
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 0);
x = -((INT32)animtimer);
y = 0;
while (x < BASEVIDWIDTH)
{
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT, 0, pat, NULL);
x += SHORT(pat->width);
}
x = -anim2;
y = BASEVIDHEIGHT - SHORT(pat2->height);
while (x < BASEVIDWIDTH)
{
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT, 0, pat2, NULL);
x += SHORT(pat2->width);
}
}
{
patch_t *ttcheckers = W_CachePatchName("TTCHECK", PU_CACHE);
y = FixedMul(40<<FRACBITS, FixedDiv(wrongwarp.ticker%70, 70));
V_DrawSciencePatch(0, -y, 0, ttcheckers, FRACUNIT);
V_DrawSciencePatch(280<<FRACBITS, -(40<<FRACBITS) + y, 0, ttcheckers, FRACUNIT);
y = M_WrongWarpFallingHelper(36, 7*TICRATE/4);
if (y != INT32_MAX)
{
patch_t *ttbanner = W_CachePatchName("TTKBANNR", PU_CACHE);
V_DrawSmallScaledPatch(84, y, 0, ttbanner);
}
y = M_WrongWarpFallingHelper(87, 4*TICRATE/3);
if (y != INT32_MAX)
{
patch_t *ttkart = W_CachePatchName("TTKART", PU_CACHE);
V_DrawSmallScaledPatch(84, y, 0, ttkart);
}
}
}
menu_t MISC_WrongWarpDef = {
sizeof (MISC_WrongWarpMenu)/sizeof (menuitem_t),
NULL,
@ -144,10 +227,11 @@ menu_t MISC_WrongWarpDef = {
MISC_WrongWarpMenu,
0, 0,
0, 0,
MBF_SOUNDLESS,
MBF_SOUNDLESS|MBF_DRAWBGWHILEPLAYING,
".",
98, 0,
M_DrawWrongWarp,
M_DrawWrongWarpBack,
M_WrongWarpTick,
NULL,
NULL,

View file

@ -33,6 +33,7 @@ menuitem_t MAIN_Goner[] =
{.routine = M_GonerTutorial}, 0, 0},
};
static void M_DrawGonerBack(void);
static void M_GonerDrawer(void);
menu_t MAIN_GonerDef = {
@ -46,6 +47,7 @@ menu_t MAIN_GonerDef = {
"_GONER",
0, 0,
M_GonerDrawer,
M_DrawGonerBack,
M_GonerTick,
NULL,
NULL,
@ -495,7 +497,7 @@ void M_GonerTick(void)
}
}
static void M_GonerDrawer(void)
static void M_DrawGonerBack(void)
{
srb2::Draw drawer = srb2::Draw();
@ -503,8 +505,11 @@ static void M_GonerDrawer(void)
.width(BASEVIDWIDTH)
.height(BASEVIDHEIGHT)
.fill(31);
}
drawer = drawer.x(BASEVIDWIDTH/4);
static void M_GonerDrawer(void)
{
srb2::Draw drawer = srb2::Draw().x(BASEVIDWIDTH/4);
float newy = BASEVIDHEIGHT/2 + (3*12);
boolean first = true;

View file

@ -15,10 +15,11 @@ menu_t MAIN_ProfilesDef = {
MAIN_Profiles,
32, 80,
SKINCOLOR_ULTRAMARINE, 0,
0,
MBF_DRAWBGWHILEPLAYING,
"FILE",
2, 5,
M_DrawProfileSelect,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -45,10 +45,11 @@ menu_t OPTIONS_MainDef = {
OPTIONS_Main,
0, 0,
SKINCOLOR_SLATE, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -36,10 +36,11 @@ menu_t OPTIONS_DataDef = {
OPTIONS_Data,
48, 80,
SKINCOLOR_BLUEBERRY, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -37,10 +37,11 @@ menu_t OPTIONS_DataAddonDef = {
OPTIONS_DataAddon,
48, 80,
SKINCOLOR_BLUEBERRY, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -33,10 +33,11 @@ menu_t OPTIONS_DataDiscordDef = {
OPTIONS_DataDiscord,
48, 80,
SKINCOLOR_BLUEBERRY, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -40,10 +40,11 @@ menu_t OPTIONS_DataEraseDef = {
OPTIONS_DataErase,
48, 80,
SKINCOLOR_BLACK, 0,
0,
MBF_DRAWBGWHILEPLAYING,
"SHWDN2", // Danger.
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -17,10 +17,11 @@ menu_t OPTIONS_DataProfileEraseDef = {
OPTIONS_DataProfileErase,
48, 80,
SKINCOLOR_BLACK, 0,
0,
MBF_DRAWBGWHILEPLAYING,
"SHWDN2", // Danger.
2, 5,
M_DrawProfileErase,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -19,10 +19,11 @@ menu_t OPTIONS_DataReplayDef = {
OPTIONS_DataReplay,
48, 80,
SKINCOLOR_BLUEBERRY, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -35,10 +35,11 @@ menu_t OPTIONS_DataScreenshotDef = {
OPTIONS_DataScreenshot,
48, 80,
SKINCOLOR_BLUEBERRY, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -51,10 +51,11 @@ menu_t OPTIONS_GameplayDef = {
OPTIONS_Gameplay,
48, 80,
SKINCOLOR_SCARLET, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -55,10 +55,11 @@ menu_t OPTIONS_GameplayItemsDef = {
OPTIONS_GameplayItems,
14, 40,
SKINCOLOR_SCARLET, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawItemToggles,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -45,10 +45,11 @@ menu_t OPTIONS_HUDDef = {
OPTIONS_HUD,
48, 80,
SKINCOLOR_SUNSLAM, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -45,10 +45,11 @@ menu_t OPTIONS_HUDOnlineDef = {
OPTIONS_HUDOnline,
48, 80,
SKINCOLOR_SUNSLAM, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -17,10 +17,11 @@ menu_t OPTIONS_ProfilesDef = {
OPTIONS_Profiles,
32, 80,
SKINCOLOR_ULTRAMARINE, 0,
0,
MBF_DRAWBGWHILEPLAYING,
"FILE",
2, 5,
M_DrawProfileSelect,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -32,10 +32,11 @@ menu_t OPTIONS_EditProfileDef = {
OPTIONS_EditProfile,
32, 80,
SKINCOLOR_ULTRAMARINE, 0,
0,
MBF_DRAWBGWHILEPLAYING,
"FILE",
2, 5,
M_DrawEditProfile,
M_DrawOptionsCogs,
M_HandleProfileEdit,
NULL,
NULL,

View file

@ -114,10 +114,11 @@ menu_t OPTIONS_ProfileControlsDef = {
OPTIONS_ProfileControls,
32, 80,
SKINCOLOR_ULTRAMARINE, 0,
0,
MBF_DRAWBGWHILEPLAYING,
"FILE",
3, 5,
M_DrawProfileControls,
M_DrawOptionsCogs,
M_HandleProfileControls,
NULL,
NULL,

View file

@ -55,10 +55,11 @@ menu_t OPTIONS_ServerDef = {
OPTIONS_Server,
48, 70, // This menu here is slightly higher because there's a lot of options...
SKINCOLOR_VIOLET, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -53,10 +53,11 @@ menu_t OPTIONS_ServerAdvancedDef = {
OPTIONS_ServerAdvanced,
48, 70, // This menu here is slightly higher because there's a lot of options...
SKINCOLOR_VIOLET, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -57,10 +57,11 @@ menu_t OPTIONS_SoundDef = {
OPTIONS_Sound,
48, 80,
SKINCOLOR_THUNDER, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -61,10 +61,11 @@ menu_t OPTIONS_VideoDef = {
OPTIONS_Video,
32, 80,
SKINCOLOR_PLAGUE, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -53,10 +53,11 @@ menu_t OPTIONS_VideoOGLDef = {
OPTIONS_VideoOGL,
32, 80,
SKINCOLOR_PLAGUE, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawGenericOptions,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -19,10 +19,11 @@ menu_t OPTIONS_VideoModesDef = {
OPTIONS_VideoModes,
48, 80,
SKINCOLOR_PLAGUE, 0,
0,
MBF_DRAWBGWHILEPLAYING,
NULL,
2, 5,
M_DrawVideoModes,
M_DrawOptionsCogs,
M_OptionsTick,
NULL,
NULL,

View file

@ -16,6 +16,18 @@ menuitem_t PLAY_CharSelect[] =
{IT_NOTHING, NULL, NULL, NULL, {NULL}, 0, 0},
};
static void M_DrawCharacterBack(void)
{
if (!optionsmenu.profile)
{
if (gamestate == GS_MENU)
M_DrawMenuBackground();
return;
}
M_DrawOptionsCogs();
}
menu_t PLAY_CharSelectDef = {
sizeof (PLAY_CharSelect) / sizeof (menuitem_t),
&MainDef,
@ -27,6 +39,7 @@ menu_t PLAY_CharSelectDef = {
NULL,
2, 5, // matches OPTIONS_EditProfileDef
M_DrawCharacterSelect,
M_DrawCharacterBack,
M_CharacterSelectTick,
M_CharacterSelectInit,
M_CharacterSelectQuit,

View file

@ -46,6 +46,7 @@ menu_t PLAY_RaceDifficultyDef = {
NULL,
NULL,
NULL,
NULL,
NULL
};

View file

@ -76,6 +76,7 @@ menu_t PLAY_TimeAttackDef = {
NULL,
2, 5,
M_DrawTimeAttack,
NULL,
M_TimeAttackTick,
NULL,
NULL,
@ -122,6 +123,7 @@ menu_t PLAY_TAReplayDef = {
NULL,
NULL,
NULL,
NULL,
NULL
};
@ -167,6 +169,7 @@ menu_t PLAY_TAReplayGuestDef = {
NULL,
NULL,
NULL,
NULL,
NULL
};
@ -207,6 +210,7 @@ menu_t PLAY_TAGhostsDef = {
NULL,
NULL,
NULL,
NULL,
NULL
};

View file

@ -103,6 +103,7 @@ menu_t PLAY_MP_OptSelectDef = {
"NETMD2",
-1, 1,
M_DrawMPOptSelect,
M_DrawEggaChannel,
M_MPOptSelectTick,
NULL,
NULL,

View file

@ -39,6 +39,7 @@ menu_t PLAY_MP_HostDef = {
"NETMD2",
-1, 1, // 1 frame transition.... This is really just because I don't want the black fade when we press esc, hehe
M_DrawMPHost,
M_DrawEggaChannel,
M_MPOptSelectTick, // This handles the unfolding options
NULL,
M_MPResetOpts,

View file

@ -44,6 +44,7 @@ menu_t PLAY_MP_JoinIPDef = {
"NETMD2",
-1, 1, // 1 frame transition.... This is really just because I don't want the black fade when we press esc, hehe
M_DrawMPJoinIP,
M_DrawEggaChannel,
M_MPOptSelectTick, // This handles the unfolding options
NULL,
M_MPResetOpts,

View file

@ -21,6 +21,7 @@ menu_t PLAY_MP_RoomSelectDef = {
"NETMD2",
0, 0,
M_DrawMPRoomSelect,
M_DrawEggaChannel,
M_MPRoomSelectTick,
NULL,
NULL,

View file

@ -43,6 +43,7 @@ menu_t PLAY_MP_ServerBrowserDef = {
"NETMD2",
0, 0,
M_DrawMPServerBrowser,
NULL,
M_MPServerBrowserTick,
NULL,
M_ServerBrowserQuit,

View file

@ -27,6 +27,7 @@ menu_t PLAY_CupSelectDef = {
NULL,
2, 5,
M_DrawCupSelect,
NULL,
M_CupSelectTick,
NULL,
NULL,

View file

@ -84,6 +84,7 @@ menu_t MISC_DiscordRequestsDef = {
NULL,
0, 0,
M_DrawDiscordRequests,
NULL,
M_DiscordRequestTick,
NULL,
NULL,

View file

@ -18,6 +18,17 @@ menuitem_t PLAY_LevelSelect[] =
{IT_NOTHING | IT_KEYHANDLER, NULL, NULL, NULL, {.routine = M_LevelSelectHandler}, 0, 0},
};
static void M_DrawLevelSelectBack(void)
{
if (!levellist.levelsearch.tutorial)
{
M_DrawMenuBackground();
return;
}
M_DrawExtrasBack();
}
menu_t PLAY_LevelSelectDef = {
sizeof(PLAY_LevelSelect) / sizeof(menuitem_t),
&PLAY_CupSelectDef,
@ -29,6 +40,7 @@ menu_t PLAY_LevelSelectDef = {
NULL,
2, 5,
M_DrawLevelSelect,
M_DrawLevelSelectBack,
M_LevelSelectTick,
NULL,
NULL,

View file

@ -231,6 +231,7 @@ menu_t PAUSE_CheatsDef = {
0, 0,
draw_menu,
nullptr,
nullptr,
menu_open,
menu_close,
menu_input,

View file

@ -88,6 +88,7 @@ menu_t PAUSE_MainDef = {
NULL,
1, 10, // For transition with some menus!
M_DrawPause,
NULL,
M_PauseTick,
NULL,
NULL,

View file

@ -120,6 +120,7 @@ menu_t PAUSE_KickHandlerDef = {
NULL,
0, 0,
M_DrawKickHandler,
NULL,
M_KickHandlerTick,
NULL,
NULL,

View file

@ -43,6 +43,7 @@ menu_t PAUSE_PlaybackMenuDef = {
NULL,
0, 0,
M_DrawPlaybackMenu,
NULL,
M_PlaybackTick,
NULL,
NULL,

View file

@ -208,6 +208,7 @@ menu_t MISC_SoundTestDef = {
".",
98, 0,
M_DrawSoundTest,
M_DrawExtrasBack,
M_SoundTestTick,
NULL,
NULL,