public GameStateController()
{
gameFsm = new FSM("GameFSM");
preStartState = gameFsm.AddState((byte)GameState.PreStart);
idleState = gameFsm.AddState((byte)GameState.Idle);
playState = gameFsm.AddState((byte)GameState.Play);
pauseState = gameFsm.AddState((byte)GameState.Pause);
gameOverState = gameFsm.AddState((byte)GameState.GameOver);
preStartAction = new PreStartAction(preStartState);
playingAction = new PlayAction(playState);
pauseAction = new PauseAction(pauseState);
gameOverAction = new GameOverAction(gameOverState);
idleAction = new IdleAction(idleState);
preStartState.AddTransition((byte)FSMTransition.ToIdle, idleState);
idleState.AddTransition((byte)FSMTransition.ToPlay, playState);
playState.AddTransition((byte)FSMTransition.ToPause, pauseState);
playState.AddTransition((byte)FSMTransition.ToGameOver, gameOverState);
gameOverState.AddTransition((byte)FSMTransition.ToIdle, idleState);
preStartAction.Init();
idleAction.Init();
playingAction.Init();
pauseAction.Init();
gameOverAction.Init();
}