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; } } }
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; } } } }
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; } } } } } }
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"); } }