mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-26 07:21:48 +00:00
General Menu Message input cleanup
- M_StopMessage is now in charge of setting the answer to a given prompt. - Menu Messages can now be dismissed on the title screen, instead of carried into the top-level menu transition.
This commit is contained in:
parent
17f23e8974
commit
d450faeaaf
4 changed files with 34 additions and 15 deletions
|
|
@ -1676,6 +1676,8 @@ static boolean M_ConfirmConnect(void)
|
|||
if (G_PlayerInputDown(0, gc_b, 1) || G_PlayerInputDown(0, gc_x, 1) || G_GetDeviceGameKeyDownArray(0)[KEY_ESCAPE])
|
||||
{
|
||||
cl_requestmode = CL_ABORTED;
|
||||
|
||||
M_StopMessage(MA_NO);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1704,6 +1706,7 @@ static boolean M_ConfirmConnect(void)
|
|||
else
|
||||
cl_requestmode = CL_LOADFILES;
|
||||
|
||||
M_StopMessage(MA_YES);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -2174,7 +2177,7 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic
|
|||
I_lock_mutex(&k_menu_mutex);
|
||||
#endif
|
||||
if (M_MenuMessageTick() && M_ConfirmConnect())
|
||||
M_StopMessage(0);
|
||||
;
|
||||
else if (menumessage.active == false)
|
||||
cl_mode = cl_requestmode;
|
||||
#ifdef HAVE_THREADS
|
||||
|
|
|
|||
|
|
@ -2131,8 +2131,10 @@ void F_TitleScreenTicker(boolean run)
|
|||
// Now start the music
|
||||
S_ChangeMusicInternal("_title", looptitle);
|
||||
}
|
||||
else if (menumessage.fadetimer < 9)
|
||||
menumessage.fadetimer++;
|
||||
else if (menumessage.active)
|
||||
{
|
||||
M_MenuMessageTick();
|
||||
}
|
||||
|
||||
finalecount++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -539,6 +539,21 @@ void M_StartControlPanel(void)
|
|||
// (We can change this timer later when extra animation is added.)
|
||||
if (finalecount < 1)
|
||||
return;
|
||||
|
||||
if (menumessage.active)
|
||||
{
|
||||
if (!menumessage.closing && menumessage.fadetimer == 9)
|
||||
{
|
||||
// The following doesn't work with MM_YESNO.
|
||||
// However, because there's no guarantee a profile
|
||||
// is selected or controls set up to our liking,
|
||||
// we can't call M_HandleMenuMessage.
|
||||
|
||||
M_StopMessage(MA_NONE);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
menuactive = true;
|
||||
|
|
@ -549,8 +564,6 @@ void M_StartControlPanel(void)
|
|||
}
|
||||
else if (!Playing())
|
||||
{
|
||||
M_StopMessage(0); // Doesn't work with MM_YESNO or MM_EVENTHANDLER... but good enough to get the game as it is currently functional again
|
||||
|
||||
if (gamestate != GS_MENU)
|
||||
{
|
||||
G_SetGamestate(GS_MENU);
|
||||
|
|
|
|||
|
|
@ -136,11 +136,14 @@ void M_StartMessage(const char *header, const char *string, void (*routine)(INT3
|
|||
|
||||
void M_StopMessage(INT32 choice)
|
||||
{
|
||||
if (!menumessage.active || menumessage.closing)
|
||||
return;
|
||||
|
||||
const char pid = 0;
|
||||
(void) choice;
|
||||
|
||||
menumessage.closing = true;
|
||||
menumessage.timer = 0;
|
||||
menumessage.answer = choice;
|
||||
M_SetMenuDelay(pid);
|
||||
}
|
||||
|
||||
|
|
@ -192,20 +195,18 @@ void M_HandleMenuMessage(void)
|
|||
case MM_YESNO:
|
||||
{
|
||||
if (btok)
|
||||
menumessage.answer = MA_YES;
|
||||
M_StopMessage(MA_YES);
|
||||
else if (btnok)
|
||||
menumessage.answer = MA_NO;
|
||||
M_StopMessage(MA_NO);
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
{
|
||||
if (btok || btnok)
|
||||
M_StopMessage(MA_NONE);
|
||||
|
||||
// if we detect any keypress, don't forget to set the menu delay regardless.
|
||||
if (btok || btnok)
|
||||
{
|
||||
M_StopMessage(0);
|
||||
M_SetMenuDelay(pid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue