| System/Pet/PetAttributeMethods.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Pet/PetModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Pet/SkillButtonPet.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/RoleParticulars/ViewPetDetailWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/RoleParticulars/ViewPetSkillCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Tip/SkillDetails.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/Pet/PetAttributeMethods.cs
@@ -100,7 +100,6 @@ petStoneBtn.AddListener(() => { WindowCenter.Instance.Open<PetStoneTipsWin>(); }); curPetSkillCtrl.OnRefreshCell += RefreshCurPetSkillCell; allPetSkillCtrl.OnRefreshCell += RefreshAllPetSkillCell; FlySkillIconWin.FlySkillID += FlySkillID; CreateAllPetSkill(); StartCoroutine(LoadingFrame()); petTrainBtn.AddListener(ClickPetTrainBtn); @@ -119,23 +118,10 @@ PetModel.Event_H0704Add -= RefreshPetInfo; curPetSkillCtrl.OnRefreshCell -= RefreshCurPetSkillCell; allPetSkillCtrl.OnRefreshCell -= RefreshAllPetSkillCell; FlySkillIconWin.FlySkillID -= FlySkillID; petStoneBtn.RemoveAllListeners(); breakLockBtn.RemoveAllListeners(); petTrainBtn.RemoveAllListeners(); petAutoTrainBtn.RemoveAllListeners(); } private void FlySkillID(int skillID) { int Index = 0; if (petSkillIdlist.Contains(skillID)) { Index = petSkillIdlist.IndexOf(skillID); } int line = Index / 3; allPetSkillCtrl.JumpIndex(line); allPetSkillCtrl.JumpIndex(-50, 0, EnhancedScroller.TweenType.immediate); } private void LateUpdate() @@ -187,11 +173,11 @@ { int skillIdIndex = cell.index; SkillButtonPet skillButton = cell.transform.GetComponent<SkillButtonPet>(); FunctionUnlockFlyObjectTarget functionUnlockFlyObjectTarget = cell.transform.GetComponent<FunctionUnlockFlyObjectTarget>(); UIEffect uie = cell.transform.GetComponent<UIEffect>(); if (petmodel.ListEffectSkill.Contains(curPetSkillIds[skillIdIndex])) { uie.Play(); } if (petmodel._DicPetBack.ContainsKey(petInfoConfig.ID)) { @@ -204,75 +190,40 @@ { skillButton.SetModel(curPetSkillIds[skillIdIndex], curPetUnlocks[skillIdIndex], false, petInfoConfig.ID, SkillType.PetSkill); } } else { skillButton.SetModel(curPetSkillIds[skillIdIndex], curPetUnlocks[skillIdIndex], false, petInfoConfig.ID, SkillType.PetSkill); } functionUnlockFlyObjectTarget.IdList = new int[] { curPetSkillIds[skillIdIndex] }; functionUnlockFlyObjectTarget.Z_UnLockType = FunctionUnlockType.Skill; FunctionUnlockFlyObjectTargetCenter.Register(FunctionUnlockType.Skill, new int[] { curPetSkillIds[skillIdIndex] }, functionUnlockFlyObjectTarget); } List<int> petSkillIdlist = new List<int>(); List<int> petSkillUnlockLvlist = new List<int>(); List<bool> petSkillIsUnlocklist = new List<bool>(); List<PetInfoConfig> list = new List<PetInfoConfig>(); List<int> displayTotalSkills = new List<int>(); private void SetAllPetSkillModel() { petSkillUnlockLvlist.Clear(); petSkillIdlist.Clear(); petSkillIsUnlocklist.Clear(); if (list.Count <= 0) displayTotalSkills.Clear(); var skills = petmodel.GetPetTotalSkills(); foreach (var id in skills) { list = PetInfoConfig.GetValues(); } // List<PetInfoConfig> list = PetInfoConfig.GetValues(); for (int i = 0; i < list.Count; i++) { if (petmodel._DicPetBack.ContainsKey(list[i].ID)) var config = SkillConfig.Get(id); var skillId = 0; if (petmodel.TryGetIntegrationSkill(config.Effect1, out skillId)) { PetBackpack _PetBackpack = petmodel._DicPetBack[list[i].ID]; int[] ids = list[i].SkillID; int[] unlocks = list[i].SkillUnLock; for (int j = 0; j < ids.Length; j++) if (!displayTotalSkills.Contains(skillId)) { if (_PetBackpack.PetClass >= unlocks[j]) { petSkillIdlist.Add(ids[j]); petSkillUnlockLvlist.Add(unlocks[j]); petSkillIsUnlocklist.Add(true); } displayTotalSkills.Add(skillId); } continue; } displayTotalSkills.Add(id); } for (int i = 0; i < list.Count; i++) { int[] ids = list[i].SkillID; int[] unlocks = list[i].SkillUnLock; if (petmodel._DicPetBack.ContainsKey(list[i].ID)) { PetBackpack _PetBackpack = petmodel._DicPetBack[list[i].ID]; for (int j = 0; j < ids.Length; j++) { if (_PetBackpack.PetClass < unlocks[j]) { petSkillIdlist.Add(ids[j]); petSkillUnlockLvlist.Add(unlocks[j]); petSkillIsUnlocklist.Add(false); } } } else { for (int j = 0; j < ids.Length; j++) { petSkillIdlist.Add(ids[j]); petSkillUnlockLvlist.Add(unlocks[j]); petSkillIsUnlocklist.Add(false); } } } displayTotalSkills.Sort(Compare); } private void CreateAllPetSkill() { SetAllPetSkillModel(); @@ -283,12 +234,7 @@ else { allPetSkillCtrl.Refresh(); int line = petSkillIdlist.Count / 3; int remain = petSkillIdlist.Count % 3; if (remain > 0) { line += 1; } var line = Mathf.CeilToInt((float)displayTotalSkills.Count / 3); for (int i = 0; i < line; i++) { allPetSkillCtrl.AddCell(ScrollerDataType.Header, i); @@ -296,42 +242,19 @@ allPetSkillCtrl.Restart(); } } private void RefreshAllPetSkillCell(ScrollerDataType type, CellView cell) { int length = cell.transform.childCount; for (int i = 0; i < length; i++) { int cellCnt = cell.index * 3 + (i + 1); int index = cell.index * 3 + i; SkillButtonPet skillButton = cell.transform.GetChild(i).GetComponent<SkillButtonPet>(); FunctionUnlockFlyObjectTarget functionUnlockFlyObjectTarget = cell.transform.GetChild(i).GetComponent<FunctionUnlockFlyObjectTarget>(); int petId = 0; // List<PetInfoConfig> list = PetInfoConfig.GetValues(); if (list.Count <= 0) if (index < displayTotalSkills.Count) { list = PetInfoConfig.GetValues(); } for (int j = 0; j < list.Count; j++) { int[] ids = list[j].SkillID; for (int k = 0; k < ids.Length; k++) { if (cellCnt <= petSkillIdlist.Count) { if (ids[k] == petSkillIdlist[cellCnt - 1]) { petId = list[j].ID; } } } } if (cellCnt <= petSkillIdlist.Count) { var skillId = displayTotalSkills[index]; skillButton.gameObject.SetActive(true); skillButton.SetModel(petSkillIdlist[cellCnt - 1], petSkillUnlockLvlist[cellCnt - 1], petSkillIsUnlocklist[cellCnt - 1], petId, SkillType.PetSkill, true); functionUnlockFlyObjectTarget.IdList = new int[] { petSkillIdlist[cellCnt - 1] }; functionUnlockFlyObjectTarget.Z_UnLockType = FunctionUnlockType.Skill; FunctionUnlockFlyObjectTargetCenter.Register(FunctionUnlockType.Skill, new int[] { petSkillIdlist[cellCnt - 1] }, functionUnlockFlyObjectTarget); skillButton.SetModel(skillId, 0, petmodel.IsSkillUnlock(skillId), 0, SkillType.PetSkill, true); } else { @@ -339,6 +262,7 @@ } } } #endregion private void RefreshPetInfoUpdate(int _petID) { @@ -731,6 +655,37 @@ Skillimage.Add(Skillimage5); } } int Compare(int lhs, int rhs) { var lhs_unlock = petmodel.IsSkillUnlock(lhs); var rhs_unlock = petmodel.IsSkillUnlock(rhs); if (lhs_unlock != rhs_unlock) { return -lhs_unlock.CompareTo(rhs_unlock); } var lhs_config = SkillConfig.Get(lhs); var rhs_config = SkillConfig.Get(rhs); var lhs_Id = 0; var rhs_Id = 0; var lhs_integration = petmodel.TryGetIntegrationSkill(lhs_config.Effect1, out lhs_Id); var rhs_integration = petmodel.TryGetIntegrationSkill(rhs_config.Effect1, out rhs_Id); if (lhs_integration != rhs_integration) { return -lhs_integration.CompareTo(rhs_integration); } if (lhs_integration && rhs_integration) { return lhs_config.Effect1.CompareTo(rhs_config.Effect1); } var lhs_petId = 0; var rhs_petId = 0; petmodel.TryGetPetId(lhs, out lhs_petId); petmodel.TryGetPetId(rhs, out rhs_petId); var lhs_petconfig = PetInfoConfig.Get(lhs_petId); var rhs_petconfig = PetInfoConfig.Get(rhs_petId); return lhs_petconfig.Sort.CompareTo(rhs_petconfig.Sort); } } } System/Pet/PetModel.cs
@@ -61,6 +61,11 @@ public event Action PlayerLoginOkData; private Dictionary<int, int> DicDefaultPet = new Dictionary<int, int>(); List<PetInfoConfig> allPetConfigs = new List<PetInfoConfig>(); Dictionary<int, int> integrationSkills = new Dictionary<int, int>(); Dictionary<int, List<int>> integrationPetSkills = new Dictionary<int, List<int>>(); Dictionary<int, int> petSkills = new Dictionary<int, int>(); public override void Init() { ToAddSorting(); @@ -92,6 +97,38 @@ string PetRedDotstr = FuncConfigConfig.Get("MountPetRedDot").Numerical2; DicDefaultPet = ConfigParse.GetDic<int, int>(PetRedDotstr); PetDanExp = int.Parse(FuncConfigConfig.Get("PetUpItem").Numerical2); var funcConfig = FuncConfigConfig.Get("PetHorseSkillIntegration"); var intArray = ConfigParse.GetMultipleStr<int>(funcConfig.Numerical1); for (int i = 0; i < intArray.Length; i++) { var skillConfig = SkillConfig.Get(intArray[i]); if (skillConfig != null) { integrationSkills.Add(skillConfig.Effect1, intArray[i]); } } var configs = PetInfoConfig.GetValues(); foreach (var config in configs) { for (int i = 0; i < config.SkillID.Length; i++) { var skillConfig = SkillConfig.Get(config.SkillID[i]); if (integrationSkills.ContainsKey(skillConfig.Effect1)) { List<int> skills = null; if (!integrationPetSkills.TryGetValue(skillConfig.Effect1, out skills)) { skills = new List<int>(); integrationPetSkills.Add(skillConfig.Effect1, skills); } skills.Add(config.SkillID[i]); } petSkills.Add(config.SkillID[i], config.ID); } } } public override void UnInit() @@ -784,6 +821,88 @@ } petAttrDict.Add(7, allAtkAdd); return petAttrDict; } #endregion #region 技能整合 public ICollection<int> GetPetTotalSkills() { return petSkills.Keys; } public bool TryGetIntegrationSkill(int effect, out int skillId) { return integrationSkills.TryGetValue(effect, out skillId); } public bool TryGetPetSkills(int effect,out List<int> skills) { return integrationPetSkills.TryGetValue(effect, out skills); } public bool TryGetPetId(int skillId,out int petId) { return petSkills.TryGetValue(skillId, out petId); } public bool IsSkillUnlock(int skillId) { var config = SkillConfig.Get(skillId); if (config == null) { return false; } if (integrationPetSkills.ContainsKey(config.Effect1) && !integrationPetSkills[config.Effect1].Contains(skillId)) { var skills = integrationPetSkills[config.Effect1]; foreach (var id in skills) { if (IsSkillUnlock(id)) { return true; } } } else { if (petSkills.ContainsKey(skillId)) { var petId = petSkills[skillId]; if (!_DicPetBack.ContainsKey(petId)) { return false; } var petInfo = _DicPetBack[petId]; if (petInfo.PetClass >= GetSkillUnlockLevel(skillId)) { return true; } } } return false; } public int GetSkillUnlockLevel(int skillId) { var petId = 0; if (TryGetPetId(skillId, out petId)) { var petConfig = PetInfoConfig.Get(petId); var index = 0; for (int i = 0; i < petConfig.SkillID.Length; i++) { if (petConfig.SkillID[i] == skillId) { index = i; } } if (index < petConfig.SkillUnLock.Length) { return petConfig.SkillUnLock[index]; } } return 0; } #endregion } System/Pet/SkillButtonPet.cs
@@ -5,6 +5,7 @@ using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; //灵宠的技能 @@ -18,6 +19,8 @@ [SerializeField] Image skillIcon; [SerializeField] GameObject lockObj; [SerializeField] Text lockLvText; PetModel petModel { get { return ModelCenter.Instance.GetModel<PetModel>(); } } public void SetModel(int skillId, int skillUnlock, bool isUnlock, int petId, SkillType skillType, bool isAll = false) { @@ -48,39 +51,49 @@ skillBtn.RemoveAllListeners(); skillBtn.AddListener(() => { string[] str = new string[3]; str[0] = string.Empty; str[1] = string.Empty; //if (!isAll) //{ string[] str = new string[2]; int fightPower = 0; switch (skillType) { case SkillType.PetSkill: PetInfoConfig petInfo = PetInfoConfig.Get(petId); if (petInfo != null) if (petModel.TryGetPetId(skillId, out petId)) { str[2] = Language.Get("pet_SkillTipLv", petInfo.Name, skillUnlock); PetInfoConfig petInfo = PetInfoConfig.Get(petId); str[0] = skillConfig.Description; str[1] = Language.Get("pet_SkillTipLv", petInfo.Name, petModel.GetSkillUnlockLevel(skillId)); fightPower = skillConfig.FightPower; } else { List<int> skills; var value = 0; if (petModel.TryGetPetSkills(skillConfig.Effect1, out skills)) { foreach (var id in skills) { if (petModel.IsSkillUnlock(id)) { var config = SkillConfig.Get(id); value += config.EffectValue11; fightPower += config.FightPower; } } } str[0] = string.Format(skillConfig.Description, value); str[1] = string.Empty; } break; case SkillType.MountSkill: HorseConfig horseInfo = HorseConfig.Get(petId); if (horseInfo != null) { str[2] = Language.Get("pet_SkillTipLv", horseInfo.Name, skillUnlock); str[0] = skillConfig.Description; str[1] = Language.Get("pet_SkillTipLv", horseInfo.Name, skillUnlock); } fightPower = skillConfig.FightPower; break; } //} //else //{ // str[2] = string.Empty; //} int fightPower = 0; if (skillConfig.FightPower > 0) { fightPower = skillConfig.FightPower; } SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.PetSkill, fightPower, str); }); System/RoleParticulars/ViewPetDetailWin.cs
@@ -32,9 +32,11 @@ List<int> skills = new List<int>(); [NonSerialized] public List<int> activeSkills = new List<int>(); [NonSerialized] public List<int> displayTotalSkills = new List<int>(); [NonSerialized] public List<int> unlockTotalSkills = new List<int>(); RoleParticularModel model { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } } PetModel petModel { get { return ModelCenter.Instance.GetModel<PetModel>(); } } #region Built-in protected override void BindController() { @@ -137,14 +139,33 @@ void DisplayTotalSkills(List<RoleParticularModel.PetInfo> pets) { activeSkills.Clear(); displayTotalSkills.Clear(); unlockTotalSkills.Clear(); for (int i = 0; i < pets.Count; i++) { PetInfoConfig.GetPetSkills(pets[i].id, pets[i].lv, true, ref skills); activeSkills.AddRange(skills); unlockTotalSkills.AddRange(skills); foreach (var id in skills) { var config = SkillConfig.Get(id); var skillId = 0; if (petModel.TryGetIntegrationSkill(config.Effect1, out skillId)) { if (!displayTotalSkills.Contains(skillId)) { displayTotalSkills.Add(skillId); } continue; } displayTotalSkills.Add(id); } } displayTotalSkills.Sort(Compare); m_SkillController.Refresh(); var line = Mathf.CeilToInt((float)activeSkills.Count / m_LineCount); var line = Mathf.CeilToInt((float)displayTotalSkills.Count / m_LineCount); for (int i = 0; i < line; i++) { m_SkillController.AddCell(ScrollerDataType.Header, i); @@ -184,6 +205,31 @@ { ViewPetSkillCell skillCell = cell as ViewPetSkillCell; skillCell.Display(cell.index, this); } int Compare(int lhs, int rhs) { var lhs_config = SkillConfig.Get(lhs); var rhs_config = SkillConfig.Get(rhs); var lhs_Id = 0; var rhs_Id = 0; var lhs_integration = petModel.TryGetIntegrationSkill(lhs_config.Effect1, out lhs_Id); var rhs_integration = petModel.TryGetIntegrationSkill(rhs_config.Effect1, out rhs_Id); if (lhs_integration != rhs_integration) { return -lhs_integration.CompareTo(rhs_integration); } if (lhs_integration && rhs_integration) { return lhs_config.Effect1.CompareTo(rhs_config.Effect1); } var lhs_petId = 0; var rhs_petId = 0; petModel.TryGetPetId(lhs, out lhs_petId); petModel.TryGetPetId(rhs, out rhs_petId); var lhs_petconfig = PetInfoConfig.Get(lhs_petId); var rhs_petconfig = PetInfoConfig.Get(rhs_petId); return lhs_petconfig.Sort.CompareTo(rhs_petconfig.Sort); } [Serializable] @@ -231,8 +277,10 @@ if (petInfo != null) { var skillConfig = SkillConfig.Get(skillId); SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet, skillConfig == null ? 0 : skillConfig.FightPower, Language.Get("pet_SkillTipLv", petInfo.Name, PetInfoConfig.GetPetSkillCondition(petId, skillId))); var label1 = skillConfig.Description; var label2 = Language.Get("pet_SkillTipLv", petInfo.Name, PetInfoConfig.GetPetSkillCondition(petId, skillId)); SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet, skillConfig == null ? 0 : skillConfig.FightPower, label1, label2); } } System/RoleParticulars/ViewPetSkillCell.cs
@@ -8,6 +8,8 @@ { [SerializeField] SkillBehaviour[] m_Skills; PetModel model { get { return ModelCenter.Instance.GetModel<PetModel>(); } } ViewPetDetailWin displayWindow; public void Display(int line, ViewPetDetailWin win) { @@ -15,10 +17,10 @@ for (int i = 0; i < displayWindow.lineCount; i++) { var index = line * displayWindow.lineCount + i; if (index < displayWindow.activeSkills.Count) if (index < displayWindow.displayTotalSkills.Count) { m_Skills[i].gameObject.SetActive(true); m_Skills[i].Display(displayWindow.activeSkills[index]); m_Skills[i].Display(displayWindow.displayTotalSkills[index]); m_Skills[i].onClick -= OnSkillClick; m_Skills[i].onClick += OnSkillClick; } @@ -33,16 +35,43 @@ public void OnSkillClick(int skillId) { int petId = 0; if (PetInfoConfig.TryGetPetIdBySkill(skillId, out petId)) var skillConfig = SkillConfig.Get(skillId); if (model.TryGetPetId(skillId, out petId)) { PetInfoConfig petInfo = PetInfoConfig.Get(petId); if (petInfo != null) PetInfoConfig config = PetInfoConfig.Get(petId); if (config != null) { var skillConfig = SkillConfig.Get(skillId); SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet, skillConfig == null ? 0 : skillConfig.FightPower, Language.Get("pet_SkillTipLv", petInfo.Name, PetInfoConfig.GetPetSkillCondition(petId, skillId))); var label1 = skillConfig.Description; var label2 = Language.Get("pet_SkillTipLv", config.Name, model.GetSkillUnlockLevel(skillId)); SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet, skillConfig == null ? 0 : skillConfig.FightPower, label1, label2); } } else { List<int> skills; var value = 0; var fightPower = 0; if (model.TryGetPetSkills(skillConfig.Effect1, out skills)) { foreach (var id in skills) { if (displayWindow.unlockTotalSkills.Contains(id)) { var config = SkillConfig.Get(id); value += config.EffectValue11; fightPower += config.FightPower; } } } var label1 = string.Format(skillConfig.Description, value); var label2 = string.Empty; SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet, fightPower, label1, label2); } } } } System/Tip/SkillDetails.cs
@@ -72,8 +72,8 @@ break; case SkillSourceType.ViewHorsePet: { skillDescriptions.Add(skillConfig.Description); skillDescriptions.Add(infos[0]); skillDescriptions.Add(infos[1]); } break; case SkillSourceType.BlastFurnace: