PGRData/Script/matrix/xui/xuiprequelmain/grid/XUiMainPanelRegional.lua

174 lines
7.7 KiB
Lua
Raw Permalink Normal View History

2024-09-01 20:49:41 +00:00
local XUiMainPanelRegional = XClass(nil, "XUiMainPanelRegional")
function XUiMainPanelRegional:Ctor(ui, rootUi)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RootUi = rootUi
self:InitAutoScript()
self.CurrentPrequelGrid = nil
self.LastPrequelPrefabName = ""
self.PrequelGridList = {}
self.PrequelGridAsset = {}
self.PlotTab = XUiPanelPlotTab.New(self.PanelPlotTab, self.RootUi, self)
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiMainPanelRegional:InitAutoScript()
self:AutoInitUi()
self:AutoAddListener()
end
function XUiMainPanelRegional:AutoInitUi()
self.PanelRegional = self.Transform:Find("PanelRegional")
self.PanelPrequelStages = self.Transform:Find("PanelRegional/PanelPrequelStages")
self.TxtMode = self.Transform:Find("PanelRegional/PanelBt/TxtMode"):GetComponent("Text")
self.TxtProgress = self.Transform:Find("PanelRegional/PanelBt/TxtProgress"):GetComponent("Text")
self.PanelLeft = self.Transform:Find("PanelRegional/PanelLeft")
self.PanelPlotTab = self.Transform:Find("PanelRegional/PanelLeft/PanelPlotTab")
self.BtnSwitch2Fight = self.Transform:Find("PanelRegional/PanelBt/BtnSwitch2Fight"):GetComponent("Button")
self.ImgLock = self.Transform:Find("PanelRegional/PanelBt/BtnSwitch2Fight/ImgLock/Image"):GetComponent("Image")
self.PanelBottom = self.Transform:Find("PanelRegional/PanelBottom")
self.PanelJundu = self.Transform:Find("PanelRegional/PanelBottom/PanelJundu")
self.ImgJindu = self.Transform:Find("PanelRegional/PanelBottom/PanelJundu/ImgJindu"):GetComponent("Image")
self.ImgLingqu = self.Transform:Find("PanelRegional/PanelBottom/PanelJundu/ImgLingqu"):GetComponent("Image")
self.BtnTreasure = self.Transform:Find("PanelRegional/PanelBottom/PanelJundu/BtnTreasure"):GetComponent("Button")
self.PanelNum = self.Transform:Find("PanelRegional/PanelBottom/PanelNum")
self.TxtBfrtTaskTotalNum = self.Transform:Find("PanelRegional/PanelBottom/PanelNum/TxtBfrtTaskTotalNum"):GetComponent("Text")
self.TxtBfrtTaskFinishNum = self.Transform:Find("PanelRegional/PanelBottom/PanelNum/TxtBfrtTaskFinishNum"):GetComponent("Text")
self.ImgRedProgress = self.Transform:Find("PanelRegional/PanelBottom/PanelNum/ImgRedProgress")
self.BtnActDesc = self.Transform:Find("PanelRegional/BtnActDesc"):GetComponent("Button")
self.RImgChapterName = self.Transform:Find("PanelRegional/PanelBt/RImgChapterName"):GetComponent("RawImage")
self.PanelPlotTab.gameObject:SetActiveEx(false)
end
function XUiMainPanelRegional:RegisterClickEvent(uiNode, func)
if func == nil then
XLog.Error("XUiMainPanelRegional:RegisterClickEvent函数参数错误参数func不能为空")
return
end
if type(func) ~= "function" then
XLog.Error("XUiMainPanelRegional:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
end
local listener = function(...)
func(self, ...)
end
CsXUiHelper.RegisterClickEvent(uiNode, listener)
end
function XUiMainPanelRegional:AutoAddListener()
self:RegisterClickEvent(self.BtnTreasure, self.OnBtnTreasureClick)
self:RegisterClickEvent(self.BtnActDesc, self.OnBtnActDescClick)
end
function XUiMainPanelRegional:OnBtnTreasureClick()
self.RootUi:Switch2RewardList(self.ChapterCfg.ChapterId)
end
function XUiMainPanelRegional:OnBtnActDescClick()
if self.ChapterCfg then
local chapterId = self.ChapterCfg.ChapterId
local chapterInfo = XPrequelConfigs.GetPrequelChapterInfoById(chapterId)
local description = string.gsub(chapterInfo.ChapterDescription, "\\n", "\n")
XUiManager.UiFubenDialogTip("", description)
end
end
function XUiMainPanelRegional:OnRefresh(chapterCfg)
self.ChapterCfg = chapterCfg
self:RefreshStageList()
self:UpdateRewardView()
end
function XUiMainPanelRegional:UpdateRewardView()
if self.ChapterCfg then
local chapterId = self.ChapterCfg.ChapterId
self.ImgRedProgress.gameObject:SetActive(XDataCenter.PrequelManager.CheckRewardAvailable(chapterId))
local totalNum, finishedNum = self:GetRewardTotalNumAndFinishNum(chapterId)
self.TxtBfrtTaskTotalNum.text = totalNum
self.TxtBfrtTaskFinishNum.text = finishedNum
self.ImgJindu.fillAmount = finishedNum / totalNum * 1.0
end
end
function XUiMainPanelRegional:UpdateCover()
XEventManager.DispatchEvent(XEventId.EVENT_NOTICE_SELECTCOVER_CHANGE, {Cover = self.ChapterCfg, Index = self.CurrentSelectIdx})
end
function XUiMainPanelRegional:RefreshStageList()
local prefabName = self.ChapterCfg.PrefabName
if not prefabName or prefabName == "" then
XLog.Error("XUiMainPanelRegional:OnChapterSelected错误 : 没找到预制体 prefabName = " .. tostring(prefabName))
return
end
--local asset = self.PanelRegional:LoadPrefab(prefabName)
local asset = self.RootUi.PanelFullScreen:LoadPrefab(prefabName)
if asset == nil or (not asset:Exist()) then
XLog.Error("当前prefab不存在" .. tostring(prefabName))
return
end
if self.LastPrequelPrefabName ~= prefabName then
local grid = XUiPanelPrequelChapter.New(asset, self.RootUi)
--grid.Transform:SetParent(self.PanelRegional, false)
self.CurrentPrequelGrid = grid
self.LastPrequelPrefabName = prefabName
if not string.IsNilOrEmpty(self.ChapterCfg.UiBgPath) then
local bg = asset.transform:Find("RImgChapterBg")
if bg then
bg:GetComponent("RawImage"):SetRawImage(self.ChapterCfg.UiBgPath)
end
end
end
self.CurrentPrequelGrid:UpdatePrequelGrid(self.ChapterCfg.StageId)
self.CurrentPrequelGrid:Show()
local chapterId = self.ChapterCfg.ChapterId
local progressFinishedNum, progressTotalNum = XDataCenter.PrequelManager.GetChapterProgress(chapterId)
self.TxtProgress.text = CS.XTextManager.GetText("UiPrequelTitleProgressStrFormat", progressFinishedNum, progressTotalNum)
local totalNum, finishedNum = self:GetRewardTotalNumAndFinishNum(chapterId)
self.TxtBfrtTaskTotalNum.text = totalNum
self.TxtBfrtTaskFinishNum.text = finishedNum
self.ImgRedProgress.gameObject:SetActive(XDataCenter.PrequelManager.CheckRewardAvailable(chapterId))
self.ImgJindu.fillAmount = finishedNum / totalNum * 1.0
-- local rect = XConditionManager.CheckCondition(self.ChapterCfg.ChallengeCondition)
-- self.ImgLock.gameObject:SetActive(not rect)
-- if true then
-- else
-- self.ImgLock.gameObject:SetActive(false)
-- end
if string.IsNilOrEmpty(self.ChapterCfg.RImgChapterNamePath) then
XLog.Warning("间章标题图片路径为空值设置失败chapterId = " .. chapterId .. " 请检查Chapter.tab表")
self.RImgChapterName.gameObject:SetActiveEx(false)
else
self.RImgChapterName:SetRawImage(self.ChapterCfg.RImgChapterNamePath)
self.RImgChapterName.gameObject:SetActiveEx(true)
end
end
function XUiMainPanelRegional:GetRewardTotalNumAndFinishNum(chapterId)
local totalNum = 0
local finishNum = 0
local chapterCfg = XPrequelConfigs.GetPrequelChapterById(chapterId)
for _, stageId in pairs(chapterCfg and chapterCfg.StageId or {}) do
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
if stageCfg.FirstRewardShow > 0 then
totalNum = totalNum + 1
if XDataCenter.PrequelManager.IsRewardStageCollected(stageId) then
finishNum = finishNum + 1
end
end
end
return totalNum, finishNum
end
function XUiMainPanelRegional:SetPanelActive(isActive)
if self.CurrentPrequelGrid then self.CurrentPrequelGrid.GameObject:SetActiveEx(isActive) end
self.GameObject:SetActiveEx(isActive)
end
return XUiMainPanelRegional