forked from endernon/PGRData
177 lines
No EOL
5.9 KiB
Lua
177 lines
No EOL
5.9 KiB
Lua
local XUiGridSimulationChallenge = XClass(nil, "XUiGridSimulationChallenge")
|
||
local XUiBtnDownload = require("XUi/XUiDlcDownload/XUiBtnDownload")
|
||
local IsThisTransformPlayAnim = false
|
||
|
||
function XUiGridSimulationChallenge:Ctor(ui)
|
||
self.GameObject = ui.gameObject
|
||
self.Transform = ui.transform
|
||
self.GridList = {}
|
||
self:SetHasPlay(false)
|
||
XTool.InitUiObject(self)
|
||
self:InitAutoScript()
|
||
---@type XUiBtnDownload
|
||
self.GirdBtnDownload = XUiBtnDownload.New(self.BtnDownload)
|
||
end
|
||
|
||
-- auto
|
||
-- Automatic generation of code, forbid to edit
|
||
function XUiGridSimulationChallenge:InitAutoScript()
|
||
self:AutoAddListener()
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:RegisterClickEvent(uiNode, func)
|
||
if func == nil then
|
||
XLog.Error("XUiGridSimulationChallenge:RegisterClickEvent函数参数错误:参数func不能为空")
|
||
return
|
||
end
|
||
|
||
if type(func) ~= "function" then
|
||
XLog.Error("XUiGridSimulationChallenge:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
||
end
|
||
|
||
local listener = function(...)
|
||
func(self, ...)
|
||
end
|
||
|
||
CsXUiHelper.RegisterClickEvent(uiNode, listener)
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:AutoAddListener()
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:PlayEnableAnime(index)
|
||
if self:GetHasPlay() then
|
||
return
|
||
end
|
||
|
||
if XDataCenter.GuideManager.CheckIsInGuide() then
|
||
return
|
||
end
|
||
|
||
local rect = self.UseGrid:GetComponent("RectTransform")
|
||
local beforePlayPosY = rect.anchoredPosition.y
|
||
local canvasGroup = self.Transform:Find("Grid"):GetComponent("CanvasGroup")
|
||
canvasGroup.alpha = 0
|
||
XScheduleManager.ScheduleOnce(function()
|
||
if not XTool.UObjIsNil(self.Transform) and self.GameObject.activeInHierarchy then
|
||
self.Transform:Find("Animation/GridEnable"):PlayTimelineAnimation(function ()
|
||
canvasGroup.alpha = 1
|
||
rect.anchoredPosition = Vector2(rect.anchoredPosition.x, beforePlayPosY) -- 播放完的回调也强设一遍目标值
|
||
end)
|
||
self:SetHasPlay(true)
|
||
end
|
||
end, (index - 1) * 95)
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:SetHasPlay(flag)
|
||
IsThisTransformPlayAnim = flag
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:GetHasPlay()
|
||
return IsThisTransformPlayAnim
|
||
end
|
||
|
||
-- auto
|
||
function XUiGridSimulationChallenge:UpdateGrid(manager, index, currUseMinIndex)
|
||
currUseMinIndex = currUseMinIndex or 1
|
||
self:PlayEnableAnime(index - (currUseMinIndex - 1))
|
||
self.Manager = manager
|
||
self.TxtProgress.text = manager:ExGetProgressTip()
|
||
self.TxtName.text = manager:ExGetName()
|
||
self.RImgChallenge:SetRawImage(manager:ExGetIcon())
|
||
|
||
-- 时间
|
||
self:RemoveTimer()
|
||
self.TxtTime.text = manager:ExGetRunningTimeStr() -- 先显示一遍 因为倒计时太慢了
|
||
self.Timer = XScheduleManager.ScheduleForever(function()
|
||
self.TxtTime.text = manager:ExGetRunningTimeStr()
|
||
end, XScheduleManager.SECOND, 0)
|
||
|
||
-- 奖励
|
||
local rewardId = manager:ExGetRewardId()
|
||
if rewardId ~= self.RewardId then
|
||
self.RewardId = rewardId
|
||
|
||
-- 先把上一个占用这个格子的数据给清除
|
||
for k, grid in pairs(self.GridList) do
|
||
grid.GameObject:SetActive(false)
|
||
end
|
||
|
||
local rewards = {}
|
||
if rewardId > 0 then
|
||
rewards = XRewardManager.GetRewardList(rewardId)
|
||
end
|
||
|
||
if rewards then
|
||
for i, item in ipairs(rewards) do
|
||
local grid
|
||
if self.GridList[i] then
|
||
grid = self.GridList[i]
|
||
else
|
||
local ui = self.PanelReward:Find("Reward"..i)
|
||
grid = XUiGridCommon.New(nil, ui)
|
||
grid.Transform:SetParent(self.GridCommon.parent, false)
|
||
self.GridList[i] = grid
|
||
end
|
||
grid:Refresh(item)
|
||
grid.GameObject:SetActive(true)
|
||
end
|
||
end
|
||
end
|
||
|
||
self:RefreshRedPoint()
|
||
self.GirdBtnDownload:Init(XDlcConfig.EntryType.Challenge, self.Manager:ExGetChapterType(), nil, handler(self, self.OnDownloadComplete))
|
||
self.GirdBtnDownload:RefreshView()
|
||
|
||
local locked = manager:ExGetIsLocked()
|
||
self.PanelLock.gameObject:SetActiveEx(locked or self.GirdBtnDownload:CheckNeedDownload())
|
||
self.TxtLock.text = manager:ExGetLockTip()
|
||
self.TxtLock.gameObject:SetActiveEx(locked)
|
||
|
||
if manager:ExGetChapterType() == XFubenConfigs.ChapterType.BossOnline and not manager:ExGetIsLocked() then --海外需求 #107832
|
||
if not XDataCenter.FubenBossOnlineManager.CheckNormalBossOnlineInTime() then
|
||
self.PanelLock.gameObject:SetActiveEx(true)
|
||
self.TxtLock.gameObject:SetActiveEx(true)
|
||
self.TxtLock.text = XDataCenter.FubenBossOnlineManager.GetNotInTimeTip()
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:RefreshRedPoint()
|
||
self.ImgRedPoint.gameObject:SetActiveEx(self.Manager:ExCheckIsShowRedPoint())
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:RefreshProgress()
|
||
self.TxtProgress.text = self.Manager:ExGetProgressTip()
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:OnDestroy()
|
||
self:RemoveTimer()
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:RemoveTimer()
|
||
if not self.Timer then return end
|
||
XScheduleManager.UnSchedule(self.Timer)
|
||
self.Timer = nil
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:OnDownloadComplete()
|
||
if XTool.UObjIsNil(self.GameObject) then
|
||
return
|
||
end
|
||
local locked = self.Manager:ExGetIsLocked()
|
||
self.PanelLock.gameObject:SetActiveEx(locked or self.GirdBtnDownload:CheckNeedDownload())
|
||
self.TxtLock.text = self.Manager:ExGetLockTip()
|
||
self.TxtLock.gameObject:SetActiveEx(locked)
|
||
end
|
||
|
||
function XUiGridSimulationChallenge:OnClickSelf()
|
||
if self.GirdBtnDownload:CheckNeedDownload() then
|
||
self.GirdBtnDownload:OnBtnClick()
|
||
return
|
||
end
|
||
self.Manager:ExOpenMainUi()
|
||
end
|
||
|
||
return XUiGridSimulationChallenge |