- fixed ESC pressing on Duke's monitors.

This got busted by an update from GZDoom.
This commit is contained in:
Christoph Oelckers 2022-12-18 12:56:34 +01:00
parent b931a960ed
commit e75448b56c
3 changed files with 16 additions and 7 deletions

View file

@ -44,8 +44,6 @@
#include "gamestate.h"
#include "i_interface.h"
bool G_Responder(event_t* ev);
int eventhead;
int eventtail;
event_t events[MAXEVENTS];
@ -86,12 +84,16 @@ void D_ProcessEvents (void)
if (ev->type == EV_DeviceChange)
UpdateJoystickMenu(I_UpdateDeviceList());
if (gamestate != GS_INTRO) // GS_INTRO blocks the UI.
// allow the game to intercept Escape before dispatching it.
if (ev->type != EV_KeyDown || ev->data1 != KEY_ESCAPE || !sysCallbacks.WantEscape())
{
if (C_Responder(ev))
continue; // console ate the event
if (M_Responder(ev))
continue; // menu ate the event
if (gamestate != GS_INTRO) // GS_INTRO blocks the UI.
{
if (C_Responder(ev))
continue; // console ate the event
if (M_Responder(ev))
continue; // menu ate the event
}
}
if (sysCallbacks.G_Responder(ev) && ev->type == EV_KeyDown) keywasdown.Set(ev->data1);

View file

@ -46,6 +46,7 @@ struct SystemCallbacks
void (*LanguageChanged)(const char*);
bool (*OkForLocalization)(FTextureID, const char*);
FConfigFile* (*GetConfig)();
bool (*WantEscape)();
};
extern SystemCallbacks sysCallbacks;

View file

@ -543,6 +543,11 @@ static void System_SetTransition(int type)
nextwipe = type;
}
bool WantEscape()
{
return gi->WantEscape();
}
void I_StartupJoysticks();
@ -592,6 +597,7 @@ int GameMain()
nullptr,
nullptr,
[]() ->FConfigFile* { return GameConfig; },
WantEscape,
};
try