Merge branch 'main' of https://github.com/Penumbra-Sync/client
This commit is contained in:
@@ -16,6 +16,7 @@ public class CharacterData
|
||||
|
||||
public string ManipulationString { get; set; } = string.Empty;
|
||||
public string PalettePlusPalette { get; set; } = string.Empty;
|
||||
public string HonorificData { get; set; } = string.Empty;
|
||||
|
||||
public API.Data.CharacterData ToAPI()
|
||||
{
|
||||
@@ -42,6 +43,7 @@ public class CharacterData
|
||||
HeelsOffset = HeelsOffset,
|
||||
CustomizePlusData = CustomizePlusScale,
|
||||
PalettePlusData = PalettePlusPalette,
|
||||
HonorificData = HonorificData
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -380,6 +380,8 @@ public class PlayerDataFactory
|
||||
_logger.LogDebug("Customize is now: {data}", previousData.CustomizePlusScale);
|
||||
previousData.PalettePlusPalette = await getPalettePlusData.ConfigureAwait(false);
|
||||
_logger.LogDebug("Palette is now: {data}", previousData.PalettePlusPalette);
|
||||
previousData.HonorificData = _ipcManager.HonorificGetTitle();
|
||||
_logger.LogDebug("Honorific is now: {data}", previousData.HonorificData);
|
||||
|
||||
st.Stop();
|
||||
_logger.LogInformation("Building character data for {obj} took {time}ms", objectKind, TimeSpan.FromTicks(st.ElapsedTicks).TotalMilliseconds);
|
||||
|
||||
@@ -56,7 +56,8 @@ public sealed class CachedPlayer : DisposableMediatorSubscriberBase
|
||||
Heels = 1,
|
||||
Customize = 2,
|
||||
Palette = 3,
|
||||
Mods = 4
|
||||
Mods = 4,
|
||||
Honorific = 5,
|
||||
}
|
||||
|
||||
public IntPtr PlayerCharacter => _charaHandler?.Address ?? IntPtr.Zero;
|
||||
@@ -256,6 +257,10 @@ public sealed class CachedPlayer : DisposableMediatorSubscriberBase
|
||||
await _ipcManager.HeelsSetOffsetForPlayer(handler.Address, charaData.HeelsOffset).ConfigureAwait(false);
|
||||
break;
|
||||
|
||||
case PlayerChanges.Honorific:
|
||||
await _ipcManager.HonorificSetTitle(handler.Address, charaData.HonorificData).ConfigureAwait(false);
|
||||
break;
|
||||
|
||||
case PlayerChanges.Mods:
|
||||
if (charaData.GlamourerData.TryGetValue(changes.Key, out var glamourerData))
|
||||
{
|
||||
@@ -363,6 +368,13 @@ public sealed class CachedPlayer : DisposableMediatorSubscriberBase
|
||||
Logger.LogDebug("Updating {object}/{kind} (Diff palette data) => {change}", this, objectKind, PlayerChanges.Palette);
|
||||
charaDataToUpdate[objectKind].Add(PlayerChanges.Palette);
|
||||
}
|
||||
|
||||
bool honorificDataDifferent = !string.Equals(oldData.HonorificData, newData.HonorificData, StringComparison.Ordinal);
|
||||
if (honorificDataDifferent || (forced && !string.IsNullOrEmpty(newData.HonorificData)))
|
||||
{
|
||||
Logger.LogDebug("Updating {object}/{kind} (Diff honorific data) => {change}", this, objectKind, PlayerChanges.Honorific);
|
||||
charaDataToUpdate[objectKind].Add(PlayerChanges.Honorific);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (KeyValuePair<ObjectKind, HashSet<PlayerChanges>> data in charaDataToUpdate.ToList())
|
||||
@@ -513,6 +525,12 @@ public sealed class CachedPlayer : DisposableMediatorSubscriberBase
|
||||
warning.ShownPalettePlusWarning = true;
|
||||
}
|
||||
|
||||
if (changes.Contains(PlayerChanges.Honorific) && !warning.ShownHonorificWarning && !_ipcManager.CheckHonorificApi())
|
||||
{
|
||||
missingPluginsForData.Add("Honorific");
|
||||
warning.ShownHonorificWarning = true;
|
||||
}
|
||||
|
||||
if (missingPluginsForData.Any())
|
||||
{
|
||||
Mediator.Publish(new NotificationMessage("Missing plugins for " + PlayerName,
|
||||
@@ -549,6 +567,10 @@ public sealed class CachedPlayer : DisposableMediatorSubscriberBase
|
||||
CheckForNameAndThrow(tempHandler, name);
|
||||
Logger.LogDebug("[{applicationId}] Restoring Palette+ for {alias}/{name}", applicationId, OnlineUser.User.AliasOrUID, name);
|
||||
await _ipcManager.PalettePlusRemovePalette(address).ConfigureAwait(false);
|
||||
CheckForNameAndThrow(tempHandler, name);
|
||||
Logger.LogDebug("[{applicationId}] Restoring Honorific for {alias}/{name}", applicationId, OnlineUser.User.AliasOrUID, name);
|
||||
await _ipcManager.HonorificClearTitle(address).ConfigureAwait(false);
|
||||
|
||||
}
|
||||
else if (objectKind == ObjectKind.MinionOrMount)
|
||||
{
|
||||
|
||||
@@ -5,4 +5,5 @@ public record OptionalPluginWarning
|
||||
public bool ShownHeelsWarning { get; set; } = false;
|
||||
public bool ShownCustomizePlusWarning { get; set; } = false;
|
||||
public bool ShownPalettePlusWarning { get; set; } = false;
|
||||
public bool ShownHonorificWarning { get; set; } = false;
|
||||
}
|
||||
|
||||
@@ -97,6 +97,7 @@ public class Pair
|
||||
ShownCustomizePlusWarning = _configService.Current.DisableOptionalPluginWarnings,
|
||||
ShownHeelsWarning = _configService.Current.DisableOptionalPluginWarnings,
|
||||
ShownPalettePlusWarning = _configService.Current.DisableOptionalPluginWarnings,
|
||||
ShownHonorificWarning = _configService.Current.DisableOptionalPluginWarnings,
|
||||
};
|
||||
|
||||
CachedPlayer.ApplyCharacterData(RemoveNotSyncedFiles(LastReceivedCharacterData.DeepClone())!, _pluginWarnings, forced);
|
||||
@@ -137,6 +138,7 @@ public class Pair
|
||||
ShownCustomizePlusWarning = _configService.Current.DisableOptionalPluginWarnings,
|
||||
ShownHeelsWarning = _configService.Current.DisableOptionalPluginWarnings,
|
||||
ShownPalettePlusWarning = _configService.Current.DisableOptionalPluginWarnings,
|
||||
ShownHonorificWarning = _configService.Current.DisableOptionalPluginWarnings,
|
||||
};
|
||||
|
||||
CachedPlayer.Initialize(name);
|
||||
|
||||
@@ -61,6 +61,11 @@ public sealed class CacheCreationService : DisposableMediatorSubscriberBase
|
||||
PalettePlusChanged();
|
||||
}
|
||||
});
|
||||
Mediator.Subscribe<HonorificMessage>(this, async (_) =>
|
||||
{
|
||||
Logger.LogDebug("Received Honorific change, updating player");
|
||||
await AddPlayerCacheToCreate().ConfigureAwait(false);
|
||||
});
|
||||
Mediator.Subscribe<PenumbraModSettingChangedMessage>(this, async (msg) =>
|
||||
{
|
||||
Logger.LogDebug("Received Penumbra Mod settings change, updating player");
|
||||
|
||||
Reference in New Issue
Block a user