public IEnumerator drawPhase() { List <PlayerCard> drawnCards = new List <PlayerCard>(); try { drawnCards.Add(playerDeck.Pop()); drawnCards.Add(playerDeck.Pop()); } catch (InvalidOperationException) { gameFlowManager.gameOver(Vals.GAME_OVER_CARDS); } boardUI.setPlayerDeckCount(playerDeck.Count); yield return(StartCoroutine(cardUI.playerDraw(playerManager.getCurPlayer(), drawnCards[0], drawnCards[1]))); foreach (PlayerCard drawn in drawnCards) { Debug.Log("Player draws " + drawn.getName()); if (drawn.getId() == Vals.EPIDEMIC) { // Increase Step infectionRateTrackIndex++; boardUI.advanceInfectionRateTrack(); // Infect Step InfectionCard epidemicDrawn = epidemicInfectionCards.Pop(); Location loc = epidemicDrawn.getLocation(); infectionDiscardPile.Add(epidemicDrawn); yield return(StartCoroutine(cardUI.infectionDraw(loc.getName(), loc.getColour()))); if (diseaseStatus[(int)loc.getColour()] < Vals.DISEASE_ERADICATED) { for (int j = 0; j < Vals.CUBES_PER_EPIDEMIC_INFECT; j++) { yield return(StartCoroutine(addCube(loc, loc.getColour()))); } } outbreakCitiesThisMove.Clear(); //Intensify Step Utils.ShuffleAndPlaceOnTop(infectionDiscardPile, infectionDeck); } else { if (drawn.getColour() == Vals.Colour.EVENT) { availableEventCards.Add(drawn); Debug.Log("Event drawn"); } playerManager.drawPhaseAdd(drawn); } } yield return(StartCoroutine(playerManager.checkHandLimit(playerManager.getCurPlayer()))); }
public IEnumerator infectionPhase() { for (int i = 0; i < infectionRateTrack[infectionRateTrackIndex]; i++) { InfectionCard drawn = infectionDeck.Pop(); Debug.Log("Infection: " + drawn.getName()); Location loc = drawn.getLocation(); infectionDiscardPile.Add(drawn); yield return(StartCoroutine(cardUI.infectionDraw(drawn.getName(), loc.getColour()))); if (diseaseStatus[(int)loc.getColour()] < Vals.DISEASE_ERADICATED) { yield return(StartCoroutine(addCube(loc, loc.getColour()))); } outbreakCitiesThisMove.Clear(); } }
public IEnumerator infectCities() { for (int i = Vals.INITIAL_INFECTION_ROUNDS; i > 0; i--) { for (int j = 0; j < Vals.CARDS_PER_INITIAL_INFECTION_ROUND; j++) { InfectionCard drawn = infectionDeck.Pop(); Location loc = drawn.getLocation(); infectionDiscardPile.Add(drawn); yield return(StartCoroutine(cardUI.infectionDraw(drawn.getName(), loc.getColour()))); Debug.Log("Initial infection in " + drawn.getName()); for (int k = 0; k < i; k++) { yield return(StartCoroutine(addCube(loc, loc.getColour()))); } } } }