public ModifierType[] GetModifiersOn <ModifierType>(IModifiable modifiable) where ModifierType : class, IModifier { ModifierMap modifiers = FindOrCreateModifierDictionary(modifiable); ModifierList modifierList = FindOrCreateModifierList(modifiers, typeof(ModifierType)); return(Convert <ModifierType>(modifierList)); }
public void Remove(IModifiable modifiable, IModifier modifier) { ModifierMap modifiers = FindOrCreateModifierDictionary(modifiable); List <IModifier> modifierList = FindOrCreateModifierList(modifiers, modifier.ModifierType); modifierList.Remove(modifier); }
public void AddModifier(StatModifier mod) { // Add the mod to the list of modifiers for this stat ModifierMap modMap = null; if (!Modifiers.TryGetValue(mod.statName, out modMap)) { Modifiers[mod.statName] = new ModifierMap(); } HashSet <StatModifier> modSet; if (!Modifiers[mod.statName].TryGetValue(mod.type, out modSet)) { Modifiers[mod.statName][mod.type] = new HashSet <StatModifier>(); } Modifiers[mod.statName][mod.type].Add(mod); // Add the mod stat as a dependant of the mod source if (mod.modSourceStat != null) { List <string> depList; if (!Dependants.TryGetValue(mod.modSourceStat, out depList)) { Dependants[mod.modSourceStat] = new List <string>(); } Dependants[mod.modSourceStat].Add(mod.statName); } UpdateModifiedValue(mod.statName); OnPropertyChange("ModifiedValues"); }
public ModifierType[] GetModifiersOn <ModifierType>(IModifiable modifiable) where ModifierType : IModifier { ModifierMap modifiers = FindOrCreateModifierDictionary(modifiable); List <ModifierType> modifierList = FindOrCreateModifierList(modifiers, typeof(ModifierType)) as List <ModifierType>; return(modifierList.ToArray()); }
ModifierList FindOrCreateModifierList(ModifierMap modifiers, System.Type modifierType) { ModifierList modifierList; if (!modifiers.TryGetValue(modifierType, out modifierList)) { modifierList = new ModifierList(); modifiers.Add(modifierType, modifierList); } return(modifierList); }
ModifierMap FindOrCreateModifierDictionary(IModifiable modifiable) { ModifierMap modifiers; if (!activeModifications.TryGetValue(modifiable, out modifiers)) { modifiers = new ModifierMap(); activeModifications.Add(modifiable, modifiers); } return(modifiers); }
public IModifier[] GetModifiersOn(IModifiable modifiable) { ModifierMap modifiers = FindOrCreateModifierDictionary(modifiable); List <IModifier> modifierList = new List <IModifier>(); foreach (var modifierTypeList in modifiers) { modifierList.AddRange(modifierTypeList.Value); } return(modifierList.ToArray()); }
public void RemoveAll(IModifiable modifiable) { ModifierMap modifiers = FindOrCreateModifierDictionary(modifiable); modifiers.Clear(); }