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)); }
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)); }
// Event for CardMove private void CardMove_OnClickValidate(object sender, EventArgs e) { CardMove card = (CardMove)_CardHandler.CurrentCard; EventMovePlayer(PlayerHandler.Instance.currentPlayer, card.NbMove, true); _CardHandler.ExecuteCardAction(card); this.Content = null; }
private void Start() { combatController = FindObjectOfType <CombatController>(); CardMove cardMove = GetComponent <CardMove>(); origXScale = transform.localScale.x; origYScale = transform.localScale.y; if (combatController.state == CombatState.ViewDeck || combatController.state == CombatState.ViewDiscard) { cardMove.enabled = false; } else { cardMove.enabled = true; } }
public static bool ValidateMove(MeepleMove meepleMove, CardMove cardMove) { Meeple movedMeeple = meepleMove.Meeple; MoveDestinationField destinationField = meepleMove.MoveDestination; int test = 0; if (movedMeeple == null || cardMove == null) { return(false); } foreach (CardAttribute attribute in cardMove.Card.Attributes) { switch (attribute.Attribute) { case CardFeature.ChangePlace: if (ProveChangePlace(movedMeeple, destinationField)) { test += 1; if ((cardMove.Card.Name == "cardJoker" && GetDifferenceBetweenTwoFields(movedMeeple.CurrentPosition, destinationField) > 13) || (cardMove.Card.Name == "cardJoker" && IsPartnerColorCode(movedMeeple.ColorCode, destinationField.CurrentMeeple.ColorCode) && GetDifferenceBetweenTwoFields(movedMeeple.CurrentPosition, destinationField) <= 13) || (cardMove.Card.Name != "cardJoker")) { cardMove.SelectedAttribute = new CardAttribute(CardFeature.ChangePlace); } } break; case CardFeature.LeaveKennel: if (ProveLeaveKennel(movedMeeple, destinationField)) { test += 1; } break; } if (ProveValueCard(movedMeeple, destinationField, (int)attribute.Attribute)) { test += 1; } } return(test > 0); }
private async Task AddCard(int moveInt, string gameId, List <Player> players) { var listCardMoves = new List <CardMove>(); foreach (var item in players) { Card card = GetCard(gameId); var move = new CardMove { GameId = gameId, CardId = card.Id, PlayerId = item.Id, Name = item.UserName, Role = item.Role, Value = card.Value, Move = moveInt }; listCardMoves.Add(move); } await _cardMoveRepository.AddRange(listCardMoves); }
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 OnDrop(PointerEventData eventData) { CardMove card = eventData.pointerDrag.GetComponent <CardMove>(); CardData cardData = card.GetComponent <CardData>(); if ((card) && (this.transform.childCount < 3) && (cardData._team == _cardManager._nowTurn) ) { Transform hand = card._parent; card._parent = this.transform; if (_cardManager.GetStrageTopNum() < _cardManager.GetMaxNum()) { _cardManager.CardInstantiate(hand); } _cardManager._nowTurn = 1 - _cardManager._nowTurn; //_save.SetCardPlayOrder( cardData ); } }
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)); }
public void ValidateMove(MeepleMove meepleMove, CardMove cardMove, int tableId) { GameTable actualGameTable = GameTableService.GetTable(Games, tableId); if (meepleMove == null) { return; } meepleMove.Meeple.CurrentPosition = meepleMove.Meeple.CurrentPosition ?? Validation.GetFieldById(actualGameTable, meepleMove.Meeple.CurrentFieldId); meepleMove.MoveDestination = meepleMove.MoveDestination ?? Validation.GetFieldById(actualGameTable, meepleMove.DestinationFieldId); if (Validation.ValidateMove(meepleMove, cardMove)) { GameTableService.UpdateMeeplePosition(meepleMove, actualGameTable, cardMove.SelectedAttribute != null); List <Meeple> allMeeples = new List <Meeple>(); foreach (PlayerFieldArea area in actualGameTable.PlayerFieldAreas) { allMeeples.AddRange(area.Meeples); } actualGameTable.CardServiceData.RemoveCardFromUserHand(actualGameTable, GameTableService.GetActualUser(Context.User.Identity.Name), cardMove.Card); Task sendPosition = Clients.All.sendMeeplePositions(allMeeples, tableId); sendPosition.Wait(); if (GameServices.IsGameFinished(actualGameTable)) { IEnumerable <string> winners = GameServices.GetWinners(actualGameTable); string winMsg = ServerMessages.GameFinished.Replace("{0}", string.Join(" & ", winners)); Clients.All.notifyAllGameIsFinished(winMsg, actualGameTable.Identifier); } else { NotifyNextPlayer("", actualGameTable); } } else { Clients.Caller.returnMove(tableId); } }
private async Task <Card> AddCard(int moveInt, string gameId, List <Player> playersList) { var listCardMoves = new List <CardMove>(); var newCard = new Card(); foreach (var player in playersList) { Card card = GetCard(gameId); var move = new CardMove { GameId = gameId, CardId = card.Id, PlayerId = player.Id, Name = player.UserName, Role = player.Role, Value = card.Value, Move = moveInt }; listCardMoves.Add(move); newCard = card; await _cardMoveRepository.Add(move); } return(newCard); }
public void ExecuteCardAction(Card c) { if (c is CardUpdateMoney) { CardUpdateMoney card = (CardUpdateMoney)c; if (card.Amount < 0) { _PlayerHandler.PayeAmount(PlayerHandler.Instance.currentPlayer, Math.Abs(card.Amount)); } else { _PlayerHandler.CardGiveMoney(PlayerHandler.Instance.currentPlayer, card.Amount); } } else if (c is CardUpdateMoneyAccordingBuilds) { CardUpdateMoneyAccordingBuilds card = (CardUpdateMoneyAccordingBuilds)c; ObservableCollection <Property> properties = _PlayerHandler.Properties(); int Amount = 0; foreach (Property p in properties) { if (p is Land) { Land l = (Land)p; Amount += l.NbHotel * card.CostHotel; Amount += l.NbHouse * card.CostHouse; } } _PlayerHandler.PayeAmount(PlayerHandler.Instance.currentPlayer, Math.Abs(Amount)); } else if (c is CardAnniversary) { CardAnniversary card = (CardAnniversary)c; Player current = _PlayerHandler.currentPlayer; Predicate <Player> findAllPlayerWithoutDrawer = (Player p) => { return(p.Id != current.Id); }; List <Player> players = _PlayerHandler.ListOfPlayers.FindAll(findAllPlayerWithoutDrawer); foreach (Player p in players) { _PlayerHandler.PayeTo(p, current, card.Amount); } } else if (c is CardMove) { CardMove card = (CardMove)c; Player current = _PlayerHandler.currentPlayer; _PlayerHandler.MoveTo(current, (current.Position + card.NbMove)); } else if (c is CardMoveToCell) { CardMoveToCell card = (CardMoveToCell)c; Player current = _PlayerHandler.currentPlayer; _PlayerHandler.MoveTo(current, _BoardHandler.Board.GetCell(card.CellPosition)); } else if (c is CardMoveToJail) { CardMoveToJail card = (CardMoveToJail)c; Player current = _PlayerHandler.currentPlayer; current.InJail = true; DicesHandler.Instance.PlayerCanBeRaise = false; _PlayerHandler.MoveTo(current, _BoardHandler.Board.GetCell(card.CellPosition)); } else if (c is CardExitToJail) { CardExitToJail card = (CardExitToJail)c; Player current = _PlayerHandler.currentPlayer; switch (card.Action) { case CardExitToJail.ActionOption.EXITTOJAIL: _PlayerHandler.ExitToJail(current); break; case CardExitToJail.ActionOption.KEEPCARD: _PlayerHandler.AddCardTo(current, c); break; } } else if (c is CardChoice) { CardChoice card = (CardChoice)c; Player current = _PlayerHandler.currentPlayer; switch (card.Action) { case CardChoice.ActionOption.DRAWCARD: switch (card.CardTypeToDraw) { case (int)CardType.CHANCE: this.GetNextChanceCard(); break; case (int)CardType.COMMUNITY: this.GetNextCommunityCard(); break; } break; case CardChoice.ActionOption.PAY: _PlayerHandler.PayeAmount(current, card.Amount); break; } } }
// Use this for initialization void Start() { _this = this; }
public void RemoveCard(CardMove card) { cards.Remove(card); }
public void AddCard(CardMove card) { cards.Add(card); }