public void UseDevCard(DevelopmentCards devCard) { if (!hasUsedDevCard && devCard.GetType() != typeof(RewardCard)) { devCard.Effect(); hasUsedDevCard = true; } }
public void AddDevCard(DevelopmentCards devCard) { if (devCard.GetType() == typeof(RewardCard)) { Instantiate(victoryCard, devPanel); } else { Instantiate(knightCard, devPanel); } }
private void AddDevCard(DevelopmentCards devCard) { devCards.Add(devCard); obtainedDevCards = true; transform.GetChild(0).GetComponent <UIControl>().AddDevCard(devCard); if (devCard.GetType() == typeof(RewardCard)) { devCard.Effect(); } }
/// <summary> /// Plays a development card for a player and performs any actions due to the card. /// </summary> public ActionResult PlayerPlayDevelopmentCard(int playerId, DevelopmentCards cardToPlay) { var validation = ValidatePlayerAction(PlayerTurnState.TakeAction, playerId); if (validation.Failed) return validation; var pr = GetPlayerFromId(playerId); if (pr.Failed) return pr; var player = pr.Data; var dr = player.PlayDevelopmentCard(cardToPlay); if (dr.Failed) return dr; if (cardToPlay == DevelopmentCards.Knight) { // Check if the player now has the largest army. var newArmySize = player.ArmySize; // Must be at least 3 knights to have the largest army. if (newArmySize >= 3 && newArmySize > _largestArmy.Item2) _largestArmy = Tuple.Create(playerId, newArmySize); // Now let the player place the robber. _playerTurnState = _gameSettings.RobberMode == RobberMode.None ? PlayerTurnState.TakeAction : PlayerTurnState.PlacingRobber; } else if (cardToPlay == DevelopmentCards.Library || cardToPlay == DevelopmentCards.Chapel || cardToPlay == DevelopmentCards.Market || cardToPlay == DevelopmentCards.University || cardToPlay == DevelopmentCards.GreatHall) { // VP card. Do nothing. } else if (cardToPlay == DevelopmentCards.Monopoly) { _playerTurnState = PlayerTurnState.MonopolySelectingResource; } else if (cardToPlay == DevelopmentCards.YearOfPlenty) { _playerTurnState = PlayerTurnState.YearOfPlentySelectingResources; } else if (cardToPlay == DevelopmentCards.RoadBuilding) { _roadBuildingRoadsRemaining = 2; _playerTurnState = PlayerTurnState.RoadBuildingSelectingRoads; } return ActionResult.CreateSuccess(); }
/// <summary> /// Removes a development card from the players hand and puts it into their "CardsInPlay" list. /// </summary> public ActionResult PlayDevelopmentCard(DevelopmentCards card) { var foundIndex = DevelopmentCards.FindIndex(c => c == card); if (foundIndex == -1) return ActionResult.CreateFailed("Cannot play this card because it is not in the player's hand."); DevelopmentCards.RemoveAt(foundIndex); DevelopmentCardsInPlay.Add(card); return ActionResult.CreateSuccess(); }