- Fixed: M_QuitResponse() tried to play a sound even when none was specified
in the gameinfo. - Added Yes/No selections for Y/N messages so that you can answer them entirely with a joystick. - Fixed: Starting the menu at the title screen with a key other than Escape left the top level menu out of the menu stack. - Changed the save menu so that cancelling input of a new save name only deactivates that control and does not completely close the menus. - Fixed "any key" messages to override input to menus hidden beneath them and to work with joysticks. - Removed the input parameter from M_StartMessage and the corresponding messageNeedsInput global, because it was redundant. Any messages that want a Y/N response also supply a callback, and messages that don't care which key you press don't supply a callback. - Changed MKEY_Back so that it cancels out of text entry fields before backing to the previous menu, which it already did for the keyboard. - Changed the menu responder so that key downs always produce results, regardless of whether or not an equivalent key is already down. SVN r1753 (trunk)
This commit is contained in:
parent
3e388acc15
commit
732a44b338
11 changed files with 200 additions and 84 deletions
|
|
@ -241,6 +241,8 @@ void D_ProcessEvents (void)
|
|||
for (; eventtail != eventhead ; eventtail = (eventtail+1)&(MAXEVENTS-1))
|
||||
{
|
||||
ev = &events[eventtail];
|
||||
if (ev->type == EV_None)
|
||||
continue;
|
||||
if (ev->type == EV_DeviceChange)
|
||||
UpdateJoystickMenu(I_UpdateDeviceList());
|
||||
if (C_Responder (ev))
|
||||
|
|
@ -293,6 +295,41 @@ void D_PostEvent (const event_t *ev)
|
|||
eventhead = (eventhead+1)&(MAXEVENTS-1);
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// D_RemoveNextCharEvent
|
||||
//
|
||||
// Removes the next EV_GUI_Char event in the input queue. Used by the menu,
|
||||
// since it (generally) consumes EV_GUI_KeyDown events and not EV_GUI_Char
|
||||
// events, and it needs to ensure that there is no left over input when it's
|
||||
// done. If there are multiple EV_GUI_KeyDowns before the EV_GUI_Char, then
|
||||
// there are dead chars involved, so those should be removed, too. We do
|
||||
// this by changing the message type to EV_None rather than by actually
|
||||
// removing the event from the queue.
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
void D_RemoveNextCharEvent()
|
||||
{
|
||||
assert(events[eventtail].type == EV_GUI_Event && events[eventtail].subtype == EV_GUI_KeyDown);
|
||||
for (int evnum = eventtail; evnum != eventhead; evnum = (evnum+1) & (MAXEVENTS-1))
|
||||
{
|
||||
event_t *ev = &events[evnum];
|
||||
if (ev->type != EV_GUI_Event)
|
||||
break;
|
||||
if (ev->subtype == EV_GUI_KeyDown || ev->subtype == EV_GUI_Char)
|
||||
{
|
||||
ev->type = EV_None;
|
||||
if (ev->subtype == EV_GUI_Char)
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// CVAR dmflags
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue