137 lines
No EOL
5.1 KiB
Lua
137 lines
No EOL
5.1 KiB
Lua
XUiGridChallengeItem = XClass(nil, "XUiGridChallengeItem")
|
||
|
||
function XUiGridChallengeItem:Ctor(ui, rootUi, index, clickCb)
|
||
self.GameObject = ui.gameObject
|
||
self.Transform = ui.transform
|
||
self.RootUi = rootUi
|
||
self.Index = index
|
||
self.ClickCb = clickCb
|
||
self:InitAutoScript()
|
||
self.PanelAutoFight.gameObject:SetActive(true)
|
||
end
|
||
|
||
-- auto
|
||
-- Automatic generation of code, forbid to edit
|
||
function XUiGridChallengeItem:InitAutoScript()
|
||
self:AutoInitUi()
|
||
self:AutoAddListener()
|
||
end
|
||
|
||
function XUiGridChallengeItem:AutoInitUi()
|
||
self.PanelActive = XUiHelper.TryGetComponent(self.Transform, "PanelActive", nil)
|
||
self.RImgChallengeIcon = XUiHelper.TryGetComponent(self.Transform, "PanelActive/RImgChallengeIcon", "RawImage")
|
||
self.TxtTitle = XUiHelper.TryGetComponent(self.Transform, "PanelActive/TxtTitle", "Text")
|
||
self.PanelLock = XUiHelper.TryGetComponent(self.Transform, "PanelLock", nil)
|
||
self.TxtLockDesc = XUiHelper.TryGetComponent(self.Transform, "PanelLock/TxtLockDesc", "Text")
|
||
self.BtnClickMask = XUiHelper.TryGetComponent(self.Transform, "BtnClickMask", "Button")
|
||
self.TxtLeftTimes = XUiHelper.TryGetComponent(self.Transform, "TxtLeftTimes", "Text")
|
||
self.PanelAutoFight = XUiHelper.TryGetComponent(self.Transform, "PanelAutoFight", nil)
|
||
self.TxtCountdown = XUiHelper.TryGetComponent(self.Transform, "PanelAutoFight/TxtCountdown", "Text")
|
||
end
|
||
|
||
function XUiGridChallengeItem:RegisterClickEvent(uiNode, func)
|
||
if func == nil then
|
||
XLog.Error("XUiGridChallengeItem:RegisterClickEvent函数参数错误:参数func不能为空")
|
||
return
|
||
end
|
||
|
||
if type(func) ~= "function" then
|
||
XLog.Error("XUiGridChallengeItem:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
||
end
|
||
|
||
local listener = function(...)
|
||
func(self, ...)
|
||
end
|
||
|
||
CsXUiHelper.RegisterClickEvent(uiNode, listener)
|
||
end
|
||
|
||
function XUiGridChallengeItem:AutoAddListener()
|
||
self:RegisterClickEvent(self.BtnClickMask, self.OnBtnClickMaskClick)
|
||
end
|
||
-- auto
|
||
|
||
function XUiGridChallengeItem:OnBtnClickMaskClick()
|
||
if self.ChallengeStage then
|
||
local stageId = self.ChallengeStage.ChallengeStage
|
||
-- local isLock = self:IsChallengeStageLock(stageId)
|
||
-- if isLock then
|
||
-- self.RootUi:Switch2UnlockChallengeStage(self.ChallengeStage)
|
||
-- else
|
||
-- end
|
||
--isLock=false
|
||
self.RootUi:OpenOneChildUi("UiPrequelLineDetail")
|
||
self.RootUi:FindChildUiObj("UiPrequelLineDetail"):Refresh(stageId)
|
||
self.RootUi:SetPanelAssetActive(false)
|
||
|
||
if self.ClickCb then
|
||
self.ClickCb(self.Index)
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiGridChallengeItem:UpdateChallengeGridInfo(challengeStage)
|
||
self.ChallengeStage = challengeStage
|
||
local stageId = challengeStage.ChallengeStage
|
||
-- local isLock = self:IsChallengeStageLock(stageId)
|
||
self.PanelLock.gameObject:SetActive(false)
|
||
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
|
||
self.TxtTitle.text = stageCfg.Name
|
||
self.RImgChallengeIcon:SetRawImage(stageCfg.Icon)
|
||
|
||
self:UpdateChallengeTimes(stageId)
|
||
|
||
self:UpdateAutoFightStatus()
|
||
end
|
||
|
||
function XUiGridChallengeItem:UpdateChallengeTimes(stageId)
|
||
-- local isLock = self:IsChallengeStageLock(stageId)
|
||
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
|
||
local maxChallengeNums = stageCfg.MaxChallengeNums or 0
|
||
|
||
-- if isLock then
|
||
-- self.TxtLeftTimes.text = ""
|
||
-- else
|
||
-- end
|
||
--isLock == false
|
||
local csInfo = XDataCenter.PrequelManager.GetUnlockChallengeStagesByStageId(stageId)
|
||
if csInfo then
|
||
local leftTimes = maxChallengeNums - csInfo.Count
|
||
self.TxtLeftTimes.text = CS.XTextManager.GetText("PrequelChapterTimes", leftTimes)
|
||
else
|
||
self.TxtLeftTimes.text = CS.XTextManager.GetText("PrequelChapterTimes", maxChallengeNums)
|
||
end
|
||
end
|
||
|
||
function XUiGridChallengeItem:UpdateAutoFightStatus()
|
||
if not self.ChallengeStage then return end
|
||
local stageId = self.ChallengeStage.ChallengeStage
|
||
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
|
||
|
||
if self.PanelAutoFight then
|
||
self.PanelAutoFight.localScale = CS.UnityEngine.Vector3.zero
|
||
end
|
||
|
||
if stageCfg.AutoFightId > 0 then
|
||
self.AutoFightRecord = XDataCenter.AutoFightManager.GetRecordByStageId(stageId)
|
||
if self.AutoFightRecord and self.PanelAutoFight then
|
||
local now = XTime.GetServerNowTimestamp()
|
||
local showTimes = self.AutoFightRecord.CompleteTime - now
|
||
self.PanelAutoFight.localScale = CS.UnityEngine.Vector3.one
|
||
if showTimes == 0 then
|
||
XEventManager.DispatchEvent(XEventId.EVENT_AUTO_FIGHT_COMPLETE, stageId)
|
||
end
|
||
if showTimes < 0 then
|
||
showTimes = 0
|
||
end
|
||
self.TxtCountdown.text = XUiHelper.GetTime(showTimes)
|
||
self:UpdateChallengeTimes(stageId)
|
||
end
|
||
end
|
||
end
|
||
|
||
function XUiGridChallengeItem:IsChallengeStageLock(stageId)
|
||
return XDataCenter.PrequelManager.GetUnlockChallengeStagesByStageId(stageId) == nil
|
||
end
|
||
|
||
return XUiGridChallengeItem |