示例#1
0
        public void RemoveModifier(string name)
        {
            foreach (int k in Modifiers.Keys)
            {
                int i = 0;
                while (i < Modifiers[k].Count)
                {
                    IStatModifier mod = Modifiers[k][i];
                    if (mod.Name == name)
                    {
                        Modifiers[k].RemoveAt(i);
                        continue; // don't increment i
                    }
                    i++;
                }
            }

            // now do cleanup: if any modifier list is empty, remove it and its priority
            int o = 0;

            while (o < Modifiers.Keys.Count)
            {
                int k = Modifiers.Keys.ElementAt(o);
                if (Modifiers[k].Count <= 0)
                {
                    Modifiers.Remove(k);
                    OrderedModifierKeys.Remove(k);
                    continue; // don't increment o
                }
                o++;
            }
        }
示例#2
0
        public void AddModifier(IStatModifier mod)
        {
            int priority = mod.Priority;

            if (!OrderedModifierKeys.Contains(priority))
            {
                // if this priority doesn't exist yet, create it
                // we must add the new key in order of highest to lowest
                int i = 0;
                while (i < OrderedModifierKeys.Count)
                {
                    if (OrderedModifierKeys[i] < priority)
                    {
                        OrderedModifierKeys.Insert(i, priority);
                        break;
                    }
                    i++;
                }
                if (i >= OrderedModifierKeys.Count)
                {
                    OrderedModifierKeys.Add(priority);
                }
                Modifiers.Add(priority, new List <IStatModifier>()
                {
                    mod
                });
            }
            else
            {
                // if priority already exists, just add it to the existing list
                Modifiers[priority].Add(mod);
            }
        }
示例#3
0
 public Item(Guid id, IItemInfo info, IStatModifier modifier, ItemQualityCode quality, int count)
 {
     this.ID       = id;
     this.Count    = count;
     this.Info     = info;
     this.Modifier = modifier;
     this.Quality  = quality;
 }
示例#4
0
文件: BaseStat.cs 项目: afmorris/Alix
        private bool IsAdditionModifier(IStatModifier modifier)
        {
            // TODO: Actually implement this.
            if (modifier.Id % 2 == 0)
            {
                return(true);
            }

            return(false);
        }
示例#5
0
    public void AddModifier(Stat stat, IStatModifier modifier)
    {
        _stats[(int)stat].AddModifier(modifier);

        int value = 0;

        modifier.ApplyModification(ref value);

        _statBuffEvent.TriggerEvent(gameObject.GetInstanceID(), new StatBuffDetails(value, stat, _stats[(int)stat].BuffedValue));
    }
示例#6
0
文件: BaseStat.cs 项目: afmorris/Alix
 public void RemoveModifier(IStatModifier modifier)
 {
     if (this.IsAdditionModifier(modifier))
     {
         this.AdditionModifiers.Remove(modifier);
     }
     else
     {
         this.MultiplyModifiers.Remove(modifier);
     }
 }
示例#7
0
 public void AddStatMod(IStatModifier modifier)
 {
     foreach (StatModifier mod in modifier.StatModifiers)
     {
         foreach (KeyValuePair <Stat, StatData> stat in Stats)
         {
             if (mod.StatType == stat.Key)
             {
                 stat.Value.AddModifier(mod);
             }
         }
     }
 }
示例#8
0
文件: BaseStat.cs 项目: afmorris/Alix
        public void AddModifier(IStatModifier modifier)
        {
            if (this.IsAdditionModifier(modifier))
            {
                if (this.AdditionModifiers.Contains(modifier))
                {
                    this.RemoveModifier(modifier);
                }

                this.AdditionModifiers.Add(modifier);
            }
            else
            {
                if (this.MultiplyModifiers.Contains(modifier))
                {
                    this.RemoveModifier(modifier);
                }

                this.MultiplyModifiers.Add(modifier);
            }
        }
示例#9
0
 public Effect(IEffectInfo info, IStatModifier modifier, float duration)
 {
     this.Info     = info;
     this.Modifier = new StatModifier();
     this.Duration = duration;
 }
示例#10
0
 public bool Equals(IStatModifier other)
 {
     return(this.Id.Equals(other.Id));
 }
示例#11
0
 public int CompareTo(IStatModifier other)
 {
     return(this.Id.CompareTo(other.Id));
 }
示例#12
0
 public int Compare(IStatModifier <T> x, IStatModifier <T> y)
 {
     return(x.Order.CompareTo(y.Order));
 }
示例#13
0
 public void RemoveModifier(Stat stat, IStatModifier modifier)
 {
     _stats[(int)stat].RemoveModifier(modifier);
     _statBuffEvent.TriggerEvent(gameObject.GetInstanceID(), new StatBuffDetails(0, stat, _stats[(int)stat].BuffedValue));
 }
示例#14
0
 public void RemoveModifier(IStatModifier modifier)
 {
     _modifiers.Remove(modifier);
 }
示例#15
0
 public void AddModifier(IStatModifier modifier)
 {
     _modifiers.Add(modifier);
 }