ClassifiedEffectContainer GetContainer(int category_id) { ClassifiedEffectContainer container; if (!m_effects_by_class.TryGetValue(category_id, out container)) { EffectCategoryData category = EffectSystem.Instance.GetCategory(category_id); if (category == null) { return(null); } container = new ClassifiedEffectContainer(this, category); m_effects_by_class[category_id] = container; } return(container); }
public void RemoveEffect(int effect_id) { Effect effect; if (!m_effects_by_id.TryGetValue(effect_id, out effect)) { return; } EffectDefinitionComponent definition_cmp = effect.GetDefinitionComponent(); ClassifiedEffectContainer container = GetContainer(definition_cmp.Category); if (container == null) { return; } container.RemoveEffect(effect); m_effects_by_id.Remove(effect_id); }
public bool AddEffect(Effect effect) { if (!CanAddEffect()) { return(false); } EffectDefinitionComponent definition_cmp = effect.GetDefinitionComponent(); ClassifiedEffectContainer container = GetContainer(definition_cmp.Category); if (container == null) { return(false); } if (!container.AddEffect(effect)) { return(false); } m_effects_by_id[effect.ID] = effect; return(true); }