mirror of
https://github.com/Caraxi/mare.client.git
synced 2025-12-12 18:27:24 +01:00
minion/pet/companion/mount rework
This commit is contained in:
parent
75885473ad
commit
9d9aac6bb3
14 changed files with 403 additions and 152 deletions
|
|
@ -8,6 +8,7 @@ using MareSynchronos.WebAPI;
|
|||
|
||||
namespace MareSynchronos.Managers
|
||||
{
|
||||
public delegate void PenumbraRedrawEvent(IntPtr address, int objTblIdx);
|
||||
public class IpcManager : IDisposable
|
||||
{
|
||||
private readonly ICallGateSubscriber<int> _glamourerApiVersion;
|
||||
|
|
@ -23,13 +24,16 @@ namespace MareSynchronos.Managers
|
|||
private readonly ICallGateSubscriber<object> _penumbraDispose;
|
||||
private readonly ICallGateSubscriber<IntPtr, int, object?> _penumbraObjectIsRedrawn;
|
||||
private readonly ICallGateSubscriber<string, int, object>? _penumbraRedraw;
|
||||
private readonly ICallGateSubscriber<GameObject, int, object>? _penumbraRedrawObject;
|
||||
private readonly ICallGateSubscriber<string, int> _penumbraRemoveTemporaryCollection;
|
||||
private readonly ICallGateSubscriber<string>? _penumbraResolveModDir;
|
||||
private readonly ICallGateSubscriber<string, string>? _penumbraResolvePlayer;
|
||||
private readonly ICallGateSubscriber<string, string[]>? _reverseResolvePlayer;
|
||||
private readonly ICallGateSubscriber<string, string, Dictionary<string, string>, string, int, int>
|
||||
_penumbraSetTemporaryMod;
|
||||
public IpcManager(DalamudPluginInterface pi)
|
||||
private readonly DalamudUtil _dalamudUtil;
|
||||
|
||||
public IpcManager(DalamudPluginInterface pi, DalamudUtil dalamudUtil)
|
||||
{
|
||||
Logger.Verbose("Creating " + nameof(IpcManager));
|
||||
|
||||
|
|
@ -38,6 +42,7 @@ namespace MareSynchronos.Managers
|
|||
_penumbraResolvePlayer = pi.GetIpcSubscriber<string, string>("Penumbra.ResolvePlayerPath");
|
||||
_penumbraResolveModDir = pi.GetIpcSubscriber<string>("Penumbra.GetModDirectory");
|
||||
_penumbraRedraw = pi.GetIpcSubscriber<string, int, object>("Penumbra.RedrawObjectByName");
|
||||
_penumbraRedrawObject = pi.GetIpcSubscriber<GameObject, int, object>("Penumbra.RedrawObject");
|
||||
_reverseResolvePlayer = pi.GetIpcSubscriber<string, string[]>("Penumbra.ReverseResolvePlayerPath");
|
||||
_penumbraApiVersion = pi.GetIpcSubscriber<(int, int)>("Penumbra.ApiVersions");
|
||||
_penumbraObjectIsRedrawn = pi.GetIpcSubscriber<IntPtr, int, object?>("Penumbra.GameObjectRedrawn");
|
||||
|
|
@ -69,11 +74,13 @@ namespace MareSynchronos.Managers
|
|||
{
|
||||
PenumbraInitialized?.Invoke();
|
||||
}
|
||||
|
||||
this._dalamudUtil = dalamudUtil;
|
||||
}
|
||||
|
||||
public event VoidDelegate? PenumbraInitialized;
|
||||
public event VoidDelegate? PenumbraDisposed;
|
||||
public event EventHandler? PenumbraRedrawEvent;
|
||||
public event PenumbraRedrawEvent? PenumbraRedrawEvent;
|
||||
|
||||
public bool Initialized => CheckPenumbraApi();
|
||||
public bool CheckGlamourerApi()
|
||||
|
|
@ -92,7 +99,7 @@ namespace MareSynchronos.Managers
|
|||
{
|
||||
try
|
||||
{
|
||||
return _penumbraApiVersion.InvokeFunc() is { Item1: 4, Item2: >=11 };
|
||||
return _penumbraApiVersion.InvokeFunc() is { Item1: 4, Item2: >= 11 };
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
|
@ -109,6 +116,16 @@ namespace MareSynchronos.Managers
|
|||
_penumbraObjectIsRedrawn.Unsubscribe(RedrawEvent);
|
||||
}
|
||||
|
||||
public void GlamourerApplyAll(string customization, IntPtr obj)
|
||||
{
|
||||
if (!CheckGlamourerApi()) return;
|
||||
var gameObj = _dalamudUtil.CreateGameObject(obj);
|
||||
if (gameObj != null)
|
||||
{
|
||||
_glamourerApplyAll!.InvokeAction(customization, gameObj);
|
||||
}
|
||||
}
|
||||
|
||||
public void GlamourerApplyAll(string customization, GameObject character)
|
||||
{
|
||||
if (!CheckGlamourerApi()) return;
|
||||
|
|
@ -162,6 +179,16 @@ namespace MareSynchronos.Managers
|
|||
return _penumbraResolveModDir!.InvokeFunc();
|
||||
}
|
||||
|
||||
public void PenumbraRedraw(IntPtr obj)
|
||||
{
|
||||
if (!CheckPenumbraApi()) return;
|
||||
var gameObj = _dalamudUtil.CreateGameObject(obj);
|
||||
if (gameObj != null)
|
||||
{
|
||||
_penumbraRedrawObject!.InvokeAction(gameObj, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public void PenumbraRedraw(string actorName)
|
||||
{
|
||||
if (!CheckPenumbraApi()) return;
|
||||
|
|
@ -209,7 +236,7 @@ namespace MareSynchronos.Managers
|
|||
|
||||
private void RedrawEvent(IntPtr objectAddress, int objectTableIndex)
|
||||
{
|
||||
PenumbraRedrawEvent?.Invoke(objectTableIndex, EventArgs.Empty);
|
||||
PenumbraRedrawEvent?.Invoke(objectAddress, objectTableIndex);
|
||||
}
|
||||
|
||||
private void PenumbraInit()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue