/// <summary> /// 获取宠物PetVo /// </summary> public static PetVo GetPetVo(PPet pet) { var petVo = new PetVo(); SetPetVo(pet, petVo); return(petVo); }
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; } }
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 + ")"; }
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(); }
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); } }
/// <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); }
private void OnCloseClick(GameObject obj) { currentPPet = null; Singleton <PetMode> .Instance.dataUpdated -= DataUpdated; MeVo.instance.DataUpdated -= DataUpdated; Singleton <GoodsMode> .Instance.dataUpdated -= DataUpdated; gameObject.SetActive(false); }
/// <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); }
/// <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); }
/// <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); }
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); }
//是否可以进阶 public static bool CanUpgrade(PPet pet) { if (pet.grade < 14) { if (pet.equip.Count >= 12) { return(true); } } return(false); }
//是否可以进化 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); }
/// <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]); } } }
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); }
//获得宠物的下标位置 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); }
//获取装备所在的位置,不存在则返回-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); }
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); } }
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(); }
//查询宠物的技能信息 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); }
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); }
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); } } }
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(); } } }
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(); }
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 = "获取途径"; } } } }
//设置宠物信息 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); }
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); } }
//排序算法 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)); }
public void read(MemoryStream msdata) { PPet.readLoop(msdata, pet); }
public void read(MemoryStream msdata) { code = proto_util.readUShort(msdata); PPet.readLoop(msdata, pet); }