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

137 lines
5.1 KiB
Lua
Raw Normal View History

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