Exemple #1
0
        /// <summary>
        /// 移除一个属性
        /// </summary>
        /// <param name="id"></param>
        public new void Remove(uint id)
        {
            IActorAttribute attr;

            if (TryGetValue(id, out attr))
            {
                DefaultActorAttribute default_attr = attr as DefaultActorAttribute;
                if (Score < default_attr.Score)
                {
                    Score = 0;
                }
                else
                {
                    Score -= default_attr.Score;
                }

                base.Remove(id);
            }
        }
Exemple #2
0
        /// <summary>
        /// 设置/获取对应的属性字段
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public new IActorAttribute this[uint key]
        {
            get
            {
                IActorAttribute result;
                if (TryGetValue(key, out result))
                {
                    return(result);
                }

                result    = new DefaultActorAttribute(key, 0);
                base[key] = result;
                return(result);
            }
            set
            {
                base[key] = value;
            }
        }
Exemple #3
0
        /// <summary>
        /// 添加一个属性
        /// </summary>
        /// <param name="id"></param>
        /// <param name="value"></param>
        /// <param name="bMerge"> 相同id的属性是否合并 </param>
        public void Add(uint id, long value, bool bMerge = true)
        {
            IActorAttribute attr;

            if (TryGetValue(id, out attr) == false || bMerge == false)
            {
                attr = new DefaultActorAttribute(id, value);
                DefaultActorAttribute default_attr = attr as DefaultActorAttribute;
                Score += default_attr.Score;

                base.Add(id, attr);
            }
            else
            {
                DefaultActorAttribute default_attr = attr as DefaultActorAttribute;
                var score = default_attr.Score;
                default_attr.Value = default_attr.Value + value;
                Score += default_attr.Score - score;
            }
        }