示例#1
0
 /// <summary>
 /// 不要频繁调用,开销较大
 /// </summary>
 /// <param name="_base_value"></param>
 public void SetBaseValue(IGameValue _base_value)
 {
     if (_base_value.Equals(this))
     {
         throw new StackOverflowException("Do not set Modifier itself as base value!");
     }
     base_value.NoLongerReferredBy(this);
     base_value = _base_value;
     base_value.BeReferredBy(this);
     NeedReCalculate();
 }
示例#2
0
 public void SetPartnerValue(IGameValue _partner_value)
 {
     if (_partner_value.Equals(this))
     {
         throw new StackOverflowException("Do not set Modifier itself as partner value!");
     }
     partner_value.NoLongerReferredBy(this);
     partner_value = _partner_value;
     partner_value.BeReferredBy(this);
     NeedReCalculate();;
 }
示例#3
0
        public Modifier(IGameValue _base_value, IGameValue _partner_value, ModOps _mod_ops)
        {
            be_referred = new HashSet <WeakReference <IGameValue> >(new WeakRefComparer <IGameValue>());
            need_re_cal = false;

            base_value = _base_value;
            base_value.BeReferredBy(this);
            partner_value = _partner_value;
            partner_value.BeReferredBy(this);
            mod_op = _mod_ops;
            Calculate();
        }