diff --git a/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd b/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd index 862b31f3..3849ecc4 100644 --- a/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd +++ b/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd @@ -24,6 +24,8 @@ var _initial_focus_control var _scene_tree : SceneTree func _exit_tree() -> void: + if Engine.is_editor_hint(): return + GUIDE.disable_mapping_context(menu_context) for previous_context in previous_mapping_contexts: GUIDE.enable_mapping_context(previous_context) diff --git a/menus/scenes/components/AbilitySelection.cs b/menus/scenes/components/AbilitySelection.cs new file mode 100644 index 00000000..5d4445ea --- /dev/null +++ b/menus/scenes/components/AbilitySelection.cs @@ -0,0 +1,55 @@ +using System; +using Godot; +using Movementtests.systems; + +[Tool, GlobalClass] +public partial class AbilitySelection : Control +{ + [Signal] public delegate void AbilityAddedEventHandler(WeaponSystem.WeaponEvent forEvent, string abilityName); + + [Export] public WeaponSystem.WeaponEvent ForEvent { get; set; } = WeaponSystem.WeaponEvent.StartedFlying; + + private string _title = string.Empty; + [Export] public string Title { + get => _title; + set + { + _title = value; + TitleChanged(); + } + } + + [Export] public PackedScene AbilitySelectionItem { get; set; } + + private VBoxContainer _abilities; + private MenuButton _addAbility; + private PopupMenu _addAbilityMenu; + + public override void _Ready() + { + _abilities = GetNode("%SelectedAbilities"); + _addAbility = GetNode("%AddAbility"); + _addAbilityMenu = _addAbility.GetPopup(); + + _addAbilityMenu.IdPressed += AddAbilityMenuOnIdPressed; + _addAbilityMenu.IndexPressed += AddAbilityMenuOnIndexPressed; + } + + private void AddAbilityMenuOnIndexPressed(long index) + { + var indexInt = Convert.ToInt32(index); + var metadata = _addAbilityMenu.GetItemMetadata(indexInt); + var name = _addAbilityMenu.GetItemText(indexInt); + EmitSignalAbilityAdded(ForEvent, name); + } + + private void AddAbilityMenuOnIdPressed(long id) + { + } + + public void TitleChanged() + { + var titleLabel = GetNode