cirnogodot/Scripts/UI/KeyRemappingItem.cs
2025-03-26 18:47:17 +01:00

43 lines
No EOL
1.1 KiB
C#

using System.Linq;
using Godot;
namespace Cirno.Scripts.UI;
public partial class KeyRemappingItem : HBoxContainer
{
public StringName KeyId { get; set; }
public StringName KeyName { get; set; }
[Export] public Label NameLabel { get; private set; }
[Export] public Label InputLabel { get; private set; }
private bool _active = false;
public override void _Ready()
{
NameLabel.Text = KeyName;
var actions = InputMap.GetActions();
var action = actions.FirstOrDefault(x => x == KeyId);
var events = InputMap.ActionGetEvents(action);
InputLabel.Text = string.Join(",", events.Select(x => x.AsText()));
}
public void StartRemap()
{
_active = true;
}
public override void _Input(InputEvent e)
{
if (!_active) return;
if (e is InputEventKey keyEvent && keyEvent.Pressed)
{
GD.Print(keyEvent.Keycode);
InputLabel.Text = keyEvent.Keycode.ToString();
_active = false;
}
}
}