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); }
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); }
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); }
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)); }
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)); }
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"); } }
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); }
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)); }
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)); }
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)); }
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)); }
private static bool ArePartners(PlayerFieldArea currentPlayerFieldArea, PlayerFieldArea partnerPlayerFieldArea) { return(currentPlayerFieldArea.Participation.Participant.Identifier.Equals( partnerPlayerFieldArea.Participation.Participant.Identifier)); }
public void CreateAreaForTest() { _pf = new PlayerFieldArea(Identifier, Color, FieldId); }
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); }