MCDO fixes

fix ipc probably

add individual syncshells and shit

don't show shared data from paused people

change text

fix reverting

Use InputText/Combo hybrids for MCDO ACLs (#81)

* Use InputText/Combo hybrids for MCDO ACLs

* Hybrid combo factoring, filtering, ordering, caching

fix selecting latest created data on creation

rename close to direct pairs

add toggle to keep nearby poses active constantly

fix gpose hanging

fix potential cancelaltion on updateshareddata
This commit is contained in:
Stanley Dimant
2025-01-12 02:55:22 +01:00
committed by Loporrit
parent 30caedbf3a
commit 8f9528879d
16 changed files with 280 additions and 114 deletions

View File

@@ -15,7 +15,7 @@ public class IpcProvider : IHostedService, IMediatorSubscriber
private readonly ILogger<IpcProvider> _logger;
private readonly IDalamudPluginInterface _pi;
private readonly MareConfigService _mareConfig;
private readonly DalamudUtilService _dalamudUtil;
private readonly CharaDataManager _charaDataManager;
private ICallGateProvider<string, IGameObject, bool>? _loadFileProvider;
private ICallGateProvider<string, IGameObject, Task<bool>>? _loadFileAsyncProvider;
private ICallGateProvider<List<nint>>? _handledGameAddresses;
@@ -34,17 +34,14 @@ public class IpcProvider : IHostedService, IMediatorSubscriber
public MareMediator Mediator { get; init; }
public IpcProvider(ILogger<IpcProvider> logger, IDalamudPluginInterface pi, MareConfigService mareConfig,
DalamudUtilService dalamudUtil,
MareMediator mareMediator)
CharaDataManager charaDataManager, MareMediator mareMediator)
{
_logger = logger;
_pi = pi;
_mareConfig = mareConfig;
_dalamudUtil = dalamudUtil;
_charaDataManager = charaDataManager;
Mediator = mareMediator;
// todo: fix ipc to use CharaDataManager
Mediator.Subscribe<GameObjectHandlerCreatedMessage>(this, (msg) =>
{
if (msg.OwnedObject) return;
@@ -135,9 +132,6 @@ public class IpcProvider : IHostedService, IMediatorSubscriber
private async Task<bool> LoadMcdfAsync(string path, IGameObject target)
{
//if (_mareCharaFileManager.CurrentlyWorking || !_dalamudUtil.IsInGpose)
return false;
await ApplyFileAsync(path, target).ConfigureAwait(false);
return true;
@@ -145,9 +139,6 @@ public class IpcProvider : IHostedService, IMediatorSubscriber
private bool LoadMcdf(string path, IGameObject target)
{
//if (_mareCharaFileManager.CurrentlyWorking || !_dalamudUtil.IsInGpose)
return false;
_ = Task.Run(async () => await ApplyFileAsync(path, target).ConfigureAwait(false)).ConfigureAwait(false);
return true;
@@ -155,20 +146,9 @@ public class IpcProvider : IHostedService, IMediatorSubscriber
private async Task ApplyFileAsync(string path, IGameObject target)
{
/*
try
{
var expectedLength = _mareCharaFileManager.LoadMareCharaFile(path);
await _mareCharaFileManager.ApplyMareCharaFile(target, expectedLength).ConfigureAwait(false);
}
catch (Exception e)
{
_logger.LogError(e, "Failure of IPC call");
}
finally
{
_mareCharaFileManager.ClearMareCharaFile();
}*/
_charaDataManager.LoadMcdf(path);
await (_charaDataManager.LoadedMcdfHeader ?? Task.CompletedTask).ConfigureAwait(false);
_charaDataManager.McdfApplyToTarget(target.Name.TextValue);
}
private List<nint> GetHandledAddresses()