From a5998b84ba60c134707d1d2a801cc172ff23efad Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Fri, 8 Nov 2024 10:20:30 +0100 Subject: [PATCH] Fix issues with ResetAdvancedDyes and weapon types. --- Glamourer/Gui/Equipment/EquipmentDrawer.cs | 2 +- Glamourer/Gui/Equipment/WeaponCombo.cs | 2 +- Glamourer/Gui/PenumbraChangedItemTooltip.cs | 10 +++++++--- Glamourer/Gui/Tabs/DebugTab/PenumbraPanel.cs | 2 +- Glamourer/Gui/Tabs/DesignTab/DesignDetailTab.cs | 6 +++--- Glamourer/State/StateEditor.cs | 2 +- Penumbra.GameData | 2 +- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Glamourer/Gui/Equipment/EquipmentDrawer.cs b/Glamourer/Gui/Equipment/EquipmentDrawer.cs index 38c8263..601d3ae 100644 --- a/Glamourer/Gui/Equipment/EquipmentDrawer.cs +++ b/Glamourer/Gui/Equipment/EquipmentDrawer.cs @@ -558,7 +558,7 @@ public class EquipmentDrawer label = combo.Label; var locked = offhand.Locked - || !_gPose.InGPose && (offhand.CurrentItem.Type is FullEquipType.Unknown || mainhand.CurrentItem.Type is FullEquipType.Unknown); + || !_gPose.InGPose && (offhand.CurrentItem.Type.IsUnknown() || mainhand.CurrentItem.Type.IsUnknown()); using var disabled = ImRaii.Disabled(locked); if (!locked && open) UiHelpers.OpenCombo($"##{combo.Label}"); diff --git a/Glamourer/Gui/Equipment/WeaponCombo.cs b/Glamourer/Gui/Equipment/WeaponCombo.cs index 67f09f5..37d9d3c 100644 --- a/Glamourer/Gui/Equipment/WeaponCombo.cs +++ b/Glamourer/Gui/Equipment/WeaponCombo.cs @@ -81,7 +81,7 @@ public sealed class WeaponCombo : FilterComboCache => obj.Name; private static string GetLabel(FullEquipType type) - => type is FullEquipType.Unknown ? "Mainhand" : type.ToName(); + => type.IsUnknown() ? "Mainhand" : type.ToName(); private static IReadOnlyList GetWeapons(FavoriteManager favorites, ItemManager items, FullEquipType type) { diff --git a/Glamourer/Gui/PenumbraChangedItemTooltip.cs b/Glamourer/Gui/PenumbraChangedItemTooltip.cs index c6f2fc4..68ba18e 100644 --- a/Glamourer/Gui/PenumbraChangedItemTooltip.cs +++ b/Glamourer/Gui/PenumbraChangedItemTooltip.cs @@ -28,8 +28,10 @@ public sealed class PenumbraChangedItemTooltip : IDisposable => EquipSlotExtensions.EqdpSlots.Append(EquipSlot.MainHand).Append(EquipSlot.OffHand).Zip(_lastItems) .Select(p => new KeyValuePair(p.First, p.Second)); - public DateTime LastTooltip { get; private set; } = DateTime.MinValue; - public DateTime LastClick { get; private set; } = DateTime.MinValue; + public ChangedItemType LastType { get; private set; } = ChangedItemType.None; + public uint LastId { get; private set; } = 0; + public DateTime LastTooltip { get; private set; } = DateTime.MinValue; + public DateTime LastClick { get; private set; } = DateTime.MinValue; public PenumbraChangedItemTooltip(PenumbraService penumbra, StateManager stateManager, ItemManager items, ObjectManager objects, CustomizeService customize, GPoseService gpose) @@ -160,6 +162,8 @@ public sealed class PenumbraChangedItemTooltip : IDisposable private void OnPenumbraTooltip(ChangedItemType type, uint id) { + LastType = type; + LastId = id; LastTooltip = DateTime.UtcNow; if (!Player()) return; @@ -204,7 +208,7 @@ public sealed class PenumbraChangedItemTooltip : IDisposable return true; var main = _objects.Player.GetMainhand(); - var mainItem = _items.Identify(slot, main.Skeleton, main.Weapon, main.Variant); + var mainItem = _items.Identify(EquipSlot.MainHand, main.Skeleton, main.Weapon, main.Variant); if (slot == EquipSlot.MainHand) return item.Type == mainItem.Type; diff --git a/Glamourer/Gui/Tabs/DebugTab/PenumbraPanel.cs b/Glamourer/Gui/Tabs/DebugTab/PenumbraPanel.cs index f1097e8..3714c82 100644 --- a/Glamourer/Gui/Tabs/DebugTab/PenumbraPanel.cs +++ b/Glamourer/Gui/Tabs/DebugTab/PenumbraPanel.cs @@ -76,7 +76,7 @@ public unsafe class PenumbraPanel(PenumbraService _penumbra, PenumbraChangedItem } ImGuiUtil.DrawTableColumn("Last Tooltip Date"); - ImGuiUtil.DrawTableColumn(_penumbraTooltip.LastTooltip > DateTime.MinValue ? _penumbraTooltip.LastTooltip.ToLongTimeString() : "Never"); + ImGuiUtil.DrawTableColumn(_penumbraTooltip.LastTooltip > DateTime.MinValue ? $"{_penumbraTooltip.LastTooltip.ToLongTimeString()} ({_penumbraTooltip.LastType} {_penumbraTooltip.LastId})" : "Never"); ImGui.TableNextColumn(); ImGuiUtil.DrawTableColumn("Last Click Date"); diff --git a/Glamourer/Gui/Tabs/DesignTab/DesignDetailTab.cs b/Glamourer/Gui/Tabs/DesignTab/DesignDetailTab.cs index 0742197..bd74772 100644 --- a/Glamourer/Gui/Tabs/DesignTab/DesignDetailTab.cs +++ b/Glamourer/Gui/Tabs/DesignTab/DesignDetailTab.cs @@ -143,11 +143,11 @@ public class DesignDetailTab _manager.ChangeForcedRedraw(_selector.Selected!, forceRedraw); ImGuiUtil.HoverTooltip("Set this design to always force a redraw when it is applied through any means."); - var resetMaterials = _selector.Selected!.ResetAdvancedDyes; + var resetAdvancedDyes = _selector.Selected!.ResetAdvancedDyes; ImGuiUtil.DrawFrameColumn("Reset Advanced Dyes"); ImGui.TableNextColumn(); - if (ImGui.Checkbox("##ResetAdvancedDyes", ref resetMaterials)) - _manager.ChangeResetAdvancedDyes(_selector.Selected!, resetMaterials); + if (ImGui.Checkbox("##ResetAdvancedDyes", ref resetAdvancedDyes)) + _manager.ChangeResetAdvancedDyes(_selector.Selected!, resetAdvancedDyes); ImGuiUtil.HoverTooltip("Set this design to reset any previously applied advanced dyes when it is applied through any means."); ImGuiUtil.DrawFrameColumn("Color"); diff --git a/Glamourer/State/StateEditor.cs b/Glamourer/State/StateEditor.cs index d74ddf7..959d810 100644 --- a/Glamourer/State/StateEditor.cs +++ b/Glamourer/State/StateEditor.cs @@ -380,7 +380,7 @@ public class StateEditor( Editor.ChangeMetaState(state, meta, mergedDesign.Design.DesignData.GetMeta(meta), Source(meta), out _, settings.Key); } - if (settings.ResetMaterials || mergedDesign.ResetAdvancedDyes) + if (settings.ResetMaterials || (!settings.RespectManual && mergedDesign.ResetAdvancedDyes)) state.Materials.Clear(); foreach (var (key, value) in mergedDesign.Design.Materials) diff --git a/Penumbra.GameData b/Penumbra.GameData index 554e28a..77d52b0 160000 --- a/Penumbra.GameData +++ b/Penumbra.GameData @@ -1 +1 @@ -Subproject commit 554e28a3d1fca9394a20fd9856f6387e2a5e4a57 +Subproject commit 77d52b02d21e770b30c08f89bdf06e0cb75562f7