Esempio n. 1
0
 public void UseDevCard(DevelopmentCards devCard)
 {
     if (!hasUsedDevCard && devCard.GetType() != typeof(RewardCard))
     {
         devCard.Effect();
         hasUsedDevCard = true;
     }
 }
Esempio n. 2
0
 public void AddDevCard(DevelopmentCards devCard)
 {
     if (devCard.GetType() == typeof(RewardCard))
     {
         Instantiate(victoryCard, devPanel);
     }
     else
     {
         Instantiate(knightCard, devPanel);
     }
 }
Esempio n. 3
0
    private void AddDevCard(DevelopmentCards devCard)
    {
        devCards.Add(devCard);
        obtainedDevCards = true;

        transform.GetChild(0).GetComponent <UIControl>().AddDevCard(devCard);

        if (devCard.GetType() == typeof(RewardCard))
        {
            devCard.Effect();
        }
    }
Esempio n. 4
0
        /// <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();
        }
Esempio n. 5
0
        /// <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();
        }