private void Activate() { // should be set at start or there will be an // infinite loop _isActivated.Value = true; foreach (var modifier in _modifierFactories.Select(factory => factory())) { var p = new ModifierParameters { IsStatic = true, SourceCard = OwningCard }; var lifetime = new ManualLifetime(); modifier.AddLifetime(lifetime); _lifetimes.Add(lifetime); if (modifier is IGameModifier) { Game.AddModifier((IGameModifier)modifier, p); continue; } if (modifier is ICardModifier) { OwningCard.AddModifier((ICardModifier)modifier, p); continue; } if (modifier is IPlayerModifier) { OwningCard.Controller.AddModifier((IPlayerModifier)modifier, p); continue; } } }
public void Enable() { foreach (var modifier in _modifierFactories.Select(factory => factory())) { var p = new ModifierParameters { IsStatic = true, SourceCard = OwningCard }; var lifetime = new ManualLifetime(); modifier.AddLifetime(lifetime); _lifetimes.Add(lifetime); if (modifier is IGameModifier) { Game.AddModifier((IGameModifier)modifier, p); continue; } if (modifier is ICardModifier) { OwningCard.AddModifier((ICardModifier)modifier, p); continue; } if (modifier is IPlayerModifier) { OwningCard.Controller.AddModifier((IPlayerModifier)modifier, p); continue; } } _isEnabled.Value = true; }