protected override void OnNavigatedTo(NavigationEventArgs e) { var bw = new BackgroundWorker(); bw.DoWork += (s, args) => { response = new NetworkTask().getGameState(); if (response == null || response.game_in_progress == false) { response = new NetworkTask().createGame(); isNewGame = true; } }; bw.RunWorkerCompleted += (s, args) => { if (response.game_in_progress == true && !isNewGame) { StartButton.Content = "Continue Game"; } else { StartButton.Content = "Start Game"; } }; bw.RunWorkerAsync(); }
public GameResponse createGame() { string response = makeHttpRequest("POST", "{}"); GameResponse state = null; DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(GameResponse)); MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(response)); state = (GameResponse)js.ReadObject(stream); return(state); }
private void waitForOpponent() { TeardownPage(); var bw = new BackgroundWorker(); bw.DoWork += (s, args) => { response = new NetworkTask().getGameState(); while (response.is_game_over == false && response.is_current_players_turn == false) { Thread.Sleep(10000); response = new NetworkTask().getGameState(); } }; bw.RunWorkerCompleted += (s, args) => { alreadyCalledWait = false; if (response.is_game_over == false) { GameStateManager.getInstance().setShouldWait(false); GameStateManager.getInstance().setGameState(response.game_state); stateHasBeenLoaded = false; SetupPage(); hidePopup(); } else { string myColor = GameState.getInstance().getMyColor() == ChessPiece.Color.BLACK ? "black" : "white"; if (response.winner == myColor) { Deployment.Current.Dispatcher.BeginInvoke(() => { NavigationService.Navigate(new Uri("/WonPage.xaml", UriKind.Relative)); }); } else { Deployment.Current.Dispatcher.BeginInvoke(() => { NavigationService.Navigate(new Uri("/LostPage.xaml", UriKind.Relative)); }); } } }; bw.RunWorkerAsync(); showPopup("Waiting"); }