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(); }
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; } } } }
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(); }
public void ResolveAbilityAction(Player caster, Card card, AbilityAction action) { action.Ability.Execute(this, card); }
public virtual void PromptPlayerTargetRequired(AbilityAction action) { //Prompt?.Invoke(this, action.Ability.Prompt); }