- moved some event related code to 'common'.
This commit is contained in:
parent
d739587f6b
commit
5dfe9918d0
24 changed files with 410 additions and 237 deletions
|
|
@ -301,9 +301,6 @@ bool autostart;
|
|||
bool advancedemo;
|
||||
FILE *debugfile;
|
||||
FILE *hashfile;
|
||||
event_t events[MAXEVENTS];
|
||||
int eventhead;
|
||||
int eventtail;
|
||||
gamestate_t wipegamestate = GS_DEMOSCREEN; // can be -1 to force a wipe
|
||||
bool PageBlank;
|
||||
FGameTexture *Advisory;
|
||||
|
|
@ -444,38 +441,6 @@ CCMD(togglehud)
|
|||
D_ToggleHud();
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// D_ProcessEvents
|
||||
//
|
||||
// Send all the events of the given timestamp down the responder chain.
|
||||
// Events are asynchronous inputs generally generated by the game user.
|
||||
// Events can be discarded if no responder claims them
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
void D_ProcessEvents (void)
|
||||
{
|
||||
event_t *ev;
|
||||
|
||||
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))
|
||||
continue; // console ate the event
|
||||
if (M_Responder (ev))
|
||||
continue; // menu ate the event
|
||||
// check events
|
||||
if (ev->type != EV_Mouse && primaryLevel->localEventManager->Responder(ev)) // [ZZ] ZScript ate the event // update 07.03.17: mouse events are handled directly
|
||||
continue;
|
||||
G_Responder (ev);
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// D_PostEvent
|
||||
|
|
@ -518,41 +483,6 @@ 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// Render wrapper.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue