Add revert options to equip.

This commit is contained in:
Ottermandias 2024-01-09 16:54:43 +01:00
parent 5ea779a34c
commit bb671e8dd2
4 changed files with 59 additions and 33 deletions

View file

@ -1,6 +1,6 @@
using Glamourer.Designs;
using Dalamud.Game.Inventory;
using Glamourer.Designs;
using Glamourer.Events;
using Glamourer.Services;
using Glamourer.State;
using Penumbra.GameData.Enums;
using Penumbra.GameData.Structs;
@ -12,6 +12,7 @@ public ref struct EquipDrawData(EquipSlot slot, in DesignData designData)
public readonly EquipSlot Slot = slot;
public bool Locked;
public bool DisplayApplication;
public bool AllowRevert;
public Action<EquipItem> ItemSetter = null!;
public Action<StainId> StainSetter = null!;
@ -19,6 +20,8 @@ public ref struct EquipDrawData(EquipSlot slot, in DesignData designData)
public Action<bool> ApplyStainSetter = null!;
public EquipItem CurrentItem = designData.Item(slot);
public StainId CurrentStain = designData.Stain(slot);
public EquipItem GameItem = default;
public StainId GameStain = default;
public bool CurrentApply;
public bool CurrentApplyStain;
@ -28,8 +31,8 @@ public ref struct EquipDrawData(EquipSlot slot, in DesignData designData)
public static EquipDrawData FromDesign(DesignManager manager, Design design, EquipSlot slot)
=> new(slot, design.DesignData)
{
ItemSetter = slot.IsEquipment() || slot.IsAccessory()
? i => manager.ChangeEquip(design, slot, i)
ItemSetter = slot.IsEquipment() || slot.IsAccessory()
? i => manager.ChangeEquip(design, slot, i)
: i => manager.ChangeWeapon(design, slot, i),
StainSetter = i => manager.ChangeStain(design, slot, i),
ApplySetter = b => manager.ChangeApplyEquip(design, slot, b),
@ -47,5 +50,8 @@ public ref struct EquipDrawData(EquipSlot slot, in DesignData designData)
StainSetter = i => manager.ChangeStain(state, slot, i, StateChanged.Source.Manual),
Locked = state.IsLocked,
DisplayApplication = false,
GameItem = state.BaseData.Item(slot),
GameStain = state.BaseData.Stain(slot),
AllowRevert = true,
};
}