示例#1
0
        public void SubmitTarget(Card card)
        {
            AbilityAction action = TargetedAbilities.Peek();

            action.AddTarget(card);

            if (action.Ability.NumTargets == action.Targets.Count)
            {
                //Set the ability targets to the stored targets and POP IT
                action.Ability.Targets = action.Targets;
                TargetedAbilities.Pop();

                clearHighlights();
            }
            ContinueGame();
        }
示例#2
0
        public void HighlightValidTargets(AbilityAction action)
        {
            clearHighlights();
            validTargets.Clear();

            foreach (Player player in TurnOrder)
            {
                if (action.Ability.IsValidTarget(action.Card, player.PlayerCard))
                {
                    player.PlayerCard.IsValidTarget = true;
                }

                foreach (Card card in player.Field)
                {
                    if (action.Ability.IsValidTarget(action.Card, card))
                    {
                        card.IsValidTarget = true;
                    }
                }
            }
        }
示例#3
0
        public void ResolveStateAction(StateAction action)
        {
            ActionResolved?.Invoke(action);

            if (action is CardCastAction)
            {
                CardCastAction castAction = (CardCastAction)action;
                ResolveCardCastAction(castAction.Caster, castAction.Card);
            }
            else if (action is AbilityAction)
            {
                AbilityAction effectAction = (AbilityAction)action;
                ResolveAbilityAction(effectAction.Caster, effectAction.Card, effectAction);
            }
            else if (action is PhaseAction)
            {
                PhaseAction phaseAction = (PhaseAction)action;
                ResolvePhaseAction(phaseAction.Phase);
            }

            UpdateGameState();
        }
示例#4
0
 public void ResolveAbilityAction(Player caster, Card card, AbilityAction action)
 {
     action.Ability.Execute(this, card);
 }
示例#5
0
 public virtual void PromptPlayerTargetRequired(AbilityAction action)
 {
     //Prompt?.Invoke(this, action.Ability.Prompt);
 }