Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }