diff --git a/MareSynchronos/Managers/CachedPlayer.cs b/MareSynchronos/Managers/CachedPlayer.cs index d40a12c..37924af 100644 --- a/MareSynchronos/Managers/CachedPlayer.cs +++ b/MareSynchronos/Managers/CachedPlayer.cs @@ -56,14 +56,14 @@ public class CachedPlayer : IDisposable public bool WasVisible { get; private set; } - public void ApplyCharacterData(API.Data.CharacterData characterData, OptionalPluginWarning warning) + public void ApplyCharacterData(API.Data.CharacterData characterData, OptionalPluginWarning warning, bool forced = false) { Logger.Debug("Received data for " + this); Logger.Debug("Checking for files to download for player " + PlayerName); Logger.Debug("Hash for data is " + characterData.DataHash.Value + ", current cache hash is " + _cachedData.DataHash.Value); - if (string.Equals(characterData.DataHash.Value, _cachedData.DataHash.Value, StringComparison.Ordinal)) return; + if (string.Equals(characterData.DataHash.Value, _cachedData.DataHash.Value, StringComparison.Ordinal) && !forced) return; bool updateModdedPaths = false; List charaDataToUpdate = new(); diff --git a/MareSynchronos/Managers/PairManager.cs b/MareSynchronos/Managers/PairManager.cs index 9e21636..6dfe0b4 100644 --- a/MareSynchronos/Managers/PairManager.cs +++ b/MareSynchronos/Managers/PairManager.cs @@ -110,7 +110,15 @@ public class PairManager : IDisposable public void AddUserPair(UserPairDto dto, bool addToLastAddedUser = true) { - if (!_allClientPairs.ContainsKey(dto.User)) _allClientPairs[dto.User] = _pairFactory.Create(); + if (!_allClientPairs.ContainsKey(dto.User)) + { + _allClientPairs[dto.User] = _pairFactory.Create(); + } + else + { + addToLastAddedUser = false; + } + _allClientPairs[dto.User].UserPair = dto; if (addToLastAddedUser) LastAddedUser = _allClientPairs[dto.User]; diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index f95450e..0637064 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -3,7 +3,7 @@ - 0.7.9 + 0.7.10 https://github.com/Penumbra-Sync/client diff --git a/MareSynchronos/Models/Pair.cs b/MareSynchronos/Models/Pair.cs index 65c7bc8..54ec7eb 100644 --- a/MareSynchronos/Models/Pair.cs +++ b/MareSynchronos/Models/Pair.cs @@ -83,7 +83,7 @@ public class Pair ApplyLastReceivedData(); } - public void ApplyLastReceivedData() + public void ApplyLastReceivedData(bool forced = false) { if (CachedPlayer == null) return; if (LastReceivedCharacterData == null) return; @@ -95,7 +95,7 @@ public class Pair ShownPalettePlusWarning = _configService.Current.DisableOptionalPluginWarnings, }; - CachedPlayer.ApplyCharacterData(RemoveNotSyncedFiles(LastReceivedCharacterData.DeepClone())!, _pluginWarnings); + CachedPlayer.ApplyCharacterData(RemoveNotSyncedFiles(LastReceivedCharacterData.DeepClone())!, _pluginWarnings, forced); } private API.Data.CharacterData? RemoveNotSyncedFiles(API.Data.CharacterData? data) diff --git a/MareSynchronos/UI/CompactUI.cs b/MareSynchronos/UI/CompactUI.cs index 34d4fe5..3f9aa97 100644 --- a/MareSynchronos/UI/CompactUI.cs +++ b/MareSynchronos/UI/CompactUI.cs @@ -503,6 +503,16 @@ public class CompactUi : Window, IDisposable private void DrawPairedClientMenu(Pair entry) { + if (entry.IsVisible) + { + if (UiShared.IconTextButton(FontAwesomeIcon.Sync, "Reload last data")) + { + entry.ApplyLastReceivedData(forced: true); + ImGui.CloseCurrentPopup(); + } + UiShared.AttachToolTip("This reapplies the last received character data to this character"); + } + var entryUID = entry.UserData.AliasOrUID; if (UiShared.IconTextButton(FontAwesomeIcon.Folder, "Pair Groups")) {