From 536f29aa431920b8a0615506230055f0674f19a5 Mon Sep 17 00:00:00 2001 From: Ottermandias <70807659+Ottermandias@users.noreply.github.com> Date: Mon, 20 May 2024 11:40:33 +0200 Subject: [PATCH] Api update (#73) * Use NuGet. * Update API usage. --- .../Interop/Ipc/IpcCallerGlamourer.cs | 59 ++++---- .../Interop/Ipc/IpcCallerPenumbra.cs | 128 +++++++++--------- MareSynchronos/MareSynchronos.csproj | 3 +- .../PlayerData/Export/MareCharaFileManager.cs | 3 +- .../PlayerData/Factories/PlayerDataFactory.cs | 2 +- .../PlayerData/Handlers/PairHandler.cs | 2 +- 6 files changed, 101 insertions(+), 96 deletions(-) diff --git a/MareSynchronos/Interop/Ipc/IpcCallerGlamourer.cs b/MareSynchronos/Interop/Ipc/IpcCallerGlamourer.cs index 5c98c2e..fc11c98 100644 --- a/MareSynchronos/Interop/Ipc/IpcCallerGlamourer.cs +++ b/MareSynchronos/Interop/Ipc/IpcCallerGlamourer.cs @@ -1,7 +1,8 @@ using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Interface.Internal.Notifications; using Dalamud.Plugin; -using Dalamud.Plugin.Ipc; +using Glamourer.Api.Helpers; +using Glamourer.Api.IpcSubscribers; using MareSynchronos.PlayerData.Handlers; using MareSynchronos.Services; using MareSynchronos.Services.Mediator; @@ -11,12 +12,14 @@ namespace MareSynchronos.Interop.Ipc; public sealed class IpcCallerGlamourer : IIpcCaller { - private readonly ICallGateSubscriber<(int, int)> _glamourerApiVersions; - private readonly ICallGateSubscriber? _glamourerApplyAll; - private readonly ICallGateSubscriber? _glamourerGetAllCustomization; - private readonly ICallGateSubscriber _glamourerRevert; - private readonly ICallGateSubscriber _glamourerRevertByName; - private readonly ICallGateSubscriber _glamourerUnlock; + private readonly ApiVersion _glamourerApiVersions; + private readonly ApplyState? _glamourerApplyAll; + private readonly GetStateBase64? _glamourerGetAllCustomization; + private readonly RevertState _glamourerRevert; + private readonly RevertStateName _glamourerRevertByName; + private readonly UnlockState _glamourerUnlock; + private readonly UnlockStateName _glamourerUnlockByName; + private readonly EventSubscriber _glamourerStateChanged; private readonly ILogger _logger; private readonly DalamudPluginInterface _pi; private readonly DalamudUtilService _dalamudUtil; @@ -28,14 +31,16 @@ public sealed class IpcCallerGlamourer : IIpcCaller public IpcCallerGlamourer(ILogger logger, DalamudPluginInterface pi, DalamudUtilService dalamudUtil, MareMediator mareMediator, RedrawManager redrawManager) { - _glamourerApiVersions = pi.GetIpcSubscriber<(int, int)>("Glamourer.ApiVersions"); - _glamourerGetAllCustomization = pi.GetIpcSubscriber("Glamourer.GetAllCustomizationFromCharacter"); - _glamourerApplyAll = pi.GetIpcSubscriber("Glamourer.ApplyAllToCharacterLock"); - _glamourerRevert = pi.GetIpcSubscriber("Glamourer.RevertCharacterLock"); - _glamourerRevertByName = pi.GetIpcSubscriber("Glamourer.RevertLock"); - _glamourerUnlock = pi.GetIpcSubscriber("Glamourer.UnlockName"); - - pi.GetIpcSubscriber, object?>("Glamourer.StateChanged").Subscribe((type, address, customize) => GlamourerChanged(address)); + _glamourerApiVersions = new ApiVersion(pi); + _glamourerGetAllCustomization = new GetStateBase64(pi); + _glamourerApplyAll = new ApplyState(pi); + _glamourerRevert = new RevertState(pi); + _glamourerRevertByName = new RevertStateName(pi); + _glamourerUnlock = new UnlockState(pi); + _glamourerUnlockByName = new UnlockStateName(pi); + + _glamourerStateChanged = StateChanged.Subscriber(pi, GlamourerChanged); + _glamourerStateChanged.Enable(); _logger = logger; _pi = pi; _dalamudUtil = dalamudUtil; @@ -51,11 +56,11 @@ public sealed class IpcCallerGlamourer : IIpcCaller bool apiAvailable = false; try { - var version = _glamourerApiVersions.InvokeFunc(); + var version = _glamourerApiVersions.Invoke(); bool versionValid = (_pi.InstalledPlugins .FirstOrDefault(p => string.Equals(p.InternalName, "Glamourer", StringComparison.OrdinalIgnoreCase)) - ?.Version ?? new Version(0, 0, 0, 0)) >= new Version(1, 0, 6, 1); - if (version.Item1 == 0 && version.Item2 >= 1 && versionValid) + ?.Version ?? new Version(0, 0, 0, 0)) >= new Version(1, 2, 1, 4); + if (version is { Major: 1, Minor: >= 1 } && versionValid) { apiAvailable = true; } @@ -80,7 +85,7 @@ public sealed class IpcCallerGlamourer : IIpcCaller public void Dispose() { - _pi.GetIpcSubscriber, object?>("Glamourer.StateChanged").Unsubscribe((type, address, customize) => GlamourerChanged(address)); + _glamourerStateChanged.Dispose(); } public async Task ApplyAllAsync(ILogger logger, GameObjectHandler handler, string? customization, Guid applicationId, CancellationToken token, bool fireAndForget = false) @@ -97,7 +102,7 @@ public sealed class IpcCallerGlamourer : IIpcCaller try { logger.LogDebug("[{appid}] Calling on IPC: GlamourerApplyAll", applicationId); - _glamourerApplyAll!.InvokeAction(customization, chara, LockCode); + _glamourerApplyAll!.Invoke(customization, chara.ObjectIndex, LockCode); } catch (Exception) { @@ -121,7 +126,7 @@ public sealed class IpcCallerGlamourer : IIpcCaller var gameObj = _dalamudUtil.CreateGameObject(character); if (gameObj is Character c) { - return _glamourerGetAllCustomization!.InvokeFunc(c); + return _glamourerGetAllCustomization!.Invoke(c.ObjectIndex).Item2 ?? string.Empty; } return string.Empty; }).ConfigureAwait(false); @@ -143,9 +148,9 @@ public sealed class IpcCallerGlamourer : IIpcCaller try { logger.LogDebug("[{appid}] Calling On IPC: GlamourerUnlockName", applicationId); - _glamourerUnlock.InvokeFunc(name, LockCode); + _glamourerUnlock.Invoke(chara.ObjectIndex, LockCode); logger.LogDebug("[{appid}] Calling On IPC: GlamourerRevert", applicationId); - _glamourerRevert.InvokeAction(chara, LockCode); + _glamourerRevert.Invoke(chara.ObjectIndex, LockCode); logger.LogDebug("[{appid}] Calling On IPC: PenumbraRedraw", applicationId); _mareMediator.Publish(new PenumbraRedrawCharacterMessage(chara)); } @@ -170,9 +175,9 @@ public sealed class IpcCallerGlamourer : IIpcCaller try { logger.LogDebug("[{appid}] Calling On IPC: GlamourerRevertByName", applicationId); - _glamourerRevertByName.InvokeAction(name, LockCode); + _glamourerRevertByName.Invoke(name, LockCode); logger.LogDebug("[{appid}] Calling On IPC: GlamourerUnlockName", applicationId); - _glamourerUnlock.InvokeFunc(name, LockCode); + _glamourerUnlockByName.Invoke(name, LockCode); } catch (Exception ex) { @@ -187,9 +192,9 @@ public sealed class IpcCallerGlamourer : IIpcCaller try { logger.LogDebug("[{appid}] Calling On IPC: GlamourerRevertByName", applicationId); - _glamourerRevertByName.InvokeAction(name, LockCode); + _glamourerRevertByName.Invoke(name, LockCode); logger.LogDebug("[{appid}] Calling On IPC: GlamourerUnlockName", applicationId); - _glamourerUnlock.InvokeFunc(name, LockCode); + _glamourerUnlockByName.Invoke(name, LockCode); } catch (Exception ex) { diff --git a/MareSynchronos/Interop/Ipc/IpcCallerPenumbra.cs b/MareSynchronos/Interop/Ipc/IpcCallerPenumbra.cs index 1472653..c65966e 100644 --- a/MareSynchronos/Interop/Ipc/IpcCallerPenumbra.cs +++ b/MareSynchronos/Interop/Ipc/IpcCallerPenumbra.cs @@ -1,5 +1,4 @@ -using Dalamud.Game.ClientState.Objects.Types; -using Dalamud.Interface.Internal.Notifications; +using Dalamud.Interface.Internal.Notifications; using Dalamud.Plugin; using MareSynchronos.PlayerData.Handlers; using MareSynchronos.Services; @@ -7,6 +6,7 @@ using MareSynchronos.Services.Mediator; using Microsoft.Extensions.Logging; using Penumbra.Api.Enums; using Penumbra.Api.Helpers; +using Penumbra.Api.IpcSubscribers; using System.Collections.Concurrent; namespace MareSynchronos.Interop.Ipc; @@ -31,26 +31,27 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa } } } + + private readonly ConcurrentDictionary _penumbraRedrawRequests = new(); + + private readonly EventSubscriber _penumbraDispose; + private readonly EventSubscriber _penumbraGameObjectResourcePathResolved; + private readonly EventSubscriber _penumbraInit; + private readonly EventSubscriber _penumbraModSettingChanged; + private readonly EventSubscriber _penumbraObjectIsRedrawn; - private readonly FuncSubscriber, string, int, PenumbraApiEc> _penumbraAddTemporaryMod; - private readonly FuncSubscriber _penumbraAssignTemporaryCollection; - private readonly FuncSubscriber _penumbraConvertTextureFile; - private readonly FuncSubscriber _penumbraCreateNamedTemporaryCollection; - private readonly EventSubscriber _penumbraDispose; - private readonly FuncSubscriber _penumbraEnabled; - private readonly EventSubscriber _penumbraGameObjectResourcePathResolved; - private readonly FuncSubscriber _penumbraGetMetaManipulations; - private readonly EventSubscriber _penumbraInit; - private readonly EventSubscriber _penumbraModSettingChanged; - private readonly EventSubscriber _penumbraObjectIsRedrawn; - private readonly ActionSubscriber _penumbraRedraw; - private readonly ActionSubscriber _penumbraRedrawObject; - private readonly ConcurrentDictionary _penumbraRedrawRequests = new(); - private readonly FuncSubscriber _penumbraRemoveTemporaryCollection; - private readonly FuncSubscriber _penumbraRemoveTemporaryMod; - private readonly FuncSubscriber _penumbraResolveModDir; - private readonly FuncSubscriber> _penumbraResolvePaths; - private readonly ParamsFuncSubscriber?[]> _penumbraResourcePaths; + private readonly AddTemporaryMod _penumbraAddTemporaryMod; + private readonly AssignTemporaryCollection _penumbraAssignTemporaryCollection; + private readonly ConvertTextureFile _penumbraConvertTextureFile; + private readonly CreateTemporaryCollection _penumbraCreateNamedTemporaryCollection; + private readonly GetEnabledState _penumbraEnabled; + private readonly GetPlayerMetaManipulations _penumbraGetMetaManipulations; + private readonly RedrawObject _penumbraRedraw; + private readonly DeleteTemporaryCollection _penumbraRemoveTemporaryCollection; + private readonly RemoveTemporaryMod _penumbraRemoveTemporaryMod; + private readonly GetModDirectory _penumbraResolveModDir; + private readonly ResolvePlayerPathsAsync _penumbraResolvePaths; + private readonly GetGameObjectResourcePaths _penumbraResourcePaths; public IpcCallerPenumbra(ILogger logger, DalamudPluginInterface pi, DalamudUtilService dalamudUtil, MareMediator mareMediator, RedrawManager redrawManager) : base(logger, mareMediator) @@ -59,34 +60,33 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa _dalamudUtil = dalamudUtil; _mareMediator = mareMediator; _redrawManager = redrawManager; - _penumbraInit = Penumbra.Api.Ipc.Initialized.Subscriber(pi, PenumbraInit); - _penumbraDispose = Penumbra.Api.Ipc.Disposed.Subscriber(pi, PenumbraDispose); - _penumbraResolveModDir = Penumbra.Api.Ipc.GetModDirectory.Subscriber(pi); - _penumbraRedraw = Penumbra.Api.Ipc.RedrawObjectByName.Subscriber(pi); - _penumbraRedrawObject = Penumbra.Api.Ipc.RedrawObject.Subscriber(pi); - _penumbraObjectIsRedrawn = Penumbra.Api.Ipc.GameObjectRedrawn.Subscriber(pi, RedrawEvent); - _penumbraGetMetaManipulations = Penumbra.Api.Ipc.GetPlayerMetaManipulations.Subscriber(pi); - _penumbraRemoveTemporaryMod = Penumbra.Api.Ipc.RemoveTemporaryMod.Subscriber(pi); - _penumbraAddTemporaryMod = Penumbra.Api.Ipc.AddTemporaryMod.Subscriber(pi); - _penumbraCreateNamedTemporaryCollection = Penumbra.Api.Ipc.CreateNamedTemporaryCollection.Subscriber(pi); - _penumbraRemoveTemporaryCollection = Penumbra.Api.Ipc.RemoveTemporaryCollectionByName.Subscriber(pi); - _penumbraAssignTemporaryCollection = Penumbra.Api.Ipc.AssignTemporaryCollection.Subscriber(pi); - _penumbraResolvePaths = Penumbra.Api.Ipc.ResolvePlayerPathsAsync.Subscriber(pi); - _penumbraEnabled = Penumbra.Api.Ipc.GetEnabledState.Subscriber(pi); - _penumbraModSettingChanged = Penumbra.Api.Ipc.ModSettingChanged.Subscriber(pi, (change, arg1, arg, b) => + _penumbraInit = Initialized.Subscriber(pi, PenumbraInit); + _penumbraDispose = Disposed.Subscriber(pi, PenumbraDispose); + _penumbraResolveModDir = new GetModDirectory(pi); + _penumbraRedraw = new RedrawObject(pi); + _penumbraObjectIsRedrawn = GameObjectRedrawn.Subscriber(pi, RedrawEvent); + _penumbraGetMetaManipulations = new GetPlayerMetaManipulations(pi); + _penumbraRemoveTemporaryMod = new RemoveTemporaryMod(pi); + _penumbraAddTemporaryMod = new AddTemporaryMod(pi); + _penumbraCreateNamedTemporaryCollection = new CreateTemporaryCollection(pi); + _penumbraRemoveTemporaryCollection = new DeleteTemporaryCollection(pi); + _penumbraAssignTemporaryCollection = new AssignTemporaryCollection(pi); + _penumbraResolvePaths = new ResolvePlayerPathsAsync(pi); + _penumbraEnabled = new GetEnabledState(pi); + _penumbraModSettingChanged = ModSettingChanged.Subscriber(pi, (change, arg1, arg, b) => { if (change == ModSettingChange.EnableState) _mareMediator.Publish(new PenumbraModSettingChangedMessage()); }); - _penumbraConvertTextureFile = Penumbra.Api.Ipc.ConvertTextureFile.Subscriber(pi); - _penumbraResourcePaths = Penumbra.Api.Ipc.GetGameObjectResourcePaths.Subscriber(pi); + _penumbraConvertTextureFile = new ConvertTextureFile(pi); + _penumbraResourcePaths = new GetGameObjectResourcePaths(pi); - _penumbraGameObjectResourcePathResolved = Penumbra.Api.Ipc.GameObjectResourcePathResolved.Subscriber(pi, ResourceLoaded); + _penumbraGameObjectResourcePathResolved = GameObjectResourcePathResolved.Subscriber(pi, ResourceLoaded); CheckAPI(); CheckModDirectory(); - Mediator.Subscribe(this, (msg) => _penumbraRedrawObject.Invoke(msg.Character, RedrawType.AfterGPose)); + Mediator.Subscribe(this, (msg) => _penumbraRedraw.Invoke(msg.Character.ObjectIndex, RedrawType.AfterGPose)); } public bool APIAvailable { get; private set; } = false; @@ -98,7 +98,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa { penumbraAvailable = (_pi.InstalledPlugins .FirstOrDefault(p => string.Equals(p.InternalName, "Penumbra", StringComparison.OrdinalIgnoreCase)) - ?.Version ?? new Version(0, 0, 0, 0)) >= new Version(0, 8, 1, 6); + ?.Version ?? new Version(0, 0, 0, 0)) >= new Version(1, 0, 2, 7); penumbraAvailable &= _penumbraEnabled.Invoke(); _shownPenumbraUnavailable = _shownPenumbraUnavailable && !penumbraAvailable; APIAvailable = penumbraAvailable; @@ -144,13 +144,13 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa _penumbraObjectIsRedrawn.Dispose(); } - public async Task AssignTemporaryCollectionAsync(ILogger logger, string collName, int idx) + public async Task AssignTemporaryCollectionAsync(ILogger logger, Guid collName, int idx) { if (!APIAvailable) return; await _dalamudUtil.RunOnFrameworkThread(() => { - var retAssign = _penumbraAssignTemporaryCollection.Invoke(collName, idx, c: true); + var retAssign = _penumbraAssignTemporaryCollection.Invoke(collName, idx, forceAssignment: true); logger.LogTrace("Assigning Temp Collection {collName} to index {idx}, Success: {ret}", collName, idx, retAssign); return collName; }).ConfigureAwait(false); @@ -169,7 +169,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa progress.Report((texture.Key, ++currentTexture)); logger.LogInformation("Converting Texture {path} to {type}", texture.Key, TextureType.Bc7Tex); - var convertTask = _penumbraConvertTextureFile.Invoke(texture.Key, texture.Key, TextureType.Bc7Tex, d: true); + var convertTask = _penumbraConvertTextureFile.Invoke(texture.Key, texture.Key, TextureType.Bc7Tex, mipMaps: true); await convertTask.ConfigureAwait(false); if (convertTask.IsCompletedSuccessfully && texture.Value.Any()) { @@ -192,24 +192,24 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa await _dalamudUtil.RunOnFrameworkThread(async () => { var gameObject = await _dalamudUtil.CreateGameObjectAsync(await _dalamudUtil.GetPlayerPointerAsync().ConfigureAwait(false)).ConfigureAwait(false); - _penumbraRedrawObject.Invoke(gameObject!, RedrawType.Redraw); + _penumbraRedraw.Invoke(gameObject!.ObjectIndex, setting: RedrawType.Redraw); }).ConfigureAwait(false); } - public async Task CreateTemporaryCollectionAsync(ILogger logger, string uid) + public async Task CreateTemporaryCollectionAsync(ILogger logger, string uid) { - if (!APIAvailable) return string.Empty; + if (!APIAvailable) return Guid.Empty; return await _dalamudUtil.RunOnFrameworkThread(() => { var collName = "Mare_" + uid; - var retCreate = _penumbraCreateNamedTemporaryCollection.Invoke(collName); - logger.LogTrace("Creating Temp Collection {collName}, Success: {ret}", collName, retCreate); - return collName; + var collId = _penumbraCreateNamedTemporaryCollection.Invoke(collName); + logger.LogTrace("Creating Temp Collection {collName}, GUID: {collId}", collName, collId); + return collId; }).ConfigureAwait(false); } - public async Task?[]?> GetCharacterData(ILogger logger, GameObjectHandler handler) + public async Task>?[]?> GetCharacterData(ILogger logger, GameObjectHandler handler) { if (!APIAvailable) return null; @@ -237,7 +237,7 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa await _redrawManager.PenumbraRedrawInternalAsync(logger, handler, applicationId, (chara) => { logger.LogDebug("[{appid}] Calling on IPC: PenumbraRedraw", applicationId); - _penumbraRedrawObject!.Invoke(chara, RedrawType.Redraw); + _penumbraRedraw!.Invoke(chara.ObjectIndex, setting: RedrawType.Redraw); }).ConfigureAwait(false); } finally @@ -246,13 +246,13 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa } } - public async Task RemoveTemporaryCollectionAsync(ILogger logger, Guid applicationId, string collName) + public async Task RemoveTemporaryCollectionAsync(ILogger logger, Guid applicationId, Guid collId) { if (!APIAvailable) return; await _dalamudUtil.RunOnFrameworkThread(() => { - logger.LogTrace("[{applicationId}] Removing temp collection for {collName}", applicationId, collName); - var ret2 = _penumbraRemoveTemporaryCollection.Invoke(collName); + logger.LogTrace("[{applicationId}] Removing temp collection for {collId}", applicationId, collId); + var ret2 = _penumbraRemoveTemporaryCollection.Invoke(collId); logger.LogTrace("[{applicationId}] RemoveTemporaryCollection: {ret2}", applicationId, ret2); }).ConfigureAwait(false); } @@ -262,19 +262,19 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa return await _penumbraResolvePaths.Invoke(forward, reverse).ConfigureAwait(false); } - public async Task SetManipulationDataAsync(ILogger logger, Guid applicationId, string collName, string manipulationData) + public async Task SetManipulationDataAsync(ILogger logger, Guid applicationId, Guid collId, string manipulationData) { if (!APIAvailable) return; await _dalamudUtil.RunOnFrameworkThread(() => { logger.LogTrace("[{applicationId}] Manip: {data}", applicationId, manipulationData); - var retAdd = _penumbraAddTemporaryMod.Invoke("MareChara_Meta", collName, [], manipulationData, 0); - logger.LogTrace("[{applicationId}] Setting temp meta mod for {collName}, Success: {ret}", applicationId, collName, retAdd); + var retAdd = _penumbraAddTemporaryMod.Invoke("MareChara_Meta", collId, [], manipulationData, 0); + logger.LogTrace("[{applicationId}] Setting temp meta mod for {collId}, Success: {ret}", applicationId, collId, retAdd); }).ConfigureAwait(false); } - public async Task SetTemporaryModsAsync(ILogger logger, Guid applicationId, string collName, Dictionary modPaths) + public async Task SetTemporaryModsAsync(ILogger logger, Guid applicationId, Guid collId, Dictionary modPaths) { if (!APIAvailable) return; @@ -284,10 +284,10 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa { logger.LogTrace("[{applicationId}] Change: {from} => {to}", applicationId, mod.Key, mod.Value); } - var retRemove = _penumbraRemoveTemporaryMod.Invoke("MareChara_Files", collName, 0); - logger.LogTrace("[{applicationId}] Removing temp files mod for {collName}, Success: {ret}", applicationId, collName, retRemove); - var retAdd = _penumbraAddTemporaryMod.Invoke("MareChara_Files", collName, modPaths, string.Empty, 0); - logger.LogTrace("[{applicationId}] Setting temp files mod for {collName}, Success: {ret}", applicationId, collName, retAdd); + var retRemove = _penumbraRemoveTemporaryMod.Invoke("MareChara_Files", collId, 0); + logger.LogTrace("[{applicationId}] Removing temp files mod for {collId}, Success: {ret}", applicationId, collId, retRemove); + var retAdd = _penumbraAddTemporaryMod.Invoke("MareChara_Files", collId, modPaths, string.Empty, 0); + logger.LogTrace("[{applicationId}] Setting temp files mod for {collId}, Success: {ret}", applicationId, collId, retAdd); }).ConfigureAwait(false); } @@ -323,6 +323,6 @@ public sealed class IpcCallerPenumbra : DisposableMediatorSubscriberBase, IIpcCa APIAvailable = true; ModDirectory = _penumbraResolveModDir.Invoke(); _mareMediator.Publish(new PenumbraInitializedMessage()); - _penumbraRedraw!.Invoke("self", RedrawType.Redraw); + _penumbraRedraw!.Invoke(0, setting: RedrawType.Redraw); } } diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index ab4c315..0a8725c 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -40,7 +40,8 @@ - + + diff --git a/MareSynchronos/PlayerData/Export/MareCharaFileManager.cs b/MareSynchronos/PlayerData/Export/MareCharaFileManager.cs index 4ff2b7f..7b9d229 100644 --- a/MareSynchronos/PlayerData/Export/MareCharaFileManager.cs +++ b/MareSynchronos/PlayerData/Export/MareCharaFileManager.cs @@ -92,9 +92,8 @@ public class MareCharaFileManager : DisposableMediatorSubscriberBase } } var applicationId = Guid.NewGuid(); - await _ipcManager.Penumbra.RemoveTemporaryCollectionAsync(_logger, applicationId, charaTarget.Name.TextValue).ConfigureAwait(false); var coll = await _ipcManager.Penumbra.CreateTemporaryCollectionAsync(_logger, charaTarget.Name.TextValue).ConfigureAwait(false); - await _ipcManager.Penumbra.AssignTemporaryCollectionAsync(_logger, coll, charaTarget.ObjectTableIndex()!.Value).ConfigureAwait(false); + await _ipcManager.Penumbra.AssignTemporaryCollectionAsync(_logger, coll, charaTarget.ObjectIndex).ConfigureAwait(false); await _ipcManager.Penumbra.SetTemporaryModsAsync(_logger, applicationId, coll, extractedFiles.Union(fileSwaps).ToDictionary(d => d.Key, d => d.Value, StringComparer.Ordinal)).ConfigureAwait(false); await _ipcManager.Penumbra.SetManipulationDataAsync(_logger, applicationId, coll, LoadedCharaFile.CharaFileData.ManipulationData).ConfigureAwait(false); diff --git a/MareSynchronos/PlayerData/Factories/PlayerDataFactory.cs b/MareSynchronos/PlayerData/Factories/PlayerDataFactory.cs index 9d4eb0e..c3bd996 100644 --- a/MareSynchronos/PlayerData/Factories/PlayerDataFactory.cs +++ b/MareSynchronos/PlayerData/Factories/PlayerDataFactory.cs @@ -147,7 +147,7 @@ public class PlayerDataFactory DateTime start = DateTime.UtcNow; // penumbra call, it's currently broken - IReadOnlyDictionary? resolvedPaths; + Dictionary>? resolvedPaths; resolvedPaths = (await _ipcManager.Penumbra.GetCharacterData(_logger, playerRelatedObject).ConfigureAwait(false))?[0]; if (resolvedPaths == null) throw new InvalidOperationException("Penumbra returned null data"); diff --git a/MareSynchronos/PlayerData/Handlers/PairHandler.cs b/MareSynchronos/PlayerData/Handlers/PairHandler.cs index ecdb5d1..ed6b131 100644 --- a/MareSynchronos/PlayerData/Handlers/PairHandler.cs +++ b/MareSynchronos/PlayerData/Handlers/PairHandler.cs @@ -37,7 +37,7 @@ public sealed class PairHandler : DisposableMediatorSubscriberBase private CancellationTokenSource? _downloadCancellationTokenSource = new(); private bool _forceApplyMods = false; private bool _isVisible; - private string _penumbraCollection; + private Guid _penumbraCollection; private bool _redrawOnNextApplication = false; private CombatData? _dataReceivedInDowntime; public long LastAppliedDataSize { get; private set; }