public async void Fire(object sender, RoutedEventArgs e) { if (currentturn) { Button send = (Button)sender; int index = Array.IndexOf(MainWindow.player.buttonField, send); string status = ""; string message = "Connection to Server failed."; string hit_status = ""; (status, message, hit_status) = await HttpBattleshipClient.ShotFired(index % MainWindow.size, (int)(index / MainWindow.size), MainWindow.player.name, MainWindow.token); if (status.Equals("success")) { if (hit_status.Equals("hit")) { send.Background = MainWindow.hit; //Correct Equals } else { send.Background = MainWindow.miss; } currentturn = false; } else { ErrorLabel.Content = message; } } }
private async void LoginBtn_Clicked(object sender, RoutedEventArgs e) { LoginBtn.IsEnabled = false; string status = ""; string message = "Error connecting to server"; string token = ""; if (App.DEBUG_MODE) { status = "success"; } else { using (SHA256 hashAlg = SHA256.Create()) { (status, message, token) = await HttpBattleshipClient.Login(UsrTextBox.Text, hashAlg.ComputeHash(Encoding.UTF8.GetBytes(PwdTextBox.Password))); } } if (status.Equals("success")) { MainWindow main = new MainWindow(UsrTextBox.Text, token); Window.GetWindow(this).Close(); main.Show(); } else { LoginBtn.IsEnabled = true; ErrorLabel.Content = message; } }
private async void LeaveBtn_Clicked(object sender, RoutedEventArgs e) { //Is Dequeue == leave? await HttpBattleshipClient.Dequeue(MainWindow.player.name, MainWindow.token); Window.GetWindow(this).DataContext = new QueueView(); }
private async void SendShipsBtn_Clicked(object sender, RoutedEventArgs e) { string status = ""; string message = "No response from the Server."; if (App.DEBUG_MODE) { status = "success"; } else { (status, message) = await HttpBattleshipClient.SubmitBattleships(MainWindow.player.field, MainWindow.player.name, MainWindow.token); } if (status.Equals("success")) { Window.GetWindow(this).DataContext = new WaitOpponentView(); } else { ErrorLabel.Content = message; Array.Copy(MainWindow.player.originalField, 0, MainWindow.player.field, 0, MainWindow.player.originalField.Length); int i = 0; foreach (Button button in MainWindow.player.buttonField) { button.Background = MainWindow.colorDic[MainWindow.player.field[i]]; i++; } } }
private async void waitingLoop() { string status = "success"; string message = "Connection to Server failed"; int isReady = 0; int[] enemyMap = new int[(int)Math.Pow(MainWindow.size, 2)]; // // // TODO: Debug Mode missing // // while (status.Equals("success") && isReady == 0) { (status, message, isReady, enemyMap) = await HttpBattleshipClient.OpponentReady(MainWindow.player.name, MainWindow.token); Thread.Sleep(1000); } if (isReady == 1) { MainWindow.opponent.field = enemyMap; Window.GetWindow(this).DataContext = new GameView(); } ProgressRing.IsActive = false; ErrorLabel.Content = message; // TODO: Some Code if Server fails // Throw back to QueueView maybe? }
private void CloseBtn_Clicked(object sender, RoutedEventArgs e) { if (enqueued) { _ = HttpBattleshipClient.Dequeue(player.name, token); } //if (ingame) _ = HttpBattleshipClient.LeaveGame; Close(); }
private async void DequeueUser(object sender, System.ComponentModel.CancelEventArgs e) { string status = ""; string message = ""; Console.WriteLine("Sending dequeue request..."); (status, message) = await HttpBattleshipClient.Dequeue(player.name, token); Console.WriteLine("Status: {0}, Message: {1}", status, message); }
private async void QuitBtn_Clicked(object sender, RoutedEventArgs e) { if (MainWindow.enqueued) { MainWindow.enqueued = false; await HttpBattleshipClient.Dequeue(MainWindow.player.name, MainWindow.token); } LoginWindow login = new LoginWindow(); Window.GetWindow(this).Close(); login.Show(); }
private async void StopQueueBtn_Clicked(object sender, RoutedEventArgs e) { NewMatchBtn.IsEnabled = false; _stopBtn_clicked = true; NewMatchBtn.Click -= StopQueueBtn_Clicked; NewMatchBtn.Click += NewMatchBtn_Clicked; NewMatchBtn.Content = "Find new match"; ProgressRing.IsActive = false; await HttpBattleshipClient.Dequeue(MainWindow.player.name, MainWindow.token); MainWindow.enqueued = false; NewMatchBtn.IsEnabled = true; }
private async void RegisterBtn_Clicked(object sender, RoutedEventArgs e) { string status = ""; string message = "Error connecting to server"; string token = ""; RegisterBtn.IsEnabled = false; //Check if entered credentials are valid if (!EmailValid(EmailTxtBox.Text)) { message = "Email invalid!"; } else if (!PasswordValid(PwdTxtBox.Password)) { message = "Password invalid!"; } else if (!PwdTxtBox.Password.Equals(PwdRepeatTxtBox.Password)) { message = "Passwords do not match!"; } else { //Submit credentials to server if local validation is successful using (SHA256 hashAlg = SHA256.Create()) { byte[] hashedPw = hashAlg.ComputeHash(Encoding.UTF8.GetBytes(PwdTxtBox.Password)); (status, message, token) = await HttpBattleshipClient.Register(UsrTxtBox.Text, EmailTxtBox.Text, hashedPw); } } if (status.Equals("success")) { //Switch to main window if remote validation successful Console.WriteLine("Registration successful"); MainWindow main = new MainWindow(UsrTxtBox.Text, token); Window.GetWindow(this).Close(); main.Show(); } else { ErrorLabel.Content = message; RegisterBtn.IsEnabled = true; } }
private async void GameLoop() { string status = ""; string currentPlayer = ""; string message; int[] shotsFired; while (!gameEnded) { status = ""; currentPlayer = ""; message = "Connection to Server failed."; //Alex muss mal arbeiten (status, message, currentPlayer, shotsFired) = await HttpBattleshipClient.CurrentTurn(MainWindow.player.name, MainWindow.token); //(status, message, shotsFired) = await HttpBattleshipClient.CurrentTurn(MainWindow.player.name, MainWindow.token); if (currentPlayer.Equals(MainWindow.player.name)) { currentturn = true; } Thread.Sleep(1000); } }
private void NewMatchBtn_Clicked(object sender, RoutedEventArgs e) { NewMatchBtn.IsEnabled = false; _stopBtn_clicked = false; // Change btn appearance NewMatchBtn.Click -= NewMatchBtn_Clicked; NewMatchBtn.Click += StopQueueBtn_Clicked; NewMatchBtn.Content = "Stop Queue"; ProgressRing.IsActive = true; NewMatchBtn.IsEnabled = true; MainWindow.enqueued = true; new Thread(async() => { Thread.CurrentThread.IsBackground = true; try { string status = ""; string message = "Error connecting to server."; if (App.DEBUG_MODE) { status = "success"; } else { (status, message) = await HttpBattleshipClient.Enqueue(MainWindow.player.name, MainWindow.token); } if (status.Equals("success")) { //Check if match found status = ""; while (!status.Equals("success") && !_stopBtn_clicked) { if (App.DEBUG_MODE) { status = "success"; MainWindow.player.field = Enumerable.Range(0, 225).Select(n => 0).ToArray(); MainWindow.player.originalField = Enumerable.Range(0, 225).Select(n => 0).ToArray(); MainWindow.opponent.name = "Otto"; MainWindow.player.name = "Adolf"; MainWindow.opponent.field = Enumerable.Range(0, 225).Select(n => 0).ToArray(); } else { (status, message, MainWindow.matchid, MainWindow.player.field, MainWindow.opponent.name) = await HttpBattleshipClient.Queue(MainWindow.player.name, MainWindow.token); // // // MAY CREATE ERROR, need server for further testing // // Array.Copy(MainWindow.player.field, 0, MainWindow.player.originalField, 0, MainWindow.player.field.Length); } if (status.Equals("success")) { Console.WriteLine("Your opponent: " + MainWindow.opponent.name); Dispatcher.Invoke(() => { MainWindow.enqueued = false; MainWindow.ingame = true; Window.GetWindow(this).DataContext = new BuildView(); }); } else { Console.WriteLine("Searching..."); Thread.Sleep(1000); } } } else { ErrorLabel.Content = message; } } catch (Exception ex) { Console.WriteLine(ex.GetBaseException().Message); } }).Start(); }