-- 兵法蓝图活动任务页面
local XUiRpgTowerTask = XLuaUiManager.Register(XLuaUi, "UiRpgTowerTask")
local TaskList = require("XUi/XUiRpgTower/Task/XUiRpgTowerTaskList")
function XUiRpgTowerTask:OnAwake()
    XTool.InitUiObject(self)
    XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
    self.GridTask.gameObject:SetActiveEx(false)
    self:InitButtons()
    self:InitTaskList()
end

function XUiRpgTowerTask:OnEnable()
    self:AddEventListeners()
    self:OnShowPanel()
end

function XUiRpgTowerTask:OnDisable()
    self:StopTimer()
    self:RemoveEventListeners()
end

function XUiRpgTowerTask:OnDestroy()
    self:StopTimer()
    self:RemoveEventListeners()
end

function XUiRpgTowerTask:OnGetEvents()
    return { XEventId.EVENT_RPGTOWER_RESET, XEventId.EVENT_RPGTOWER_CHALLENGE_COUNT_CHANGE }
end

function XUiRpgTowerTask:OnNotify(evt, ...)
    local args = { ... }
    if evt == XEventId.EVENT_RPGTOWER_RESET then
        self:OnActivityReset()
    end
end

--================
--初始化按钮
--================
function XUiRpgTowerTask:InitButtons()
    self.BtnBack.CallBack = function() self:OnBtnBackClick() end
    self.BtnMainUi.CallBack = function() self:OnBtnMainUiClick() end
end
--================
--返回按钮
--================
function XUiRpgTowerTask:OnBtnBackClick()
    self:Close()
end
--================
--主界面按钮
--================
function XUiRpgTowerTask:OnBtnMainUiClick()
    XLuaUiManager.RunMain()
end

--================
--初始化界面面板
--================
function XUiRpgTowerTask:InitTaskList()
    self.TaskList = TaskList.New(self.SViewTask, self)
end
--================
--显示界面时
--================
function XUiRpgTowerTask:OnShowPanel()
    self.TaskList:UpdateData()
    --self:SetTimer()
end
--================
--设置界面计时器
--================
function XUiRpgTowerTask:SetTimer()
    self:StopTimer()
    self:SetResetTime()
    self.Timer = XScheduleManager.ScheduleForever(function()
            self:SetResetTime()
        end, XScheduleManager.SECOND, 0)
end
--================
--显示倒计时与处理倒计时完成时事件
--================
function XUiRpgTowerTask:SetResetTime()
    local endTimeSecond = XDataCenter.RpgTowerManager.GetEndTime()
    local now = XTime.GetServerNowTimestamp()
    local leftTime = endTimeSecond - now
    local remainTime = XUiHelper.GetTime(leftTime, XUiHelper.TimeFormatType.ACTIVITY)
    self.TxtTime.text = CS.XTextManager.GetText("RpgTowerRemainTime", remainTime)
    if leftTime <= 0 then
        self:OnActivityReset()
    end
end
--================
--停止界面计时器
--================
function XUiRpgTowerTask:StopTimer()
    if self.Timer then
        XScheduleManager.UnSchedule(self.Timer)
        self.Timer = nil
    end
end

--================
--活动周期结束时弹回主界面
--================
function XUiRpgTowerTask:OnActivityReset()
    self:StopTimer()
    XLuaUiManager.RunMain()
    XUiManager.TipMsg(CS.XTextManager.GetText("RpgTowerFinished"))
end

--================
--刷新任务列表
--================
function XUiRpgTowerTask:RefreshTasks()
    self.TaskList:UpdateData()
end

--================
--增加事件监听
--================
function XUiRpgTowerTask:AddEventListeners()
    if self.AlreadyAddEvents then return end
    self.AlreadyAddEvents = true
    XEventManager.AddEventListener(XEventId.EVENT_TASK_SYNC, self.RefreshTasks, self)
end
--================
--移除事件监听
--================
function XUiRpgTowerTask:RemoveEventListeners()
    if not self.AlreadyAddEvents then return end
    self.AlreadyAddEvents = false
    XEventManager.RemoveEventListener(XEventId.EVENT_TASK_SYNC, self.RefreshTasks, self)
end