diff --git a/Glamourer/Designs/DesignData.cs b/Glamourer/Designs/DesignData.cs index 3e32eac5..42059969 100644 --- a/Glamourer/Designs/DesignData.cs +++ b/Glamourer/Designs/DesignData.cs @@ -112,7 +112,7 @@ public readonly EquipItem BonusItem(BonusItemFlag slot) => slot switch { // @formatter:off - BonusItemFlag.Glasses => EquipItem.FromIds(_bonusIds[0], _iconIds[12], _bonusModelIds[0], 0, _bonusVariants[0], FullEquipType.Glasses, 0, _nameGlasses), + BonusItemFlag.Glasses => EquipItem.FromBonusIds(_bonusIds[0], _iconIds[12], _bonusModelIds[0], _bonusVariants[0], BonusItemFlag.Glasses, _nameGlasses), _ => EquipItem.BonusItemNothing(slot), // @formatter:on }; diff --git a/Glamourer/Gui/Tabs/DebugTab/ActiveStatePanel.cs b/Glamourer/Gui/Tabs/DebugTab/ActiveStatePanel.cs index c875cf13..f5fe088c 100644 --- a/Glamourer/Gui/Tabs/DebugTab/ActiveStatePanel.cs +++ b/Glamourer/Gui/Tabs/DebugTab/ActiveStatePanel.cs @@ -9,7 +9,6 @@ using OtterGui.Raii; using Penumbra.GameData.Enums; using Penumbra.GameData.Gui.Debug; -using FFXIVClientStructs.FFXIV.Shader; namespace Glamourer.Gui.Tabs.DebugTab; @@ -67,7 +66,13 @@ static void PrintRow(string label, T actor, T model, StateSource source) wher static string ItemString(in DesignData data, EquipSlot slot) { var item = data.Item(slot); - return $"{item.Name} ({item.PrimaryId.Id}{(item.SecondaryId != 0 ? $"-{item.SecondaryId.Id}" : string.Empty)}-{item.Variant})"; + return $"{item.Name} ({item.Id.ToDiscriminatingString()} {item.PrimaryId.Id}{(item.SecondaryId != 0 ? $"-{item.SecondaryId.Id}" : string.Empty)}-{item.Variant})"; + } + + static string BonusItemString(in DesignData data, BonusItemFlag slot) + { + var item = data.BonusItem(slot); + return $"{item.Name} ({item.Id.ToDiscriminatingString()} {item.PrimaryId.Id}{(item.SecondaryId != 0 ? $"-{item.SecondaryId.Id}" : string.Empty)}-{item.Variant})"; } PrintRow("Model ID", state.BaseData.ModelId, state.ModelData.ModelId, state.Sources[MetaIndex.ModelId]); @@ -93,6 +98,12 @@ static string ItemString(in DesignData data, EquipSlot slot) ImGuiUtil.DrawTableColumn(state.Sources[slot, true].ToString()); } + foreach (var slot in BonusExtensions.AllFlags) + { + PrintRow(slot.ToName(), BonusItemString(state.BaseData, slot), BonusItemString(state.ModelData, slot), state.Sources[slot]); + ImGui.TableNextRow(); + } + foreach (var type in Enum.GetValues()) { PrintRow(type.ToDefaultName(), state.BaseData.Customize[type].Value, state.ModelData.Customize[type].Value, diff --git a/Glamourer/Services/ItemManager.cs b/Glamourer/Services/ItemManager.cs index 6e558880..07a48293 100644 --- a/Glamourer/Services/ItemManager.cs +++ b/Glamourer/Services/ItemManager.cs @@ -142,7 +142,7 @@ public EquipItem Resolve(BonusItemFlag slot, BonusItemId id) public EquipItem Resolve(BonusItemFlag slot, CustomItemId id) { // Only from early designs as migration. - if (!id.IsBonusItem) + if (!id.IsBonusItem || id.Id == 0) { IsBonusItemValid(slot, (BonusItemId)id.Id, out var item); return item; @@ -207,7 +207,7 @@ public bool IsBonusItemValid(BonusItemFlag slot, BonusItemId itemId, out EquipIt if (itemId.Id != 0) return DictBonusItems.TryGetValue(itemId, out item) && slot == item.Type.ToBonus(); - item = new EquipItem(Nothing, (BonusItemId)0, 0, 0, 0, 0, slot.ToEquipType(), 0, 0, 0); + item = EquipItem.BonusItemNothing(slot); return true; } diff --git a/Penumbra.GameData b/Penumbra.GameData index 63cbf824..554e28a3 160000 --- a/Penumbra.GameData +++ b/Penumbra.GameData @@ -1 +1 @@ -Subproject commit 63cbf824178b5b1f91fd9edc22a6c2bbc2e1cd23 +Subproject commit 554e28a3d1fca9394a20fd9856f6387e2a5e4a57