private IEnumerator Evolve(PhaseChangeAction arg)
        {
            List <SelectTurnPhaseDecision> storedResults = new List <SelectTurnPhaseDecision>();
            var select = this.GameController.SelectPhase(DecisionMaker, new List <TurnPhase> {
                new TurnPhase(TurnTaker, Phase.PlayCard, Card), new TurnPhase(TurnTaker, Phase.DrawCard, Card)
            }, SelectionType.PlayExtraCard, storedResults, false, GetCardSource());

            if (UseUnityCoroutines)
            {
                yield return(this.GameController.StartCoroutine(select));
            }
            else
            {
                this.GameController.ExhaustCoroutine(select);
            }
            SelectTurnPhaseDecision stpd = storedResults.FirstOrDefault();
            IncreasePhaseActionCountStatusEffect ipacse = new IncreasePhaseActionCountStatusEffect(1);

            ipacse.ActualToTurnPhaseCriteria.Phase     = stpd.SelectedPhase.Phase;
            ipacse.ActualToTurnPhaseCriteria.TurnTaker = stpd.SelectedTurnTaker;
            ipacse.UntilThisTurnIsOver(Game);
            var status = AddStatusEffect(ipacse);

            if (UseUnityCoroutines)
            {
                yield return(this.GameController.StartCoroutine(status));
            }
            else
            {
                this.GameController.ExhaustCoroutine(status);
            }
        }
Beispiel #2
0
        private IEnumerator StartOfTurnPhaseShiftResponse(PhaseChangeAction pca)
        {
            TurnTaker heroTT = pca.GameController.ActiveTurnTaker;
            HeroTurnTakerController heroTTC = pca.GameController.ActiveTurnTakerController.ToHero();

            List <YesNoCardDecision> storedResults = new List <YesNoCardDecision>();
            IEnumerator routine = base.GameController.MakeYesNoCardDecision(heroTTC, YesNoSelectionType, this.Card,
                                                                            storedResults: storedResults, cardSource: GetCardSource());

            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(routine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(routine);
            }

            if (!base.DidPlayerAnswerYes(storedResults))
            {
                yield break;
            }

            var extraAction = new IncreasePhaseActionCountStatusEffect(1);

            extraAction.UntilThisTurnIsOver(Game);
            extraAction.ToTurnPhaseCriteria.Phase     = PhaseToIncrease;
            extraAction.ToTurnPhaseCriteria.TurnTaker = GameController.ActiveTurnTaker;
            extraAction.CardSource = this.Card;

            routine = AddStatusEffect(extraAction);
            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(routine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(routine);
            }

            var skippedAction = new PreventPhaseActionStatusEffect();

            skippedAction.UntilThisTurnIsOver(Game);
            skippedAction.ToTurnPhaseCriteria.Phase     = PhaseToSkip;
            skippedAction.ToTurnPhaseCriteria.TurnTaker = GameController.ActiveTurnTaker;
            skippedAction.CardSource = this.Card;

            routine = AddStatusEffect(skippedAction);
            if (base.UseUnityCoroutines)
            {
                yield return(base.GameController.StartCoroutine(routine));
            }
            else
            {
                base.GameController.ExhaustCoroutine(routine);
            }
            yield break;
        }