public void LoadWorld(WorldProvider worldProvider, INetworkProvider networkProvider) { PlayingState playState = new PlayingState(this, GraphicsDevice, worldProvider, networkProvider); LoadingWorldState loadingScreen = new LoadingWorldState(); GameStateManager.AddState("loading", loadingScreen); GameStateManager.SetActiveState("loading"); worldProvider.Load(loadingScreen.UpdateProgress).ContinueWith(task => { GameStateManager.RemoveState("play"); GameStateManager.AddState("play", playState); if (networkProvider.IsConnected) { GameStateManager.SetActiveState("play"); } else { GameStateManager.RemoveState("play"); worldProvider.Dispose(); } GameStateManager.RemoveState("loading"); }); }