protected override void Update(GameTime gameTime) { if (m_networkDied) { ConnectionControl.SetStatus("Connection died."); CleanUpNetwork(); SwitchMode(GameMode.Connect); } InputManager.Update(); if (IsActive) { if (IsExitInput()) { HandleExitInput(); } ActiveControl.HandleInput(); } if (Network != null) { foreach (PackageInterface package in Network.GetTCPPackages()) { ActiveControl.ProcessServerData(package); } } // a switch to finish can happen in between those lines which disconnects -> check again if its dead if (Network != null) { PackageInterface udpPackage = Network.GetUDPPackage(); if (udpPackage != null) { ActiveControl.ProcessServerData(udpPackage); } } ActiveControl.Update(gameTime); base.Update(gameTime); }