using System.Collections.Generic; using Cthangover.Core.UI; using Cthangover.Core.UI.Theming; using Godot; using Cthangover.Mods.Interface.Base.Lists; using Cthangover.Mods.Interface.Theming; namespace Cthangover.FFBattle.UI { /// /// Data object for a single menu entry. drives the action /// dispatch in (values like /// "attack", "action", "item", "back"). /// carries arbitrary payload: an /// for action entries or an /// for item entries. /// public class FFMenuEntry { /// Dispatch key used by to determine the next step. public string Key; /// Display label shown in the menu. public string Label; /// Whether this entry can be selected (greyed out if false). public bool Enabled = true; /// Payload data: for actions, for items. public object Data; } /// /// Vertical scrolling menu panel with a blinking cursor, keyboard navigation, /// and mouse hover/click support. Used as both the main battle menu and the /// action/item sub-menu (a separate instance). Each menu is populated via /// with a list of objects. /// Selection wraps around but skips disabled entries. Raises /// on confirm, on /// right-click or Escape (handled by ). /// public partial class FFMenuPanel : ModWidget { private ColorRect _background; private Panel _border; private Label _cursorLabel; private Label _caption; private StyleBoxFlat _rowActiveStyle; private StyleBoxFlat _rowIdleStyle; private List