Exemple #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);
         }
     }
 }
Exemple #2
0
        public void BullshitParseTest()
        {
            string xml = "sadasdsad";
            var    obj = XmlMessageConverter.ToObject(xml);

            Assert.IsNull(obj);
        }
Exemple #3
0
        public void GameSerDeserTest()
        {
            Game g = new Game();

            g.Board = new GameBoard()
            {
                goalsHeight = 10,
                tasksHeight = 4,
                width       = 5
            };
            g.PlayerLocation = new Location()
            {
                x = 10,
                y = 10
            };
            g.Players = new Player[]
            {
                new Player()
                {
                    id = 4, team = TeamColour.blue, type = PlayerType.leader
                }
            };
            var s1 = XmlMessageConverter.ToXml(g);
            var s2 = XmlMessageConverter.ToXml(XmlMessageConverter.ToObject(s1));

            Assert.AreEqual(s1, s2);
        }
        public static void HandleMessage(RegisterGame request, CommunicationServer server, Socket handler)
        {
            if (request == null)
            {
                return;
            }

            Game.Game g;

            lock (joinLock)
            {
                g = new Game.Game(gameId: server.RegisteredGames.NextGameId(), name: request.NewGameInfo.gameName,
                                  bluePlayers: request.NewGameInfo.blueTeamPlayers,
                                  redPlayers: request.NewGameInfo.redTeamPlayers, gameMaster: handler
                                  );
                try
                {
                    server.RegisteredGames.RegisterGame(g);
                }
                catch
                {
                    return;
                }
            }

            ConfirmGameRegistration gameRegistration = new ConfirmGameRegistration()
            {
                gameId = (ulong)g.Id
            };

            var response = XmlMessageConverter.ToXml(gameRegistration);

            server.ConnectionEndpoint.SendFromServer(handler, response);
        }
        private void OnMessage(object sender, MessageRecieveEventArgs eventArgs)
        {
            var address = eventArgs.Handler.GetRemoteAddress();

            if (address != null)
            {
                Console.WriteLine("New message from {0}: {1}", address, eventArgs.Message);
            }

            try
            {
                if (eventArgs.Message.Length == 0) //ETB keep alive packet
                {
                    //send keep alive back
                    ConnectionEndpoint.SendFromServer(eventArgs.Handler, String.Empty);
                }
                else
                {
                    BehaviorChooser.HandleMessage((dynamic)XmlMessageConverter.ToObject(eventArgs.Message), this,
                                                  eventArgs.Handler);
                }
            }
            catch (Exception e)
            {
                ConsoleDebug.Error(e.Message);
            }

            //ConnectionEndpoint.SendFromServer(eventArgs.Handler, eventArgs.Message);
        }
Exemple #6
0
 public void Move(MoveType direction)
 {
     if (previousLocation != null && game.Location != null && game.Location.x == previousLocation.x && game.Location.y == previousLocation.y)
     {
         ConsoleDebug.Error("Snake time! =====================================");
         //if (direction==MoveType.up)
         //    direction=MoveType.right;
         //else if (direction == MoveType.right)
         //    direction = MoveType.down;
         //else if (direction == MoveType.down)
         //    direction = MoveType.left;
         //else
         //    direction = MoveType.up;
         direction = RandomMoveType();
     }
     previousLocation = new Common.Schema.Location() { x = game.Location.x, y = game.Location.y };
     Move m = new Move()
     {
         direction = direction,
         directionSpecified = true,
         gameId = game.GameId,
         playerGuid = game.Guid
     };
     Send(XmlMessageConverter.ToXml(m));
 }
        public void GameTest()
        {
            Game message = new Game();

            message.playerId = 0;

            message.PlayerLocation = new Location()
            {
                x = 3
            };

            message.Board = new GameBoard()
            {
                width = 10
            };

            Player[] playerTab = new Player[3];
            playerTab[0] = new Player()
            {
                id = 1
            };

            message.Players = playerTab;

            string xml    = XmlMessageConverter.ToXml(message);
            Game   result = (Game)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual((ulong)0, result.playerId);
            Assert.AreEqual((uint)3, result.PlayerLocation.x);
            Assert.AreEqual((uint)10, result.Board.width);
            Assert.AreEqual((ulong)1, result.Players[0].id);
        }
        private void InformGameMasterAboutDisconnectedPlayer(Socket gameMasterSocket, ulong playerId)
        {
            var msg = new PlayerDisconnected {
                playerId = playerId
            };

            ConnectionEndpoint.SendFromServer(gameMasterSocket, XmlMessageConverter.ToXml(msg));
        }
Exemple #9
0
        public void ConvertToXmlTest()
        {
            Move msg = new Move();

            msg.direction = MoveType.down;
            string xmlString = XmlMessageConverter.ToXml(msg);

            Console.WriteLine(xmlString);
        }
Exemple #10
0
            public void HandleMessage(RejectJoiningGame message)
            {
                if (message == null)
                    return;
                //try to connect again
                Player.Send(XmlMessageConverter.ToXml(new GetGames()));

                return;
            }
Exemple #11
0
 public void Test()
 {
     TestPiece t = new TestPiece()
     {
         gameId = game.GameId,
         playerGuid = game.Guid
     };
     Send(XmlMessageConverter.ToXml(t));
 }
Exemple #12
0
 public void PickUpPiece()
 {
     Common.Schema.PickUpPiece p = new PickUpPiece()
     {
         playerGuid = game.Guid,
         gameId = game.GameId
     };
     Send(XmlMessageConverter.ToXml(p));
 }
Exemple #13
0
 public void Discover()
 {
     Common.Schema.Discover d = new Discover()
     {
         gameId = game.GameId,
         playerGuid = game.Guid
     };
     Send(XmlMessageConverter.ToXml(d));
 }
Exemple #14
0
 public void PlacePiece()
 {
     Common.Schema.PlacePiece p = new PlacePiece()
     {
         gameId = game.GameId,
         playerGuid = game.Guid
     };
     Send(XmlMessageConverter.ToXml(p));
     game.Pieces.Remove(CarriedPiece);
 }
Exemple #15
0
        private void OnMessageReceive(object sender, MessageRecieveEventArgs eventArgs)
        {
            var socket = eventArgs.Handler as Socket;

            if (eventArgs.Message.Length > 0) //the message is not the keepalive packet
            {
                ConsoleDebug.Message("New message from: " + socket.GetRemoteAddress() + "\n" + eventArgs.Message);
                messageHandler.HandleMessage((dynamic)XmlMessageConverter.ToObject(eventArgs.Message));
            }
        }
Exemple #16
0
        public void NotExistigMessageType()
        {
            string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n" +
                         "<ConfirmasdasdGameRegistration\r\n" +
                         "xmlns=\"http://theprojectgame.mini.pw.edu.pl/\"\r\n" +
                         "/>";
            var obj = XmlMessageConverter.ToObject(xml);

            Assert.IsNull(obj);
        }
Exemple #17
0
        public void WrongMoveMessageTest()
        {
            string xmlNoGameId = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n" +
                                 "<ConfirmGameRegistration\r\n" +
                                 "xmlns=\"https://se2.mini.pw.edu.pl/17-results/\"\r\n" +
                                 "/>";
            var obj = XmlMessageConverter.ToObject(xmlNoGameId);

            Assert.IsNull(obj);
        }
Exemple #18
0
        public void BrokenXmlTest()
        {
            string xmlNoGameId = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n" +
                                 "<ConfirmGameRegistration\r\n" +
                                 "xmlns=\"http://theprojectgame.mini.pw.edu.pl/\"\r\n" +
                                 "/";
            var obj = XmlMessageConverter.ToObject(xmlNoGameId);

            Assert.IsNull(obj);
        }
        public void RejectKnowledgeExchangeTest()
        {
            RejectKnowledgeExchange message = new RejectKnowledgeExchange();

            message.permanent = false;

            string xml = XmlMessageConverter.ToXml(message);
            RejectKnowledgeExchange result = (RejectKnowledgeExchange)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual(false, result.permanent);
        }
        public static void HandleMessage(PlayerMessage request, CommunicationServer server, Socket handler)
        {
            if (request == null)
            {
                return;
            }

            var response = XmlMessageConverter.ToXml(request);

            server.ConnectionEndpoint.SendFromServer(server.Clients[request.playerId], response);
        }
        public static void HandleMessage(GameMessage request, CommunicationServer server, Socket handler)
        {
            if (request == null)
            {
                return;
            }

            var response = XmlMessageConverter.ToXml(request);

            server.ConnectionEndpoint.SendFromServer(server.RegisteredGames.GetGameById((int)request.gameId).GameMaster, response);
        }
        public void PlayerMessageTest()
        {
            PlayerMessage message = new PlayerMessage();

            message.playerId = 1;


            string        xml    = XmlMessageConverter.ToXml(message);
            PlayerMessage result = (PlayerMessage)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual((ulong)1, result.playerId);
        }
        public void ConfirmGameRegistrationTest()
        {
            ConfirmGameRegistration confirmGameRegistration = new ConfirmGameRegistration();


            confirmGameRegistration.gameId = 4;

            string xml = XmlMessageConverter.ToXml(confirmGameRegistration);
            ConfirmGameRegistration result = (ConfirmGameRegistration)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual((ulong)4, result.gameId);
        }
Exemple #24
0
        public void AuthorizeKnowledgeExchangeTest()
        {
            AuthorizeKnowledgeExchange message = new AuthorizeKnowledgeExchange();

            message.withPlayerId = 4;
            message.playerGuid   = "c094cab7-da7b-457f-89e5-a5c51756035f";

            string xml = XmlMessageConverter.ToXml(message);
            AuthorizeKnowledgeExchange result = (AuthorizeKnowledgeExchange)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual((ulong)4, result.withPlayerId);
        }
Exemple #25
0
        private void OnConnection(object sender, ConnectEventArgs eventArgs)
        {
            var address = eventArgs.Handler.GetRemoteAddress();
            ConsoleDebug.Ordinary("Successful connection with address " + address.ToString());
            var socket = eventArgs.Handler as Socket;
            serverSocket = socket;
            string xmlMessage = XmlMessageConverter.ToXml(new GetGames());

            connection.SendFromClient(socket, xmlMessage);

            //start sending keep alive bytes
            startKeepAlive(socket);
        }
        public void BehavTest()
        {
            //var m = new MockEndpoint();
            //CommunicationServer sv = new CommunicationServer(m);

            ((MockEndpoint)MockServer.ConnectionEndpoint).Receive(XmlMessageConverter.ToXml(new RegisterGame()
            {
                NewGameInfo = new GameInfo()
                {
                    blueTeamPlayers = 4, gameName = "dasd", redTeamPlayers = 2
                }
            }));
        }
Exemple #27
0
        public void MoveSerDeserTest()
        {
            Move msg = new Move();

            msg.direction          = MoveType.down;
            msg.directionSpecified = true;
            msg.gameId             = 21321;
            msg.playerGuid         = "c094cab7-da7b-457f-89e5-a5c51756035f";
            var s1 = XmlMessageConverter.ToXml(msg);
            var s2 = XmlMessageConverter.ToXml(XmlMessageConverter.ToObject(s1));

            Assert.AreEqual(s1, s2);
        }
        public void LocationTest()
        {
            Location message = new Location();

            message.x = 3;
            message.y = 4;

            string   xml    = XmlMessageConverter.ToXml(message);
            Location result = (Location)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual((uint)3, result.x);
            Assert.AreEqual((uint)4, result.y);
        }
        public void GoalFieldTest()
        {
            GoalField message = new GoalField();

            message.type = GoalFieldType.goal;
            message.team = TeamColour.red;

            string    xml    = XmlMessageConverter.ToXml(message);
            GoalField result = (GoalField)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual(GoalFieldType.goal, result.type);
            Assert.AreEqual(TeamColour.red, result.team);
        }
Exemple #30
0
        public void MoveTest()
        {
            Move message = new Move();

            message.direction          = MoveType.down;
            message.playerGuid         = "c094cab7-da7b-457f-89e5-a5c51756035f";
            message.directionSpecified = true;

            string xml    = XmlMessageConverter.ToXml(message);
            Move   result = (Move)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual(MoveType.down, result.direction);
            Assert.AreEqual(true, result.directionSpecified);
        }