public override void Compose(List <State> states) { base.Compose(states); this.Wave.StateMachine = this; Wave.WaveComplete = new StateTransition("WaveComplete", Wave, WaitForNextWave); Wave.PlayerDied = new StateTransition("PlayerDied", Wave, GameOver); Wave.AddTrigger(WaveComplete, Wave.WaveComplete); Wave.AddTrigger(PlayerDied, Wave.PlayerDied); states.Add(Wave); this.GameOver.StateMachine = this; GameOver.OnRetry = new StateTransition("OnRetry", GameOver, WaitForNextWave); GameOver.AddTrigger(OnRetry, GameOver.OnRetry); states.Add(GameOver); this.WaitForNextWave.StateMachine = this; WaitForNextWave.NextWaveReady = new StateTransition("NextWaveReady", WaitForNextWave, Wave); WaitForNextWave.AddTrigger(NextWaveReady, WaitForNextWave.NextWaveReady); states.Add(WaitForNextWave); }