From 3c7dbf9f81e147e45f7b3541844e95cebcc3a5df Mon Sep 17 00:00:00 2001 From: MidoriKami Date: Fri, 5 Dec 2025 16:59:17 -0800 Subject: [PATCH] Remove AddonEventManagerAddressResolver.cs --- .../Game/Addon/Events/AddonEventManager.cs | 30 ++++++++----------- .../AddonEventManagerAddressResolver.cs | 21 ------------- 2 files changed, 12 insertions(+), 39 deletions(-) delete mode 100644 Dalamud/Game/Addon/Events/AddonEventManagerAddressResolver.cs diff --git a/Dalamud/Game/Addon/Events/AddonEventManager.cs b/Dalamud/Game/Addon/Events/AddonEventManager.cs index 945197e2b..980404940 100644 --- a/Dalamud/Game/Addon/Events/AddonEventManager.cs +++ b/Dalamud/Game/Addon/Events/AddonEventManager.cs @@ -9,7 +9,6 @@ using Dalamud.Logging.Internal; using Dalamud.Plugin.Internal.Types; using Dalamud.Plugin.Services; -using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Component.GUI; namespace Dalamud.Game.Addon.Events; @@ -32,25 +31,21 @@ internal unsafe class AddonEventManager : IInternalDisposableService private readonly AddonLifecycleEventListener finalizeEventListener; - private readonly AddonEventManagerAddressResolver address; - private readonly Hook onUpdateCursor; + private readonly Hook onUpdateCursor; private readonly ConcurrentDictionary pluginEventControllers; - private AddonCursorType? cursorOverride; + private AtkCursor.CursorType? cursorOverride; [ServiceManager.ServiceConstructor] - private AddonEventManager(TargetSigScanner sigScanner) + private AddonEventManager() { - this.address = new AddonEventManagerAddressResolver(); - this.address.Setup(sigScanner); - this.pluginEventControllers = new ConcurrentDictionary(); this.pluginEventControllers.TryAdd(DalamudInternalKey, new PluginEventController()); this.cursorOverride = null; - this.onUpdateCursor = Hook.FromAddress(this.address.UpdateCursor, this.UpdateCursorDetour); + this.onUpdateCursor = Hook.FromAddress(AtkUnitManager.Addresses.UpdateCursor.Value, this.UpdateCursorDetour); this.finalizeEventListener = new AddonLifecycleEventListener(AddonEvent.PreFinalize, string.Empty, this.OnAddonFinalize); this.addonLifecycle.RegisterListener(this.finalizeEventListener); @@ -58,8 +53,6 @@ internal unsafe class AddonEventManager : IInternalDisposableService this.onUpdateCursor.Enable(); } - private delegate nint UpdateCursorDelegate(RaptureAtkModule* module); - /// void IInternalDisposableService.DisposeService() { @@ -117,7 +110,7 @@ internal unsafe class AddonEventManager : IInternalDisposableService /// Force the game cursor to be the specified cursor. /// /// Which cursor to use. - internal void SetCursor(AddonCursorType cursor) => this.cursorOverride = cursor; + internal void SetCursor(AddonCursorType cursor) => this.cursorOverride = (AtkCursor.CursorType)cursor; /// /// Un-forces the game cursor. @@ -168,7 +161,7 @@ internal unsafe class AddonEventManager : IInternalDisposableService } } - private nint UpdateCursorDetour(RaptureAtkModule* module) + private void UpdateCursorDetour(AtkUnitManager* thisPtr) { try { @@ -176,13 +169,14 @@ internal unsafe class AddonEventManager : IInternalDisposableService if (this.cursorOverride is not null && atkStage is not null) { - var cursor = (AddonCursorType)atkStage->AtkCursor.Type; - if (cursor != this.cursorOverride) + ref var atkCursor = ref atkStage->AtkCursor; + + if (atkCursor.Type != this.cursorOverride) { - AtkStage.Instance()->AtkCursor.SetCursorType((AtkCursor.CursorType)this.cursorOverride, 1); + atkCursor.SetCursorType((AtkCursor.CursorType)this.cursorOverride, 1); } - return nint.Zero; + return; } } catch (Exception e) @@ -190,7 +184,7 @@ internal unsafe class AddonEventManager : IInternalDisposableService Log.Error(e, "Exception in UpdateCursorDetour."); } - return this.onUpdateCursor!.Original(module); + this.onUpdateCursor!.Original(thisPtr); } } diff --git a/Dalamud/Game/Addon/Events/AddonEventManagerAddressResolver.cs b/Dalamud/Game/Addon/Events/AddonEventManagerAddressResolver.cs deleted file mode 100644 index 415e1b169..000000000 --- a/Dalamud/Game/Addon/Events/AddonEventManagerAddressResolver.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Dalamud.Game.Addon.Events; - -/// -/// AddonEventManager memory address resolver. -/// -internal class AddonEventManagerAddressResolver : BaseAddressResolver -{ - /// - /// Gets the address of the AtkModule UpdateCursor method. - /// - public nint UpdateCursor { get; private set; } - - /// - /// Scan for and setup any configured address pointers. - /// - /// The signature scanner to facilitate setup. - protected override void Setup64Bit(ISigScanner scanner) - { - this.UpdateCursor = scanner.ScanText("48 89 74 24 ?? 48 89 7C 24 ?? 41 56 48 83 EC 20 4C 8B F1 E8 ?? ?? ?? ?? 49 8B CE"); // unnamed in CS - } -}