package com.gdxjam.components; import com.badlogic.ashley.core.Component; import com.badlogic.ashley.core.Entity; import com.badlogic.gdx.ai.fsm.DefaultStateMachine; import com.badlogic.gdx.ai.fsm.State; import com.badlogic.gdx.ai.fsm.StateMachine; import com.badlogic.gdx.ai.msg.Telegram; import com.badlogic.gdx.ai.msg.Telegraph; public class FSMComponent extends Component implements Telegraph { private DefaultStateMachine<Entity> stateMachine; /** Can only be created by PooledEngine */ private FSMComponent() { // private constructor } public FSMComponent init(Entity entity) { stateMachine = new DefaultStateMachine<Entity>(entity); return this; } public void update() { stateMachine.update(); } public void changeState(State<Entity> state) { stateMachine.changeState(state); } public StateMachine<Entity> getStateMachine() { return stateMachine; } @Override public boolean handleMessage(Telegram msg) { return stateMachine.handleMessage(msg); } }