public void AddPet(List <PPet> pets) { if (AllPets == null) { AllPets = new List <PPet>(); } AllPets.AddRange(pets); foreach (PPet pet in pets) { PetVos.Add(pet.id, PetLogic.GetPetVo(pet)); } AddTotal(); AllPets.Sort(PetLogic.SortPet); DataUpdate(PetList); foreach (PPet pet in pets) { CurrentPet = pet; DataUpdate(NewPet); } }
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); } }