using Cirno.Scripts.Components.Actors; using Godot; namespace Cirno.Scripts.Components.FSM._3DPlayer; public partial class PlayerWeaponModule3D : ModuleBase { [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 machine) { base.Init(machine); Storage ??= StateMachine.GetModule(); 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(); } } }