From d2c9cde1d2a74855fcbfe17711d8475ddbe5fca4 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Sat, 13 Jun 2020 15:23:52 -0400 Subject: [PATCH] Fix double event call, jankily --- GamecraftModdingAPI/Events/MenuActivatedPatch.cs | 1 + .../Events/SimpleEventHandlerEngine.cs | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/GamecraftModdingAPI/Events/MenuActivatedPatch.cs b/GamecraftModdingAPI/Events/MenuActivatedPatch.cs index 2b66a05..4237faa 100644 --- a/GamecraftModdingAPI/Events/MenuActivatedPatch.cs +++ b/GamecraftModdingAPI/Events/MenuActivatedPatch.cs @@ -31,6 +31,7 @@ namespace GamecraftModdingAPI.Events { firstLoad = false; FullGameFields.Init(__instance); + //Application.Application.SetFullGameCompositionRoot(__instance); Logging.Log("Dispatching App Init event"); EventManager.GetEventEmitter("GamecraftModdingAPIApplicationInitializedEventEmitter").Emit(); } diff --git a/GamecraftModdingAPI/Events/SimpleEventHandlerEngine.cs b/GamecraftModdingAPI/Events/SimpleEventHandlerEngine.cs index 133ad29..18314d9 100644 --- a/GamecraftModdingAPI/Events/SimpleEventHandlerEngine.cs +++ b/GamecraftModdingAPI/Events/SimpleEventHandlerEngine.cs @@ -20,6 +20,10 @@ namespace GamecraftModdingAPI.Events private bool isActivated = false; + private bool jankActivateFix = false; + + private bool jankDestroyFix = false; + private readonly Action onActivated; private readonly Action onDestroyed; @@ -32,6 +36,8 @@ namespace GamecraftModdingAPI.Events { if (entityView.type.Equals(this.type)) { + jankActivateFix = !jankActivateFix; + if (jankActivateFix) return; isActivated = true; onActivatedInvokeCatchError(entitiesDB); } @@ -51,12 +57,19 @@ namespace GamecraftModdingAPI.Events } } + public void Deactivate() + { + isActivated = false; + } + public void Ready() { } public void Remove(ref ModEventEntityStruct entityView, EGID egid) { if (entityView.type.Equals(this.type) && isActivated) { + jankDestroyFix = !jankDestroyFix; + if (jankDestroyFix) return; isActivated = false; onDestroyedInvokeCatchError(entitiesDB); }