private static void RevertEffects(MonsterCard attacker, MonsterCard defender, AttributeTriggers trigger) { foreach (ICardAttributeRevertableVariable attackerAttribute in attacker.Attributes.Where(x => x.TriggerAttributeOn == trigger && x is ICardAttributeRevertableVariable)) { IVariableParameter parameter = attackerAttribute switch { ICardAttributeAffectVariable <SelfCardParameter> => new SelfCardParameter(attacker), ICardAttributeAffectVariable <DoubleCardParameter> => new DoubleCardParameter(attacker, defender) }; attackerAttribute.Revert(parameter); } }
private static void CalculateEffects(MonsterCard attacker, MonsterCard defender, AttributeTriggers trigger, CombatResult dei = null) { foreach (ICardAttributeAffectVariable attackerAttribute in attacker.Attributes.Where(x => x.TriggerAttributeOn == trigger)) { IVariableParameter parameter = attackerAttribute switch { ICardAttributeAffectVariable <SelfCardParameter> => new SelfCardParameter(attacker), ICardAttributeAffectVariable <DoubleCardParameter> => new DoubleCardParameter(attacker, defender), ICardAttributeAffectVariable <DuringCardParameter> => new DuringCardParameter(attacker, dei), }; attackerAttribute.Affect(parameter); } }