/// <summary> /// When user clicks the deck, we need to execute the next turn. /// </summary> public void OnUserDeckClick() { //Reset visuals UserCard.gameObject.SetActive(true); OpponentCard.gameObject.SetActive(true); UserTieParent.gameObject.SetActive(false); OpponentTieParent.gameObject.SetActive(false); BattleResultText.gameObject.SetActive(false); //Deal next round Card userCard = UserDeck.GetNextCard(); Card opponentCard = OpponentDeck.GetNextCard(); //Update visuals OpponentDeckSizeText.text = OpponentDeck.GetDeckSize().ToString(); UserDeckSizeText.text = UserDeck.GetDeckSize().ToString(); SetCardUI(UserCard.gameObject, userCard); SetCardUI(OpponentCard.gameObject, opponentCard); OpponentDeckSizeText.text = OpponentDeck.GetDeckSize().ToString(); UserDeckSizeText.text = UserDeck.GetDeckSize().ToString(); //Battle MatchupOutcomes outcome = userCard.Battle(opponentCard); if (outcome == MatchupOutcomes.Tie) { HandleTie(new List <Card>() { userCard, opponentCard }); } else { BattleResultText.gameObject.SetActive(true); if (outcome == MatchupOutcomes.Win) { BattleResultText.text = "You won this one!"; UserDeck.AddCardToBottom(userCard); UserDeck.AddCardToBottom(opponentCard); } else { BattleResultText.text = "You lost this one!"; OpponentDeck.AddCardToBottom(userCard); OpponentDeck.AddCardToBottom(opponentCard); } } OpponentDeckSizeText.text = OpponentDeck.GetDeckSize().ToString(); UserDeckSizeText.text = UserDeck.GetDeckSize().ToString(); if (UserDeck.GetDeckSize() == 0) { HandleEndGame(false); } if (OpponentDeck.GetDeckSize() == 0) { HandleEndGame(true); } }
/// <summary> /// A tie is handled differently, but dealing 3 cards, and doing another battle. /// </summary> /// <param name="cardsInPlay">Cards that will be given to the victor</param> public void HandleTie(List <Card> cardsInPlay) { UserTieParent.gameObject.SetActive(true); OpponentTieParent.gameObject.SetActive(true); int cardsToPull = Mathf.Min(UserDeck.GetDeckSize(), OpponentDeck.GetDeckSize(), 4); for (int i = 0; i < cardsToPull - 1; i++) { cardsInPlay.Add(UserDeck.GetNextCard()); cardsInPlay.Add(OpponentDeck.GetNextCard()); } Card opponentCard = OpponentDeck.GetNextCard(); Card userCard = UserDeck.GetNextCard(); cardsInPlay.Add(opponentCard); cardsInPlay.Add(userCard); OpponentDeckSizeText.text = OpponentDeck.GetDeckSize().ToString(); UserDeckSizeText.text = UserDeck.GetDeckSize().ToString(); Transform userCardTrans = UserTieParent.GetChild(3); Transform oppCardTrans = OpponentTieParent.GetChild(3); SetCardUI(userCardTrans.gameObject, userCard); SetCardUI(oppCardTrans.gameObject, opponentCard); MatchupOutcomes outcome = userCard.Battle(opponentCard); if (outcome == MatchupOutcomes.Tie) { HandleTie(cardsInPlay); } else { BattleResultText.gameObject.SetActive(true); if (outcome == MatchupOutcomes.Win) { BattleResultText.text = "You won this one!"; foreach (Card c in cardsInPlay) { UserDeck.AddCardToBottom(c); } } else { BattleResultText.text = "You lost this one!"; foreach (Card c in cardsInPlay) { OpponentDeck.AddCardToBottom(c); } } } OpponentDeckSizeText.text = OpponentDeck.GetDeckSize().ToString(); UserDeckSizeText.text = UserDeck.GetDeckSize().ToString(); if (UserDeck.GetDeckSize() == 0) { HandleEndGame(false); } if (OpponentDeck.GetDeckSize() == 0) { HandleEndGame(true); } }