123 lines
3.5 KiB
Lua
123 lines
3.5 KiB
Lua
|
local XUiPanelAutoFight = XClass(nil, "XUiPanelAutoFight")
|
|||
|
|
|||
|
function XUiPanelAutoFight:Ctor(ui, stageId)
|
|||
|
self.GameObject = ui.gameObject
|
|||
|
self.Transform = ui.transform
|
|||
|
self.StageId = stageId
|
|||
|
self:InitAutoScript()
|
|||
|
end
|
|||
|
|
|||
|
-- auto
|
|||
|
-- Automatic generation of code, forbid to edit
|
|||
|
function XUiPanelAutoFight:InitAutoScript()
|
|||
|
self:AutoInitUi()
|
|||
|
self:AutoAddListener()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:AutoInitUi()
|
|||
|
self.TxtCountdown = self.Transform:Find("TxtCountdown"):GetComponent("Text")
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:RegisterClickEvent(uiNode, func)
|
|||
|
if func == nil then
|
|||
|
XLog.Error("XUiPanelAutoFight:RegisterClickEvent函数参数错误:参数func不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if type(func) ~= "function" then
|
|||
|
XLog.Error("XUiPanelAutoFight:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
|||
|
end
|
|||
|
|
|||
|
local listener = function(...)
|
|||
|
func(self, ...)
|
|||
|
end
|
|||
|
|
|||
|
CsXUiHelper.RegisterClickEvent(uiNode, listener)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:AutoAddListener()
|
|||
|
end
|
|||
|
-- auto
|
|||
|
function XUiPanelAutoFight:OnAutoFightStart(stageId)
|
|||
|
if self.StageId == stageId then
|
|||
|
self.AutoFightRecord = XDataCenter.AutoFightManager.GetRecordByStageId(stageId)
|
|||
|
self:BindTimer()
|
|||
|
self.GameObject:SetActiveEx(true)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:OnAutoFightRemove(stageId)
|
|||
|
if self.StageId == stageId then
|
|||
|
self:RemoveTimer()
|
|||
|
if not XTool.UObjIsNil(self.GameObject) then
|
|||
|
self.GameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:BindTimer()
|
|||
|
local stageId = self.StageId
|
|||
|
if not self.AutoFightRecord then return end
|
|||
|
local now = XTime.GetServerNowTimestamp()
|
|||
|
local leftTime = self.AutoFightRecord.CompleteTime - now
|
|||
|
if leftTime < 0 then
|
|||
|
leftTime = 0
|
|||
|
end
|
|||
|
local complete = false
|
|||
|
self:RemoveTimer()
|
|||
|
self.TimerName = "XUiPanelAutoFight" .. stageId
|
|||
|
XCountDown.CreateTimer(self.TimerName, leftTime, now)
|
|||
|
XCountDown.BindTimer(self.GameObject, self.TimerName, function(v)
|
|||
|
if v == 0 and not complete then
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_AUTO_FIGHT_COMPLETE, stageId)
|
|||
|
complete = true
|
|||
|
end
|
|||
|
self.TxtCountdown.text = XUiHelper.GetTime(v)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:RemoveTimer()
|
|||
|
if not self.TimerName then
|
|||
|
return
|
|||
|
end
|
|||
|
XCountDown.RemoveTimer(self.TimerName)
|
|||
|
self.TimerName = nil
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:AddEventListener()
|
|||
|
XEventManager.AddEventListener(XEventId.EVENT_AUTO_FIGHT_START, self.OnAutoFightStart, self)
|
|||
|
XEventManager.AddEventListener(XEventId.EVENT_AUTO_FIGHT_REMOVE, self.OnAutoFightRemove, self)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:RemoveEventListener()
|
|||
|
XEventManager.RemoveEventListener(XEventId.EVENT_AUTO_FIGHT_START, self.OnAutoFightStart, self)
|
|||
|
XEventManager.RemoveEventListener(XEventId.EVENT_AUTO_FIGHT_REMOVE, self.OnAutoFightRemove, self)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:OnEnable(stageId)
|
|||
|
self.StageId = stageId
|
|||
|
self.AutoFightRecord = XDataCenter.AutoFightManager.GetRecordByStageId(stageId)
|
|||
|
self.GameObject:SetActiveEx(self.AutoFightRecord ~= nil)
|
|||
|
|
|||
|
if self.Enabled then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self:BindTimer()
|
|||
|
self:AddEventListener()
|
|||
|
|
|||
|
self.Enabled = true
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelAutoFight:OnDisable()
|
|||
|
if not self.Enabled then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self:RemoveTimer()
|
|||
|
self:RemoveEventListener()
|
|||
|
|
|||
|
self.Enabled = false
|
|||
|
end
|
|||
|
|
|||
|
return XUiPanelAutoFight
|