Пример #1
0
        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;
                }
            }
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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();
        }
Пример #4
0
        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++;
                }
            }
        }
Пример #5
0
        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?
        }
Пример #6
0
 private void CloseBtn_Clicked(object sender, RoutedEventArgs e)
 {
     if (enqueued)
     {
         _ = HttpBattleshipClient.Dequeue(player.name, token);
     }
     //if (ingame) _ = HttpBattleshipClient.LeaveGame;
     Close();
 }
Пример #7
0
        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);
        }
Пример #8
0
        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();
        }
Пример #9
0
        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;
        }
Пример #10
0
        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;
            }
        }
Пример #11
0
        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);
            }
        }
Пример #12
0
        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();
        }