Esempio n. 1
0
 public void HandleMessage(RegisteredGames message)
 {
     if (message.GameInfo == null || message.GameInfo.Length == 0 || !message.GameInfo.Where(g => g.gameName == Player.Options.GameName).Any())
     {
         Task.Run(() =>
         {
             Thread.Sleep((int)Player.Settings.RetryJoinGameInterval);
             string xmlMessage = XmlMessageConverter.ToXml(new GetGames());
             Player.Send(xmlMessage);
         });
     }
     else
     {
         ConsoleDebug.Good("Games available");
         if (Player.Options.GameName == null)
         {
             ConsoleDebug.Warning("Game name not specified");
             return;
         }
         if (message.GameInfo.Count(info => info.gameName == Player.Options.GameName) == 1)
         {
             string xmlMessage = XmlMessageConverter.ToXml(new JoinGame()
             {
                 gameName = Player.Options.GameName,
                 playerIdSpecified = false,
                 preferredRole = Player.Options?.PreferredRole == "player" ? PlayerType.member : PlayerType.leader,
                 preferredTeam = Player.Options?.PreferredTeam == "red" ? Common.Schema.TeamColour.red : Common.Schema.TeamColour.blue
             });
             Player.Send(xmlMessage);
         }
     }
 }
        public void RegisteredGamesTest()
        {
            RegisteredGames registeredGames = new RegisteredGames();

            GameInfo[] gameInfoTab = new GameInfo[3];
            gameInfoTab[0] = new GameInfo()
            {
                gameName = "testname"
            };
            registeredGames.GameInfo = gameInfoTab;


            string          xml    = XmlMessageConverter.ToXml(registeredGames);
            RegisteredGames result = (RegisteredGames)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual("testname", result.GameInfo[0].gameName);
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            JoinGame newJoin     = new JoinGame(1, Role.leader, Team.red);
            string   information = newJoin.messageIntoXML(newJoin);

            Console.Write(information);


            Console.WriteLine();
            Console.WriteLine();

            List <GameInfo> newList = new List <GameInfo>();

            newList.Add(new GameInfo(1, 5, 5));
            newList.Add(new GameInfo(2, 10, 10));
            newList.Add(new GameInfo(3, 3, 3));
            newList.Add(new GameInfo(4, 2, 8));

            RegisteredGames reg = new RegisteredGames(newList);

            Console.Write(reg.messageIntoXML(reg));

            Console.WriteLine();
            Console.WriteLine();

            Player             newPlayer    = new Player(23, Team.red, Role.member);
            ConfirmJoiningGame confirmation = new ConfirmJoiningGame(1, 23, "blablalbla", newPlayer);

            Console.Write(confirmation.messageIntoXML(confirmation));

            Console.WriteLine();
            Console.WriteLine();

            Message tempMessage = xmlToMessage(information);
            Type    typer       = tempMessage.GetType();
            dynamic newMessage  = Convert.ChangeType(tempMessage, typer);

            Console.Write("Game ID: " + newMessage.gameID + " and role: " + newMessage.preferredRole + " and team: " + newMessage.preferredTeam);

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
        public static void HandleMessage(GetGames request, CommunicationServer server, Socket handler)
        {
            List <GameInfo> gi = new List <GameInfo>();

            foreach (var game in server.RegisteredGames)
            {
                if (game.HasStarted)
                {
                    continue;
                }
                gi.Add(new GameInfo()
                {
                    blueTeamPlayers = game.BlueTeamPlayersCount,
                    redTeamPlayers  = game.RedTeamPlayersCount,
                    gameName        = game.Name
                });
            }
            var rg = new RegisteredGames()
            {
                GameInfo = gi.ToArray()
            };

            server.ConnectionEndpoint.SendFromServer(handler, XmlMessageConverter.ToXml(rg));
        }
Esempio n. 5
0
        public static void DataManager(string xml, ClientData client)
        {
            Message temp = Message.xmlIntoMessage(xml);
            dynamic msg  = Convert.ChangeType(temp, temp.GetType());

            switch (typeDict[msg.GetType()])
            {
            case 0:

                break;

            case 1:

                foreach (ClientData c in clients)
                {
                    if (c.id == msg.playerID)
                    {
                        string confirmJoining     = Message.messageIntoXML(msg);
                        byte[] sendConfirmJoining = Encoding.ASCII.GetBytes(confirmJoining);
                        c.clientSocket.Send(sendConfirmJoining);
                    }
                }

                break;

            case 2:
                foreach (ClientData c in clients)
                {
                    if (c.id == msg.playerID)
                    {
                        string reject     = Message.messageIntoXML(msg);
                        byte[] sendReject = Encoding.ASCII.GetBytes(reject);
                        c.clientSocket.Send(sendReject);
                    }
                }
                break;

            case 3:

                client.id    = counter;
                msg.playerID = counter;
                counter++;

                string join     = Message.messageIntoXML(msg);
                byte[] sendJoin = Encoding.ASCII.GetBytes(join);
                try
                {
                    gmSocket.Send(sendJoin);
                }
                catch (Exception e)
                {
                    Console.Write(e);
                }


                break;

            case 4:
                string game     = Message.messageIntoXML(msg);
                byte[] sendGame = Encoding.ASCII.GetBytes(game);
                Console.WriteLine();
                foreach (ClientData c in clients)
                {
                    if (c.id == msg.playerID)
                    {
                        Console.WriteLine("Received GameMessage! Sending to playerID: {0}", msg.playerID);
                        c.clientSocket.Send(sendGame);
                    }
                }

                break;

            case 5:
                GameInfo info = new GameInfo(msg.gameID, msg.blueTeamPlayers, msg.redTeamPlayers);
                gameList.Add(info);
                int id = msg.gameID;
                gmID      = counter;
                client.id = counter;
                gmSocket  = client.clientSocket;
                counter++;

                ConfirmGameRegistration confirmation = new ConfirmGameRegistration(id);
                string conf = Message.messageIntoXML(confirmation);

                byte[] toSend = Encoding.ASCII.GetBytes(conf);
                client.clientSocket.Send(toSend);
                break;

            case 6:
                RegisteredGames registered     = new RegisteredGames(gameList);
                string          registeredSend = Message.messageIntoXML(registered);

                byte[] registeredToSend = Encoding.ASCII.GetBytes(registeredSend);
                client.clientSocket.Send(registeredToSend);
                break;

            case 8:
                string move     = Message.messageIntoXML(msg);
                byte[] sendMove = Encoding.ASCII.GetBytes(move);
                try
                {
                    gmSocket.Send(sendMove);
                }
                catch (Exception e)
                {
                    Console.Write(e);
                }
                break;

            case 9:
                Console.WriteLine("Response from GM");
                foreach (ClientData c in clients)
                {
                    if (c.id == msg.playerID)
                    {
                        string movementResponse     = Message.messageIntoXML(msg);
                        byte[] sendmovementResponse = Encoding.ASCII.GetBytes(movementResponse);
                        c.clientSocket.Send(sendmovementResponse);
                    }
                }
                break;

            default:
                Console.Write("dostalem cos");
                byte[] sendEmpty = Encoding.ASCII.GetBytes("");
                client.clientSocket.Send(sendEmpty);
                break;
            }
        }