From 5a59d50be508e9d9f2a96d954c60c19092d8bcd0 Mon Sep 17 00:00:00 2001 From: Minimata Date: Sun, 19 Apr 2026 11:37:55 +0200 Subject: [PATCH] Made a menu to select abilities and grant them (with a few hardcoded stuff) --- .../scenes/overlaid_menu/overlaid_menu.gd | 2 + menus/scenes/components/AbilitySelection.cs | 55 +++++++++++ .../scenes/components/AbilitySelection.cs.uid | 1 + .../scenes/components/ability_selection.tscn | 45 +++++++++ menus/scenes/overlaid_menus/Inventory.cs | 20 +++- menus/scenes/overlaid_menus/inventory.tscn | 99 +++---------------- .../overlaid_menus/inventory_wrapper.gd | 1 + project.godot | 2 +- .../player_controller/PlayerController.tscn | 2 + .../components/weapon/WeaponSystem.cs | 16 ++- .../components/weapon/weapon.tscn | 3 - .../scripts/PlayerController.cs | 32 ++---- 12 files changed, 164 insertions(+), 114 deletions(-) create mode 100644 menus/scenes/components/AbilitySelection.cs create mode 100644 menus/scenes/components/AbilitySelection.cs.uid create mode 100644 menus/scenes/components/ability_selection.tscn 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