Exemple #1
0
    /// <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);
        }
    }
Exemple #2
0
    /// <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);
        }
    }