Пример #1
0
        public void Swap()
        {
            IGameValue temp_value = base_value;

            base_value    = partner_value;
            partner_value = temp_value;
            NeedReCalculate();;
        }
Пример #2
0
 public override float BeReferredBy(IGameValue _game_value)
 {
     if (be_referred.Add(new WeakReference <IGameValue>(_game_value)))
     {
         return(value);
     }
     else
     {
         throw new ArgumentException("The object pointed by weakRef you added has already been in hashset!");
     }
 }
Пример #3
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();
 }
Пример #4
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();;
 }
Пример #5
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();
        }
Пример #6
0
 public RemoveWeakRefOfObj(IGameValue _game_value)
 {
     game_value = _game_value;
 }
Пример #7
0
 public void NoLongerReferredBy(IGameValue _game_value)
 {
     ;
 }
Пример #8
0
 public float BeReferredBy(IGameValue _game_value)
 {
     //无记忆不需要记录自己被引用的情况
     return(value);
 }
Пример #9
0
 public override void NoLongerReferredBy(IGameValue _game_value)
 {
     be_referred.RemoveWhere(new RemoveWeakRefOfObj(_game_value).PredicateFunc);
 }
Пример #10
0
 public abstract void NoLongerReferredBy(IGameValue _game_value);
Пример #11
0
 public abstract float BeReferredBy(IGameValue _game_value);
Пример #12
0
 public override void NoLongerReferredBy(IGameValue _game_value)
 {
     throw new NotImplementedException();
 }
Пример #13
0
 public override float BeReferredBy(IGameValue _game_value)
 {
     be_referred.Add(new WeakReference <IGameValue>(_game_value));
     return(value_cache);
 }