Exemplo n.º 1
0
        public ModifierType[] GetModifiersOn <ModifierType>(IModifiable modifiable) where ModifierType : class, IModifier
        {
            ModifierMap  modifiers    = FindOrCreateModifierDictionary(modifiable);
            ModifierList modifierList = FindOrCreateModifierList(modifiers, typeof(ModifierType));

            return(Convert <ModifierType>(modifierList));
        }
Exemplo n.º 2
0
        public void Remove(IModifiable modifiable, IModifier modifier)
        {
            ModifierMap      modifiers    = FindOrCreateModifierDictionary(modifiable);
            List <IModifier> modifierList = FindOrCreateModifierList(modifiers, modifier.ModifierType);

            modifierList.Remove(modifier);
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 5
0
        ModifierList FindOrCreateModifierList(ModifierMap modifiers, System.Type modifierType)
        {
            ModifierList modifierList;

            if (!modifiers.TryGetValue(modifierType, out modifierList))
            {
                modifierList = new ModifierList();
                modifiers.Add(modifierType, modifierList);
            }

            return(modifierList);
        }
Exemplo n.º 6
0
        ModifierMap FindOrCreateModifierDictionary(IModifiable modifiable)
        {
            ModifierMap modifiers;

            if (!activeModifications.TryGetValue(modifiable, out modifiers))
            {
                modifiers = new ModifierMap();
                activeModifications.Add(modifiable, modifiers);
            }

            return(modifiers);
        }
Exemplo n.º 7
0
        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());
        }
Exemplo n.º 8
0
        public void RemoveAll(IModifiable modifiable)
        {
            ModifierMap modifiers = FindOrCreateModifierDictionary(modifiable);

            modifiers.Clear();
        }