public void RemoveModifier(ICardModifier modifier) { _modifiers.Remove(modifier); modifier.Dispose(); if (IsPermanent) { Publish(new PermanentModifiedEvent(this, modifier)); } }
public void AddModifier(ICardModifier modifier, ModifierParameters p) { _modifiers.Add(modifier); ActivateModifier(modifier, p); if (IsPermanent) { Publish(new PermanentModifiedEvent(this, modifier)); } }
private void ActivateModifier(ICardModifier modifier, ModifierParameters p) { p.Owner = this; modifier.Initialize(p, Game); foreach (var modifiable in ModifiableProperties) { modifiable.Accept(modifier); } modifier.Activate(); }
public void Accept(ICardModifier modifier) { modifier.Apply(this); }