public Card(CardParameters p) { Name = p.Name; ManaCost = p.ManaCost; OverrideScore = p.OverrideScore; Text = p.Text; FlavorText = p.FlavorText; Illustration = p.Illustration; MayChooseNotToUntap = p.MayChooseToUntap; MinimalBlockerCount = p.MinimalBlockerCount; ProducableManaColors = p.ManaColorsThisCardCanProduce; _strenght = new Strenght(p.Power, p.Toughness); _level = new Level(p.IsLeveler ? 0 : (int?)null); _counters = new Counters(_strenght); _type = new CardTypeCharacteristic(p.Type); _colors = new CardColors(p.Colors); _protections = new Protections(p.ProtectionsFromColors, p.ProtectionsFromTypes); _simpleAbilities = new SimpleAbilities(p.SimpleAbilities); _triggeredAbilities = new TriggeredAbilities(p.TriggeredAbilities); _activatedAbilities = new ActivatedAbilities(p.ActivatedAbilities); _staticAbilities = new StaticAbilities(p.StaticAbilities); _castRules = new CastRules(p.CastInstructions); _combatRules = new CombatRules(p.CombatRules); _continuousEffects = new ContiniousEffects(p.ContinuousEffects); JoinedBattlefield = new TrackableEvent(this); LeftBattlefield = new TrackableEvent(this); }
public Card(CardParameters p) { Name = p.Name; ManaCost = p.ManaCost; OverrideScore = p.OverrideScore; Text = p.Text; FlavorText = p.FlavorText; Illustration = p.Illustration; MayChooseNotToUntap = p.MayChooseToUntap; MinimalBlockerCount = p.MinimalBlockerCount; ProducableManaColors = p.ManaColorsThisCardCanProduce; _strenght = new Strenght(p.Power, p.Toughness); _level = new Level(p.IsLeveler ? 0 : (int?) null); _counters = new Counters(_strenght); _type = new CardTypeCharacteristic(p.Type); _colors = new CardColors(p.Colors); _protections = new Protections(p.ProtectionsFromColors, p.ProtectionsFromTypes); _simpleAbilities = new SimpleAbilities(p.SimpleAbilities); _triggeredAbilities = new TriggeredAbilities(p.TriggeredAbilities); _activatedAbilities = new ActivatedAbilities(p.ActivatedAbilities); _staticAbilities = new StaticAbilities(p.StaticAbilities); _castRules = new CastRules(p.CastInstructions); _combatRules = new CombatRules(p.CombatRules); _continuousEffects = new ContiniousEffects(p.ContinuousEffects); JoinedBattlefield = new TrackableEvent(this); LeftBattlefield = new TrackableEvent(this); }
private CastRule.Parameters GetDefaultCastInstructionParameters(CardParameters cp) { return(new CastRule.Parameters { Cost = new PayMana(cp.ManaCost ?? Mana.Zero, cp.HasXInCost), Text = string.Format("Cast {0}.", cp.Name), Effect = () => new CastPermanent(), }); }
private int GetDefaultManaSourcePriority(CardParameters cp) { if (cp.Type.Creature) { return(ManaSourcePriorities.Creature); } if (cp.Type.Land) { return(ManaSourcePriorities.Land); } return(ManaSourcePriorities.Land); }
private static void SetDefaultTimingRules(CardParameters cp, CastRule.Parameters p) { if (cp.Type.Creature) { p.TimingRule(new DefaultCreaturesTimingRule()); } else if (cp.Type.Land) { p.TimingRule(new DefaultLandsTimingRule()); } else if (cp.Type.Artifact) { p.TimingRule(new OnFirstMain()); } }
public CardParameters CreateCardParameters() { var p = new CardParameters(this); foreach (var action in _init) { action(p); } if (p.Colors.Count == 0) { p.Colors.AddRange(GetCardColorsFromManaCost(p.ManaCost)); } if (p.CastInstructions.Count == 0) { var castParams = GetDefaultCastInstructionParameters(p); SetDefaultTimingRules(p, castParams); p.CastInstructions.Add(new CastRule(castParams)); } return(p); }
public Card CreateCard() { var p = new CardParameters(); foreach (var action in _init) { action(p); } if (p.Colors.Count == 0) { p.Colors.AddRange(GetCardColorsFromManaCost(p.ManaCost)); } if (p.CastInstructions.Count == 0) { var castParams = GetDefaultCastInstructionParameters(p); SetDefaultTimingRules(p, castParams); p.CastInstructions.Add(new CastRule(castParams)); } return new Card(p); }
private int GetDefaultManaSourcePriority(CardParameters cp) { if (cp.Type.Creature) return ManaSourcePriorities.Creature; if (cp.Type.Land) return ManaSourcePriorities.Land; return ManaSourcePriorities.Land; }
private CastRule.Parameters GetDefaultCastInstructionParameters(CardParameters cp) { return new CastRule.Parameters { Cost = new PayMana(cp.ManaCost ?? Mana.Zero, ManaUsage.Spells, cp.HasXInCost), Text = string.Format("Cast {0}.", cp.Name), Effect = () => new PutIntoPlay(), }; }
public CardBase(CardParameters cardParameters) { _parameters = new Characteristic <CardParameters>(cardParameters); }