//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, September 07, 2018 //-------------------------------------------------------- using Snxxz.UI; using System; using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using TableConfig; using UnityEngine; // 关于神兽强化 public class GodBeastModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public Dictionary Absorption_Dic = new Dictionary();//获取选择的物品 public event Action AbsorbEvent; public int ItemInde = 0;//物品下标 public ItemModel Crystal_ItemModel;//当前所选中的水晶物品 public int ItemPlace = -1;//神兽装备位置信息 public Dictionary QualityLimit = new Dictionary();//对应品质所能选择的最大强化等级 DogzModel Dogz_model; DogzModel dogz_model { get { return Dogz_model ?? (Dogz_model = ModelCenter.Instance.GetModel()); } } PlayerPackModel _playerPack; PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } public override void Init() { if (QualityLimit.Count <= 0) { string DogzAssist = Config.Instance.Get("DogzAssist").Numerical4;//获取不同品质的神兽强化上限 QualityLimit = ConfigParse.GetDic(DogzAssist); } } public void OnBeforePlayerDataInitialize() { } public void OnPlayerLoginOk() { } public override void UnInit() { } public void AbsorbEventUpdate() { if (AbsorbEvent != null) { AbsorbEvent(); } } private Dictionary AllEnhancedPropertiesDic = new Dictionary();//key:为属性编号,value是属性值 public Dictionary AllEnhancedProperties(int GodBeastNumber)//获取整只神兽强化属性 { AllEnhancedPropertiesDic.Clear(); List itemModel = dogz_model.GetDogzEquips(GodBeastNumber); if (itemModel == null) { return AllEnhancedPropertiesDic; } for (int i = 0; i < itemModel.Count; i++) { ItemModel item = itemModel[i]; var IudetDogzEquipPlus = item.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus); if (IudetDogzEquipPlus != null) { int lv = IudetDogzEquipPlus[0]; if (lv > 0) { var DogzEquipConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(item.EquipPlace, lv); int[] AttType = ConfigParse.GetMultipleStr(DogzEquipConfig.attType); int[] AttValue = ConfigParse.GetMultipleStr(DogzEquipConfig.attValue); for (int j = 0; j < AttType.Length; j++) { if (AllEnhancedPropertiesDic.ContainsKey(AttType[j])) { var value = AllEnhancedPropertiesDic[(AttType[j])]; AllEnhancedPropertiesDic[(AttType[j])] = value + AttValue[j]; } else { AllEnhancedPropertiesDic.Add(AttType[j], AttValue[j]); } } } } } return AllEnhancedPropertiesDic; } private Dictionary SiteEnhancementAttributeDic = new Dictionary();//key:为属性编号,value是属性值 public Dictionary SiteEnhancementAttribute(PackType PackTypeGodBeast, int GodBeastIndex)//获取某只神兽身上某个装备属性值 { SiteEnhancementAttributeDic.Clear(); ItemModel item = playerPack.GetItemModelByIndex(PackTypeGodBeast, GodBeastIndex); if (item == null) { return SiteEnhancementAttributeDic; } var IudetDogzEquipPlus = item.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus); if (IudetDogzEquipPlus != null && IudetDogzEquipPlus[0] > 0) { var DogzEquipConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(item.EquipPlace, IudetDogzEquipPlus[0]); int[] AttType = ConfigParse.GetMultipleStr(DogzEquipConfig.attType); int[] AttValue = ConfigParse.GetMultipleStr(DogzEquipConfig.attValue); for (int j = 0; j < AttType.Length; j++) { if (SiteEnhancementAttributeDic.ContainsKey(AttType[j])) { SiteEnhancementAttributeDic[(AttType[j])] = AttValue[j]; } else { SiteEnhancementAttributeDic.Add(AttType[j], AttValue[j]); } } } return SiteEnhancementAttributeDic; } public int DogZBagIndex = 0; public bool IsFullLevel()//是都满级能够继续吸收 { bool IsBool = false; int DogZLV = 0;//获取当前神兽等级 int DogProficiency = 0;//当前神兽的熟练度 int SingleProficiency = 0;//单倍熟练度 int DoubleProficiency = 0;//双倍熟练度 ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptDogzEquip, DogZBagIndex); if (itemModel == null) { return false; } int lv = QualityLimit[itemModel.chinItemModel.ItemColor]; var DogzEquipMaxConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(itemModel.chinItemModel.EquipPlace, lv); var IudetDogzEquipPlus = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus); if (IudetDogzEquipPlus != null) { DogZLV = IudetDogzEquipPlus[0]; DogProficiency = IudetDogzEquipPlus[1]; } foreach (var key in Absorption_Dic.Keys) { ItemModel item_Model = playerPack.GetItemModelByIndex(PackType.rptDogzItem, key); if (item_Model != null) { if (item_Model.chinItemModel.Effect1 == 235) { var _IudetDogzEquipPlus = item_Model.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus); SingleProficiency += item_Model.chinItemModel.EffectValueA1 * Absorption_Dic[key]; if (_IudetDogzEquipPlus != null) { SingleProficiency += _IudetDogzEquipPlus[1]; DoubleProficiency += item_Model.chinItemModel.EffectValueA1; } else { DoubleProficiency += item_Model.chinItemModel.EffectValueA1 * 2 * Absorption_Dic[key]; } } } } if (true) { if (DogProficiency + DoubleProficiency >= DogzEquipMaxConfig.upExpTotal) { return true; } else { return false; } } else { if (DogProficiency + SingleProficiency >= DogzEquipMaxConfig.upExpTotal) { return true; } else { return false; } } } }