public virtual void UpdateAttr() { if (mUpdateAttrList.Count == 0) { return; } if (CurHP > FinalRoleValue.MaxHP) { CurHP = FinalRoleValue.MaxHP; OnAttrChanged(eSkillAttrIndex.HP); } if (CurMP > FinalRoleValue.MaxMP) { CurMP = FinalRoleValue.MaxMP; OnAttrChanged(eSkillAttrIndex.MP); } List <AttrStruct> attrs = new List <AttrStruct>(); foreach (var idx in mUpdateAttrList) { if (!IsBroadCastAttr(idx)) { continue; } AttrStruct attr = new AttrStruct(); if (!GetAttrStruct(ref attr, idx)) { continue; } attrs.Add(attr); } mUpdateAttrList.Clear(); if (attrs.Count == 0) { return; } RPC.PackageWriter pkg = new RPC.PackageWriter(); RPC.DataWriter dw = new RPC.DataWriter(); RPC.IAutoSaveAndLoad.DaraWriteList <AttrStruct>(attrs, dw, true); Wuxia.H_RpcRoot.smInstance.HIndex(pkg, this.Id).RPC_UpdateRoleAttr(pkg, dw); HostMap.SendPkg2Clients(null, GetPosition(), pkg); }
/// <summary> /// 获取属性值 /// </summary> public bool GetAttrStruct(ref AttrStruct attr, eSkillAttrIndex idx) { if (idx <= eSkillAttrIndex.None || idx >= eSkillAttrIndex.MAX) { return(false); } attr.attrIdx = (byte)idx; switch (idx) { case eSkillAttrIndex.Level: attr.attrValue = mRoleLevel.ToString(); break; case eSkillAttrIndex.HP: attr.attrValue = CurHP.ToString(); break; case eSkillAttrIndex.MaxHP: case eSkillAttrIndex.MaxHPRate: attr.attrValue = FinalRoleValue.MaxHP.ToString(); break; case eSkillAttrIndex.MP: attr.attrValue = CurMP.ToString(); break; case eSkillAttrIndex.MaxMP: attr.attrValue = FinalRoleValue.MaxMP.ToString(); break; case eSkillAttrIndex.MoveSpeed: attr.attrValue = FinalRoleValue.Speed.ToString(); break; default: return(false); } return(true); }