PGRData/Script/matrix/xui/xuiprequel/XUiPanelChallengeChapter.lua

138 lines
4.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

XUiPanelChallengeChapter = XClass(nil, "XUiPanelChallengeChapter")
local XUguiDragProxy = CS.XUguiDragProxy
function XUiPanelChallengeChapter:Ctor(ui, rootUi)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RootUi = rootUi
self:InitAutoScript()
self.BoundSizeFitter = self.UiContent:GetComponent("XBoundSizeFitter")
self.GridChallengeList = {}
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiPanelChallengeChapter:InitAutoScript()
self:AutoInitUi()
self:AutoAddListener()
end
function XUiPanelChallengeChapter:AutoInitUi()
self.GridChallengeItem = self.Transform:Find("GridChallengeItem")
self.SViewChallenge = self.Transform:Find("SViewChallange"):GetComponent("ScrollRect")
self.UiContent = self.Transform:Find("SViewChallange/Viewport/UiContent")
local dragProxy = self.SViewChallenge:GetComponent(typeof(XUguiDragProxy))
if not dragProxy then
dragProxy = self.SViewChallenge.gameObject:AddComponent(typeof(XUguiDragProxy))
end
dragProxy:RegisterHandler(handler(self, self.OnDragProxy))
end
function XUiPanelChallengeChapter:RegisterClickEvent(uiNode, func)
if func == nil then
XLog.Error("XUiPanelChallengeChapter:RegisterClickEvent函数参数错误参数func不能为空")
return
end
if type(func) ~= "function" then
XLog.Error("XUiPanelChallengeChapter:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
end
local listener = function(...)
func(self, ...)
end
CsXUiHelper.RegisterClickEvent(uiNode, listener)
end
function XUiPanelChallengeChapter:AutoAddListener()
end
-- auto
function XUiPanelChallengeChapter:UpdateChallengeGrid(data)
self.ChallengeStageDataList = data
local index = 0
for i=1, #self.ChallengeStageDataList do
local grid = self.GridChallengeList[i]
if not grid then
local cell = self.UiContent.transform:Find(string.format("GridChallengeItem%d", i))
if not cell then
XLog.Error("XUiPanelChallengeChapter:UpdateChallengeGrid error: prefab not found a child name : " .. string.format("GridChallengeItem%d", i))
end
grid = XUiGridChallengeItem.New(cell, self.RootUi, i, function(idx) self:OnChallengeItemClick(idx) end)
self.GridChallengeList[i] = grid
end
grid:UpdateChallengeGridInfo(self.ChallengeStageDataList[i])
grid.GameObject:SetActive(true)
index = i
end
index = index + 1
local hideGrid = self.UiContent.transform:Find(string.format("GridChallengeItem%d", index))
while hideGrid do
hideGrid.gameObject:SetActive(false)
index = index + 1
hideGrid = self.UiContent.transform:Find(string.format("GridChallengeItem%d", index))
end
-- [跳到最后开放的位置]
if self.SViewChallenge then
self.SViewChallenge.horizontalNormalizedPosition = 1
end
end
function XUiPanelChallengeChapter:OnChallengeItemClick(i)
local grid = self.GridChallengeList[i]
if not grid then return end
self:PlayScrollViewMove(grid)
end
function XUiPanelChallengeChapter:OnPrequelDetailClosed()
self.SViewChallenge.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Elastic
end
function XUiPanelChallengeChapter:PlayScrollViewMove(grid)
-- 跟主线一样的动画
self.SViewChallenge.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Unrestricted
local gridRect = grid.GameObject:GetComponent("RectTransform")
local diffX = gridRect.localPosition.x + self.UiContent.localPosition.x
if diffX < XDataCenter.FubenMainLineManager.UiGridChapterMoveMinX or diffX > XDataCenter.FubenMainLineManager.UiGridChapterMoveMaxX then
local tarPosX = XDataCenter.FubenMainLineManager.UiGridChapterMoveTargetX - gridRect.localPosition.x
local tarPos = self.UiContent.localPosition
tarPos.x = tarPosX
XLuaUiManager.SetMask(true)
XUiHelper.DoMove(self.UiContent, tarPos, XDataCenter.FubenMainLineManager.UiGridChapterMoveDuration, XUiHelper.EaseType.Sin, function()
XLuaUiManager.SetMask(false)
end)
end
end
function XUiPanelChallengeChapter:UpdateItems()
for i=1, #self.ChallengeStageDataList do
if self.GridChallengeList[i] then
self.GridChallengeList[i]:UpdateAutoFightStatus()
end
end
end
function XUiPanelChallengeChapter:Show()
if self.GameObject.activeSelf == true then return end
self.GameObject:SetActiveEx(true)
end
function XUiPanelChallengeChapter:Hide()
if self.GameObject.activeSelf == false then return end
self.GameObject:SetActiveEx(false)
end
function XUiPanelChallengeChapter:OnDragProxy(dragType)
if dragType == 0 then
self.RootUi:OnClosePrequelDetail()
end
end
return XUiPanelChallengeChapter