From 782ec873f621995ad4d56dff6cc8318379113e7f Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Sat, 10 Sep 2022 16:03:21 +0200 Subject: [PATCH] fixes for heels or so I guess --- MareSynchronos/Managers/IpcManager.cs | 27 +++++++++++++++++++++++- MareSynchronos/Managers/PlayerManager.cs | 2 ++ MareSynchronos/Models/CharacterData.cs | 6 +++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/MareSynchronos/Managers/IpcManager.cs b/MareSynchronos/Managers/IpcManager.cs index e0f63c1..4500101 100644 --- a/MareSynchronos/Managers/IpcManager.cs +++ b/MareSynchronos/Managers/IpcManager.cs @@ -85,6 +85,14 @@ namespace MareSynchronos.Managers _penumbraRemoveTemporaryCollection = pi.GetIpcSubscriber("Penumbra.RemoveTemporaryCollection"); + _heelsGetApiVersion = pi.GetIpcSubscriber("HeelsPlugin.ApiVersion"); + _heelsGetOffset = pi.GetIpcSubscriber("HeelsPlugin.GetOffset"); + _heelsRegisterPlayer = pi.GetIpcSubscriber("HeelsPlugin.RegisterPlayer"); + _heelsUnregisterPlayer = pi.GetIpcSubscriber("HeelsPlugin.UnregisterPlayer"); + _heelsOffsetUpdate = pi.GetIpcSubscriber("HeelsPlugin.OffsetChanged"); + + _heelsOffsetUpdate.Subscribe(HeelsOffsetChange); + if (Initialized) { PenumbraInitialized?.Invoke(); @@ -144,6 +152,18 @@ namespace MareSynchronos.Managers } } + public bool CheckHeelsApi() + { + try + { + return _heelsGetApiVersion.InvokeFunc() == "1.0.1"; + } + catch + { + return false; + } + } + public void Dispose() { Logger.Verbose("Disposing " + nameof(IpcManager)); @@ -175,7 +195,7 @@ namespace MareSynchronos.Managers public void HeelsSetOffsetForPlayer(float offset, IntPtr character) { - if(!CheckHeelsApi()) return; + if (!CheckHeelsApi()) return; actionQueue.Enqueue(() => { var gameObj = _dalamudUtil.CreateGameObject(character); @@ -345,6 +365,11 @@ namespace MareSynchronos.Managers _penumbraRedraw!.InvokeAction("self", 0); } + private void HeelsOffsetChange(float offset) + { + HeelsOffsetChangeEvent?.Invoke(offset); + } + private void PenumbraDispose() { PenumbraDisposed?.Invoke(); diff --git a/MareSynchronos/Managers/PlayerManager.cs b/MareSynchronos/Managers/PlayerManager.cs index 5bb7ba4..582aee3 100644 --- a/MareSynchronos/Managers/PlayerManager.cs +++ b/MareSynchronos/Managers/PlayerManager.cs @@ -45,6 +45,8 @@ namespace MareSynchronos.Managers _apiController.Disconnected += ApiController_Disconnected; _transientResourceManager.TransientResourceLoaded += HandleTransientResourceLoad; _dalamudUtil.DelayedFrameworkUpdate += DalamudUtilOnDelayedFrameworkUpdate; + _ipcManager.HeelsOffsetChangeEvent += HeelsOffsetChanged; + Logger.Debug("Watching Player, ApiController is Connected: " + _apiController.IsConnected); if (_apiController.IsConnected) diff --git a/MareSynchronos/Models/CharacterData.cs b/MareSynchronos/Models/CharacterData.cs index 27726cf..3503997 100644 --- a/MareSynchronos/Models/CharacterData.cs +++ b/MareSynchronos/Models/CharacterData.cs @@ -22,6 +22,9 @@ namespace MareSynchronos.Models [JsonProperty] public string ManipulationString { get; set; } = string.Empty; + [JsonProperty] + public float HeelsOffset { get; set; } = 0f; + public void AddFileReplacement(ObjectKind objectKind, FileReplacement fileReplacement) { if (!fileReplacement.HasFileReplacement) return; @@ -67,7 +70,8 @@ namespace MareSynchronos.Models { FileReplacements = fileReplacements, GlamourerData = GlamourerString.ToDictionary(d => d.Key, d => d.Value), - ManipulationData = ManipulationString + ManipulationData = ManipulationString, + HeelsOffset = HeelsOffset }; }