--宠物图鉴 local UIPetRuneIllustratedHandbook = UIViewClass() local INDEX_NORMAL = 0 local function SortByRuneLevel(a, b) return a.RuneLevel > b.RuneLevel end function UIPetRuneIllustratedHandbook:OnOpened(context) UIUtils.SetActive(self.Group_Condition, false) UIUtils.SetLabelText(self.UIPetPopUpBig.txt_Title, Const_IDS.IDS_Pet_SkillBook) self.typeRuneSkillList = {} if context then self.toggles_Btn:SelectIndex(context.tabIndex) else self.toggles_Btn:SelectIndex(0) end end function UIPetRuneIllustratedHandbook:OnValueChanged(comp, index) self:SwitchTabType(index) end function UIPetRuneIllustratedHandbook:SwitchTabType(type) self.tabType = type if type == INDEX_NORMAL then UIUtils.SetActive(self.Group_Hero, false) UIUtils.SetActive(self.Group_Quality, true) else UIUtils.SetActive(self.Group_Hero, true) UIUtils.SetActive(self.Group_Quality, false) end if self.selectCell then UIUtils.SetActive(self.selectCell.img_Select, false) self.selectCell = nil end if type == INDEX_NORMAL then self.loopScroll_Rune:ClearCells() UIUtils.SetActive(self.group_skill, true) if self.highLevelRuneList == nil then local list = self:GetRuneSkillList(type) self.highLevelRuneList = {} self.lowLevelRuneList = {} for i, v in ipairs(list) do if v.SkillType2 == 1 then table.insert(self.highLevelRuneList, v) else table.insert(self.lowLevelRuneList, v) end end end self.loopScroll_High:ReloadAll(self.highLevelRuneList) self.loopScroll_Low:ReloadAll(self.lowLevelRuneList) self.loopScroll_High:SelectIndex(0, true) else local list = self:GetRuneSkillList(type) UIUtils.SetActive(self.group_skill, false) self.loopScroll_Rune:ReloadAll(list) self.loopScroll_Rune:SelectIndex(0, true) end end function UIPetRuneIllustratedHandbook:GetRuneSkillList(type) local runeSkillList = {} if type == INDEX_NORMAL then local typeTab = {} for i, v in DataSheetManager.PetRuneSkill:GetEnumerator() do if typeTab[v.RuneType] == nil then table.insert(runeSkillList, v) typeTab[v.RuneType] = 1 end end else for i, v in DataSheetManager.PetRelation:GetEnumerator() do local cfg = DataSheetManager.PetRelationSkill:GetDataByRelationSkillID(v.Relation_Table[1].RelationSkill) table.insert(runeSkillList, cfg) end end return runeSkillList end function UIPetRuneIllustratedHandbook:OnCellInit(scrollRect, index, cellTable, data) UIUtils.SetImageByAssetBundle(cellTable.img_Rune, data.RuneIcon) if self.tabType == INDEX_NORMAL then cellTable.effect_ItemJiBan:StopUIEffect() else cellTable.effect_ItemJiBan:PlayUIEffect() end end function UIPetRuneIllustratedHandbook:OnCellClicked(scrollRect, index, cellTable, target, data) if self.selectCell then UIUtils.SetActive(self.selectCell.img_Select, false) end self.selectCell = cellTable UIUtils.SetActive(cellTable.img_Select, true) self:OnSelectData(data) end function UIPetRuneIllustratedHandbook:OnSelectData(data) table.clearArray(self.typeRuneSkillList) if self.tabType == INDEX_NORMAL then for i, v in DataSheetManager.PetRuneSkill:GetEnumerator() do if v.RuneType == data.RuneType then table.insert(self.typeRuneSkillList, v) end end else for i, v in DataSheetManager.PetRelation:GetEnumerator() do if v.Relation_Table[1].RelationSkill == data.RelationSkillID then self.relationHeroId = v.HeroID for i, v in ipairs(v.Relation_Table) do local cfg = DataSheetManager.PetRelationSkill:GetDataByRelationSkillID(v.RelationSkill) table.insert(self.typeRuneSkillList, cfg) end break end end end local showCount if self.tabType == INDEX_NORMAL then table.sort(self.typeRuneSkillList, SortByRuneLevel) showCount = #self.typeRuneSkillList else showCount = 1 end for i = 1, #self.group_Rune do if i > showCount then UIUtils.SetActive(self.group_Rune[i].gameObject, false) else UIUtils.SetActive(self.group_Rune[i].gameObject, true) self:SetRuneCell(self.group_Rune[i], self.typeRuneSkillList[i]) end end self:OnSelectRuneItem(self.group_Rune[showCount], self.typeRuneSkillList[showCount]) end function UIPetRuneIllustratedHandbook:SetRuneCell(cell, data) UIUtils.SetImageByAssetBundle(cell.sprite_Skill, data.RuneIcon) if cell.img_Select then UIUtils.SetActive(cell.img_Select, false) end if self.tabType == INDEX_NORMAL then UIUtils.SetLabelText(cell.txt_Level, CTL.Pet.RuneSkillLevelIDS[data.RuneLevel]) else UIUtils.SetLabelText(cell.txt_Level, CTL.Pet.RuneSkillLevelIDS[#CTL.Pet.RuneSkillLevelIDS]) end end function UIPetRuneIllustratedHandbook:OnSelectRuneItem(cell, data) if self.selectSubCell then UIUtils.SetActive(self.selectSubCell.img_Select, false) end self.selectSubCell = cell UIUtils.SetActive(self.selectSubCell.img_Select, true) if self.tabType == INDEX_NORMAL then cell.effect_ItemJiBan:StopUIEffect() else cell.effect_ItemJiBan:PlayUIEffect() end self:ShowDetailInfo(data) end function UIPetRuneIllustratedHandbook:ShowDetailInfo(data) UIUtils.SetLabelText(self.txt_RuneName, Const_IDS[data.RuneName]) if self.tabType == INDEX_NORMAL then if data.SkillType2 == 1 then UIUtils.SetLabelText(self.txt_Quality, Const_IDS.IDS_Pet_SkillQuality1) else UIUtils.SetLabelText(self.txt_Quality, Const_IDS.IDS_Pet_SkillQuality2) end self.txt_SkillDesc.text = UTL.String.FormatCombineTextByID(data.RuneDes) else local heroData = DataSheetManager.HeroNum:GetDataByID(self.relationHeroId) UIUtils.SetLabelText(self.txt_Hero, Const_IDS[heroData.NameIDS]) local content = UTL.String.FormatCombineTextByID(data.RuneMainDes) for i, v in ipairs(self.typeRuneSkillList) do content = content .. "\n" .. UTL.String.FormatCombineTextByID(v.RuneDes) end self.txt_SkillDesc.text = content end UIUtils.SetLabelText(self.txt_GetWay, Const_IDS[data.GetWay]) end function UIPetRuneIllustratedHandbook:OnBackButtonPressed() self:OnButtonClicked(self.UIPetPopUpBig.btn_Close) end function UIPetRuneIllustratedHandbook:OnButtonClicked(comp) if comp == self.UIPetPopUpBig.btn_Close then self:CloseView() else for i, v in ipairs(self.group_Rune) do if comp == v.btn_Skill then self:OnSelectRuneItem(self.group_Rune[i], self.typeRuneSkillList[i]) break end end end end return UIPetRuneIllustratedHandbook