SupaLidlGame/State/Weapon/RangedFireState.cs

56 lines
1.2 KiB
C#
Raw Permalink Normal View History

2023-05-26 22:28:08 -07:00
using Godot;
2023-08-08 00:54:00 -07:00
using SupaLidlGame.Extensions;
2023-05-26 22:28:08 -07:00
2023-06-03 18:21:46 -07:00
namespace SupaLidlGame.State.Weapon;
public partial class RangedFireState : WeaponState
2023-05-26 22:28:08 -07:00
{
2023-06-03 18:21:46 -07:00
[Export]
public Items.Weapons.Ranged Weapon { get; set; }
2023-05-26 22:28:08 -07:00
2023-06-03 18:21:46 -07:00
[Export]
public RangedIdleState IdleState { get; set; }
2023-05-26 22:28:08 -07:00
2023-08-08 00:54:00 -07:00
[Export]
public AnimationPlayer AnimationPlayer { get; set; }
[Export]
public string AnimationKey { get; set; }
2024-10-18 15:01:54 -07:00
public float VelocityModifier { get; set; } = 1;
[Export]
public float InitialVelocityModifier { get; set; } = 1;
2023-09-10 17:08:14 -07:00
2023-06-03 18:21:46 -07:00
private double _timeLeft = 0;
2023-05-26 22:28:08 -07:00
2024-10-18 15:01:54 -07:00
public override void _Ready()
{
VelocityModifier = InitialVelocityModifier;
}
2023-06-03 18:21:46 -07:00
public override IState<WeaponState> Enter(IState<WeaponState> prev)
{
//_timeLeft
_timeLeft = Weapon.UseTime;
2023-09-10 17:08:14 -07:00
Weapon.Attack(VelocityModifier);
2023-06-03 18:21:46 -07:00
Weapon.UseDirection = Weapon.Character.Target;
2023-08-08 00:54:00 -07:00
AnimationPlayer?.TryPlay(AnimationKey);
2023-06-03 18:21:46 -07:00
return null;
}
2023-05-26 22:28:08 -07:00
2023-06-03 18:21:46 -07:00
public override WeaponState Process(double delta)
{
if ((_timeLeft -= delta) <= 0)
2023-05-26 22:28:08 -07:00
{
2023-06-03 18:21:46 -07:00
return IdleState;
2023-05-26 22:28:08 -07:00
}
2023-06-03 18:21:46 -07:00
return null;
}
2023-05-26 22:28:08 -07:00
2023-06-03 18:21:46 -07:00
public override void Exit(IState<WeaponState> nextState)
{
2023-05-26 22:28:08 -07:00
}
}