From cf45067d9c7164ac46840e478a64c312d86f9b2f Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Sat, 18 Feb 2017 17:09:03 +0000 Subject: [PATCH] Gametype descriptions. https://gfycat.com/RelievedUnselfishChinchilla (competition's desc is slightly reworded but I'm too lazy to retake the gfy) --- src/m_menu.c | 29 ++++++++++++++++++++++++++--- src/m_menu.h | 6 ++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 9229fde0d..3f69dd064 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -608,6 +608,18 @@ static menuitem_t MISC_ChangeGameTypeMenu[] = {IT_STRING|IT_CALL, NULL, "Capture the Flag", M_MapChange, 72}, }; +static const gtdesc_t gametypedesc[] = +{ + {"Play through the single-player campaign with your friends, teaming up to beat Dr Eggman's nefarious challenges!"}, + {"Speed your way through the main acts, competing to get as much stuff as possible in the fastest time to see who's the best."}, + {"There's not much to it - zoom through the level faster than everyone else."}, + {"Sling rings at your foes in a free-for-all battle. Use the special weapon rings to your advantage!"}, + {"Sling rings at your foes in a color-coded battle. Use the special weapon rings to your advantage!"}, + {"Whoever's IT has to hunt down everyone else. If you get caught, you have to turn on your former friends!"}, + {"Try and find a good hiding place in these maps - we dare you."}, + {"Steal the flag from the enemy's base and bring it back to your own, but watch out - they could just as easily steal yours!"}, +}; + static menuitem_t MISC_ChangeLevelMenu[] = { {IT_KEYHANDLER | IT_NOTHING, NULL, "", M_HandleLevelPlatter, 0}, // dummy menuitem for the control func @@ -1465,7 +1477,7 @@ menu_t MISC_ChangeGameTypeDef = &MainDef, // Doesn't matter. MISC_ChangeGameTypeMenu, M_DrawGameTypeMenu, - 30, 104 - ((80 - lsheadingheight/2)/2), // vertically centering + 30, (200 - (72+8))/2, // vertically centering 0, NULL }; @@ -2444,7 +2456,8 @@ boolean M_Responder(event_t *ev) case KEY_DOWNARROW: M_NextOpt(); S_StartSound(NULL, sfx_menu1); - if (currentMenu == &SP_PlayerDef) + if (currentMenu == &SP_PlayerDef + || currentMenu == &MISC_ChangeGameTypeDef) { Z_Free(char_notes); char_notes = NULL; @@ -2454,7 +2467,8 @@ boolean M_Responder(event_t *ev) case KEY_UPARROW: M_PrevOpt(); S_StartSound(NULL, sfx_menu1); - if (currentMenu == &SP_PlayerDef) + if (currentMenu == &SP_PlayerDef + || currentMenu == &MISC_ChangeGameTypeDef) { Z_Free(char_notes); char_notes = NULL; @@ -6887,12 +6901,21 @@ static void M_GameTypeChange(INT32 choice) M_SetupNextMenu(&MISC_ChangeGameTypeDef); if (Playing()) itemOn = gametype; + + Z_Free(char_notes); + char_notes = NULL; } void M_DrawGameTypeMenu(void) { M_DrawGenericMenu(); M_DrawLevelPlatterHeader(currentMenu->y - lsheadingheight, "Select Gametype", true); + + if (!char_notes) + char_notes = V_WordWrap(0, (160 - 30) - 8, V_ALLOWLOWERCASE, gametypedesc[itemOn].notes); + + V_DrawFill(160, currentMenu->y, (160 - 30), 72 + 8, 159); + V_DrawString(164, currentMenu->y + 4, V_RETURN8|V_ALLOWLOWERCASE, char_notes); } static void M_MapChange(INT32 choice) diff --git a/src/m_menu.h b/src/m_menu.h index 01adfff80..785a3785c 100644 --- a/src/m_menu.h +++ b/src/m_menu.h @@ -198,6 +198,12 @@ typedef struct } levelselect_t; // experimental level select end +// descriptions for gametype select screen +typedef struct +{ + char notes[441]; +} gtdesc_t; + // mode descriptions for video mode menu typedef struct {