some customize+ application fixes

This commit is contained in:
rootdarkarchon
2023-07-19 09:48:29 +02:00
parent 04961618ed
commit 71c510b0f4
3 changed files with 17 additions and 2 deletions

View File

@@ -79,6 +79,7 @@ public class PlayerDataFactory
var previousFileReplacements = previousData.FileReplacements.ToDictionary(d => d.Key, d => d.Value); var previousFileReplacements = previousData.FileReplacements.ToDictionary(d => d.Key, d => d.Value);
var previousGlamourerData = previousData.GlamourerString.ToDictionary(d => d.Key, d => d.Value); var previousGlamourerData = previousData.GlamourerString.ToDictionary(d => d.Key, d => d.Value);
var previousCustomize = previousData.CustomizePlusScale.ToDictionary(d => d.Key, d => d.Value);
try try
{ {
@@ -100,6 +101,7 @@ public class PlayerDataFactory
previousData.FileReplacements = previousFileReplacements; previousData.FileReplacements = previousFileReplacements;
previousData.GlamourerString = previousGlamourerData; previousData.GlamourerString = previousGlamourerData;
previousData.CustomizePlusScale = previousCustomize;
} }
private unsafe void AddPlayerSpecificReplacements(Human* human, HashSet<string> forwardResolve, HashSet<string> reverseResolve) private unsafe void AddPlayerSpecificReplacements(Human* human, HashSet<string> forwardResolve, HashSet<string> reverseResolve)
@@ -312,6 +314,11 @@ public class PlayerDataFactory
previousData.FileReplacements[objectKind].Clear(); previousData.FileReplacements[objectKind].Clear();
} }
if (previousData.CustomizePlusScale.ContainsKey(objectKind))
{
previousData.CustomizePlusScale.Remove(objectKind);
}
// wait until chara is not drawing and present so nothing spontaneously explodes // wait until chara is not drawing and present so nothing spontaneously explodes
await _dalamudUtil.WaitWhileCharacterIsDrawing(_logger, playerRelatedObject, Guid.NewGuid(), 30000, ct: token).ConfigureAwait(false); await _dalamudUtil.WaitWhileCharacterIsDrawing(_logger, playerRelatedObject, Guid.NewGuid(), 30000, ct: token).ConfigureAwait(false);
int totalWaitTime = 10000; int totalWaitTime = 10000;
@@ -381,7 +388,7 @@ public class PlayerDataFactory
previousData.GlamourerString[playerRelatedObject.ObjectKind] = await getGlamourerData.ConfigureAwait(false); previousData.GlamourerString[playerRelatedObject.ObjectKind] = await getGlamourerData.ConfigureAwait(false);
_logger.LogDebug("Glamourer is now: {data}", previousData.GlamourerString[playerRelatedObject.ObjectKind]); _logger.LogDebug("Glamourer is now: {data}", previousData.GlamourerString[playerRelatedObject.ObjectKind]);
var customizeScale = await getCustomizeData.ConfigureAwait(false); var customizeScale = await getCustomizeData.ConfigureAwait(false);
if (customizeScale != null) if (!string.IsNullOrEmpty(customizeScale))
{ {
previousData.CustomizePlusScale[playerRelatedObject.ObjectKind] = customizeScale; previousData.CustomizePlusScale[playerRelatedObject.ObjectKind] = customizeScale;
_logger.LogDebug("Customize is now: {data}", previousData.CustomizePlusScale[playerRelatedObject.ObjectKind]); _logger.LogDebug("Customize is now: {data}", previousData.CustomizePlusScale[playerRelatedObject.ObjectKind]);

View File

@@ -233,6 +233,10 @@ public sealed class PairHandler : DisposableMediatorSubscriberBase
{ {
await _ipcManager.CustomizePlusSetBodyScaleAsync(handler.Address, customizePlusData).ConfigureAwait(false); await _ipcManager.CustomizePlusSetBodyScaleAsync(handler.Address, customizePlusData).ConfigureAwait(false);
} }
else
{
await _ipcManager.CustomizePlusRevertAsync(handler.Address).ConfigureAwait(false);
}
break; break;
case PlayerChanges.Heels: case PlayerChanges.Heels:
@@ -533,6 +537,7 @@ public sealed class PairHandler : DisposableMediatorSubscriberBase
var minionOrMount = await _dalamudUtil.GetMinionOrMountAsync(address).ConfigureAwait(false); var minionOrMount = await _dalamudUtil.GetMinionOrMountAsync(address).ConfigureAwait(false);
if (minionOrMount != nint.Zero) if (minionOrMount != nint.Zero)
{ {
await _ipcManager.CustomizePlusRevertAsync(minionOrMount).ConfigureAwait(false);
using GameObjectHandler tempHandler = await _gameObjectHandlerFactory.Create(ObjectKind.MinionOrMount, () => minionOrMount, false).ConfigureAwait(false); using GameObjectHandler tempHandler = await _gameObjectHandlerFactory.Create(ObjectKind.MinionOrMount, () => minionOrMount, false).ConfigureAwait(false);
await _ipcManager.PenumbraRedrawAsync(Logger, tempHandler, applicationId, cancelToken.Token).ConfigureAwait(false); await _ipcManager.PenumbraRedrawAsync(Logger, tempHandler, applicationId, cancelToken.Token).ConfigureAwait(false);
} }
@@ -542,6 +547,7 @@ public sealed class PairHandler : DisposableMediatorSubscriberBase
var pet = await _dalamudUtil.GetPetAsync(address).ConfigureAwait(false); var pet = await _dalamudUtil.GetPetAsync(address).ConfigureAwait(false);
if (pet != nint.Zero) if (pet != nint.Zero)
{ {
await _ipcManager.CustomizePlusRevertAsync(pet).ConfigureAwait(false);
using GameObjectHandler tempHandler = await _gameObjectHandlerFactory.Create(ObjectKind.Pet, () => pet, false).ConfigureAwait(false); using GameObjectHandler tempHandler = await _gameObjectHandlerFactory.Create(ObjectKind.Pet, () => pet, false).ConfigureAwait(false);
await _ipcManager.PenumbraRedrawAsync(Logger, tempHandler, applicationId, cancelToken.Token).ConfigureAwait(false); await _ipcManager.PenumbraRedrawAsync(Logger, tempHandler, applicationId, cancelToken.Token).ConfigureAwait(false);
} }
@@ -551,6 +557,7 @@ public sealed class PairHandler : DisposableMediatorSubscriberBase
var companion = await _dalamudUtil.GetCompanionAsync(address).ConfigureAwait(false); var companion = await _dalamudUtil.GetCompanionAsync(address).ConfigureAwait(false);
if (companion != nint.Zero) if (companion != nint.Zero)
{ {
await _ipcManager.CustomizePlusRevertAsync(companion).ConfigureAwait(false);
using GameObjectHandler tempHandler = await _gameObjectHandlerFactory.Create(ObjectKind.Pet, () => companion, false).ConfigureAwait(false); using GameObjectHandler tempHandler = await _gameObjectHandlerFactory.Create(ObjectKind.Pet, () => companion, false).ConfigureAwait(false);
await _ipcManager.PenumbraRedrawAsync(Logger, tempHandler, applicationId, cancelToken.Token).ConfigureAwait(false); await _ipcManager.PenumbraRedrawAsync(Logger, tempHandler, applicationId, cancelToken.Token).ConfigureAwait(false);
} }

View File

@@ -63,7 +63,8 @@ public sealed class CacheCreationService : DisposableMediatorSubscriberBase
{ {
if (_isZoning) return; if (_isZoning) return;
foreach (var item in _playerRelatedObjects foreach (var item in _playerRelatedObjects
.Where(item => string.Equals(item.Value.Name, msg.ProfileName, StringComparison.Ordinal)).Select(k => k.Key)) .Where(item => string.IsNullOrEmpty(msg.ProfileName)
|| string.Equals(item.Value.Name, msg.ProfileName, StringComparison.Ordinal)).Select(k => k.Key))
{ {
Logger.LogDebug("Received CustomizePlus change, updating {obj}", item); Logger.LogDebug("Received CustomizePlus change, updating {obj}", item);
await AddPlayerCacheToCreate(item).ConfigureAwait(false); await AddPlayerCacheToCreate(item).ConfigureAwait(false);