Example #1
0
        /// <summary>
        ///     获取宠物PetVo
        /// </summary>
        public static PetVo GetPetVo(PPet pet)
        {
            var petVo = new PetVo();

            SetPetVo(pet, petVo);
            return(petVo);
        }
Example #2
0
        public void OpenViewForNew(uint petId)
        {
            newPet = true;
            Singleton <PetView> .Instance.LoadPet(petId, gameObject.transform, new Vector3(-100, -15, 0));

            SysPet spet = BaseDataMgr.instance.GetDataById <SysPet>(petId);

            name.text = spet.name;
            NGUITools.FindInChild <UISprite>(gameObject, "info/gradeicn").spriteName = "hslv";
            gameObject.SetActive(true);
            close = false;
            SetStars((uint)spet.star);

            tips.text = "恭喜您获得新幻兽";
            PPet pet = Singleton <PetMode> .Instance.GetPetByPetId(petId);

            PetVo petVo = Singleton <PetMode> .Instance.PetVos[pet.id];

            NGUITools.FindInChild <UILabel>(gameObject, "info/fightvalue").text = petVo.fight.ToString();
            tipsPlay.PlayReverse();
            if (AfterOpenViewGuideDelegate != null)
            {
                EventDelegate.Add(tipsPlay.onFinished, AfterOpenViewGuideDelegate);
                AfterOpenViewGuideDelegate = null;
            }
        }
Example #3
0
        private void SetStoneInfo()
        {
            SysPet pet = currentPet;

            NGUITools.FindInChild <UILabel>(gameObject, "info/top/name").text = pet.name;
            SysItemVo itemVo = BaseDataMgr.instance.GetDataById <SysItemVo>((uint)currentPet.stone_id);

            NGUITools.FindInChild <UISprite>(gameObject, "info/fb/current/icn").spriteName      = itemVo.icon.ToString();
            NGUITools.FindInChild <UISprite>(gameObject, "info/fb/current/gradeicn").spriteName = "";

            int own = Singleton <GoodsMode> .Instance.GetCountByGoodsId((uint)pet.stone_id);

            PPet p = Singleton <PetMode> .Instance.GetPetByPetId((uint)pet.id);

            int need = 0;

            if (p != null)
            {
                need = PetLogic.GetNeedStone(p.star, true);
            }
            else
            {
                need = PetLogic.GetNeedStone((uint)pet.star, false);
            }
            NGUITools.FindInChild <UILabel>(gameObject, "info/fb/num").text = "(" + own + "/" + need + ")";
        }
Example #4
0
        public void OpenView(uint petId)
        {
            PPet ppet = Singleton <PetMode> .Instance.GetPetByPetId(petId);

            currentPPet = ppet;

            ShowPet();
            gameObject.SetActive(true);
            SetPetInfo();

            if (current == null)
            {
                skill.value = true;
            }

            SetExpItemNumInfo();

            Singleton <PetMode> .Instance.dataUpdated += DataUpdated;
            MeVo.instance.DataUpdated += DataUpdated;
            Singleton <GoodsMode> .Instance.dataUpdated += DataUpdated;

            if (GuideAfterOpenPetInfoView != null)
            {
                GuideAfterOpenPetInfoView();
                GuideAfterOpenPetInfoView = null;
            }
            PetControl.Instance.SendRequestFoSkillPointInfo();
        }
Example #5
0
        private void SetSkillInfo(uint[] pskill, PPet pet, int num)
        {
            if (pskill != null)
            {
                NGUITools.FindInChild <UILabel>(skillObjs[num - 1], "level").text = "Lv." + pskill[1];
                UIUtils.ChangeNormalShader(NGUITools.FindInChild <UISprite>(skillObjs[num - 1], "skillicn"), 20);
                var add = NGUITools.FindChild(skillObjs[num - 1], "add");
                if (add == null)
                {
                    return;
                }
                add.SetActive(true);
                int cost = PetLogic.GetSkillSpend((int)pskill[1], num);
                NGUITools.FindInChild <UILabel>(skillObjs[num - 1], "add/costvalue").text = cost.ToString();
                if (pskill[1] >= pet.lvl)
                {
                    NGUITools.FindInChild <UISprite>(skillObjs[num - 1], "add/background").spriteName = "jiah";
                    NGUITools.FindInChild <BoxCollider>(skillObjs[num - 1], "add").enabled            = false;
                }
                else
                {
                    NGUITools.FindInChild <UISprite>(skillObjs[num - 1], "add/background").spriteName = "jia";
                    NGUITools.FindInChild <BoxCollider>(skillObjs[num - 1], "add").enabled            = true;
                    NGUITools.FindInChild <Button>(skillObjs[num - 1], "add").onClick = OnSkillUpgradeClick;
                    if (cost > MeVo.instance.diam)
                    {
                        NGUITools.FindInChild <UILabel>(skillObjs[num - 1], "add/costvalue").color = ColorConst.FONT_RED;
                    }
                    else
                    {
                        NGUITools.FindInChild <UILabel>(skillObjs[num - 1], "add/costvalue").color =
                            ColorConst.FONT_YELLOW;
                    }
                }
            }
            else
            {
                if (num == 1)
                {
                    NGUITools.FindInChild <UILabel>(skillObjs[num - 1], "level").text = "(进阶到绿色开启)";
                }
                else if (num == 2)
                {
                    NGUITools.FindInChild <UILabel>(skillObjs[num - 1], "level").text = "(进阶到蓝色开启)";
                }
                else if (num == 3)
                {
                    NGUITools.FindInChild <UILabel>(skillObjs[num - 1], "level").text = "(进阶到紫色开启)";
                }
                else
                {
                    NGUITools.FindInChild <UILabel>(skillObjs[num - 1], "level").text = "(进阶到橙色开启)";
                }

                UIUtils.ChangeGrayShader(NGUITools.FindInChild <UISprite>(skillObjs[num - 1], "skillicn"), 21);

                NGUITools.FindChild(skillObjs[num - 1], "add").SetActive(false);
            }
        }
Example #6
0
 /// <summary>
 ///     计算属性基础加成
 /// </summary>
 public static void CupBaseProperties(PPet pet, PetVo vo)
 {
     vo.Hp      = CupBaseProperty(pet, vo.SysPet.hp);
     vo.CurHp   = vo.Hp;
     vo.AttPMax = CupBaseProperty(pet, vo.SysPet.att_max);
     vo.DefP    = CupBaseProperty(pet, vo.SysPet.def_p);
     vo.DefM    = CupBaseProperty(pet, vo.SysPet.def_m);
 }
Example #7
0
 private void OnCloseClick(GameObject obj)
 {
     currentPPet = null;
     Singleton <PetMode> .Instance.dataUpdated -= DataUpdated;
     MeVo.instance.DataUpdated -= DataUpdated;
     Singleton <GoodsMode> .Instance.dataUpdated -= DataUpdated;
     gameObject.SetActive(false);
 }
Example #8
0
        /// <summary>
        /// 查看宠物装备情况
        /// 0不存在,1存在可装备,2存在不可装备,3可合成可装备,4可合成不可装备,>4已装备的id
        /// </summary>
        /// <param name="petId"></param>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int CheckEquip(uint petId, int num)
        {
            PPet pet = Singleton <PetMode> .Instance.GetPetByPetId(petId);

            //需要的装备id
            int need = GetNeedEquip(petId, num);

            //检查是否已经装备
            if (Singleton <PetMode> .Instance.GetPetEquipByPos(pet.id, (uint)num) == need)
            {
                //已装备
                return(need);
            }
            else
            {
                SysEquipVo equipVo = BaseDataMgr.instance.GetDataById <SysEquipVo>((uint)need);
                int        ownNum  = Singleton <GoodsMode> .Instance.GetCountByGoodsId((uint)need);

                string l = equipVo.lvl.Replace("[", "");
                l = l.Replace("]", "");

                int needlvl = 0;
                if (l.Length > 0)
                {
                    needlvl = int.Parse(l);
                }

                if (ownNum > 0)
                {
                    if (needlvl > pet.lvl)
                    {
                        return(2);
                    }
                    else
                    {
                        //存在可装备
                        return(1);
                    }
                }
                else
                {
                    int cnum = CanCombine((uint)equipVo.id);
                    if (cnum > 0)
                    {
                        if (needlvl > pet.lvl)
                        {
                            return(4);
                        }
                        else
                        {
                            //可合成可装备
                            return(3);
                        }
                    }
                }
            }
            return(0);
        }
Example #9
0
        /// <summary>
        ///     计算基础属性
        /// </summary>
        private static uint CupBaseProperty(PPet pet, string des)
        {
            string[]          values   = des.Substring(1, des.Length - 2).Split(',');
            uint              init     = uint.Parse(values[0]);
            uint              levelAdd = uint.Parse(values[1]);
            SysPetEvolutionVo starVo   = BaseDataMgr.instance.GetDataById <SysPetEvolutionVo>((uint)pet.star);
            float             result   = (init + levelAdd * (pet.lvl - 1)) * starVo.grow / 10000f;

            return((uint)result);
        }
Example #10
0
 /// <summary>
 ///     设置宠物PetVo
 /// </summary>
 public static void SetPetVo(PPet pet, PetVo vo)
 {
     vo.Id      = pet.id;
     vo.petId   = pet.petId;
     vo.SkillId = (uint)vo.SysPet.unique_skill + pet.star - 1;
     CupBaseProperties(pet, vo);                //基础属性
     EquipLogic.CupPetEquipProperties(pet, vo); //装备和阶属性
     CupSkillProperties(pet, vo);               //技能属性
     vo.fight = GetFight(vo);
 }
Example #11
0
        public static int GetNeedEquip(uint petId, int num)
        {
            PPet pet = Singleton <PetMode> .Instance.GetPetByPetId(petId);

            SysPet spet = BaseDataMgr.instance.GetDataById <SysPet>(petId);

            //需要的装备id
            int need = PetEquipConfig[spet.type - 1][pet.grade - 1][num - 1];

            return(need);
        }
Example #12
0
 //是否可以进阶
 public static bool CanUpgrade(PPet pet)
 {
     if (pet.grade < 14)
     {
         if (pet.equip.Count >= 12)
         {
             return(true);
         }
     }
     return(false);
 }
Example #13
0
        //是否可以进化
        public static bool CanEvolve(PPet pet)
        {
            if (pet.star < 5)
            {
                SysPet spet = BaseDataMgr.instance.GetDataById <SysPet>(pet.petId);

                int ownStone = Singleton <GoodsMode> .Instance.GetCountByGoodsId((uint)spet.stone_id);

                int needStone = GetNeedStone(pet.star, true);
                return(ownStone >= needStone);
            }
            return(false);
        }
Example #14
0
        /// <summary>
        ///     计算技能加成
        /// </summary>
        private static void CupSkillProperties(PPet pet, PetVo vo)
        {
            for (int i = 1; i <= 4; i++)
            {
                int[]  skillConfig = GetPetSkillInfo((int)pet.petId, i);
                uint[] skill       = Singleton <PetMode> .Instance.GetPetSkill(pet.id, (uint)i);

                if (skill != null)
                {
                    AddSkillProperty(vo, skillConfig, skill[1]);
                }
            }
        }
Example #15
0
        private static BaseRoleVo[] gradeVos = new BaseRoleVo[39]; //14阶装备

        /// <summary>
        /// 计算宠物的装备属性
        /// </summary>
        /// <param name="petid"></param>
        /// <returns></returns>
        public static void CupPetEquipProperties(PPet pet, PetVo petVo)
        {
            //添加当前装备
            for (int i = 0; i < pet.equip.Count;)
            {
                uint       equipId = pet.equip[i + 1];
                SysEquipVo equipVo = BaseDataMgr.instance.GetDataById <SysEquipVo>(equipId);
                AddEquipProperty(petVo, equipVo);
                i = i + 2;
            }
            //添加当前阶的装备

            BaseRoleVo gradeVo = GetGradeProperties((uint)petVo.SysPet.type, pet.grade);

            PetLogic.AddPetALL(petVo, gradeVo);
        }
Example #16
0
        //获得宠物的下标位置
        public int GetPetSkillIndexByPos(uint uid, uint pos)
        {
            PPet pet = GetPetById(uid);

            if (pet != null)
            {
                for (int i = 0; i < pet.skills.Count;)
                {
                    if (pet.skills[i] == pos)
                    {
                        return(i);
                    }
                    i += 2;
                }
            }
            return(-1);
        }
Example #17
0
        //获取装备所在的位置,不存在则返回-1
        public int GetPetEquipByPos(uint uid, uint pos)
        {
            PPet pet = GetPetById(uid);

            if (pet != null)
            {
                for (int i = 0; i < pet.equip.Count;)
                {
                    if (pet.equip[i] == pos)
                    {
                        return((int)pet.equip[i + 1]);
                    }
                    i += 2;
                }
            }
            return(-1);
        }
Example #18
0
        private void SetFightPet()
        {
            PPet pet = GetFightPet();

            if (fightPet != pet)
            {
                fightPet = pet;
                if (fightPet == null)
                {
                    MeVo.instance.PetId = 0;
                }
                else
                {
                    MeVo.instance.PetId = fightPet.petId;
                }
                DataUpdate(FightPet);
            }
        }
Example #19
0
        private void SetPetProperty(PPet pet)
        {
            PetVo             petVo  = Singleton <PetMode> .Instance.PetVos[pet.id];
            SysPetEvolutionVo petEvo = BaseDataMgr.instance.GetDataById <SysPetEvolutionVo>(pet.star);

            NGUITools.FindInChild <UILabel>(propetyObj, "growvalue").text   = (petEvo.grow / 10000f).ToString();
            NGUITools.FindInChild <UILabel>(propetyObj, "hpvalue").text     = petVo.Hp.ToString();
            NGUITools.FindInChild <UILabel>(propetyObj, "attackvalue").text = petVo.AttPMax.ToString();
            NGUITools.FindInChild <UILabel>(propetyObj, "pdvalue").text     = petVo.DefP.ToString();
            NGUITools.FindInChild <UILabel>(propetyObj, "mdvalue").text     = petVo.DefM.ToString();
            NGUITools.FindInChild <UILabel>(propetyObj, "decvalue").text    = petVo.HurtRe.ToString();

            SysPet         spet  = BaseDataMgr.instance.GetDataById <SysPet>(pet.petId);
            SysSkillBaseVo skill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>((uint)spet.unique_skill);

            NGUITools.FindInChild <UILabel>(propetyObj, "des").text             = "天赋技能:" + skill.desc;
            NGUITools.FindInChild <UILabel>(gameObject, "info/fightvalue").text = petVo.fight.ToString();
        }
Example #20
0
        //查询宠物的技能信息
        public uint[] GetPetSkill(uint uid, uint pos)
        {
            PPet pet = GetPetById(uid);

            if (pet != null)
            {
                for (int i = 0; i < pet.skills.Count;)
                {
                    if (pet.skills[i] == pos)
                    {
                        uint[] skill = new uint[2];
                        skill[0] = pos;
                        skill[1] = pet.skills[i + 1];
                        return(skill);
                    }
                    i += 2;
                }
            }
            return(null);
        }
Example #21
0
        public bool OpenViewForStone(uint stoneId, Action callback)
        {
            SysPet spet = PetLogic.GetSysPetByStoneId(stoneId);

            if (spet == null)
            {
                callback();
                return(false);
            }

            PPet pet = Singleton <PetMode> .Instance.GetPetByPetId((uint)spet.id);

            if (pet != null)
            {
                callback();
                return(false);
            }

            int own = Singleton <GoodsMode> .Instance.GetCountByGoodsId(stoneId);

            int need = PetLogic.GetNeedStone((uint)spet.star, false);

            if (own < need)
            {
                callback();
                return(false);
            }

            OpenForStone  = true;
            closeCallBack = callback;
            petId         = spet.id;
            OpenView();

            //隐藏萌宠献礼相关特效
            EffectMgr.Instance.GetUIEffectGameObject(EffectId.UI_PetAnimation).SetActive(false);
            EffectMgr.Instance.GetUIEffectGameObject(EffectId.UI_PetLight).SetActive(false);

            return(true);
        }
Example #22
0
        private void OnPetClick(GameObject obj)
        {
            uint   petId = uint.Parse(obj.name);
            SysPet pet   = BaseDataMgr.instance.GetDataById <SysPet>(petId);

            if (PetLogic.CanOwn(pet))
            {
                Singleton <PetControl> .Instance.ActiveAPet(petId);
            }
            else
            {
                PPet p = Singleton <PetMode> .Instance.GetPetByPetId(petId);

                if (p == null)
                {
                    Singleton <PetStoneTipsView> .Instance.OpenView(petId);
                }
                else
                {
                    Singleton <PetInfoView> .Instance.OpenView(petId);
                }
            }
        }
Example #23
0
        private void OnLeftButtonClick(GameObject obj)
        {
            if (currentEquip != null)
            {
                int need = PetLogic.CheckEquip(petId, equipPos);
                if (need == 1) //可装备
                {
                    PPet pet = Singleton<PetMode>.Instance.GetPetByPetId(petId);

                    uint bagid = 0;
                    foreach (PGoods goods in Singleton<GoodsMode>.Instance.GetEquipListInBag())
                    {
                        if (goods.goodsId == currentEquip.id)
                        {
                            bagid = goods.id;
                            break;
                        }
                    }
                    Singleton<PetControl>.Instance.WearPetEquip(pet.id, equipPos, bagid);
                }
                else if (need == 2) //不可装备
                {
                    MessageManager.Show("需要幻兽等级:" + currentEquip.lvl.Replace("[","").Replace("]",""));
                }else if (need == 3 || need == 4 || need == 0) //合成或者获取途径
                {
                    if (!rightOpen)
                    {
                        OpenRigthPanel();
                    }

                }else if (need > 4)
                {
                    CloseView();
                }
            }
        }
Example #24
0
        public void OpenViewForEvolve(uint uid)
        {
            newPet = false;

            PPet pet = Singleton <PetMode> .Instance.GetPetById(uid);

            Singleton <PetView> .Instance.LoadPet(pet.petId, gameObject.transform, new Vector3(-100, -15, 0));

            NGUITools.FindInChild <UISprite>(gameObject, "info/gradeicn").spriteName = PetLogic.GetGradeIcn(pet.grade);
            SysPet sPet = BaseDataMgr.instance.GetDataById <SysPet>(pet.petId);

            name.text = PetLogic.GetGradeDes(pet.grade, sPet.name);
            tips.text = "您的幻兽进化到了" + pet.star + "星";
            PetVo petVo = Singleton <PetMode> .Instance.PetVos[pet.id];

            NGUITools.FindInChild <UILabel>(gameObject, "info/fightvalue").text = petVo.fight.ToString();

            SetStars(pet.star);
            gameObject.SetActive(true);
            close = false;
            Singleton <PetView> .Instance.PetPlay(Status.Win);

            tipsPlay.PlayReverse();
        }
Example #25
0
        private void SetEquipInfo(uint equipId)
        {
            SysEquipVo equipVo = BaseDataMgr.instance.GetDataById<SysEquipVo>(equipId);
            currentEquip = equipVo;
            if (currentEquip != null)
            {
                equipIcn.spriteName = equipVo.icon.ToString();

                NGUITools.FindInChild<UISprite>(leftObj, "gradeicn").spriteName = "epz_" + equipVo.grade;
                NGUITools.FindInChild<UILabel>(leftObj, "labels/name").text = equipVo.name;
                NGUITools.FindInChild<UILabel>(leftObj, "labels/des").text = equipVo.desc;
                SetEquipProperty(equipVo);
                int num = Singleton<GoodsMode>.Instance.GetCountByGoodsId((uint)equipVo.id);

                NGUITools.FindInChild<UILabel>(leftObj, "labels/numvalue").text = num.ToString();
                if (num == 0)
                {
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/numvalue").color = ColorConst.FONT_RED;
                }
                else
                {
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/numvalue").color = ColorConst.FONT_YELLOW;
                }
                

                int need = PetLogic.CheckEquip(petId, equipPos);
                if (need > 4) //已装备
                {
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").text = "需要幻兽等级: " + equipVo.lvl.Replace("[","").Replace("]","");
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").color = ColorConst.FONT_YELLOW;
                    NGUITools.FindInChild<UILabel>(leftObj, "button/name").text = "确认";
                }
                else if (need == 1) //可装备
                {
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").text = "装备后将与幻兽绑定";
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").color = ColorConst.FONT_YELLOW;
                    NGUITools.FindInChild<UILabel>(leftObj, "button/name").text = "装备";
                }else if (need == 2) //存在不可装备
                {
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").text = "需要幻兽等级: " + equipVo.lvl.Replace("[", "").Replace("]", "");
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").color = ColorConst.FONT_RED;
                    NGUITools.FindInChild<UILabel>(leftObj, "button/name").text = "装备";
                }
                else if (need == 3) //可合成可装备
                {
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").text = "装备后将与幻兽绑定";
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").color = ColorConst.FONT_YELLOW;
                    NGUITools.FindInChild<UILabel>(leftObj, "button/name").text = "合成方式";
                }
                else if(need ==4) //可合成不可装备
                {
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").text = "需要幻兽等级: " + equipVo.lvl.Replace("[", "").Replace("]", "");
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").color = ColorConst.FONT_RED;
                    NGUITools.FindInChild<UILabel>(leftObj, "button/name").text = "合成方式";
                }else if (need == 0) //不存在也不可合成
                {
                    PPet pet = Singleton<PetMode>.Instance.GetPetByPetId(petId);
                    NGUITools.FindInChild<UILabel>(leftObj, "labels/level").text = "需要幻兽等级: " + equipVo.lvl.Replace("[", "").Replace("]", "");                    
                    int needlvl =int.Parse( equipVo.lvl.Replace("[", "").Replace("]", ""));

                    if (needlvl > pet.lvl)
                    {
                        NGUITools.FindInChild<UILabel>(leftObj, "labels/level").color = ColorConst.FONT_RED;
                    }
                    else
                    {
                        NGUITools.FindInChild<UILabel>(leftObj, "labels/level").color = ColorConst.FONT_YELLOW;
                    }

                    //有合成途径
                    if (equipVo.material.Length > 4)
                    {
                        NGUITools.FindInChild<UILabel>(leftObj, "button/name").text = "合成方式";
                    }
                    else //产出途径
                    {
                        NGUITools.FindInChild<UILabel>(leftObj, "button/name").text = "获取途径";
                    }
                }
            }
        }
Example #26
0
        //设置宠物信息
        private void SetPetInfo(SysPet pet, int num, bool own)
        {
            GameObject petobj;

            if (num > petsObj.Count)
            {
                petobj = GameObject.Instantiate(petsObj[0]) as GameObject;
                petsObj.Add(petobj);
                petobj.transform.parent     = petsObj[0].transform.parent;
                petobj.transform.localScale = new Vector3(1, 1, 1);
                petobj.SetActive(false);
                petobj.GetComponent <UIWidgetContainer>().onClick = OnPetClick;
                petobj.name = pet.id.ToString();
            }
            else
            {
                petobj      = petsObj[num - 1];
                petobj.name = pet.id.ToString();
            }

            SetPetObjPos(petobj, num, own);

            NGUITools.FindInChild <UISprite>(petobj, "image").spriteName = pet.icon.ToString();

            petobj.SetActive(true);
            NGUITools.FindChild(petobj, "tips").SetActive(false); //提示默认关闭

            if (!own || PetLogic.CanOwn(pet))
            {
                NGUITools.FindInChild <UILabel>(petobj, "name").text = pet.name;
                UIUtils.ChangeGrayShader(NGUITools.FindInChild <UISprite>(petobj, "image"), imageDepth - 1);
                NGUITools.FindChild(petobj, "equips").SetActive(false);
                NGUITools.FindChild(petobj, "level").SetActive(false);
                NGUITools.FindChild(petobj, "stars").SetActive(false);
                NGUITools.FindChild(petobj, "stone").SetActive(true);
                int stone = Singleton <GoodsMode> .Instance.GetCountByGoodsId((uint)pet.stone_id);

                int need = PetLogic.GetNeedStone((uint)pet.star, false);

                NGUITools.FindInChild <UISprite>(petobj, "gradeicn").spriteName = "";
                NGUITools.FindInChild <UISlider>(petobj, "stone").value         = stone / (float)need;

                NGUITools.FindInChild <UILabel>(petobj, "stone/num").text = stone + "/" + need;

                if (PetLogic.CanOwn(pet))
                {
                    NGUITools.FindChild(petobj, "active").SetActive(true);
                    NGUITools.FindChild(petobj, "tips").SetActive(true);
                    NGUITools.FindChild(petobj, "gradeicn").SetActive(false);
                }
                else
                {
                    NGUITools.FindChild(petobj, "gradeicn").SetActive(false);
                    NGUITools.FindChild(petobj, "active").SetActive(false);
                }
            }
            else
            {
                PPet ppet = Singleton <PetMode> .Instance.GetPetByPetId((uint)pet.id);

                NGUITools.FindChild(petobj, "gradeicn").SetActive(true);
                NGUITools.FindInChild <UISprite>(petobj, "gradeicn").spriteName = PetLogic.GetGradeIcn(ppet.grade);
                NGUITools.FindInChild <UILabel>(petobj, "name").text            = PetLogic.GetGradeDes(ppet.grade, pet.name);
                UIUtils.ChangeNormalShader(NGUITools.FindInChild <UISprite>(petobj, "image"), imageDepth);
                NGUITools.FindChild(petobj, "equips").SetActive(true);
                NGUITools.FindChild(petobj, "level").SetActive(true);
                NGUITools.FindInChild <UILabel>(petobj, "level/label").text = ppet.lvl.ToString();
                NGUITools.FindChild(petobj, "stars").SetActive(true);
                SetStar(petobj, ppet.star);
                SetEquipInfo(petobj, ppet.petId);
                NGUITools.FindChild(petobj, "stone").SetActive(false);
                NGUITools.FindChild(petobj, "active").SetActive(false);
                //检查是否可以升阶-升星
                if (PetLogic.CanUpgrade(ppet) || PetLogic.CanEvolve(ppet))
                {
                    NGUITools.FindChild(petobj, "tips").SetActive(true);
                }
            }

            NGUITools.FindInChild <UISprite>(petobj, "typeicn").spriteName = PetLogic.GetTypeIcnName(pet.type);
        }
Example #27
0
        public void UpdatePet(uint id, List <PItem> items)
        {
            PPet pet          = GetPetById(id);
            bool stateChange  = false;
            bool evolve       = false;
            bool skillUpgrade = false;
            bool equipWear    = false;
            bool gradeUpgrade = false;
            bool levelUpgrade = false;
            bool sortChange   = false;

            if (pet == null)
            {
                Log.error(this, id + "当前宠物数据不存在");
            }
            else
            {
                CurrentPet = pet;
                foreach (PItem item in items)
                {
                    if (item.key == 5)
                    {
                        if (item.value[0] > pet.lvl)
                        {
                            pet.lvl      = item.value[0];
                            sortChange   = true;
                            levelUpgrade = true;
                        }
                    }
                    else if (item.key == 6)
                    {
                        pet.exp = item.value[0];
                    }
                    else if (item.key == 7)
                    {
                        pet.state   = (byte)item.value[0];
                        stateChange = true;
                    }
                    else if (item.key == 8)
                    {
                        pet.star   = item.value[0];
                        evolve     = true;
                        sortChange = true;
                    }
                    else if (item.key == 9)
                    {
                        //升阶
                        if ((byte)item.value[0] > pet.grade)
                        {
                            pet.grade    = (byte)item.value[0];
                            gradeUpgrade = true;
                            sortChange   = true;
                        }
                    }
                    else if (item.key == 10)
                    {
                        //装备升阶
                        if (item.value.Count == 0)
                        {
                            pet.equip = item.value;
                        }
                        else
                        {
                            //装备信息变化
                            for (int i = 0; i < item.value.Count;)
                            {
                                uint pos     = item.value[i];
                                uint equipId = item.value[i + 1];

                                //当前装备
                                int cEquipId = GetPetEquipByPos(pet.id, pos);
                                if (cEquipId == -1)
                                {
                                    //添加装备
                                    pet.equip.Add(pos);
                                    pet.equip.Add(equipId);
                                    equipWear   = true;
                                    WearedEquip = new uint[] { pos, equipId };
                                }
                                i = i + 2;
                            }
                        }
                    }
                    else if (item.key == 15)
                    {
                        for (int i = 0; i < item.value.Count;)
                        {
                            byte pos = (byte)item.value[i];
                            byte lvl = (byte)item.value[i + 1];

                            int index = GetPetSkillIndexByPos(pet.id, pos);
                            if (index == -1)
                            {
                                //添加技能
                                pet.skills.Add(pos);
                                pet.skills.Add(lvl);
                            }
                            else
                            {
                                uint clvl = pet.skills[index + 1];
                                if (clvl < lvl)
                                {
                                    pet.skills[index + 1] = lvl;
                                    skillUpgrade          = true;
                                    UpgradedSkill         = new uint[] { pos, lvl };
                                }
                            }
                            i = i + 2;
                        }
                    }
                }
                //更新属性
                PetLogic.SetPetVo(pet, PetVos[pet.id]);
                AddTotal();

                //发出通知数据更新
                if (stateChange)
                {
                    SetFightPet();
                }
                if (levelUpgrade)
                {
                    DataUpdate(LevelUpgrade);
                }
                if (evolve)
                {
                    DataUpdate(EvolvePet);
                    DataUpdate(FightPet);
                }
                if (skillUpgrade)
                {
                    //技能升级的通知
                    DataUpdate(SkillUpgrade);
                }
                if (equipWear)
                {
                    //穿新装备通知
                    DataUpdate(WearEquip);
                }
                if (gradeUpgrade)
                {
                    DataUpdate(GradeUpgrade);
                }
                DataUpdate(UpdatedPet);
                if (sortChange)
                {
                    AllPets.Sort(PetLogic.SortPet);
                }
                DataUpdate(PetList);
            }
        }
Example #28
0
 //排序算法
 public static int SortPet(PPet a, PPet b)
 {
     return(((int)b.star - (int)a.star) * 10000 + (b.grade - a.grade) * 100 + ((int)b.lvl - (int)a.lvl));
 }
Example #29
0
 public void read(MemoryStream msdata)
 {
     PPet.readLoop(msdata, pet);
 }
 public void read(MemoryStream msdata)
 {
     code = proto_util.readUShort(msdata);
     PPet.readLoop(msdata, pet);
 }