diff --git a/State/Character/CharacterDashState.cs b/State/Character/CharacterDashState.cs index 74bd12b..0ef54a2 100644 --- a/State/Character/CharacterDashState.cs +++ b/State/Character/CharacterDashState.cs @@ -18,6 +18,11 @@ public partial class CharacterDashState : CharacterState public Vector2 DashDirection = Vector2.Zero; + public CharacterDashState() + { + CanEnterWhileUsingItem = true; + } + public override IState Enter(IState previousState) { _timeLeftToDash = TimeToDash; diff --git a/State/Character/CharacterState.cs b/State/Character/CharacterState.cs index 1cd0609..b7abe8b 100644 --- a/State/Character/CharacterState.cs +++ b/State/Character/CharacterState.cs @@ -7,6 +7,8 @@ public abstract partial class CharacterState : Node, IState [Export] public Characters.Character Character { get; set; } + public bool CanEnterWhileUsingItem { get; set; } + public virtual IState Enter(IState prev) => null; public virtual void Exit(IState next) diff --git a/State/Character/PlayerMoveState.cs b/State/Character/PlayerMoveState.cs index 9dae222..5bae22c 100644 --- a/State/Character/PlayerMoveState.cs +++ b/State/Character/PlayerMoveState.cs @@ -5,10 +5,7 @@ namespace SupaLidlGame.State.Character; public partial class PlayerMoveState : PlayerState { [Export] - public PlayerRollState RollState { get; set; } - - [Export] - public CharacterDashState DashState { get; set; } + public CharacterState AbilityState { get; set; } public double MoveDuration { get; private set; } @@ -36,14 +33,21 @@ public partial class PlayerMoveState : PlayerState { if (Character.Inventory.SelectedItem is Items.Weapon weapon) { - if (!weapon.IsUsing) + bool canUseAbility = true; + + if (!AbilityState.CanEnterWhileUsingItem && weapon.IsUsing) { - return RollState; + canUseAbility = false; + } + + if (canUseAbility) + { + return AbilityState; } } else { - return RollState; + return AbilityState; } } return base.Input(@event); diff --git a/State/Character/PlayerRollState.cs b/State/Character/PlayerRollState.cs index dde6ce3..7fee81c 100644 --- a/State/Character/PlayerRollState.cs +++ b/State/Character/PlayerRollState.cs @@ -10,6 +10,11 @@ public partial class PlayerRollState : PlayerState private GpuParticles2D _particles; + public PlayerRollState() + { + CanEnterWhileUsingItem = false; + } + public override void _Ready() { base._Ready();