From 6b3a4ce044c867d493cd32d8ab0a1225caace3d3 Mon Sep 17 00:00:00 2001 From: Yannick Yannick Date: Fri, 12 Apr 2024 12:16:49 +0200 Subject: [PATCH] feat: add ModuleLoaded event to ModuleManager fix: set ModuleDisabled to null when disposing ModuleManager --- Blish HUD/GameServices/Modules/ModuleManager.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Blish HUD/GameServices/Modules/ModuleManager.cs b/Blish HUD/GameServices/Modules/ModuleManager.cs index efb637ba3..6baa82171 100644 --- a/Blish HUD/GameServices/Modules/ModuleManager.cs +++ b/Blish HUD/GameServices/Modules/ModuleManager.cs @@ -18,6 +18,12 @@ public class ModuleManager : IDisposable { public event EventHandler ModuleEnabled; public event EventHandler ModuleDisabled; + public event EventHandler ModuleLoaded; + + public void OnModuleLoaded(object _, EventArgs e) { + this.ModuleLoaded?.Invoke(this, e); + } + private Assembly _moduleAssembly; private bool _forceAllowDependency = false; @@ -84,6 +90,8 @@ public bool TryEnable() { _dirtyNamespaces.Add(this.Manifest.Namespace); } + this.ModuleInstance.ModuleLoaded += OnModuleLoaded; + this.Enabled = true; try { @@ -113,6 +121,10 @@ public void Disable() { this.Enabled = false; + if (this.ModuleInstance != null) { + this.ModuleInstance.ModuleLoaded -= OnModuleLoaded; + } + try { this.ModuleInstance?.Dispose(); } catch (Exception ex) { @@ -246,7 +258,9 @@ public void Dispose() { GameService.Module.UnregisterModule(this); this.ModuleEnabled = null; - this.ModuleEnabled = null; + this.ModuleDisabled = null; + + this.ModuleLoaded = null; _moduleAssembly = null;