From a64f97da7b7a6cab5d2347111b97b6726cb9110e Mon Sep 17 00:00:00 2001 From: SinnamonLat Date: Thu, 18 Nov 2021 22:05:22 +0100 Subject: [PATCH] Tiny prep work for splitscreen spectate/join to implement later --- src/k_menu.h | 4 ++++ src/k_menudef.c | 3 +++ src/k_menudraw.c | 2 +- src/k_menufunc.c | 25 ++++++++++++++++++------- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/k_menu.h b/src/k_menu.h index b16edd416..20dfcab17 100644 --- a/src/k_menu.h +++ b/src/k_menu.h @@ -212,6 +212,7 @@ typedef enum mpause_spectate, mpause_entergame, mpause_canceljoin, + mpause_spectatemenu, mpause_psetup, mpause_options, @@ -444,6 +445,9 @@ void M_QuitPauseMenu(void); boolean M_PauseInputs(INT32 ch); void M_PauseTick(void); +extern consvar_t cv_dummymenuplayer; +extern consvar_t cv_dummyspectator; + // Bunch of funny functions for the pause menu...~ void M_ConfirmSpectate(INT32 choice); // Spectate confirm when you're alone void M_ConfirmEnterGame(INT32 choice); // Enter game confirm when you're alone diff --git a/src/k_menudef.c b/src/k_menudef.c index d80e74760..ee9213bb7 100644 --- a/src/k_menudef.c +++ b/src/k_menudef.c @@ -325,6 +325,9 @@ menuitem_t PAUSE_Main[] = {IT_STRING | IT_CALL, "CANCEL JOIN", "M_ICOSPC", NULL, M_ConfirmSpectate, 0, 0}, + {IT_STRING | IT_SUBMENU, "JOIN OR SPECTATE", "M_ICOENT", + NULL, NULL, 0, 0}, + {IT_STRING | IT_CALL, "PLAYER SETUP", "M_ICOCHR", NULL, NULL, 0, 0}, diff --git a/src/k_menudraw.c b/src/k_menudraw.c index c2de58df2..d6efce47d 100644 --- a/src/k_menudraw.c +++ b/src/k_menudraw.c @@ -1711,7 +1711,7 @@ void M_DrawPause(void) { char c = currentMenu->menuitems[itemOn].text[j]; - if (c == ' ') + if (c == ' ' && !sok) { sok = true; j++; diff --git a/src/k_menufunc.c b/src/k_menufunc.c index 6a1788974..2f1943081 100644 --- a/src/k_menufunc.c +++ b/src/k_menufunc.c @@ -166,13 +166,15 @@ static CV_PossibleValue_t dummyscramble_cons_t[] = {{0, "Random"}, {1, "Points"} static CV_PossibleValue_t dummystaff_cons_t[] = {{0, "MIN"}, {100, "MAX"}, {0, NULL}}; static CV_PossibleValue_t dummygametype_cons_t[] = {{0, "Race"}, {1, "Battle"}, {0, NULL}}; -static consvar_t cv_dummymenuplayer = CVAR_INIT ("dummymenuplayer", "P1", CV_HIDDEN|CV_CALL, dummymenuplayer_cons_t, Dummymenuplayer_OnChange); +//static consvar_t cv_dummymenuplayer = CVAR_INIT ("dummymenuplayer", "P1", CV_HIDDEN|CV_CALL, dummymenuplayer_cons_t, Dummymenuplayer_OnChange); static consvar_t cv_dummyteam = CVAR_INIT ("dummyteam", "Spectator", CV_HIDDEN, dummyteam_cons_t, NULL); -static consvar_t cv_dummyspectate = CVAR_INIT ("dummyspectate", "Spectator", CV_HIDDEN, dummyspectate_cons_t, NULL); +//static cv_dummyspectate = CVAR_INITconsvar_t ("dummyspectate", "Spectator", CV_HIDDEN, dummyspectate_cons_t, NULL); static consvar_t cv_dummyscramble = CVAR_INIT ("dummyscramble", "Random", CV_HIDDEN, dummyscramble_cons_t, NULL); static consvar_t cv_dummystaff = CVAR_INIT ("dummystaff", "0", CV_HIDDEN|CV_CALL, dummystaff_cons_t, Dummystaff_OnChange); consvar_t cv_dummygametype = CVAR_INIT ("dummygametype", "Race", CV_HIDDEN, dummygametype_cons_t, NULL); consvar_t cv_dummyip = CVAR_INIT ("dummyip", "", CV_HIDDEN, NULL, NULL); +consvar_t cv_dummymenuplayer = CVAR_INIT ("dummymenuplayer", "P1", CV_HIDDEN|CV_CALL, dummymenuplayer_cons_t, Dummymenuplayer_OnChange); +consvar_t cv_dummyspectate = CVAR_INIT ("dummyspectate", "Spectator", CV_HIDDEN, dummyspectate_cons_t, NULL); // ========================================================================== // CVAR ONCHANGE EVENTS GO HERE @@ -2902,8 +2904,11 @@ void M_OpenPauseMenu(void) PAUSE_Main[mpause_spectate].status = IT_DISABLED; PAUSE_Main[mpause_entergame].status = IT_DISABLED; PAUSE_Main[mpause_canceljoin].status = IT_DISABLED; + PAUSE_Main[mpause_spectatemenu].status = IT_DISABLED; PAUSE_Main[mpause_psetup].status = IT_DISABLED; + Dummymenuplayer_OnChange(); // Make sure the consvar is within bounds of the amount of splitscreen players we have. + if (!singleplayermode && (server || IsPlayerAdmin(consoleplayer))) { PAUSE_Main[mpause_switchmap].status = IT_STRING | IT_SUBMENU; @@ -2915,12 +2920,18 @@ void M_OpenPauseMenu(void) if (G_GametypeHasSpectators()) { - if (!players[consoleplayer].spectator) - PAUSE_Main[mpause_spectate].status = IT_STRING | IT_CALL; - else if (players[consoleplayer].pflags & PF_WANTSTOJOIN) - PAUSE_Main[mpause_canceljoin].status = IT_STRING | IT_CALL; + + if (splitscreen) + PAUSE_Main[mpause_spectatemenu].status = IT_STRING|IT_SUBMENU; else - PAUSE_Main[mpause_entergame].status = IT_STRING | IT_CALL; + { + if (!players[consoleplayer].spectator) + PAUSE_Main[mpause_spectate].status = IT_STRING | IT_CALL; + else if (players[consoleplayer].pflags & PF_WANTSTOJOIN) + PAUSE_Main[mpause_canceljoin].status = IT_STRING | IT_CALL; + else + PAUSE_Main[mpause_entergame].status = IT_STRING | IT_CALL; + } }