コード例 #1
0
    public void RoundWinCheck(Card c1, Card c2)
    {
        int p1 = (int)c1.Value;
        int p2 = (int)c2.Value;

        if (p1 == 0)
        {
            p1 = 14;
        }
        if (p2 == 0)
        {
            p2 = 14;
        }

        if (p1 > p2)
        {
            m_winningDeck = P1Discard;
        }
        else if (p2 > p1)
        {
            m_winningDeck = P2Discard;
        }
        else
        {//war
            m_winningDeck = null;
            IsWar         = true;
        }

        if (p1 != p2)
        {
            WarCount = 0;
        }
    }
コード例 #2
0
    public void ReShuffleIn(Card_Placement deck, Card_Placement discard)
    {
        while (discard.m_Cards.Count > 0)
        {
            deck.GiveCard(discard.TakeFromTop());
        }
        deck.Shuffle();

        foreach (Card c in deck.m_Cards)
        {
            if (c.m_faceUp)
            {
                c.Flip();
            }
        }
        UpdatePlayerCardCounts();
    }
コード例 #3
0
    public void NextRound()
    {
        if (GameEnd)
        {
            return;
        }

        if (m_winningDeck != null)
        {
            while (P1War.m_Cards.Count > 0)
            {
                Card card = P1War.TakeFromTop();
                m_winningDeck.GiveCard(card);
            }

            while (P2War.m_Cards.Count > 0)
            {
                Card card = P2War.TakeFromTop();
                m_winningDeck.GiveCard(card);
            }
            UpdatePlayerCardCounts();
            m_winningDeck.Shuffle();

            m_winningDeck = null;
            IsWar         = false;
        }

        try
        {
            if (IsWar)
            {
                WarCount++;

                if (P1Deck.m_Cards.Count < 4)
                {
                    ReShuffleIn(P1Deck, P1Discard);

                    if (P1Deck.m_Cards.Count < 4)
                    {
                        GameWin(true);
                        return;
                    }
                }
                if (P2Deck.m_Cards.Count < 4)
                {
                    ReShuffleIn(P2Deck, P2Discard);

                    if (P2Deck.m_Cards.Count < 4)
                    {
                        GameWin(false);
                        return;
                    }
                }

                Card POne1 = P1Deck.TakeFromTop();
                Card POne2 = P1Deck.TakeFromTop();
                Card POne3 = P1Deck.TakeFromTop();
                Card POne4 = P1Deck.TakeFromTop();

                Card PTwo1 = P2Deck.TakeFromTop();
                Card PTwo2 = P2Deck.TakeFromTop();
                Card PTwo3 = P2Deck.TakeFromTop();
                Card PTwo4 = P2Deck.TakeFromTop();

                P1War.GiveCard(POne1);
                P1War.GiveCard(POne2);
                P1War.GiveCard(POne3);
                P1War.GiveCard(POne4);

                P2War.GiveCard(PTwo1);
                P2War.GiveCard(PTwo2);
                P2War.GiveCard(PTwo3);
                P2War.GiveCard(PTwo4);

                POne1.transform.localPosition += new Vector3(0, 15, 0) + (new Vector3(0, 60, 0) * (WarCount - 1));
                POne2.transform.localPosition += new Vector3(0, 15, 0) * 2 + (new Vector3(0, 60, 0) * (WarCount - 1));
                POne3.transform.localPosition += new Vector3(0, 15, 0) * 3 + (new Vector3(0, 60, 0) * (WarCount - 1));
                POne4.transform.localPosition += new Vector3(0, 15, 0) * 4 + (new Vector3(0, 60, 0) * (WarCount - 1));

                PTwo1.transform.localPosition -= new Vector3(0, 15, 0) + (new Vector3(0, 60, 0) * (WarCount - 1));
                PTwo2.transform.localPosition -= new Vector3(0, 15, 0) * 2 + (new Vector3(0, 60, 0) * (WarCount - 1));
                PTwo3.transform.localPosition -= new Vector3(0, 15, 0) * 3 + (new Vector3(0, 60, 0) * (WarCount - 1));
                PTwo4.transform.localPosition -= new Vector3(0, 15, 0) * 4 + (new Vector3(0, 60, 0) * (WarCount - 1));

                POne4.Flip();
                PTwo4.Flip();

                RoundWinCheck(POne4, PTwo4);
            }
            else
            {
                if (P1Deck.m_Cards.Count < 1)
                {
                    ReShuffleIn(P1Deck, P1Discard);

                    if (P1Deck.m_Cards.Count <= 3)
                    {
                        GameWin(true);
                        return;
                    }
                }
                if (P2Deck.m_Cards.Count < 1)
                {
                    ReShuffleIn(P2Deck, P2Discard);

                    if (P2Deck.m_Cards.Count <= 3)
                    {
                        GameWin(false);
                        return;
                    }
                }

                Card c1 = P1Deck.TakeFromTop();
                Card c2 = P2Deck.TakeFromTop();

                P1War.GiveCard(c1);
                P2War.GiveCard(c2);

                c1.Flip();
                c2.Flip();
                RoundWinCheck(c1, c2);
            }
        }
        catch (NullReferenceException)
        {
            UpdatePlayerCardCounts();
        }
    }