Пример #1
0
        /// <summary>
        /// terug geven als de spel is gestart.
        /// </summary>
        /// <param name="game">huidige game.</param>
        /// <returns>De message die naar de client gaat als string. De namen van de spelers en de dimension.</returns>
        public static string CreateSpelgestartEvent(GameOX game)
        {
            // wat ga ik terug geven?
            // het commando en de lijste met spelers die meedoen, & gescheiden
            StringBuilder spelersnamen = new StringBuilder();

            foreach (Speler speler in game.Spelers)
            {
                if (game.FindSpelerByNaam(speler) == speler.Naam)
                {
                    speler.Naam = speler.Naam + 1;
                }

                break;
            }

            foreach (var speler in game.Spelers)
            {
                if (spelersnamen.Length == 0)
                {
                    spelersnamen.AppendFormat("{0}", speler.Naam);
                }
                else
                {
                    spelersnamen.AppendFormat("&{0}", speler.Naam);
                    spelersnamen.AppendFormat("&{0}", speler.Dimension);
                }
            }

            return(string.Format("{0}{1}", CreateEvent(Events.SpelGestart), spelersnamen.ToString()));
        }
        /// <summary>
        /// handle het command af.
        /// </summary>
        /// <param name="spelersnaam"> naam van de speler.</param>
        /// <param name="dimension">dimension van het spel.</param>
        /// <param name="tegenComputer">Tegen de cpmputer spelen.</param>
        /// <param name="game">Huidig game.</param>
        /// <return>De message die gereturnd moet worden. </return>
        /// <returns>De messge.</returns>
        public string Handle(string spelersnaam, short dimension, string tegenComputer, out GameOX game)
        {
            string returnMessage = string.Empty;

            game = null;
            if (string.IsNullOrWhiteSpace(tegenComputer))
            {
                // zoek in de spelHandler of er al een open spel is met die dimension
                game = this.spelHandler.GetOpenSpelbyDimension(dimension);

                // zo ja, voeg speler toe en start spel
                if (game != null)
                {
                    game.AddPlayer(spelersnaam, this.tcpClient, dimension);

                    foreach (Speler speler in game.Spelers)
                    {
                        if (game.FindSpelerByNaam(speler) == speler.Naam)
                        {
                            speler.Naam = speler.Naam + 1;
                        }

                        break;
                    }

                    game.IsGestart();
                    game.TcpClients.Add(this.tcpClient);
                    returnMessage = EventHelper.CreateSpelgestartEvent(game);

                    return(returnMessage);

                    // // bepaal wie er gaat beginnen
                    // voor nu, speler 1 begint
                    //  stuur naar speler 1 bericht dat hij moet beginnen
                    //  stuur naar speler 2 bericht dat hij moet wachten
                }
                else
                {
                    // nee, maak spel aan
                    // voeg de speler toe
                    // en zet op de wachtlijst
                    game = this.spelHandler.CreateGame(dimension, spelersnaam, this.tcpClient);

                    game.WachtOpAndereSpeler();
                    game.TcpClients.Add(this.tcpClient);

                    // de speler moet wachten op een andere
                    returnMessage = EventHelper.CreateWachtenOpEenAndereDeelnemenEvent();
                }
            }
            else
            {
                string[] deNaam = spelersnaam.Split(new char[] { '*' });
                game = this.spelHandler.CreateGame(dimension, deNaam[1], this.tcpClient);
                game.AddCpmputerSpeler(deNaam[0], dimension);
                game.IsGestart();
                game.TcpClients.Add(this.tcpClient);
                returnMessage = EventHelper.CreateSpelgestartEvent(game);
            }

            // wat wil ik nu terugsturen?
            // Commandos.StartSpel), spelersnamen.ToString()
            return(returnMessage);
        }