local UIStratagemIllustratedBase = UIViewClass() local ProgressStr = "%d/%d" local GRAY_COLOR = "93969c" local PrefabScoreTipPath = "Common/UICommonInfoTipsNew" function UIStratagemIllustratedBase:OnOpened() UIUtils.SetLabelText(self.UITemplateTitlePanel.lab_Title, Const_IDS["IDS_Handbook_Stratagem_Title"]) UIUtils.SetActive(self.loop_HeroCard, false) UIUtils.SetActive(self.loop_TreasureHorse, false) UIUtils.SetActive(self.loop_WeaponCard, false) UIUtils.SetActive(self.loop_lightEffectPictorial, false) UIUtils.SetActive(self.loop_lightEffectPictorialSuit, false) UIUtils.SetActive(self.loop_Stratagem, true) self:RegistSystemEvent(EventID.UI_Illustration_Stratagem_RefreshBase, self.RefreshPanel) self.stratagemAttrCount = 0 UIUtils.SetActive(self.group_Toggles, false) self:RefreshPanel(true) end function UIStratagemIllustratedBase:OnBackButtonPressed() self:OnButtonClicked(self.UITemplateTitlePanel.btn_close) end function UIStratagemIllustratedBase:OnButtonClicked(comp) if comp == self.UITemplateTitlePanel.btn_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, { id = LuaConst.NoteID.StratagemPictorial }) elseif comp == self.UITemplateTitlePanel.btn_close then self:CloseView(true) elseif comp == self.UITemplateTitlePanel.btn_Home then CTL.HomeMain.CloseViewBackHomeMain() elseif comp == self.btn_Info then -- 积分说明 UIManager.OpenView(Const_UI_Lua.UIEnum.UIStratagemIllustratedLevelTip, nil, PrefabScoreTipPath) elseif comp == self.btn_Pandect then -- 属性总览 UIUtils.SetActive(self.group_Attributes, true) self:RefreshAttrs() elseif comp == self.btn_OneKey then MDL.HeroLibrary.OneKeyPictorialLevelUpReq(LuaConst.PictorialType.Stratagem) elseif comp == self.btn_CloseAttr then UIUtils.SetActive(self.group_Attributes, false) end end function UIStratagemIllustratedBase:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_Stratagem then local isCanUnlockOrUpdate = MDL.StratagemLibrary.CanUnlockOrUpdate(data.ID) local unlocked = MDL.Stratagem.GetPictorialLevel(data.ID) > 0 UTL.Color.SetQualityImageByType(cellTable.img_QualityBg, data.StratagemQuality, UTL.Color.QualityType.Pictorial) UIUtils.SetImageByAssetBundle(cellTable.img_StratagemIcon, data.PicturePath) UIUtils.SetLabel(cellTable.txt_StratagemName, not unlocked and UTL.Color.FormatTextByColor(GRAY_COLOR, UIUtils.GetLocalizedTxt(Const_IDS[data.StratagemName])) or UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[data.StratagemName]), data.StratagemQuality)) UIUtils.SetActive(cellTable.group_Light, isCanUnlockOrUpdate) UIUtils.SetGray(cellTable.img_QualityBg, not unlocked) UIUtils.SetGray(cellTable.img_StratagemIcon, not unlocked) UIUtils.SetActive(cellTable.img_Gray, not unlocked) UIUtils.SetActive(cellTable.group_Lv, unlocked) UIUtils.SetLabel(cellTable.txt_LibraryLv, string.FormatByIdsId(Const_IDS["IDS_Handbook_Hero_LevelNum"], MDL.Stratagem.GetPictorialLevel(data.ID))) if isCanUnlockOrUpdate then cellTable.effect_Light:PlayUIEffect() UIUtils.SetLabelText(cellTable.txt_Tip, MDL.Stratagem.GetPictorialLevel(data.ID) < 1 and Const_IDS["IDS_Handbook_Hero_AbleToActivate"] or Const_IDS["IDS_Handbook_Hero_AbleToLevelUp"]) end elseif scrollRect == self.loop_Pandect then if type(data) == "number" then local attrData = DataSheetManager.AttrData:GetDataByID(data) local attrValue = MDL.StratagemLibrary.GetAttrValue(data, self.attrCount - 1 < index) UIUtils.SetLabelText(cellTable.txt_Attr, Const_IDS[attrData.Name]) UTL.Item.SetAtlasSprite(cellTable.img_AttrIcon, "UI_Common", attrData.Icon) UIUtils.SetLabel(cellTable.txt_NumBefore, attrValue) else UIUtils.SetLabel(cellTable.txt_Title, data) end end end function UIStratagemIllustratedBase:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_Stratagem then UIManager.OpenView(Const_UI_Lua.UIEnum.UIStratagemIllustratedPopUp, data, Const_UI_Lua.UIEnum.UIHeroIllustratedPopUp) end end function UIStratagemIllustratedBase:RefreshPanel(isRebuild) self:RefreshAttrs() local sortedList = MDL.Stratagem.GetSortList() local moveIndex = -1 if self.loop_Stratagem.Count == 0 or isRebuild then self.count = 0 self.loop_Stratagem:ClearCells() for i, v in ipairs(sortedList) do self.loop_Stratagem:AddData(v, 0) self.count = self.count + 1 if moveIndex == -1 and MDL.StratagemLibrary.CanUnlockOrUpdate(v.ID) then moveIndex = i - 1 end end else self.loop_Stratagem:RefreshCells(false) for i, v in ipairs(sortedList) do if moveIndex == -1 and MDL.StratagemLibrary.CanUnlockOrUpdate(v.ID) then moveIndex = i - 1 end end end -- 跳转到最近可解锁或可升级 if moveIndex ~= -1 then self.loop_Stratagem:MoveIndex(moveIndex) end -- 积分 local level, score = MDL.StratagemLibrary.GetLibraryLevelAndScore() local dataCfg = DataSheetManager.StratagemPictorialScore local pictorialCfg = dataCfg:GetDataByLevelID(level + 1) if not pictorialCfg then pictorialCfg = dataCfg:GetDataByLevelID(level) end -- 满级 if level == dataCfg:GetDataCount() then UIUtils.SetLabel(self.txt_Num, score) else UIUtils.SetLabel(self.txt_Num, string.format(ProgressStr, score, pictorialCfg.NeedScore)) end UIUtils.SetLabel(self.lab_Score, string.format(UIUtils.GetLocalizedTxt(Const_IDS["IDS_Handbook_Stratagem_StratagemScore_Tips"]), level)) self.slider_Score.value = score / pictorialCfg.NeedScore -- 解锁说明 local unlock = MDL.Stratagem.GetUnlockPictorialCount() UIUtils.SetLabelText(self.txt_HeroUnlockTitle, Const_IDS["IDS_Handbook_Stratagem_ActivatedNum"]) UIUtils.SetLabel(self.txt_HeroUnlockValue, string.format(ProgressStr, unlock, self.count)) UIUtils.SetActive(self.btn_OneKey, MDL.StratagemLibrary.IsShowRP()) end function UIStratagemIllustratedBase:RefreshAttrs() if self.group_Attributes.gameObject.activeSelf then if self.loop_Pandect.Count == 0 then self.attrCount = 1 self.loop_Pandect:ClearCells() -- 属性总览 self.loop_Pandect:AddData(UIUtils.GetLocalizedTxt(Const_IDS["IDS_Handbook_Hero_AttrPreview"]), 0) for k, _ in pairs(MDL.StratagemLibrary.GetAttrs()) do self.attrCount = self.attrCount + 1 self.loop_Pandect:AddData(k, 1) end -- 积分属性 self.loop_Pandect:AddData(UIUtils.GetLocalizedTxt(Const_IDS["IDS_Handbook_Stratagem_StratagemScoreUp"]), 0) for k, _ in pairs(MDL.StratagemLibrary.GetAttrs(true)) do self.loop_Pandect:AddData(k, 1) end else self.loop_Pandect:RefreshCells(false) end end end return UIStratagemIllustratedBase