//穿上配饰 private void PutOn(Accessory accessory, bool saveData = true) { if (accessory == null || !accessory.Suitable(this.PlayerDataManager.CurrentPet)) { return; } if (RoleManager.Instance.CurrentRole != null && accessory.CanWear) { if (accessory.Exclusive(Gululu.Config.AccessoryTypes.Suit))//当前配饰与套装互斥,脱掉套装 { RoleManager.Instance.CurrentRole.TakeOffPetAccessoryByTypes(new List <int> { (int)Gululu.Config.AccessoryTypes.Suit }); } else if (accessory.AccessoryType == Gululu.Config.AccessoryTypes.Suit)//当前配饰是套装,脱掉与套装互斥的配饰 { RoleManager.Instance.CurrentRole.TakeOffPetAccessoryByTypes(new List <int> { (int)Gululu.Config.AccessoryTypes.Head, (int)Gululu.Config.AccessoryTypes.Back, (int)Gululu.Config.AccessoryTypes.Suit }); } RoleManager.Instance.CurrentRole.SetupPetAccessory(accessory); RoleManager.Instance.CurrentRole.HideParticleEffect(); } else if ((accessory.AccessoryType == Gululu.Config.AccessoryTypes.SpiritUp || accessory.AccessoryType == Gululu.Config.AccessoryTypes.SpiritDown) && RoleManager.Instance.Mates != null) { RoleManager.Instance.Mates.ForEach(t => { if (t != null && t.IsNative(accessory.Region)) { t.RefreshRole(accessory); t.HideParticleEffect(); } }); } this.CheckBuffer(accessory); if (saveData) { this.SaveData(true, accessory); if (accessory.CanWear) { RoleManager.Instance.CurrentRole.Play("display01"); } } }
//保存数据 private void SaveData(bool toWear, Accessory accessory) { List <string> petAccessories = this.LocalPetAccessoryAgent.GetPetAccessories(this.PlayerDataManager.CurrentPet);//记录小宠物身上的配饰的数据 if (toWear && !petAccessories.Contains(accessory.ID.ToString())) { petAccessories.Add(accessory.ID.ToString());//记录当前穿上的配饰数据 List <Accessory> accessories = this.LocalPetAccessoryAgent.GetAccessoriesByType(this.PlayerDataManager.CurrentPet, accessory.Type); if (accessories != null && accessories.Count > 0) {//检查并移除掉与当前配饰相同类型的配饰 for (int i = 0; i < accessories.Count; i++) { if (accessories[i].ID != accessory.ID && petAccessories.Contains(accessories[i].ID.ToString())) { petAccessories.Remove(accessories[i].ID.ToString()); } } } accessories = this.LocalPetAccessoryAgent.GetAllPetAccessories(this.PlayerDataManager.CurrentPet); if (accessories != null && accessories.Count > 0) {//要检查并移除掉与当前配饰互斥的配饰 for (int i = 0; i < accessories.Count; i++) { if (accessories[i].ID != accessory.ID && accessory.Exclusive(accessories[i].AccessoryType)) { petAccessories.Remove(accessories[i].ID.ToString()); } } } } else if (!toWear) { petAccessories.Remove(accessory.ID.ToString()); } this.LocalPetAccessoryAgent.SavePetAccessories(this.PlayerDataManager.CurrentPet, petAccessories); this.PlayerDataManager.TrySendPlayerData2Server(); this.accessories.PutOnOrTakeOff(toWear);//刷新配饰图标 }