public void AddModifier(BaseModifier modifier) { _allModifiers.Add(modifier); switch (modifier) { case BaseTowerModifier towerModifier: foreach (var tower in Towers.Instances) { towerModifier.AddToTower(tower); } break; case BaseEnemyModifer enemyModifer: foreach (var enemyInstance in Enemies.Instances) { enemyModifer.AddToEnemy(enemyInstance); } break; case BaseEnemyCurrencyModifier enemyCurrencyModifier: foreach (var enemyInstance in Enemies.Instances) { enemyCurrencyModifier.AddToEnemy(enemyInstance); } break; // add more stuff } }
public void RemoveModifier(BaseModifier modifier) { if (_allModifiers.Remove(modifier)) { switch (modifier) { case BaseTowerModifier towerModifier: foreach (var tower in Towers.Instances) { towerModifier.RemoveFromTower(tower); } break; case BaseEnemyModifer enemyModifer: foreach (var enemyInstance in Enemies.Instances) { enemyModifer.RemoveFromEnemy(enemyInstance); } break; case BaseEnemyCurrencyModifier enemyLootModifier: foreach (var enemyInstance in Enemies.Instances) { enemyLootModifier.RemoveFromEnemy(enemyInstance); } break; } } }