using Godot; namespace Cirno.Scripts.Components.Actors; public partial class KeyboardInputProvider : InputProvider { [ExportCategory("Movement")] [Export] public string LeftAxisName { get; private set; } = "left"; [Export] public string RightAxisName { get; private set; } = "right"; [Export] public string UpAxisName { get; private set; } = "up"; [Export] public string DownAxisName { get; private set; } = "down"; [ExportCategory("Aiming")] [Export] public string LeftAimName { get; private set; } = "aim_left"; [Export] public string RightAimName { get; private set; } = "aim_right"; [Export] public string UpAimName { get; private set; } = "aim_up"; [Export] public string DownAimName { get; private set; } = "aim_down"; [ExportCategory("Action Names")] [Export] private string _shootActionName = "shoot"; [Export] private string _useActionName = "Use"; [Export] private string _strafeActionName = "strafe"; [Export] private string _nextWeaponActionName = "next_weapon"; [Export] private string _previousWeaponActionName = "previous_weapon"; public override Vector2 GetMovementInput() { return Input.GetVector(LeftAxisName, RightAxisName, UpAxisName, DownAxisName); } public override Vector2 GetAimInput() { return GetRightStickInput(); } private Vector2 GetRightStickInput() { return new Vector2( Input.GetAxis(LeftAimName,RightAimName), Input.GetAxis(UpAimName, DownAimName) ); } public override bool GetActionJustPressed(string action) { return Input.IsActionJustPressed(action); } public override bool GetActionPressed(string action) { return Input.IsActionPressed(action); } public override bool GetShootPressed() { return GetActionPressed(_shootActionName); } public override bool GetUseJustPressed() { return GetActionJustPressed(_useActionName); } public override bool GetStrafePressed() { return GetActionPressed(_strafeActionName); } public override bool GetWeaponNextJustPressed() { return GetActionJustPressed(_nextWeaponActionName); } public override bool GetWeaponPreviousJustPressed() { return GetActionJustPressed(_previousWeaponActionName); } }