PGRData/Script/matrix/xui/xuifuben/extralline/XUiGridExtralLineChapter.lua

113 lines
5 KiB
Lua
Raw Normal View History

2024-09-01 22:49:41 +02:00
local XUiGridFubenChapter = require("XUi/XUiFuben/UiDynamicList/XUiGridFubenChapter")
local XUiBtnDownload = require("XUi/XUiDlcDownload/XUiBtnDownload")
local XUiGridExtralLineChapter = XClass(XUiGridFubenChapter, "XUiGridExtralLineChapter")
function XUiGridExtralLineChapter:Ctor(ui, clickFunc, openCb)
XUiHelper.InitUiClass(self, ui)
self.ClickFunc = clickFunc
self.ChapterViewModel = nil
self.Manager = nil
XUiHelper.RegisterClickEvent(self, self.BtnSelf, self.OnBtnSelfClicked)
self:SetOpenCallback(openCb)
---@type XUiBtnDownload
self.GirdBtnDownload = XUiBtnDownload.New(self.BtnDownload)
end
function XUiGridExtralLineChapter:SetManager(value)
self.Manager = value
end
function XUiGridExtralLineChapter:SetData(index, viewModel)
XUiGridExtralLineChapter.Super.SetData(self, index)
self.ChapterViewModel = viewModel
-- 背景图
self.RImgBigIcon:SetRawImage(viewModel:GetIcon())
-- 进度条
local hideProgressBar = viewModel.CheckHideProgressBar and viewModel:CheckHideProgressBar() or false
self.ImgProgress.gameObject:SetActiveEx(not hideProgressBar)
self.BgProgress.gameObject:SetActiveEx(not hideProgressBar and not viewModel:GetIsLocked())
if not hideProgressBar then
local currentProgress, maxProgress = viewModel:GetCurrentAndMaxProgress()
self.ImgProgress.fillAmount = currentProgress / maxProgress
self.TxtProgress.text = string.format( "%s%%", math.ceil(100 * currentProgress / maxProgress))
end
-- 进度提示
local progressTips = viewModel:GetProgressTips()
if not string.IsNilOrEmpty(progressTips) then
self.TxtProgress.text = progressTips
if self.TxtProgress2 then
self.TxtProgress2.text = progressTips
end
end
self.TxtPercentNormal.gameObject:SetActiveEx(not viewModel:GetIsLocked())
local isShowThumbnailProgressTips = viewModel.CheckShowThumbnailProgressTips and viewModel:CheckShowThumbnailProgressTips() or false
if self.TxtProgress2 then
self.TxtProgress2.gameObject:SetActiveEx(isShowThumbnailProgressTips)
end
-- 名字
self.TxtName.text = string.format("%s %s", viewModel:GetExtralName(), viewModel:GetName())
local minText = string.gsub(self.TxtName.text, "ER", "") -- 缩略图太挤了 去掉前缀
minText = string.gsub(minText, "EX", "")
self.TxtName2.text = viewModel.GetMinCharacterName and viewModel.GetMinCharacterName() or minText
-- 锁
self.PanelChapterLock.gameObject:SetActiveEx(viewModel:GetIsLocked())
self.TxtLock1.text = XUiHelper.GetText("CommonLockedTip") --2是放大的1是缩小的
self.TxtLock2.text = viewModel:GetLockTip()
-- 左上角标签
self.PanelActivityTag.gameObject:SetActiveEx(viewModel:CheckHasTimeLimitTag())
self.PanelNewEffect.gameObject:SetActiveEx(viewModel:CheckHasNewTag())
-- 周目挑战
local weeklyChallengeCount = viewModel:GetWeeklyChallengeCount()
self.PanelMultipleWeeksTag.gameObject:SetActiveEx(weeklyChallengeCount > 0)
self.TxtWeekNum.text = weeklyChallengeCount
self.UnSelectedImg.gameObject:SetActiveEx(not viewModel:GetIsLocked()) -- 避免刷新数据格子换数据,出现的双层遮罩问题
-- 红点处理
self:RefreshRedPoint()
-- 普通模式(之后不再需要普通模式标签)
self.PanelNormal.gameObject:SetActiveEx(false)
local chapterType = self.Manager:ExGetChapterType()
self.ImgKuai.gameObject:SetActiveEx(chapterType == XFubenConfigs.ChapterType.Prequel)
local entryType = XDlcConfig.GetEntryTypeByChapterType(chapterType)
self.GirdBtnDownload:Init(entryType, self.ChapterViewModel:GetId(), nil, handler(self, self.OnDownloadComplete))
self.GirdBtnDownload:RefreshView()
self.RImgLockMask.gameObject:SetActiveEx(viewModel:GetIsLocked() or self.GirdBtnDownload:CheckNeedDownload())
end
function XUiGridExtralLineChapter:OnBtnSelfClicked()
if self.GirdBtnDownload:CheckNeedDownload() then
self.GirdBtnDownload:OnBtnClick()
return
end
if self.ClickFunc then
self.ClickFunc(self.Index, self.ChapterViewModel)
end
end
function XUiGridExtralLineChapter:RefreshRedPoint()
if self.Manager:ExCheckHasOtherDifficulty() then
local hardViewModel = self.Manager:ExGetChapterViewModelById(self.ChapterViewModel:GetId(), XDataCenter.FubenManager.DifficultHard)
self.ImgRedDot.gameObject:SetActiveEx(self.ChapterViewModel:CheckHasRedPoint() or (hardViewModel and hardViewModel:CheckHasRedPoint()) )
else
self.ImgRedDot.gameObject:SetActiveEx(self.ChapterViewModel:CheckHasRedPoint())
end
end
function XUiGridExtralLineChapter:GetMoveDuration(isOpen)
if isOpen then
return XFubenConfigs.ExtralLineMoveOpenTime
else
return XFubenConfigs.ExtralLineMoveCloseTime
end
end
function XUiGridExtralLineChapter:OnDownloadComplete()
if XTool.UObjIsNil(self.GameObject) then
return
end
self.RImgLockMask.gameObject:SetActiveEx(self.ChapterViewModel:GetIsLocked() or self.GirdBtnDownload:CheckNeedDownload())
end
return XUiGridExtralLineChapter