Skip to content
This repository has been archived by the owner on Aug 14, 2019. It is now read-only.

StateMachinePseudo Abstract Code

Erik edited this page Apr 26, 2019 · 4 revisions
public abstract class CharStateData
{
    //derived classes should cache Monobehaviours and values
}

public abstract class StateController<T> where T : CharStateData
{
    //public abstract State<T> GetCurrentState();
    //public abstract State<T> GetRemainState();
    //public abstract Action<T> GetAction();
    //public abstract Decision<T> GetDecision();
    public State<T> currentState;
    public State<T> remainState;
    public Action<T>[] actions;
    public Decision<T>[] decisions;

    //etc.
}

public class EnemyStateController : StateController<EnemyStateData>
{

}

public abstract class Action<T> where T : CharStateData
{
    public abstract void Act(T charStateData);
}

public abstract class Decision<T> where T : CharStateData
{
    public abstract bool Decide(T charStateData);
}

public class State<T> where T: CharStateData
{

}

public class EnemyStateData : CharStateData
{
    //public CharacterHealth characterHealth;
    //public EnemyMovementController enemyMovementController;
}

public class EnemyChaseDecision : Decision<EnemyStateData>
{
    public override bool Decide(EnemyStateData charStateData)
    {
        throw new System.NotImplementedException();
    }
}
Clone this wiki locally