Penumbra/Penumbra/UI/ModsTab/Groups/MultiModGroupEditDrawer.cs
Ottermandias 5a2fddab89
Some checks are pending
.NET Build / build (push) Waiting to run
More stuff to Luna.
2025-11-02 14:55:57 +01:00

63 lines
1.9 KiB
C#

using Dalamud.Interface;
using ImSharp;
using OtterGui.Raii;
using OtterGui.Text;
using Penumbra.Mods.Groups;
namespace Penumbra.UI.ModsTab.Groups;
public readonly struct MultiModGroupEditDrawer(ModGroupEditDrawer editor, MultiModGroup group) : IModGroupEditDrawer
{
public void Draw()
{
foreach (var (optionIdx, option) in group.OptionData.Index())
{
using var id = ImRaii.PushId(optionIdx);
editor.DrawOptionPosition(group, option, optionIdx);
Im.Line.SameInner();
editor.DrawOptionDefaultMultiBehaviour(group, option, optionIdx);
Im.Line.SameInner();
editor.DrawOptionName(option);
Im.Line.SameInner();
editor.DrawOptionDescription(option);
Im.Line.SameInner();
editor.DrawOptionDelete(option);
Im.Line.SameInner();
editor.DrawOptionPriority(option);
}
DrawNewOption();
DrawConvertButton();
}
private void DrawConvertButton()
{
var g = group;
var e = editor.ModManager.OptionEditor.MultiEditor;
if (ImUtf8.Button("Convert to Single Group"u8, editor.AvailableWidth))
editor.ActionQueue.Enqueue(() => e.ChangeToSingle(g));
}
private void DrawNewOption()
{
var count = group.Options.Count;
if (count >= IModGroup.MaxMultiOptions)
return;
var name = editor.DrawNewOptionBase(group, count);
var validName = name.Length > 0;
if (ImUtf8.IconButton(FontAwesomeIcon.Plus, validName
? "Add a new option to this group."u8
: "Please enter a name for the new option."u8, default, !validName))
{
editor.ModManager.OptionEditor.MultiEditor.AddOption(group, name);
editor.NewOptionName = null;
}
}
}