Ejemplo n.º 1
0
    bool CanClaimCup(CupCardCubeColour cupType, out string reason)
    {
        var cupIndex       = (int)cupType;
        var playerIndex    = (int)m_CurrentPlayer;
        var cubeCountToWin = m_CubeWinningCounts[cupIndex];

        if (IsCupWon(cupType))
        {
            reason = "cup is already owned";
            return(false);
        }

        if (m_PlayerCubeCounts[playerIndex, cupIndex] >= cubeCountToWin)
        {
            reason = "don't need wildcard cubes to claim cup";
            return(false);
        }

        var playerTotalWildcardCubeCount = GetPlayerWildcardCubeCount(m_CurrentPlayer);

        if (m_PlayerCubeCounts[playerIndex, cupIndex] + playerTotalWildcardCubeCount < cubeCountToWin)
        {
            reason = "can't claim cup using wildcards";
            return(false);
        }

        reason = "";
        return(true);
    }
Ejemplo n.º 2
0
    void AwardCupToPlayer(Player player, CupCardCubeColour cupColour)
    {
        var playerIndex = (int)player;
        var cupIndex    = (int)cupColour;

        if (IsCupWon(cupColour))
        {
            Debug.LogError("Cup has already been won " + cupColour + " by " + m_CupOwner[cupIndex]);
        }

        if (m_PlayerCups[playerIndex, cupIndex])
        {
            Debug.LogError("Player:" + player + " already won cup: " + cupColour);
        }
        if (m_CupOwner[cupIndex] != Player.Unknown)
        {
            Debug.LogError("Cup:" + cupColour + " already owned by " + m_CupOwner[cupIndex]);
        }

        m_PlayerCups[playerIndex, cupIndex] = true;
        m_CupOwner[cupIndex] = player;

        m_GameUI.SetCupStatus(cupIndex, false);

        var cupDisplayIndex = NumCupsPlayerHasWon(player) - 1;

        if (cupDisplayIndex < MaxCupsPerPlayer)
        {
            var cubeCountToWin = m_CubeWinningCounts[cupIndex];
            var colour         = GetCardCubeColour(cupColour);
            m_GameUI.SetPlayerCupActive(playerIndex, cupDisplayIndex, true);
            m_GameUI.SetPlayerCup(playerIndex, cupDisplayIndex, cupColour, cubeCountToWin, colour);
        }
    }
Ejemplo n.º 3
0
    bool UpdateCubeCounts(CupCardCubeColour cube, int[] cubeCounts)
    {
        switch (cube)
        {
        case CupCardCubeColour.Grey:
            cubeCounts[(int)cube]++;
            break;

        case CupCardCubeColour.Blue:
            cubeCounts[(int)cube]++;
            break;

        case CupCardCubeColour.Green:
            cubeCounts[(int)cube]++;
            break;

        case CupCardCubeColour.Yellow:
            cubeCounts[(int)cube]++;
            break;

        case CupCardCubeColour.Red:
            cubeCounts[(int)cube]++;
            break;

        default:
            Debug.LogError("Unknown cube type " + cube);
            return(false);
        }

        return(true);
    }
Ejemplo n.º 4
0
    public void SetPlayerCup(int playerIndex, int cupDisplayIndex, CupCardCubeColour cupType, int value, Color colour)
    {
        m_PlayerCupImages[playerIndex, cupDisplayIndex].color = colour;
        m_PlayerCupValues[playerIndex, cupDisplayIndex].text  = value.ToString();
        var textColour = cupType == CupCardCubeColour.Yellow ? Color.black : Color.white;

        m_PlayerCupValues[playerIndex, cupDisplayIndex].color = textColour;
    }
Ejemplo n.º 5
0
    void ClaimCup(CupCardCubeColour cupType)
    {
        string reason;

        if (!CanClaimCup(cupType, out reason))
        {
            Debug.LogError("ClaimCup: " + cupType + " CanClaimCup failed " + reason);
            return;
        }

        var cupIndex           = (int)cupType;
        var playerIndex        = (int)m_CurrentPlayer;
        var cubeCountToWin     = m_CubeWinningCounts[cupIndex];
        var numWildCardsNeeded = cubeCountToWin - m_PlayerCubeCounts[playerIndex, cupIndex];

        AwardCupToPlayer(m_CurrentPlayer, cupType);
        m_CupPayment[cupIndex, cupIndex]         += m_PlayerCubeCounts[playerIndex, cupIndex];
        m_PlayerCubeCounts[playerIndex, cupIndex] = 0;
        for (var cubeType = 0; cubeType < CubeTypeCount; ++cubeType)
        {
            var wildcardCount = m_PlayerWildcardCubeCounts[playerIndex, cubeType];
            var wildcardUsed  = Math.Min(wildcardCount, numWildCardsNeeded);
            m_CupPayment[cupIndex, cubeType] += wildcardUsed * 3;
            m_PlayerWildcardCubeCounts[playerIndex, cubeType] -= wildcardUsed;
            numWildCardsNeeded -= wildcardUsed;
            if (numWildCardsNeeded <= 0)
            {
                break;
            }
        }

        if (numWildCardsNeeded > 0)
        {
            Debug.LogError("ClaimCup:" + cupType + " invalid numWildCardsNeeded:" + numWildCardsNeeded);
        }

        UpdateCubeCounts();
        ComputeHasGameEnded();
    }
Ejemplo n.º 6
0
 void AddCubeToPlayer(Player player, CupCardCubeColour cubeType)
 {
 }
Ejemplo n.º 7
0
 public void AddCubeToPlayer(Player player, CupCardCubeColour cubeType)
 {
     ++m_PlayerCubeCounts[(int)player, (int)cubeType];
 }
Ejemplo n.º 8
0
 public Color GetCardCubeColour(CupCardCubeColour cardCubeType)
 {
     return(m_CardCubeColours[(int)cardCubeType]);
 }
Ejemplo n.º 9
0
 bool IsCupWon(CupCardCubeColour cupColour)
 {
     return(m_CupOwner[(int)cupColour] != Player.Unknown);
 }
Ejemplo n.º 10
0
 public void SetCube(int index, CupCardCubeColour colour)
 {
     m_CubeImages[index].color = m_GameLogic.GetCardCubeColour(colour);
 }
Ejemplo n.º 11
0
 public Card(CupCardCubeColour colour, int value)
 {
     Colour = colour;
     Value  = value;
 }