Beispiel #1
0
        private static GameTable GenerateNewGameTable(int gameId, string gameName)
        {
            List <PlayerFieldArea> areas = new List <PlayerFieldArea>();

            int id = 0;

            const int       fieldId    = 0;
            PlayerFieldArea areaTop    = new PlayerFieldArea(++id, ColorCode.Blue, fieldId);
            PlayerFieldArea areaLeft   = new PlayerFieldArea(++id, ColorCode.Red, areaTop.FieldId);
            PlayerFieldArea areaBottom = new PlayerFieldArea(++id, ColorCode.Green, areaLeft.FieldId);
            PlayerFieldArea areaRight  = new PlayerFieldArea(++id, ColorCode.Yellow, areaBottom.FieldId);

            // Connection between PlayFieldAreas
            areaTop.Next        = areaLeft;
            areaTop.Previous    = areaRight;
            areaRight.Next      = areaTop;
            areaRight.Previous  = areaBottom;
            areaLeft.Next       = areaBottom;
            areaLeft.Previous   = areaTop;
            areaBottom.Next     = areaRight;
            areaBottom.Previous = areaLeft;

            areas.Add(areaTop);
            areas.Add(areaLeft);
            areas.Add(areaBottom);
            areas.Add(areaRight);

            GameTable table = new GameTable(areas, gameId, gameName);

            return(table);
        }
Beispiel #2
0
        public static MoveDestinationField GetFieldById(GameTable actualTable, int fieldId)
        {
            MoveDestinationField moveDestinationField = null;
            PlayerFieldArea      playerFieldArea      = actualTable.PlayerFieldAreas.Find(area => area.Fields.Find(field =>
            {
                if (field.Identifier != fieldId)
                {
                    return(false);
                }
                moveDestinationField = field;
                return(true);
            }) != null);

            if (moveDestinationField == null)
            {
                PlayerFieldArea playerFieldAreaKennel = actualTable.PlayerFieldAreas.Find(area => area.KennelFields.Find(field =>
                {
                    if (field.Identifier != fieldId)
                    {
                        return(false);
                    }
                    moveDestinationField = field;
                    return(true);
                }) != null);
            }
            return(moveDestinationField);
        }
Beispiel #3
0
        public List <HandCard> ProveCards(List <HandCard> actualHandCards, GameTable actualGameTable, User actualUser)
        {
            if (actualHandCards == null || actualGameTable == null || actualUser == null)
            {
                return(null);
            }
            PlayerFieldArea actualArea = actualGameTable.PlayerFieldAreas.Find(
                area => area.Participation.Participant.Identifier == actualUser.Identifier);
            List <Meeple> myMeeples = actualArea.Meeples;

            ProveCardsCount++;

            List <HandCard> validCards = (from card in actualHandCards
                                          let validAttribute = card.Attributes.Find(attribute =>
            {
                if (attribute.Attribute == CardFeature.LeaveKennel)
                {
                    return(ProveLeaveKennel(myMeeples));
                }
                return(attribute.Attribute == CardFeature.ChangePlace
                        ? ProveChangePlace(myMeeples, GameTableService.GetOtherMeeples(actualGameTable, myMeeples))
                        : ProveValueCard(myMeeples, (int)attribute.Attribute));
            })
                                                               where validAttribute != null
                                                               select card).ToList();

            SetCardValid(actualHandCards, false);
            SetCardValid(validCards, true);
            return(actualHandCards);
        }
Beispiel #4
0
        public void TestChangeMeeplePositive()
        {
            GameTable       gameTable  = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea greenArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            PlayerFieldArea blueArea   = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Blue);
            StandardField   startField = greenArea.Fields[10] as StandardField;
            StandardField   endField   = greenArea.Fields[14] as StandardField;
            Meeple          meeple1    = greenArea.Meeples[0];
            Meeple          meeple2    = blueArea.Meeples[0];

            startField.CurrentMeeple = meeple1;
            endField.CurrentMeeple   = meeple2;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple1,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _cardJoker,
                SelectedAttribute = CardAttributeChangePlace
            };

            Assert.AreEqual(true, Validation.ValidateMove(meepleMove, cardMove));
        }
Beispiel #5
0
        public void TestChangeMeepleNegativeStartField()
        {
            GameTable       gameTable  = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea greenArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            PlayerFieldArea blueArea   = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Blue);
            StandardField   startField = greenArea.Fields[10] as StandardField;
            StartField      endField   = greenArea.Fields.Find(field => field.FieldType.Contains("StartField")) as StartField;
            Meeple          meeple1    = greenArea.Meeples[0];
            Meeple          meeple2    = blueArea.Meeples[0];

            meeple2.IsStartFieldBlocked = true;
            startField.CurrentMeeple    = meeple1;
            endField.CurrentMeeple      = meeple2;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple1,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _cardChange,
                SelectedAttribute = CardAttributeChangePlace
            };

            Assert.AreEqual(false, Validation.ValidateMove(meepleMove, cardMove));
        }
Beispiel #6
0
        private string GetUserMeeplePath(int tableId)
        {
            GameTable       gameTable       = GameRepository.Instance.Get()?.Find(table => table.Identifier.Equals(tableId));
            PlayerFieldArea playerFieldArea = gameTable?.PlayerFieldAreas?.FirstOrDefault(x => x.Participation.Participant.Nickname == User.Identity.Name);

            if (playerFieldArea == null)
            {
                return("not defined");
            }
            switch (playerFieldArea.ColorCode)
            {
            case ColorCode.Yellow:
                return("meeple_yellow.png");

            case ColorCode.Blue:
                return("meeple_blue.png");

            case ColorCode.Red:
                return("meeple_red.png");

            case ColorCode.Green:
                return("meeple_green.png");

            default:
                return("not defined");
            }
        }
Beispiel #7
0
        public void TestUpdateMeeplePositionNoMeepleMove()
        {
            GameTable            table        = MakeInitialGameTable;
            PlayerFieldArea      redArea      = table.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Red);
            Meeple               redMeeple    = redArea.Meeples.First();
            MoveDestinationField currentField = redArea.Fields.Find(field => field.FieldType.Contains("StartField"));

            currentField.CurrentMeeple = redMeeple;
            MoveDestinationField moveField   = redArea.Fields.Find(field => field.FieldType.Contains("StandardField"));
            GameTable            notModified = table;

            GameTableService.UpdateMeeplePosition(null, table, false);
            Assert.AreEqual(table, notModified);
        }
Beispiel #8
0
        public void TestUpdateMeeplePositionCorrectlyInitialized()
        {
            GameTable            table        = MakeInitialGameTable;
            PlayerFieldArea      redArea      = table.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Red);
            Meeple               redMeeple    = redArea.Meeples.First();
            MoveDestinationField currentField = redArea.Fields.Find(field => field.FieldType.Contains("StartField"));

            currentField.CurrentMeeple = redMeeple;
            MoveDestinationField moveField = redArea.Fields.Find(field => field.FieldType.Contains("StandardField"));

            GameTableService.UpdateMeeplePosition(new MeepleMove()
            {
                Meeple = redMeeple, MoveDestination = moveField
            }, table, false);
            Assert.AreEqual(moveField, table.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Red).Fields.Find(field => field.CurrentMeeple == redMeeple));
        }
Beispiel #9
0
        public void TestLeaveKennelNotAllowed()
        {
            GameTable       gameTable  = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea greenArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            StandardField   startField = greenArea.Fields[10] as StandardField;
            StandardField   endField   = greenArea.Fields[14] as StandardField;
            Meeple          meeple     = greenArea.Meeples[0];

            meeple.CurrentPosition = startField;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _card13,
                SelectedAttribute = CardAttributeLeaveKennel
            };

            Assert.AreEqual(false, Validation.ValidateMove(meepleMove, cardMove));
        }
Beispiel #10
0
        public void TestLeaveKennel()
        {
            GameTable       gameTable   = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea greenArea   = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            KennelField     kennelField = greenArea.KennelFields[0] as KennelField;
            StartField      endField    = greenArea.Fields.Find(field => field.FieldType.Contains("StartField")) as StartField;
            Meeple          meeple      = greenArea.Meeples[0];

            meeple.CurrentPosition = kennelField;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _card11,
                SelectedAttribute = CardAttributeLeaveKennel
            };

            Assert.AreEqual(true, Validation.ValidateMove(meepleMove, cardMove));
        }
Beispiel #11
0
        public void TestMovedInOtherFieldAreaPositive()
        {
            GameTable       gameTable  = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea startArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            PlayerFieldArea targeArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Yellow);
            StandardField   startField = startArea.Fields[14] as StandardField;
            StandardField   endField   = targeArea.Fields[2] as StandardField;
            Meeple          meeple     = startArea.Meeples[0];

            meeple.CurrentPosition = startField;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _card4,
                SelectedAttribute = CardAttributeThirteenFields
            };

            Assert.AreEqual(true, Validation.ValidateMove(meepleMove, cardMove));
        }
Beispiel #12
0
 private static bool ArePartners(PlayerFieldArea currentPlayerFieldArea, PlayerFieldArea partnerPlayerFieldArea)
 {
     return(currentPlayerFieldArea.Participation.Participant.Identifier.Equals(
                partnerPlayerFieldArea.Participation.Participant.Identifier));
 }
Beispiel #13
0
 public void CreateAreaForTest()
 {
     _pf = new PlayerFieldArea(Identifier, Color, FieldId);
 }
Beispiel #14
0
        public static bool AreAllEndFieldsUsedForColorCode(GameTable actualTable, ColorCode colorCode)
        {
            PlayerFieldArea actualArea = actualTable.PlayerFieldAreas.Find(area => area.ColorCode == colorCode);

            return(actualArea.Fields.FindAll(field => field.FieldType.Contains("EndField") && field.CurrentMeeple != null).Count == 4);
        }