public Nullable <Vals.Colour> determineCureActionAvailable(int[] cardCureRequirements, bool researchStationAvailable) { if (researchStationAvailable) { int[] cardsOfEachColour = new int[Vals.DISEASE_COUNT]; PlayerCard prev = hand[0]; int colourCount = 1; int cardsToCure = roleModifiedCardsToCure(cardCureRequirements[(int)prev.getColour()]); for (int i = 1; i < hand.Count; i++) { if (hand[i].getColour() == prev.getColour() && !board.isDiseaseCured(hand[i].getColour())) { colourCount++; if (colourCount == cardsToCure) { return(prev.getColour()); } } else { colourCount = 1; } prev = hand[i]; } } return(null); }
public void dealInitialPlayerHands(Stack <PlayerCard> shuffledPlayerCards, PlayerManager playerManager, List <PlayerCard> eventCards) { int cardsRequired = playerManager.getInitialHandCount(); List <PlayerCard> initialHandCards = new List <PlayerCard>(); for (int i = 0; i < cardsRequired; i++) { PlayerCard drawn = shuffledPlayerCards.Pop(); initialHandCards.Add(drawn); if (drawn.getColour() == Vals.Colour.EVENT) { eventCards.Add(drawn); } } playerManager.setInitialHands(initialHandCards); }
public IEnumerator playerDraw(Player curPlayer, PlayerCard card1, PlayerCard card2) { playerCard1.SetActive(true); playerCard2.SetActive(true); yield return(StartCoroutine(moveAndFlipCard(playerCard1.transform, mapCentreLeft, playerCardFaces[(int)card1.getColour()], new Vector3(1.5f, 1.5f, 1.5f)))); playerCard1Title.text = card1.getName(); yield return(StartCoroutine(moveAndFlipCard(playerCard2.transform, mapCentreRight, playerCardFaces[(int)card2.getColour()], new Vector3(1.5f, 1.5f, 1.5f)))); playerCard2Title.text = card2.getName(); yield return(new WaitForSeconds(Vals.GENERIC_WAIT_TIME)); if (card1.getName().Equals("Epidemic")) { yield return(StartCoroutine(moveAndShrinkCard(playerCard1.transform, playerDiscardCentre))); } else { yield return(StartCoroutine(moveAndShrinkCard(playerCard1.transform, handCentres[curPlayer.getTurnOrderPos() - 1]))); } if (card2.getName().Equals("Epidemic")) { yield return(StartCoroutine(moveAndShrinkCard(playerCard2.transform, playerDiscardCentre))); } else { yield return(StartCoroutine(moveAndShrinkCard(playerCard2.transform, handCentres[curPlayer.getTurnOrderPos() - 1]))); } resetPosition(playerCard1, playerDeck.transform, playerCardBack, playerCard1Title); resetPosition(playerCard2, playerDeck.transform, playerCardBack, playerCard2Title); yield break; }