diff --git a/src/common/engine/d_event.cpp b/src/common/engine/d_event.cpp index f851bb49e..6458500b1 100644 --- a/src/common/engine/d_event.cpp +++ b/src/common/engine/d_event.cpp @@ -94,7 +94,7 @@ void D_ProcessEvents (void) continue; // menu ate the event } - if (G_Responder(ev) && ev->type == EV_KeyDown) keywasdown.Set(ev->data1); + if (sysCallbacks.G_Responder(ev) && ev->type == EV_KeyDown) keywasdown.Set(ev->data1); } for (auto& ev: delayedevents) diff --git a/src/common/engine/i_interface.h b/src/common/engine/i_interface.h index caea1c7c2..d08eb859a 100644 --- a/src/common/engine/i_interface.h +++ b/src/common/engine/i_interface.h @@ -7,10 +7,12 @@ struct event_t; class FRenderState; class FGameTexture; +class FTextureID; enum EUpscaleFlags : int; struct SystemCallbacks { + bool (*G_Responder)(event_t* ev); // this MUST be set, otherwise nothing will work bool (*WantGuiCapture)(); bool (*WantLeftButton)(); bool (*NetGame)(); @@ -41,6 +43,7 @@ struct SystemCallbacks bool (*SetSpecialMenu)(FName& menu, int param); void (*OnMenuOpen)(bool makesound); void (*LanguageChanged)(const char*); + bool (*OkForLocalization)(FTextureID, const char*); }; extern SystemCallbacks sysCallbacks; diff --git a/src/common/menu/menu.cpp b/src/common/menu/menu.cpp index 05b7dac86..187fe5e9e 100644 --- a/src/common/menu/menu.cpp +++ b/src/common/menu/menu.cpp @@ -111,8 +111,6 @@ extern PClass *DefaultOptionMenuClass; #define KEY_REPEAT_DELAY (GameTicRate*5/12) #define KEY_REPEAT_RATE (3) -bool OkForLocalization(FTextureID texnum, const char* substitute); - //============================================================================ // // diff --git a/src/common/scripting/interface/vmnatives.cpp b/src/common/scripting/interface/vmnatives.cpp index 842c85994..4a0d3758b 100644 --- a/src/common/scripting/interface/vmnatives.cpp +++ b/src/common/scripting/interface/vmnatives.cpp @@ -522,11 +522,9 @@ DEFINE_ACTION_FUNCTION_NATIVE(_TexMan, CheckRealHeight, CheckRealHeight) ACTION_RETURN_INT(CheckRealHeight(texid)); } -bool OkForLocalization(FTextureID texnum, const char* substitute); - static int OkForLocalization_(int index, const FString& substitute) { - return OkForLocalization(FSetTextureID(index), substitute); + return sysCallbacks.OkForLocalization? sysCallbacks.OkForLocalization(FSetTextureID(index), substitute) : false; } DEFINE_ACTION_FUNCTION_NATIVE(_TexMan, OkForLocalization, OkForLocalization_) diff --git a/src/d_main.cpp b/src/d_main.cpp index 93614148d..f8df99c24 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -178,6 +178,7 @@ void S_ParseMusInfo(); void D_GrabCVarDefaults(); void LoadHexFont(const char* filename); void InitBuildTiles(); +bool OkForLocalization(FTextureID texnum, const char* substitute); // PRIVATE FUNCTION PROTOTYPES --------------------------------------------- @@ -3524,6 +3525,7 @@ static int D_DoomMain_Internal (void) buttonMap.GetButton(Button_Klook)->bReleaseLock = true; sysCallbacks = { + G_Responder, System_WantGuiCapture, System_WantLeftButton, System_NetGame, @@ -3554,6 +3556,8 @@ static int D_DoomMain_Internal (void) M_SetSpecialMenu, OnMenuOpen, System_LanguageChanged, + OkForLocalization, + };