public void playManuever(MouseState mouseState, Card card, BoardFunctionality boardFunc)
        {
            if (!boardFunc.friendlySide.Hand.isWithinModifiedPosition(mouseState, card) && boardFunc.state != BoardFunctionality.State.CardView && card.cardProps.type == CardType.Manuever && mouseState.LeftButton == ButtonState.Released)
            {
                if (card == boardFunc.SELECTEDCARD)
                {
                    placingCard = false;
                    card.setRegular();
                    boardFunc.PlayCard(boardFunc.friendlySide, /* row,*/ card);

                    boardFunc.SELECTEDCARD = null;
                }
            }
        }
Пример #2
0
        public void playArmies(BoardFunctionality boardFunc)
        {
            bool trigger = false;

            if (!player.hasPlayedArmyThisTurn)
            {
                foreach (Card card in boardFunc.friendlySide.Hand.cardsInContainer)
                {
                    if (card.cardProps.type == CardType.Army && trigger == false)
                    {
                        boardFunc.PlayCard(boardFunc.friendlySide, card);
                        trigger = true;
                    }
                }
            }
        }
Пример #3
0
        public void playCardIfThereAreEnoughArmies(BoardFunctionality boardFunc)
        {
            int counter = 0; //set to 1 because the army in hand won't register

            foreach (Card newCard in boardFunc.friendlySide.Rows[Side.Armies].cardsInContainer)
            {
                if (!newCard.cardProps.exhausted)
                {
                    counter++;
                }
            }
            foreach (Card newCard in boardFunc.friendlySide.Hand.cardsInContainer)
            {
                if (newCard.cardProps.cost.totalCost <= counter)
                {
                    //exhaustArmies(boardFunc.friendlySide, newCard);
                    boardFunc.PlayCard(boardFunc.friendlySide, /*boardFunc.enemySide.Rows[Side.FieldUnit]*/ newCard);
                    counter -= newCard.cardProps.cost.totalCost;
                }
            }
        }
        public void playSelectedCard(MouseState mouseState, BoardFunctionality boardFunc)
        {
            if (isWithinProperRow(mouseState, boardFunc) && boardFunc.state != BoardFunctionality.State.CardView)
            {
                foreach (Card card in boardFunc.friendlySide.Hand.cardsInContainer)
                {
                    if (card == boardFunc.SELECTEDCARD)
                    {
                        foreach (FunctionalRow row in boardFunc.friendlySide.Rows)
                        {
                            if (row.type == card.cardProps.type)
                            {
                                placingCard = false;
                                card.setRegular();
                                boardFunc.PlayCard(boardFunc.friendlySide, /* row,*/ card);

                                boardFunc.SELECTEDCARD = null;
                            }
                        }
                    }
                }
            }
        }
Пример #5
0
        public void playCardIfSideHasSufficientResources(Side side, Card card, BoardFunctionality boardFunc)
        {
            if (card.canBePlayed(side))
            {
                //int temporaryCounter = card.cardProps.cost.raceCost.Count;
                deductCostFromResourcesAndPlayCard(side, card, boardFunc);
            }
            else
            {
                if (side.Rows[Side.Armies].cardsInContainer.Count >= card.cardProps.cost.totalCost)
                {
                    List <Card> deductedResources       = new List <Card>();
                    List <Card> otherAvailableResources = new List <Card>();
                    foreach (Card resource in side.Rows[Side.Armies].cardsInContainer)
                    {
                        if (!resource.cardProps.exhausted)
                        {
                            otherAvailableResources.Add(resource);
                        }
                    }
                    foreach (Race cardResource in card.cardProps.cost.raceCost)
                    {
                        bool check = false;
                        foreach (Card armyCard in side.Rows[Side.Armies].cardsInContainer)
                        {
                            if (cardResource == armyCard.race && check == false && !armyCard.cardProps.exhausted && !deductedResources.Contains(armyCard))
                            {
                                deductedResources.Add(armyCard);
                                ///otherAvailableResources.Remove(armyCard);
                                check = true;
                            }
                        }
                    }
                    foreach (Card resource in deductedResources)
                    {
                        otherAvailableResources.Remove(resource);
                    }


                    if (deductedResources.Count < card.cardProps.cost.raceCost.Count || deductedResources.Count + otherAvailableResources.Count < card.cardProps.cost.totalCost)
                    {
                        boardFunc.BOARDMESSAGE.addMessage("Not enough armies to produce the needed resources!");
                        returnToHand(side, card, boardFunc);
                    }
                    else
                    {
                        for (int i = 0; i < deductedResources.Count; i++)
                        {
                            deductedResources[i].cardProps.exhausted = true;
                            side.Resources.Add(deductedResources[i].race);
                        }
                        for (int i = 0; i < card.cardProps.cost.unanimousCost; i++)
                        {
                            otherAvailableResources[i].cardProps.exhausted = true;
                            side.Resources.Add(otherAvailableResources[i].race);
                        }
                        boardFunc.PlayCard(side, card);
                    }
                }
                else
                {
                    boardFunc.BOARDMESSAGE.addMessage("Not enough armies to produce the needed resources!");
                    returnToHand(side, card, boardFunc);
                }

                //boardPosLogic.updateBoard(this);
                //throw new Exception("does not have enough MANA");
            }
        }