PGRData/Script/matrix/xui/xuicourse/XUiCourseMain.lua
2024-09-01 22:49:41 +02:00

150 lines
No EOL
5.3 KiB
Lua

--=========================================================================
-- v1.30 考级系统 章节格子背景
--=========================================================================
local XUiBgGrid = XClass(nil, "XUiBgGrid")
function XUiBgGrid:Ctor(ui, chapterGroupId)
self.Ui = ui
self.GameObject = ui.gameObject
XUiHelper.InitUiClass(self, self.Ui)
self.ChapterGroupId = chapterGroupId
end
function XUiBgGrid:Refresh()
local chapterGroupId = self.ChapterGroupId
self.RImgA:SetRawImage(XCourseConfig.GetChapterGroupBg(chapterGroupId))
self.TxtSuo.text = XCourseConfig.GetChapterGroupLockDesc(chapterGroupId)
self.PanelSuo.gameObject:SetActiveEx(not XDataCenter.CourseManager.CheckChapterGroupIsOpen(chapterGroupId))
end
--=========================================================================
-- v1.30 考级系统 课程主界面
--=========================================================================
local XUiCourseMain = XLuaUiManager.Register(XLuaUi,"UiCourseMain")
local XUiCourseMainPanel = require("XUi/XUiCourse/XUiCourseMainPanel")
local XUiCourseAssetPanel = require("XUi/XUiCourse/XUiCourseAssetPanel")
function XUiCourseMain:OnAwake()
self:AddButtonListenr()
self.ChapterGroupBgGrids = {} --章节组背景格子列表
self:InitPanelBg()
end
function XUiCourseMain:OnStart()
self:InitData()
self:InitDynamicList()
-- 红点监听
XDataCenter.CourseManager.AddDataUpdataListener(function() self:CheckRedPoint() end, self)
-- 资产
--XUiHelper.NewPanelActivityAsset( { XCourseConfig.GetPointItemId() }, self.PanelSpecialTool)
self.PanelAsset = XUiCourseAssetPanel.New(self.PanelSpecialTool)
end
function XUiCourseMain:OnEnable()
XUiCourseMain.Super.OnEnable(self)
self:RefreshUi()
self:CheckRedPoint()
end
function XUiCourseMain:OnDisable()
XUiCourseMain.Super.OnDisable(self)
end
function XUiCourseMain:InitDynamicList()
self.DynamicTable = XDynamicTableNormal.New(self.PanelChapterList)
self.DynamicTable:SetProxy(XUiCourseMainPanel, self)
self.DynamicTable:SetDelegate(self)
self.PanelAllLevel.gameObject:SetActiveEx(false)
end
function XUiCourseMain:InitData()
local maxCount = 0
self.ChapterGroupList = XCourseConfig.GetActivityGroupIds(XCourseConfig.SystemType.Lesson)
--初始化章节组的背景
local chapterIds
for index, chapterGroupId in ipairs(self.ChapterGroupList) do
chapterIds = XCourseConfig.GetChapterIds(chapterGroupId)
self.ChapterGroupBgGrids[index] = XUiBgGrid.New(XUiHelper.Instantiate(self.Bg, self.PanelBg), chapterGroupId)
maxCount = math.max(maxCount, #chapterIds)
end
self.Bg.gameObject:SetActiveEx(false)
--初始化滑动列表可视区域的高度
local height = self.GridLevel.transform.rect.height
self.PanelChapterContentHeight = maxCount * height
end
local Offset
function XUiCourseMain:InitPanelBg()
self.PanelChapterDynamicTable = self.PanelChapterList:GetComponent("XDynamicTableNormal")
self.OriginPanelBgY = self.PanelBg.anchoredPosition.y
self.PanelBg.anchoredPosition = CS.UnityEngine.Vector2(self.PanelChapterDynamicTable.Padding.left, self.OriginPanelBgY)
Offset = self.PanelBg.anchoredPosition - self.PanelChapterContent.anchoredPosition
end
--更新章节组背景的位置
function XUiCourseMain:UpdateImgBgPos()
if XTool.UObjIsNil(self.PanelChapterContent)
or not self.OriginPanelBgY
or not Offset then
return
end
local tmpPos = self.PanelChapterContent.anchoredPosition + Offset
tmpPos.y = self.OriginPanelBgY
self.PanelBg.anchoredPosition = tmpPos
end
-- 刷新模块面板
function XUiCourseMain:RefreshUi()
self.PanelAsset:Refresh()
self:UpdateDynamicTable()
self:UpdateBg()
end
function XUiCourseMain:UpdateBg()
for index, grid in ipairs(self.ChapterGroupBgGrids) do
grid:Refresh()
end
end
function XUiCourseMain:UpdateDynamicTable()
self.DynamicTable:SetDataSource(self.ChapterGroupList)
self.DynamicTable:ReloadDataSync()
end
function XUiCourseMain:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:Refresh(self.ChapterGroupList[index], index)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_RELOAD_COMPLETED then
local height = math.max(self.PanelChapterContentHeight, self.PanelChapterContent.transform.rect.height)
self.PanelChapterContent:SetInsetAndSizeFromParentEdge(CS.UnityEngine.RectTransform.Edge.Top, 0, height)
self.ScrollRect.vertical = true
end
end
-- 设置红点
function XUiCourseMain:CheckRedPoint()
if self.BtnEnterExam.ShowReddot then
self.BtnEnterExam:ShowReddot(XDataCenter.CourseManager.CheckCourseExamReddot())
end
end
function XUiCourseMain:AddButtonListenr()
local helpDataKey = XCourseConfig.GetCourseClientConfig("HelpKey").Values[1]
self:BindHelpBtn(self.BtnHelp, helpDataKey)
self:BindExitBtns()
self:RegisterClickEvent(self.BtnEnterExam, self.OnBtnEnterExamClick)
self.PanelStageListScrollRect = self.PanelChapterList:GetComponent("ScrollRect")
self.PanelStageListScrollRect.onValueChanged:AddListener(function(vec2Data)
self:UpdateImgBgPos()
end)
end
function XUiCourseMain:OnBtnEnterExamClick()
XLuaUiManager.PopThenOpen("UiCourseCombatlicense")
end