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); }
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); } }
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); }
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; }
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(); }
void AddCubeToPlayer(Player player, CupCardCubeColour cubeType) { }
public void AddCubeToPlayer(Player player, CupCardCubeColour cubeType) { ++m_PlayerCubeCounts[(int)player, (int)cubeType]; }
public Color GetCardCubeColour(CupCardCubeColour cardCubeType) { return(m_CardCubeColours[(int)cardCubeType]); }
bool IsCupWon(CupCardCubeColour cupColour) { return(m_CupOwner[(int)cupColour] != Player.Unknown); }
public void SetCube(int index, CupCardCubeColour colour) { m_CubeImages[index].color = m_GameLogic.GetCardCubeColour(colour); }
public Card(CupCardCubeColour colour, int value) { Colour = colour; Value = value; }