using System; using System.Collections.Generic; using Chickensoft.AutoInject; using Chickensoft.Introspection; using Gamesmiths.Forge.Godot.Resources.Abilities; using Godot; using Movementtests.systems; [Tool, GlobalClass, Meta(typeof(IAutoConnect))] public partial class AbilitySelection : Control { public override void _Notification(int what) => this.Notify(what); #region Signals [Signal] public delegate void AbilityAddedEventHandler(WeaponSystem.WeaponEvent forEvent, ForgeAbilityBehavior behavior); [Signal] public delegate void AbilityRemovedEventHandler(WeaponSystem.WeaponEvent forEvent, ForgeAbilityBehavior behavior); #endregion #region Exports [Export] public WeaponSystem.WeaponEvent ForEvent { get; set; } = WeaponSystem.WeaponEvent.StartedFlying; [Export] public string Title { get; set; } = string.Empty; [Export] public PackedScene? AbilitySelectedItem { get; set; } [Export] public ForgeAbilityBehavior[] AbilityBehaviors { get; set; } = []; #endregion #region Nodes [Node("%SelectedAbilities")] public required VBoxContainer SelectedAbilities { get; set; } [Node("%AddAbility")] public required MenuButton AddAbility { get; set; } public required PopupMenu AddAbilityMenu { get; set; } #endregion public void OnReady() { // Initialize title (also in Editor as Tool) var titleLabel = GetNode