Exemple #1
0
        void client_GetGameStateCompleted(object sender, ServiceReference1.GetGameStateCompletedEventArgs e)
        {
            gameState = e.Result; //Get de game state.
            #region Update Map
            int        tellerRow      = 0;
            int        tellerColumn   = 0;
            int        evenOfOneven   = 0; //Deze variabele dient voor te weten als de tegels op de even of oneven kollomen moeten komen.
            Visibility hulpVisibility = Visibility.Visible;

            foreach (var item in gameState.AllIjsschots)
            {
                //De tegels moeten iedere rij in de helft van de vorige tegel beginnen.
                tellerRow = item.Row;
                if (tellerRow % 2 == 0)
                {
                    evenOfOneven = 0;
                }
                else
                {
                    evenOfOneven = 1;
                }
                tellerColumn = item.Column * 2 + evenOfOneven;

                //Gaat alle tegels af en zet deze zichtbaar of niet, naargelang de situatie is veranderd of niet.
                foreach (var tegel in SpelBord.Children)
                {
                    if (tegel is SpelTile)
                    {
                        SpelTile hulpTegel = tegel as SpelTile;
                        if (hulpTegel.Row == tellerRow && hulpTegel.Column == tellerColumn)
                        {
                            if (item.Visibility == "Visible")
                            {
                                hulpVisibility = Visibility.Visible;
                            }
                            else
                            {
                                hulpVisibility = Visibility.Collapsed;
                            }
                            hulpTegel.Visibility = hulpVisibility;
                            break;
                        }
                    }
                }
            }
            #endregion
            #region Update Pion
            tellerRow    = 0;
            tellerColumn = 0;
            bool bestaat = false; //Voor te zien als de pinguin bestaat.
            tellerAantalPinguins = 0;
            foreach (var pinguin in SpelBord.Children)
            {
                if (pinguin is SpelSpeelstuk)
                {
                    pinguin.Visibility = Visibility.Collapsed;
                    tellerAantalPinguins++; //Aantal pinguins tellen.
                }
            }
            foreach (var item in gameState.AllPion)
            {
                tellerRow    = item.Row;    //Welke row het is.
                tellerColumn = item.Column; //Welke column het is.
                bestaat      = false;
                foreach (var pinguin in SpelBord.Children)
                {
                    if (pinguin is SpelSpeelstuk)
                    {
                        SpelSpeelstuk hulpPinguin = pinguin as SpelSpeelstuk;
                        if (hulpPinguin.Column == tellerColumn && hulpPinguin.Row == tellerRow) //Zien als de pinguin is blijven staan.
                        {
                            hulpPinguin.Visibility = Visibility.Visible;                        //Laat pinguin staan.
                            bestaat = true;
                            break;
                        }
                    }
                }
                if (bestaat == false)                                   //Indien pinguin niet bestaat.
                {
                    AddPinguin(item.Row, item.Column, kleurAanDeBeurt); //Voeg nieuwe pinguin toe.
                }
            }
            #endregion
            #region Update Kleur
            kleurAanDeBeurt = gameState.KleurSpeler; //Achterhaal de kleur van de speler die aan de beurt is.
            #endregion
            #region Update Info
            if (kleurVanSpeler == kleurAanDeBeurt)
            {
                InfoBar.Text = "Het is jouw beurt. " + kleurVanSpeler + " is je kleur.";
            }
            else
            {
                InfoBar.Text = "Wachten op je beurt.";
            }
            string text = "Score: ";
            foreach (var item in gameState.AllSpeler)
            {
                text += item.NickName + ": " + item.Punten + "\t\t";
            }
            Punten.Text = text;
            #endregion
            #region Update Speler status
            foreach (var item in gameState.AllSpeler)
            {
                if (kanNogSpelen > 30 && item.Kleur == kleurVanSpeler)
                {
                    item.IsReady = "Out";
                    ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
                    client.UpdateGameStateCompleted += client_UpdateGameStateCompleted;
                    client.UpdateGameStateAsync(tellerLobbyID, gameState);
                }
            }
            #endregion
            #region Update Game Status
            ServiceReference1.Service1Client client2 = new ServiceReference1.Service1Client();
            client2.LetGameBeginCompleted += client_LetGameBeginCompleted; //check als spel ten einde is.
            client2.LetGameBeginAsync(tellerLobbyID);
            if (status == "Zwart")
            {
                newTimer.Stop();
                string gameOverString = "Game over!";
                string hulpString     = "";
                int    stopFor        = 0;
                for (int i = 200; i > 0; i--)
                {
                    foreach (var item in gameState.AllSpeler)
                    {
                        if (item.Punten == i)
                        {
                            hulpString = "\n" + item.NickName + ": " + item.Punten;
                            stopFor++;
                        }
                    }
                    gameOverString += hulpString;
                    if (stopFor == aantalSpelers)
                    {
                        break;
                    }
                }
                MessageBox.Show(gameOverString);
                if (hostID == tellerSpelerID)
                {
                    client2.EndGameCompleted += client2_EndGameCompleted;
                    client2.EndGameAsync(tellerLobbyID);
                }
                NavigationService.Navigate(new Uri("/Hoofdmenu.xaml", UriKind.Relative)); //Ga naar het hoofdmenu.
            }
            #endregion
        }