private IEnumerator ResolveBattle(List <Card> opUnit, List <Card> plUnit, bool ignoreWizards) { uiUnitScores.UpdateScores(opUnit, plUnit); yield return(new WaitForSeconds(1f)); BattleOutcome outcome = BattleResolver.GetBattleOutcome(opUnit, plUnit, ignoreWizards); switch (outcome) { case BattleOutcome.PlayerWins: ShowMessage("Player wins!", 2.0f); Player.numberOfWins++; numRoundsBattled++; OnBattleResolved?.Invoke(outcome); yield return(new WaitForSeconds(2.0f)); StartCoroutine(RemoveCardsFromField(opUnit, plUnit)); ContinueToNextTurn(); break; case BattleOutcome.OpponentWins: ShowMessage("Opponent wins!", 2.0f); Opponent.numberOfWins++; numRoundsBattled++; OnBattleResolved?.Invoke(outcome); yield return(new WaitForSeconds(2.0f)); StartCoroutine(RemoveCardsFromField(opUnit, plUnit)); ContinueToNextTurn(); break; case BattleOutcome.SwapUnitsOnce: SwapUnits(opUnit, plUnit, 0.5f); yield return(new WaitForSeconds(0.5f)); StartCoroutine(ResolveBattle(plUnit, opUnit, true)); break; case BattleOutcome.SwapUnitsTwice: SwapUnits(opUnit, plUnit, 0.5f); yield return(new WaitForSeconds(0.5f)); SwapUnits(plUnit, opUnit, 0.5f); yield return(new WaitForSeconds(0.5f)); StartCoroutine(ResolveBattle(plUnit, opUnit, true)); break; case BattleOutcome.Draw: ShowMessage("Draw!", 2.0f); numRoundsBattled++; OnBattleResolved?.Invoke(outcome); yield return(new WaitForSeconds(2.0f)); StartCoroutine(RemoveCardsFromField(opUnit, plUnit)); ContinueToNextTurn(); break; } }
public void UpdateScores(List <Card> opUnit, List <Card> plUnit) { opponentScoreText.text = BattleResolver.GetUnitScore(opUnit).ToString(); playerScoreText.text = BattleResolver.GetUnitScore(plUnit).ToString(); }