async await heels/c+/p+ stuff and await it before continuing with application of data
This commit is contained in:
@@ -317,13 +317,13 @@ public class CachedPlayer : MediatorSubscriberBase, IDisposable
|
|||||||
switch (change)
|
switch (change)
|
||||||
{
|
{
|
||||||
case PlayerChanges.Palette:
|
case PlayerChanges.Palette:
|
||||||
_ipcManager.PalettePlusSetPalette(handler.Address, charaData.PalettePlusData);
|
await _ipcManager.PalettePlusSetPalette(handler.Address, charaData.PalettePlusData).ConfigureAwait(false);
|
||||||
break;
|
break;
|
||||||
case PlayerChanges.Customize:
|
case PlayerChanges.Customize:
|
||||||
_ipcManager.CustomizePlusSetBodyScale(handler.Address, charaData.CustomizePlusData);
|
await _ipcManager.CustomizePlusSetBodyScale(handler.Address, charaData.CustomizePlusData).ConfigureAwait(false);
|
||||||
break;
|
break;
|
||||||
case PlayerChanges.Heels:
|
case PlayerChanges.Heels:
|
||||||
_ipcManager.HeelsSetOffsetForPlayer(handler.Address, charaData.HeelsOffset);
|
await _ipcManager.HeelsSetOffsetForPlayer(handler.Address, charaData.HeelsOffset).ConfigureAwait(false);
|
||||||
break;
|
break;
|
||||||
case PlayerChanges.Mods:
|
case PlayerChanges.Mods:
|
||||||
if (charaData.GlamourerData.TryGetValue(changes.Key, out var glamourerData))
|
if (charaData.GlamourerData.TryGetValue(changes.Key, out var glamourerData))
|
||||||
@@ -470,10 +470,11 @@ public class CachedPlayer : MediatorSubscriberBase, IDisposable
|
|||||||
_logger.LogDebug("[{applicationId}] Restoring Equipment for {alias}/{name}: {data}", applicationId, OnlineUser.User.AliasOrUID, name, _lastGlamourerData);
|
_logger.LogDebug("[{applicationId}] Restoring Equipment for {alias}/{name}: {data}", applicationId, OnlineUser.User.AliasOrUID, name, _lastGlamourerData);
|
||||||
await _ipcManager.GlamourerApplyOnlyEquipment(_logger, tempHandler, _lastGlamourerData, applicationId, cancelToken.Token, fireAndForget: false).ConfigureAwait(false);
|
await _ipcManager.GlamourerApplyOnlyEquipment(_logger, tempHandler, _lastGlamourerData, applicationId, cancelToken.Token, fireAndForget: false).ConfigureAwait(false);
|
||||||
_logger.LogDebug("[{applicationId}] Restoring Heels for {alias}/{name}", applicationId, OnlineUser.User.AliasOrUID, name);
|
_logger.LogDebug("[{applicationId}] Restoring Heels for {alias}/{name}", applicationId, OnlineUser.User.AliasOrUID, name);
|
||||||
_ipcManager.HeelsRestoreOffsetForPlayer(address);
|
await _ipcManager.HeelsRestoreOffsetForPlayer(address).ConfigureAwait(false);
|
||||||
_logger.LogDebug("[{applicationId}] Restoring C+ for {alias}/{name}", applicationId, OnlineUser.User.AliasOrUID, name);
|
_logger.LogDebug("[{applicationId}] Restoring C+ for {alias}/{name}", applicationId, OnlineUser.User.AliasOrUID, name);
|
||||||
_ipcManager.CustomizePlusRevert(address);
|
await _ipcManager.CustomizePlusRevert(address).ConfigureAwait(false);
|
||||||
_ipcManager.PalettePlusRemovePalette(address);
|
_logger.LogDebug("[{applicationId}] Restoring Palette+ for {alias}/{name}", applicationId, OnlineUser.User.AliasOrUID, name);
|
||||||
|
await _ipcManager.PalettePlusRemovePalette(address).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
else if (objectKind == ObjectKind.MinionOrMount)
|
else if (objectKind == ObjectKind.MinionOrMount)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -333,10 +333,10 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
return _heelsGetOffset.InvokeFunc();
|
return _heelsGetOffset.InvokeFunc();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void HeelsSetOffsetForPlayer(IntPtr character, float offset)
|
public async Task HeelsSetOffsetForPlayer(IntPtr character, float offset)
|
||||||
{
|
{
|
||||||
if (!CheckHeelsApi()) return;
|
if (!CheckHeelsApi()) return;
|
||||||
ActionQueue.Enqueue(() =>
|
await _dalamudUtil.RunOnFrameworkThread(() =>
|
||||||
{
|
{
|
||||||
var gameObj = _dalamudUtil.CreateGameObject(character);
|
var gameObj = _dalamudUtil.CreateGameObject(character);
|
||||||
if (gameObj != null)
|
if (gameObj != null)
|
||||||
@@ -344,13 +344,13 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
_logger.LogTrace("Applying Heels data to {chara}", character.ToString("X"));
|
_logger.LogTrace("Applying Heels data to {chara}", character.ToString("X"));
|
||||||
_heelsRegisterPlayer.InvokeAction(gameObj, offset);
|
_heelsRegisterPlayer.InvokeAction(gameObj, offset);
|
||||||
}
|
}
|
||||||
});
|
}).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void HeelsRestoreOffsetForPlayer(IntPtr character)
|
public async Task HeelsRestoreOffsetForPlayer(IntPtr character)
|
||||||
{
|
{
|
||||||
if (!CheckHeelsApi()) return;
|
if (!CheckHeelsApi()) return;
|
||||||
ActionQueue.Enqueue(() =>
|
await _dalamudUtil.RunOnFrameworkThread(() =>
|
||||||
{
|
{
|
||||||
var gameObj = _dalamudUtil.CreateGameObject(character);
|
var gameObj = _dalamudUtil.CreateGameObject(character);
|
||||||
if (gameObj != null)
|
if (gameObj != null)
|
||||||
@@ -358,7 +358,7 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
_logger.LogTrace("Restoring Heels data to {chara}", character.ToString("X"));
|
_logger.LogTrace("Restoring Heels data to {chara}", character.ToString("X"));
|
||||||
_heelsUnregisterPlayer.InvokeAction(gameObj);
|
_heelsUnregisterPlayer.InvokeAction(gameObj);
|
||||||
}
|
}
|
||||||
});
|
}).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetCustomizePlusScale()
|
public string GetCustomizePlusScale()
|
||||||
@@ -369,10 +369,10 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
return Convert.ToBase64String(Encoding.UTF8.GetBytes(scale));
|
return Convert.ToBase64String(Encoding.UTF8.GetBytes(scale));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CustomizePlusSetBodyScale(IntPtr character, string scale)
|
public async Task CustomizePlusSetBodyScale(IntPtr character, string scale)
|
||||||
{
|
{
|
||||||
if (!CheckCustomizePlusApi() || string.IsNullOrEmpty(scale)) return;
|
if (!CheckCustomizePlusApi() || string.IsNullOrEmpty(scale)) return;
|
||||||
ActionQueue.Enqueue(() =>
|
await _dalamudUtil.RunOnFrameworkThread(() =>
|
||||||
{
|
{
|
||||||
var gameObj = _dalamudUtil.CreateGameObject(character);
|
var gameObj = _dalamudUtil.CreateGameObject(character);
|
||||||
if (gameObj is Character c)
|
if (gameObj is Character c)
|
||||||
@@ -381,13 +381,13 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
_logger.LogTrace("CustomizePlus applying for {chara}", c.Address.ToString("X"));
|
_logger.LogTrace("CustomizePlus applying for {chara}", c.Address.ToString("X"));
|
||||||
_customizePlusSetBodyScaleToCharacter!.InvokeAction(decodedScale, c);
|
_customizePlusSetBodyScaleToCharacter!.InvokeAction(decodedScale, c);
|
||||||
}
|
}
|
||||||
});
|
}).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CustomizePlusRevert(IntPtr character)
|
public async Task CustomizePlusRevert(IntPtr character)
|
||||||
{
|
{
|
||||||
if (!CheckCustomizePlusApi()) return;
|
if (!CheckCustomizePlusApi()) return;
|
||||||
ActionQueue.Enqueue(() =>
|
await _dalamudUtil.RunOnFrameworkThread(() =>
|
||||||
{
|
{
|
||||||
var gameObj = _dalamudUtil.CreateGameObject(character);
|
var gameObj = _dalamudUtil.CreateGameObject(character);
|
||||||
if (gameObj is Character c)
|
if (gameObj is Character c)
|
||||||
@@ -395,7 +395,7 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
_logger.LogTrace("CustomizePlus reverting for {chara}", c.Address.ToString("X"));
|
_logger.LogTrace("CustomizePlus reverting for {chara}", c.Address.ToString("X"));
|
||||||
_customizePlusRevert!.InvokeAction(c);
|
_customizePlusRevert!.InvokeAction(c);
|
||||||
}
|
}
|
||||||
});
|
}).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task PenumbraRedrawAction(ILogger logger, GameObjectHandler obj, Guid applicationId, Action action, bool fireAndForget, CancellationToken token)
|
private async Task PenumbraRedrawAction(ILogger logger, GameObjectHandler obj, Guid applicationId, Action action, bool fireAndForget, CancellationToken token)
|
||||||
@@ -605,10 +605,10 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
Mediator.Publish(new PalettePlusMessage(palette));
|
Mediator.Publish(new PalettePlusMessage(palette));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PalettePlusSetPalette(IntPtr character, string palette)
|
public async Task PalettePlusSetPalette(IntPtr character, string palette)
|
||||||
{
|
{
|
||||||
if (!CheckPalettePlusApi()) return;
|
if (!CheckPalettePlusApi()) return;
|
||||||
ActionQueue.Enqueue(() =>
|
await _dalamudUtil.RunOnFrameworkThread(() =>
|
||||||
{
|
{
|
||||||
var gameObj = _dalamudUtil.CreateGameObject(character);
|
var gameObj = _dalamudUtil.CreateGameObject(character);
|
||||||
if (gameObj is Character c)
|
if (gameObj is Character c)
|
||||||
@@ -626,7 +626,7 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
_palettePlusSetCharaPalette!.InvokeAction(c, decodedPalette);
|
_palettePlusSetCharaPalette!.InvokeAction(c, decodedPalette);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string PalettePlusBuildPalette()
|
public string PalettePlusBuildPalette()
|
||||||
@@ -637,10 +637,10 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
return Convert.ToBase64String(Encoding.UTF8.GetBytes(palette));
|
return Convert.ToBase64String(Encoding.UTF8.GetBytes(palette));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PalettePlusRemovePalette(IntPtr character)
|
public async Task PalettePlusRemovePalette(IntPtr character)
|
||||||
{
|
{
|
||||||
if (!CheckPalettePlusApi()) return;
|
if (!CheckPalettePlusApi()) return;
|
||||||
ActionQueue.Enqueue(() =>
|
await _dalamudUtil.RunOnFrameworkThread(() =>
|
||||||
{
|
{
|
||||||
var gameObj = _dalamudUtil.CreateGameObject(character);
|
var gameObj = _dalamudUtil.CreateGameObject(character);
|
||||||
if (gameObj is Character c)
|
if (gameObj is Character c)
|
||||||
@@ -648,7 +648,7 @@ public class IpcManager : MediatorSubscriberBase, IDisposable
|
|||||||
_logger.LogTrace("PalettePlus removing for {addr}", c.Address.ToString("X"));
|
_logger.LogTrace("PalettePlus removing for {addr}", c.Address.ToString("X"));
|
||||||
_palettePlusRemoveCharaPalette!.InvokeAction(c);
|
_palettePlusRemoveCharaPalette!.InvokeAction(c);
|
||||||
}
|
}
|
||||||
});
|
}).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PenumbraDispose()
|
private void PenumbraDispose()
|
||||||
|
|||||||
@@ -252,6 +252,11 @@ public class DalamudUtil : IDisposable
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task RunOnFrameworkThread(Action act)
|
||||||
|
{
|
||||||
|
await _framework.RunOnFrameworkThread(act).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<T> RunOnFrameworkThread<T>(Func<T> func)
|
public async Task<T> RunOnFrameworkThread<T>(Func<T> func)
|
||||||
{
|
{
|
||||||
return await _framework.RunOnFrameworkThread(func).ConfigureAwait(false);
|
return await _framework.RunOnFrameworkThread(func).ConfigureAwait(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user