mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 11:15:33 +00:00
69 lines
No EOL
1.6 KiB
C#
69 lines
No EOL
1.6 KiB
C#
using Cirno.Scripts.Components.Actors;
|
|
using Godot;
|
|
|
|
namespace Cirno.Scripts.Components.FSM._3DPlayer;
|
|
|
|
public partial class PlayerWeaponModule3D : ModuleBase<PlayerState, CharacterBody3D>
|
|
{
|
|
[Export] public PlayerWeaponProvider3D WeaponProvider { get; private set; }
|
|
|
|
[Export] public InputProvider InputProvider { get; private set; }
|
|
private IsoPlayerStorageModule Storage { get; set; }
|
|
|
|
public override void EnterState(PlayerState state)
|
|
{
|
|
|
|
}
|
|
|
|
public override void ExitState(PlayerState state)
|
|
{
|
|
|
|
}
|
|
|
|
public override void Init(IStateMachine<PlayerState, CharacterBody3D> machine)
|
|
{
|
|
base.Init(machine);
|
|
Storage ??= StateMachine.GetModule<IsoPlayerStorageModule>();
|
|
WeaponProvider.Init(MainObject);
|
|
}
|
|
|
|
public override void Process(double delta)
|
|
{
|
|
WeaponProvider.Update(delta);
|
|
|
|
HandleShoot();
|
|
|
|
HandleWeaponSwitch();
|
|
}
|
|
|
|
public override void PhysicsProcess(double delta)
|
|
{
|
|
|
|
}
|
|
|
|
private void HandleShoot()
|
|
{
|
|
if (InputProvider.GetReloadJustPressed())
|
|
{
|
|
WeaponProvider.Reload();
|
|
return;
|
|
}
|
|
|
|
if (InputProvider.GetShootPressed())
|
|
{
|
|
WeaponProvider.Shoot(Storage.AimingDirection);
|
|
}
|
|
}
|
|
|
|
private void HandleWeaponSwitch()
|
|
{
|
|
if (InputProvider.GetWeaponNextJustPressed())
|
|
{
|
|
WeaponProvider.NextWeapon();
|
|
}
|
|
else if (InputProvider.GetWeaponPreviousJustPressed())
|
|
{
|
|
WeaponProvider.PreviousWeapon();
|
|
}
|
|
}
|
|
} |