177 lines
5.9 KiB
Lua
177 lines
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
|