Exemplo n.º 1
0
        public void PlayerMovesFromTaskFieldToToRightOccupiedGoalField()
        {
            // from (2, 3) to (2, 2)
            InitGameMaster();
            var Player = GetPlayer("testGUID-0004", 10, TeamColour.blue, ActionType.Move);

            Player.SetLocation(2, 3);

            RegisterPlayer(Player, Player.GUID);

            var goalField = new GoalField(2, 2, TeamColour.blue, GoalFieldType.unknown)
            {
                playerIdSpecified = true,
                playerId          = 7,
                timestamp         = DateTime.Now,
            };

            DataAgent data = new DataAgent(Player.ID)
            {
                PlayerGUID     = guid,
                GameFinished   = false,
                PlayerLocation = Player.Location,
                Goals          = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(goalField) }
            };

            // action: Player moves down to (2,2)
            data.Process(Player.Controller);

            Assert.AreEqual(new GameArea.GameObjects.Location(2, 3), Player.Location);
            Assert.IsNull(Player.GetBoard.GetField(2, 3).Player);
            Assert.IsNotNull(Player.GetBoard.GetField(2, 2).Player);
            Assert.AreEqual(goalField.playerId, Player.GetBoard.GetField(2, 2).Player.ID); // check if Player has stored an encountered stranger in his board view
        }
Exemplo n.º 2
0
        public async Task TestPutAsync()
        {
            var conf         = GenerateConfiguration();
            var socketClient = GenerateSocketClient();
            var player       = GenerateGMPlayer(conf, socketClient);
            var piece        = new NormalPiece();
            var field        = new GoalField(0, 0);

            player.Holding = piece;
            Assert.True(field.MoveHere(player));

            // Act
            (PutEvent putEvent, bool removed) = await player.PutAsync(CancellationToken.None);

            Assert.True(putEvent == PutEvent.NormalOnGoalField && removed);
            Assert.True(player.Holding is null);
            Assert.Equal(MessageID.PutAnswer, lastSended.MessageID);
            Assert.Null(prevSended);

            await Task.Delay(conf.PutPenalty * 2);

            lastSended          = null;
            (putEvent, removed) = await player.PutAsync(CancellationToken.None);

            Assert.False(putEvent == PutEvent.NormalOnGoalField || removed);
            Assert.Equal(MessageID.PutError, lastSended.MessageID);
            var payload = (PutErrorPayload)lastSended.Payload;

            Assert.Equal(PutError.AgentNotHolding, payload.ErrorSubtype);
        }
Exemplo n.º 3
0
        public List <List <Field> > SetInitialBoard(int goalAreaLength, int taskAreaLength, int boardWidth)
        {
            List <List <Field> > boardList = new List <List <Field> >();

            for (int i = 0; i < boardWidth; i++)
            {
                boardList.Add(new List <Field>());

                for (int j = 0; j < taskAreaLength + 2 * goalAreaLength; j++)
                {
                    if (j >= goalAreaLength && j < goalAreaLength + taskAreaLength)
                    {
                        TaskField tF = new TaskField();
                        tF.x = (uint)i;
                        tF.y = (uint)j;
                        tF.pieceIdSpecified = false;
                        boardList[i].Add(tF);
                    }
                    else
                    {
                        GoalField gF = new GoalField();
                        gF.x    = (uint)i;
                        gF.y    = (uint)j;
                        gF.type = GoalFieldType.nongoal;
                        gF.team = (i < goalAreaLength) ? TeamColour.blue : TeamColour.red;
                        boardList[i].Add(gF);
                    }
                }
            }
            return(boardList);
        }
Exemplo n.º 4
0
        public void PlayerMovesFromTaskFieldToRightEmptyGoalField()
        {
            // from (2, 3) to (2, 2)
            InitGameMaster();
            var Player = GetPlayer("testGUID-0004", 10, TeamColour.blue, ActionType.Move);

            Player.SetLocation(2, 3);

            RegisterPlayer(Player, Player.GUID);

            var goalField = new GoalField(2, 2, TeamColour.blue, GoalFieldType.unknown)
            {
                timestamp = DateTime.Now,
            };

            DataAgent data = new DataAgent(Player.ID)
            {
                PlayerGUID     = guid,
                GameFinished   = false,
                PlayerLocation = new GameArea.GameObjects.Location(2, 2),
                Goals          = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(goalField) }
            };

            // action: Player moves down to (2,2)
            data.Process(Player.Controller);

            Assert.AreEqual(new GameArea.GameObjects.Location(2, 2), Player.Location);
            Assert.IsNull(Player.GetBoard.GetField(2, 3).Player);
            Assert.IsNull(Player.GetBoard.GetField(2, 2).Player);
        }
Exemplo n.º 5
0
        public List <List <Field> > CreateInitialBoard(int goalsHeight, int tasksHeight, int boardWidth)
        {
            List <List <Field> > board = new List <List <Field> >();

            for (int i = 0; i < boardWidth; i++)
            {
                board.Add(new List <Field>());
                for (int j = 0; j < tasksHeight + 2 * goalsHeight; j++)
                {
                    if (j >= goalsHeight && j < goalsHeight + tasksHeight)
                    {
                        TaskField tF = new TaskField();
                        tF.x = (uint)i;
                        tF.y = (uint)j;
                        tF.pieceIdSpecified = false;
                        tF.distanceToPiece  = -3;
                        board[i].Add(tF);
                    }
                    else
                    {
                        GoalField gF = new GoalField();
                        gF.x    = (uint)i;
                        gF.y    = (uint)j;
                        gF.type = GoalFieldType.unknown;
                        gF.team = (i < goalsHeight) ? TeamColour.blue : TeamColour.red;
                        board[i].Add(gF);
                    }
                }
            }
            return(board);
        }
Exemplo n.º 6
0
        public void TestNormalPiecePut()
        {
            int         x      = 3;
            int         y      = 4;
            NormalPiece piece  = new NormalPiece();
            GoalField   field  = new GoalField(x, y);
            bool        result = field.Put(piece).putEvent == PutEvent.NormalOnGoalField ? true : false;

            Assert.True(result);
        }
        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);
        }
Exemplo n.º 8
0
        public void HandleGoalField(GoalField goalField)
        {
            var oldGoalField = this[goalField];

            if (goalField.IsNewerThan(oldGoalField))
            {
                ClearPlayerFromField(oldGoalField);

                HandlePlayerInField(goalField);

                this[goalField] = goalField;
            }
        }
Exemplo n.º 9
0
        public void GoalFieldsArrayContainsNullGoal()
        {
            var field = new GoalField(1, 2, TeamColour.red);

            defaultSettings.GameDefinition.Goals = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(field), null };
            var message = Validator.ValidateGoals(defaultSettings.GameDefinition.Goals,
                                                  defaultSettings.GameDefinition.GoalAreaLength,
                                                  defaultSettings.GameDefinition.TaskAreaLength,
                                                  defaultSettings.GameDefinition.BoardWidth);

            Assert.IsFalse(string.IsNullOrEmpty(message));
            Assert.AreEqual(ValidatorMessages.NULL_GOALFIELD, message);
        }
Exemplo n.º 10
0
        public void GoalInTaskArea()
        {
            var field1 = new GoalField(6, 2, TeamColour.red);
            var field2 = new GoalField(10, 2, TeamColour.blue);

            defaultSettings.GameDefinition.Goals = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(field1),
                                                                                          new GameArea.GameObjects.GoalField(field2) };
            var message = Validator.ValidateGoals(defaultSettings.GameDefinition.Goals,
                                                  defaultSettings.GameDefinition.GoalAreaLength,
                                                  defaultSettings.GameDefinition.TaskAreaLength,
                                                  defaultSettings.GameDefinition.BoardWidth);

            Assert.IsFalse(string.IsNullOrEmpty(message));
            Assert.AreEqual(ValidatorMessages.GOALS_OUTSIDE_GOAL_AREA, message);
        }
Exemplo n.º 11
0
        public void MarkGoalAsCompleted(GoalField goal)
        {
            switch (goal.Team)
            {
            case TeamColor.Blue:
                UncompletedBlueGoalsLocations.Remove(goal);
                break;

            case TeamColor.Red:
                UncompletedRedGoalsLocations.Remove(goal);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
 public DataMessageBuilder AddGoalField(GoalField goalField)
 {
     if (goalFields == null)
     {
         goalFields = new[] { goalField }
     }
     ;
     else
     {
         var l = new List <GoalField>(goalFields)
         {
             goalField
         };
         goalFields = l.ToArray();
     }
     return(this);
 }
Exemplo n.º 13
0
        public void GoalFieldEqual()
        {
            GoalField goalField1 = new GoalField(1, 3, TeamColour.red)
            {
                type = Messages.GoalFieldType.goal
            };
            GoalField goalField2 = new GoalField(1, 3, TeamColour.red)
            {
                type = Messages.GoalFieldType.goal
            };
            var dt = DateTime.Now;

            goalField2.timestamp = dt;
            goalField1.timestamp = dt;

            Assert.AreEqual(goalField1, goalField2);
        }
Exemplo n.º 14
0
        public void GoalFieldsBlueTeamNoGoals()
        {
            var field1 = new GoalField(11, 2, TeamColour.red);
            var field2 = new GoalField(10, 2, TeamColour.red);
            var field3 = new GoalField(10, 3, TeamColour.red);

            defaultSettings.GameDefinition.Goals = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(field1),
                                                                                          new GameArea.GameObjects.GoalField(field2),
                                                                                          new GameArea.GameObjects.GoalField(field3) };
            var message = Validator.ValidateGoals(defaultSettings.GameDefinition.Goals,
                                                  defaultSettings.GameDefinition.GoalAreaLength,
                                                  defaultSettings.GameDefinition.TaskAreaLength,
                                                  defaultSettings.GameDefinition.BoardWidth);

            Assert.IsFalse(string.IsNullOrEmpty(message));
            Assert.AreEqual(ValidatorMessages.BLUE_TEAM_HAS_NO_GOAL, message);
        }
Exemplo n.º 15
0
        public void GoalFieldLocationUnequal()
        {
            GoalField goalField1 = new GoalField(1, 3, TeamColour.red)
            {
                type = Messages.GoalFieldType.goal
            };
            GoalField goalField2 = new GoalField(1, 3, TeamColour.red)
            {
                type = Messages.GoalFieldType.goal
            };

            goalField2.x = 0;
            goalField2.y = 1;
            goalField1.x = 0;
            goalField1.y = 2;

            Assert.AreNotEqual(goalField1, goalField2);
        }
        public void DataTest()
        {
            Data message = new Data();

            message.playerId = 0;

            message.gameFinished = true;

            GoalField[] goalFieldsTab = new GoalField[3];
            goalFieldsTab[0] = new GoalField()
            {
                team = TeamColour.red
            };
            message.GoalFields = goalFieldsTab;

            Piece[] pieceTab = new Piece[2];
            pieceTab[0] = new Piece()
            {
                playerId = 2, playerIdSpecified = true
            };
            message.Pieces = pieceTab;

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

            TaskField[] taskFieldTab = new TaskField[3];
            taskFieldTab[0] = new TaskField()
            {
                x = 3
            };
            message.TaskFields = taskFieldTab;

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

            Assert.AreEqual((ulong)0, result.playerId);
            Assert.AreEqual(true, result.gameFinished);
            Assert.AreEqual(TeamColour.red, result.GoalFields[0].team);
            Assert.AreEqual((ulong)2, result.Pieces[0].playerId);
            Assert.AreEqual((uint)3, result.PlayerLocation.x);
            Assert.AreEqual((ulong)3, result.TaskFields[0].x);
        }
Exemplo n.º 17
0
        public void GoalEqual()
        {
            GoalField goalField1 = new GoalField(1, 3, TeamColour.red)
            {
                type = Messages.GoalFieldType.goal
            };
            GoalField goalField2 = new GoalField(1, 3, TeamColour.red)
            {
                type = Messages.GoalFieldType.goal
            };

            Assert.AreEqual(goalField1, goalField2);

            goalField1.playerId = 10;
            goalField2.playerId = 9;
            Assert.AreNotEqual(goalField1, goalField2);
            goalField2.playerId = 10;
            Assert.AreEqual(goalField1, goalField2);
            //TODO: more tests for equal
        }
Exemplo n.º 18
0
        public void PlayerPlacesNormalPieceOnGoalFieldOfTypeNonGoal()
        {
            InitGameMaster();
            var Player = GetPlayer("testGUID-0004", 10, TeamColour.blue, ActionType.PlacePiece);

            // equip an Player with a sham piece
            var messagePieceKnown = new Piece(PieceType.normal, 100)
            {
                timestamp = DateTime.Now,
            };

            EquipPlayerWithPiece(messagePieceKnown, Player);

            Player.SetLocation(4, 1); // we change a location of an original object

            var goalField = new GoalField(4, 1, TeamColour.blue)
            {
                playerIdSpecified = true,
                playerId          = Player.ID,
                timestamp         = DateTime.Now,
                type = GoalFieldType.nongoal,
            };

            DataAgent data = new DataAgent(Player.ID)
            {
                PlayerGUID     = guid,
                GameFinished   = false,
                PlayerLocation = Player.Location,
                Goals          = new GameArea.GameObjects.GoalField[] { new GameArea.GameObjects.GoalField(goalField) }
            };

            // action: Player places a piece
            data.Process(Player.Controller);

            // assert
            Assert.IsNotNull(Player.GetPiece);
            Assert.AreEqual(GoalFieldType.nongoal, Player.GetBoard.GetGoalField(Player.Location).Type);
        }
Exemplo n.º 19
0
 protected DataMessage()
 {
     TaskFields = new TaskField[0];
     GoalFields = new GoalField[0];
     Pieces     = new Piece[0];
 }
Exemplo n.º 20
0
 public void MarkGoalAsCompleted(GoalField goal)
 {
 }
Exemplo n.º 21
0
        public void HandleGoalFieldAfterPlace(int playerId, GoalField goalField)
        {
            Players[playerId].Piece = null;

            this[goalField] = goalField;
        }
Exemplo n.º 22
0
 protected SuggestAction()
 {
     TaskFields = new TaskField[0];
     GoalFields = new GoalField[0];
 }