예제 #1
0
    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;
        }
    }
예제 #2
0
 public void UpdateScores(List <Card> opUnit, List <Card> plUnit)
 {
     opponentScoreText.text = BattleResolver.GetUnitScore(opUnit).ToString();
     playerScoreText.text   = BattleResolver.GetUnitScore(plUnit).ToString();
 }