Initial Checkin of Code
This commit is contained in:
parent
19b557ee9b
commit
0bee2ee47b
44 changed files with 7965 additions and 0 deletions
37
Library/Utilities/StateMachine.cs
Normal file
37
Library/Utilities/StateMachine.cs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
using Godot;
|
||||
using PokemonLike.Library.Support;
|
||||
|
||||
namespace PokemonLike.Library.Utilities;
|
||||
|
||||
[GlobalClass]
|
||||
public partial class StateMachine : Node
|
||||
{
|
||||
[ExportCategory("State Machine Vars")]
|
||||
[Export] public Node Customer;
|
||||
[Export] public State CurrentState;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
Logger.Info("Loading state machine...");
|
||||
foreach (Node child in GetChildren())
|
||||
{
|
||||
if (child is State state)
|
||||
{
|
||||
state.StateOwner = Customer;
|
||||
state.SetProcess(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string GetCurrentState() => CurrentState.Name.ToString();
|
||||
|
||||
public void ChangeState(State newState)
|
||||
{
|
||||
CurrentState?.ExitState();
|
||||
CurrentState = newState;
|
||||
CurrentState?.EnterState();
|
||||
foreach (Node child in GetChildren())
|
||||
if (child is State state)
|
||||
state.SetProcess(state == CurrentState);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue