DungeonRPG/Scripts/Characters/Player/PlayerIdleState.cs
Bobby Lucero 7bc6454ce1 State Machine
(tutorial has us refactoring this monstrosity later)
2025-04-24 00:49:23 -04:00

49 lines
1.2 KiB
C#

using Godot;
using System;
using DungeonRPG.Scripts.General;
public partial class PlayerIdleState : Node
{
private Player characterNode;
public override void _Ready()
{
characterNode = GetOwner<Player>();
SetPhysicsProcess(false);
SetProcessInput(false);
}
public override void _PhysicsProcess(double delta)
{
if (characterNode.Direction != Vector2.Zero)
{
characterNode.StateMachine.SwitchState<PlayerMoveState>();
}
}
public override void _Input(InputEvent @event)
{
if (Input.IsActionJustPressed(GameConstants.INPUT_DASH))
{
characterNode.StateMachine.SwitchState<PlayerDashState>();
}
}
public override void _Notification(int what)
{
base._Notification(what);
if (what == GameConstants.STATE_NOTIFICATION_ENABLE)
{
characterNode.AnimatedSprite.Play(GameConstants.ANIM_IDLE);
SetPhysicsProcess(true);
SetProcessInput(true);
}
else if (what == GameConstants.STATE_NOTIFICATION_DISABLE)
{
SetPhysicsProcess(false);
SetProcessInput(false);
}
}
}