local UIWeaponIllustratedBase = UIViewClass() local CountryTabEnum = { Init = -1, Shu = 0, Wei = 1, Wu = 2, Qun = 3 } local CountryName = { [CountryTabEnum.Shu] = UIUtils.GetLocalizedTxt(Const_IDS["IDS_Handbook_Hero_Country_ShuGuo"]), [CountryTabEnum.Wei] = UIUtils.GetLocalizedTxt(Const_IDS["IDS_Handbook_Hero_Country_WeiGuo"]), [CountryTabEnum.Wu] = UIUtils.GetLocalizedTxt(Const_IDS["IDS_Handbook_Hero_Country_WuGuo"]), [CountryTabEnum.Qun] = UIUtils.GetLocalizedTxt(Const_IDS["IDS_Handbook_Hero_Country_QunXiong"]) } local ProgressStr = "%d/%d" local GRAY_COLOR = "93969c" local PrefabScoreTipPath = "Common/UICommonInfoTipsNew" ---------------------------------------------- 系统函数 ---------------------------------------------------------- function UIWeaponIllustratedBase:OnOpened() UIUtils.SetLabelText(self.UITemplateTitlePanel.lab_Title, Const_IDS["IDS_Handbook_MV_Title"]) UIUtils.SetActive(self.loop_HeroCard,false) UIUtils.SetActive(self.loop_TreasureHorse,false) UIUtils.SetActive(self.loop_WeaponCard,true) UIUtils.SetActive(self.loop_Stratagem,false) UIUtils.SetActive(self.loop_lightEffectPictorial, false) UIUtils.SetActive(self.loop_lightEffectPictorialSuit, false) self:RegistSystemEvent(EventID.UI_Illustration_WeaponLibrary_RefreshBase, self.RefreshPanel) self.selectedCountryTab = CountryTabEnum.Init self.weaponAttrCount = 0 self.group_Toggles:SelectIndex(CountryTabEnum.Shu) end function UIWeaponIllustratedBase:OnBackButtonPressed() self:OnButtonClicked(self.UITemplateTitlePanel.btn_close) end function UIWeaponIllustratedBase:OnButtonClicked(comp) if comp == self.UITemplateTitlePanel.btn_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.WeaponPictorial}) 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.UIWeaponIllustratedLevelTip, 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.Weapon) elseif comp == self.btn_CloseAttr then UIUtils.SetActive(self.group_Attributes, false) end end function UIWeaponIllustratedBase:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_WeaponCard then local isCanUpdate = MDL.WeaponLibrary.IsWeaponCanUpdate(data.MagicWeaponID) local isUnlock = MDL.WeaponLibrary.GetWeaponLevel(data.MagicWeaponID) > -1 local isAwaken = MDL.HeroAwaken.GetIsWeaponAwaken(data.MagicWeaponID) local weaponName if isAwaken then CTL.HeroAwaken.SetWeaponImage(cellTable.img_Hero, data.MagicWeaponID) weaponName = string.FormatByIdsId(Const_IDS.IDS_HeroAwaken_Awaken, UIUtils.GetLocalizedTxt(Const_IDS[data.MagicWeaponName])) else UTL.Item.SetHeroHalfCardImageByHeroId(cellTable.img_Hero, data.MagicWeaponID) weaponName = UIUtils.GetLocalizedTxt(Const_IDS[data.MagicWeaponName]) end local quality = CTL.HeroAwaken.GetWeaponQuality(data.MagicWeaponID, isAwaken) UTL.Color.SetQualityImageByType(cellTable.img_Quality, quality, UTL.Color.QualityType.Pictorial) if isAwaken then CTL.HeroAwaken.SetWeaponImage(cellTable.weapon, data.MagicWeaponID) else local itemIcon = string.format(ConstAssetPathConfig.Path22, data.MagicWeaponPicture) UIUtils.SetImageByAssetBundle(cellTable.weapon, itemIcon) end cellTable.weapon:SetNativeSize() UIUtils.SetLabel(cellTable.txt_Name, not isUnlock and UTL.Color.FormatTextByColor(GRAY_COLOR, weaponName) or UTL.Color.FormatQualityText(weaponName, quality)) UIUtils.SetActive(cellTable.group_Light, isCanUpdate) UIUtils.SetGray(cellTable.img_Quality, not isUnlock) UIUtils.SetGray(cellTable.img_Hero, not isUnlock) UIUtils.SetGray(cellTable.weapon, not isUnlock) UIUtils.SetActive(cellTable.img_Gray, not isUnlock) UIUtils.SetActive(cellTable.group_Lv, isUnlock) UIUtils.SetLabel(cellTable.txt_LibraryLv, string.FormatByIdsId(Const_IDS["IDS_Handbook_Hero_LevelNum"], MDL.WeaponLibrary.GetWeaponLevel(data.MagicWeaponID))) if isCanUpdate then cellTable.effect_Light:PlayUIEffect() UIUtils.SetLabelText(cellTable.txt_Tip, MDL.WeaponLibrary.GetWeaponLevel(data.MagicWeaponID) == - 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.WeaponLibrary.GetAttrValue(data, self.weaponAttrCount - 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 UIWeaponIllustratedBase:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_WeaponCard then UIManager.OpenView(Const_UI_Lua.UIEnum.UIWeaponIllustratedPopUp, data, Const_UI_Lua.UIEnum.UIHeroIllustratedPopUp) end end function UIWeaponIllustratedBase:OnValueChanged(comp, state) if comp == self.group_Toggles then if self.selectedCountryTab ~= state then self.selectedCountryTab = state self:RefreshPanel(true) end end end ------------------------------------------------------------------------------------------------------------------- function UIWeaponIllustratedBase:RefreshPanel(isRebuild) self:RefreshAttrs() --获取前,需要先刷新数据 MDL.WeaponLibrary.ResortByHero() local weaponList = MDL.WeaponLibrary.GetWeaponList(self.selectedCountryTab) local moveIndex = -1 if self.loop_WeaponCard.Count == 0 or isRebuild then self.count = 0 self.loop_WeaponCard:ClearCells() for i, v in ipairs (weaponList) do if CTL.WeaponLibrary.CheckIsHeroOpen(v.MagicWeaponID) then self.loop_WeaponCard:AddData(v, 0) self.count = self.count + 1 if moveIndex == -1 and MDL.WeaponLibrary.IsWeaponCanUpdate(v.MagicWeaponID) then moveIndex = i - 1 end end end else self.loop_WeaponCard:RefreshCells(false) for i, v in ipairs (weaponList) do if moveIndex == -1 and MDL.WeaponLibrary.IsWeaponCanUpdate(v.MagicWeaponID) and CTL.WeaponLibrary.CheckIsHeroOpen(v.MagicWeaponID) then moveIndex = i - 1 end end end local red_1 = MDL.WeaponLibrary.IsShowRPByTab(CountryTabEnum.Shu) local red_2 = MDL.WeaponLibrary.IsShowRPByTab(CountryTabEnum.Wei) local red_3 = MDL.WeaponLibrary.IsShowRPByTab(CountryTabEnum.Wu) local red_4 = MDL.WeaponLibrary.IsShowRPByTab(CountryTabEnum.Qun) self.group_Toggles:SetRedPoint(0, red_1) self.group_Toggles:SetRedPoint(1, red_2) self.group_Toggles:SetRedPoint(2, red_3) self.group_Toggles:SetRedPoint(3, red_4) local isUpgrade = red_1 or red_2 or red_3 or red_4 UIUtils.SetActive(self.btn_OneKey, isUpgrade) -- 跳转到最近可解锁或可升级 if moveIndex ~= -1 then self.loop_WeaponCard:MoveIndex(moveIndex) end -- 积分 local level, score = MDL.WeaponLibrary.GetLibraryLevelAndScore() local pictorialCfg = DataSheetManager.MWPictorialScore:GetDataByLevelID(level + 1) if not pictorialCfg then pictorialCfg = DataSheetManager.MWPictorialScore:GetDataByLevelID(level) end -- 满级 if level == DataSheetManager.MWPictorialScore: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_MW_MWScore_Tips"]), level)) self.slider_Score.value = score / pictorialCfg.NeedScore -- 解锁说明 local unlock, amount = MDL.WeaponLibrary.GetUnlockAndAmountWeaponCount(self.selectedCountryTab) UIUtils.SetLabel(self.txt_HeroUnlockTitle, string.FormatByIdsId(Const_IDS["IDS_Handbook_MW_ActivatedNum"], CountryName[self.selectedCountryTab])) UIUtils.SetLabel(self.txt_HeroUnlockValue, string.format(ProgressStr, unlock, self.count)) end function UIWeaponIllustratedBase:RefreshAttrs() if self.group_Attributes.gameObject.activeSelf then if self.loop_Pandect.Count == 0 then self.weaponAttrCount = 1 self.loop_Pandect:ClearCells() -- 属性总览 self.loop_Pandect:AddData(UIUtils.GetLocalizedTxt(Const_IDS["IDS_Handbook_Hero_AttrPreview"]), 0) for k, _ in pairs (MDL.WeaponLibrary.GetAttrs()) do self.weaponAttrCount = self.weaponAttrCount + 1 self.loop_Pandect:AddData(k, 1) end -- 积分属性 self.loop_Pandect:AddData(UIUtils.GetLocalizedTxt(Const_IDS["IDS_Handbook_MW_MWScoreUp"]), 0) for k, _ in pairs (MDL.WeaponLibrary.GetAttrs(true)) do self.loop_Pandect:AddData(k, 1) end else self.loop_Pandect:RefreshCells(false) end end end return UIWeaponIllustratedBase