/// <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); } }
/// <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; } }
/// <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; } }