////////////////////////////////////////////////////////////////////////////// protected override void OnStateChanged(State oldState, State newState) { switch (newState) { case State.RoundStart: { StartScreen(new BlockingScreen("Starting round...")); break; } case State.Playing: { Debug.Assert(m_localPlayer != null); Debug.Assert(m_localPlayer.IsReady); Debug.Assert(m_localPlayer.connection != null); gameScreen = new GameScreen(); StartScreen(gameScreen); m_localPlayer.ResetNetworkState(); m_localPlayer.IsReady = true; gameScreen.AddDebugView(new NetworkTraceView(m_localPlayer.connection)); gameScreen.AddDebugView(new LocalPlayerView(m_localPlayer)); break; } case State.RoundEnd: { SetPlayersReady(false); StartScreen(new BlockingScreen("Waiting round results...")); break; } default: { Debug.Fail("Unexpected state: " + newState); break; } } }