Made a menu to select abilities and grant them (with a few hardcoded stuff)
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 26s
Create tag and build when new code gets to main / Export (push) Successful in 6m13s

This commit is contained in:
2026-04-19 11:37:55 +02:00
parent 9464fc7caa
commit 5a59d50be5
12 changed files with 164 additions and 114 deletions

View File

@@ -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<VBoxContainer>("%SelectedAbilities");
_addAbility = GetNode<MenuButton>("%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<Label>("%TitleLabel");
titleLabel.Text = Title;
}
}