Files
AetherBags/KamiToolKit/Nodes/Component/LuminaDropDownNode.cs
T
KnackAtNite 8db4ce6094
Debug Build and Test / Build against Latest Dalamud (push) Has been cancelled
Debug Build and Test / Build against Staging Dalamud (push) Has been cancelled
Initial commit: AetherBags + KamiToolKit for FC Gitea
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 14:46:31 -05:00

48 lines
1.3 KiB
C#

using System;
using Lumina.Excel;
namespace KamiToolKit.Nodes;
public class LuminaDropDownNode<T> : DropDownNode<LuminaButtonListNode<T>, T> where T : struct, IExcelRow<T> {
public LuminaDropDownNode() {
OptionListNode.OnOptionSelected += OptionSelectedHandler;
}
public Action<T>? OnOptionSelected { get; set; }
public LuminaButtonListNode<T>.GetLabel? LabelFunction {
get => OptionListNode.LabelFunction;
set {
OptionListNode.LabelFunction = value;
ResolveOptions();
}
}
public LuminaButtonListNode<T>.ShouldShow? FilterFunction {
get => OptionListNode.FilterFunction;
set {
OptionListNode.FilterFunction = value;
ResolveOptions();
}
}
private void OptionSelectedHandler(T option) {
OnOptionSelected?.Invoke(option);
UpdateLabel(option);
Toggle(false);
}
private void ResolveOptions() {
if (LabelFunction is null) return;
if (FilterFunction is null) return;
OptionListNode.SelectDefaultOption();
LabelNode.String = LabelFunction.Invoke(OptionListNode.SelectedOption);
}
protected override void UpdateLabel(T option) {
LabelNode.String = LabelFunction?.Invoke(option) ?? "ERROR: Label Function Not Set";
}
}