Add All Dye box.

This commit is contained in:
Ottermandias 2023-09-11 16:43:28 +02:00
parent 5417013bc3
commit 90d4a06253
3 changed files with 51 additions and 2 deletions

View file

@ -254,12 +254,38 @@ public class EquipmentDrawer
if (!locked && armor.ModelId.Id != 0)
{
ImGuiUtil.HoverTooltip("Right-click to clear.");
if (clear || ImGui.IsItemClicked(ImGuiMouseButton.Right))
{
change = true;
armor = ItemManager.NothingItem(slot);
}
ImGuiUtil.HoverTooltip("Right-click to clear.");
}
return change;
}
public bool DrawAllStain(out StainId ret, bool locked)
{
using var disabled = ImRaii.Disabled(locked);
var change = _stainCombo.Draw("Dye All Slots", Stain.None.RgbaColor, string.Empty, false, false);
ret = Stain.None.RowIndex;
if (change)
if (_stainData.TryGetValue(_stainCombo.CurrentSelection.Key, out var stain))
ret = stain.RowIndex;
else if (_stainCombo.CurrentSelection.Key == Stain.None.RowIndex)
ret = Stain.None.RowIndex;
if (!locked)
{
if (ImGui.IsItemClicked(ImGuiMouseButton.Right) && _config.DeleteDesignModifier.IsActive())
{
ret = Stain.None.RowIndex;
change = true;
}
ImGuiUtil.HoverTooltip($"{_config.DeleteDesignModifier.ToString()} and Right-click to clear.");
}
return change;
@ -281,12 +307,13 @@ public class EquipmentDrawer
if (!locked && ret != Stain.None.RowIndex)
{
ImGuiUtil.HoverTooltip("Right-click to clear.");
if (ImGui.IsItemClicked(ImGuiMouseButton.Right))
{
ret = Stain.None.RowIndex;
change = true;
}
ImGuiUtil.HoverTooltip("Right-click to clear.");
}
return change;

View file

@ -148,10 +148,18 @@ public class ActorPanel
return;
_equipmentDrawer.Prepare();
var usedAllStain = _equipmentDrawer.DrawAllStain(out var newAllStain, _state!.IsLocked);
foreach (var slot in EquipSlotExtensions.EqdpSlots)
{
var changes = _equipmentDrawer.DrawEquip(slot, _state!.ModelData, out var newArmor, out var newStain, null, out _, out _,
_state.IsLocked);
if (usedAllStain)
{
changes |= DataChange.Stain;
newStain = newAllStain;
}
switch (changes)
{
case DataChange.Item:
@ -168,6 +176,12 @@ public class ActorPanel
var weaponChanges = _equipmentDrawer.DrawWeapons(_state!.ModelData, out var newMainhand, out var newOffhand, out var newMainhandStain,
out var newOffhandStain, null, GameMain.IsInGPose(), out _, out _, out _, out _, _state.IsLocked);
if (usedAllStain)
{
weaponChanges |= DataChange.Stain | DataChange.Stain2;
newMainhandStain = newAllStain;
newOffhandStain = newAllStain;
}
if (weaponChanges.HasFlag(DataChange.Item))
if (weaponChanges.HasFlag(DataChange.Stain))

View file

@ -105,6 +105,8 @@ public class DesignPanel
return;
_equipmentDrawer.Prepare();
var usedAllStain = _equipmentDrawer.DrawAllStain(out var newAllStain, _selector.Selected!.WriteProtected());
foreach (var slot in EquipSlotExtensions.EqdpSlots)
{
var changes = _equipmentDrawer.DrawEquip(slot, _selector.Selected!.DesignData, out var newArmor, out var newStain,
@ -113,6 +115,8 @@ public class DesignPanel
_manager.ChangeEquip(_selector.Selected, slot, newArmor);
if (changes.HasFlag(DataChange.Stain))
_manager.ChangeStain(_selector.Selected, slot, newStain);
else if (usedAllStain)
_manager.ChangeStain(_selector.Selected, slot, newAllStain);
if (changes.HasFlag(DataChange.ApplyItem))
_manager.ChangeApplyEquip(_selector.Selected, slot, newApply);
if (changes.HasFlag(DataChange.ApplyStain))
@ -127,6 +131,8 @@ public class DesignPanel
_manager.ChangeWeapon(_selector.Selected, EquipSlot.MainHand, newMainhand);
if (weaponChanges.HasFlag(DataChange.Stain))
_manager.ChangeStain(_selector.Selected, EquipSlot.MainHand, newMainhandStain);
else if (usedAllStain)
_manager.ChangeStain(_selector.Selected, EquipSlot.MainHand, newAllStain);
if (weaponChanges.HasFlag(DataChange.ApplyItem))
_manager.ChangeApplyEquip(_selector.Selected, EquipSlot.MainHand, applyMain);
if (weaponChanges.HasFlag(DataChange.ApplyStain))
@ -135,6 +141,8 @@ public class DesignPanel
_manager.ChangeWeapon(_selector.Selected, EquipSlot.OffHand, newOffhand);
if (weaponChanges.HasFlag(DataChange.Stain2))
_manager.ChangeStain(_selector.Selected, EquipSlot.OffHand, newOffhandStain);
else if (usedAllStain)
_manager.ChangeStain(_selector.Selected, EquipSlot.OffHand, newAllStain);
if (weaponChanges.HasFlag(DataChange.ApplyItem2))
_manager.ChangeApplyEquip(_selector.Selected, EquipSlot.OffHand, applyOff);
if (weaponChanges.HasFlag(DataChange.ApplyStain2))