public static void HandleMessage(ConfirmJoiningGame request, CommunicationServer server, Socket handler)
        {
            HandleMessage(request as PlayerMessage, server, handler);

            Game.IGame g = server.RegisteredGames.GetGameById((int)request.gameId);
            g.Players.Add(new Game.Player {
                Id = request.playerId
            });
        }
Пример #2
0
            public void HandleMessage(ConfirmJoiningGame message)
            {

                if (message == null)
                    return;

                ConsoleDebug.Good(message.gameId.ToString());

                Player.game.Id = message.playerId;
                Player.game.GameId = message.gameId;
                Player.game.Guid = message.privateGuid;
                Player.game.Team = message.PlayerDefinition.team;
                Player.game.Type = message.PlayerDefinition.type;

                return;
            }
Пример #3
0
 private string MakeJoinGameResponse(int playerID, Tuple <int, MessageProject.Team, MessageProject.Role, bool> newPlayer)
 {
     if (null == newPlayer || newPlayer.Item1 < 0)
     {
         // or null
         // negative value as newPlayerId -> failure of player making, teams full
         RejectJoiningGame responseObj = new RejectJoiningGame(game.gameId);
         responseObj.playerID = playerID;
         return(MessageProject.Message.messageIntoXML(responseObj));
     }
     else //if(newPlayer.Item1 >= 0)
     {
         ConfirmJoiningGame responseObj = new ConfirmJoiningGame(game.gameId, newPlayer.Item1, new MessageProject.Player(playerID, newPlayer.Item2, newPlayer.Item3));
         return(MessageProject.Message.messageIntoXML(responseObj));
     }
 }
Пример #4
0
        public void HandleMessage_ConfirmJoiningGame()
        {
            PlayerClient       player  = new PlayerClient(new ConnectionMock(), new Common.Config.PlayerSettings(), new AgentCommandLineOptions(), new Player.Net.Game());
            ConfirmJoiningGame message = new ConfirmJoiningGame()
            {
                gameId = 4, playerId = 2, privateGuid = "test", PlayerDefinition = new Common.Schema.Player()
                {
                    team = TeamColour.red
                }
            };

            player.Handler.HandleMessage(message);

            Assert.AreEqual((ulong)2, player.Game.Id);
            Assert.AreEqual((ulong)4, player.Game.GameId);
            Assert.AreEqual("test", player.Game.Guid);
            Assert.AreEqual(TeamColour.red, player.Game.Team);
        }
Пример #5
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 void ConfirmGameRegistrationTest()
        {
            ConfirmJoiningGame message = new ConfirmJoiningGame();

            message.playerId = 3;

            message.gameId = 1;

            message.privateGuid = "c094cab7-da7b-457f-89e5-a5c51756035f";

            message.PlayerDefinition = new Player()
            {
                id = 2
            };

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

            Assert.AreEqual((ulong)3, result.playerId);
            Assert.AreEqual((ulong)1, result.gameId);
            Assert.AreEqual("c094cab7-da7b-457f-89e5-a5c51756035f", result.privateGuid);
            Assert.AreEqual((ulong)2, result.PlayerDefinition.id);
        }
        public void HandleMessage(JoinGame message, Socket handler)
        {
            lock (BoardLock)
            {
                var selectedTeam = SelectTeamForPlayer(message.preferredTeam);
                //both teams are full
                if (selectedTeam == null)
                {
                    gameMaster.Connection.SendFromClient(handler,
                                                         XmlMessageConverter.ToXml(new RejectJoiningGame()
                    {
                        gameName = message.gameName,
                        playerId = message.playerId
                    }));

                    gameMaster.Connection.SendFromClient(handler,
                                                         XmlMessageConverter.ToXml(new GameStarted()
                    {
                        gameId = this.gameId
                    }));

                    return;
                }

                var role = message.preferredRole;
                if (role == PlayerType.leader)
                {
                    if (selectedTeam.HasLeader)
                    {
                        role = PlayerType.member;
                    }
                }

                var guid           = Utils.GenerateGuid();
                var fieldForPlayer = Board.GetEmptyPositionForPlayer(selectedTeam.Color);
                fieldForPlayer.PlayerId = message.playerId;

                if (role == PlayerType.leader)
                {
                    selectedTeam.AddLeader(new Wrapper.Leader(message.playerId, guid, selectedTeam, fieldForPlayer.X,
                                                              fieldForPlayer.Y));
                }
                else
                {
                    selectedTeam.Players.Add(new Wrapper.Player(message.playerId, guid, selectedTeam, fieldForPlayer.X,
                                                                fieldForPlayer.Y));
                }

                var answer = new ConfirmJoiningGame();
                answer.playerId         = message.playerId;
                answer.privateGuid      = guid;
                answer.gameId           = this.gameId;
                answer.PlayerDefinition = new Player()
                {
                    id   = message.playerId,
                    team = selectedTeam.Color,
                    type = role
                };
                var answerString = XmlMessageConverter.ToXml(answer);
                gameMaster.Connection.SendFromClient(handler, answerString);
            }


            if (IsReady)
            {
                var board   = Board;
                var players = Players.Select(p => p.SchemaPlayer).ToArray();
                foreach (var player in Players)
                {
                    var startGame = new Common.Schema.Game()
                    {
                        Board          = board.SchemaBoard,
                        playerId       = player.Id,
                        PlayerLocation = new Location()
                        {
                            x = player.X, y = player.Y
                        },
                        Players = players
                    };
                    var gameString = XmlMessageConverter.ToXml(startGame);
                    //ConsoleDebug.Message(gameString);
                    gameMaster.Connection.SendFromClient(handler, gameString);
                    //send GameStarted message to server so it won't show it as an open game
                    var gameStarted = new GameStarted()
                    {
                        gameId = gameId
                    };
                    var startedString = XmlMessageConverter.ToXml(gameStarted);
                    gameMaster.Connection.SendFromClient(handler, startedString);
                }
                //place first pieces
                for (int i = 0; i < gameMaster.Settings.GameDefinition.InitialNumberOfPieces; i++)
                {
                    PlaceNewPiece(Board.GetRandomEmptyFieldInTaskArea());
                }
                //start infinite Piece place loop
                GameInProgress = true;
                GeneratePieces();
            }
        }