PGRData/Script/matrix/xmanager/XLivWarmExtActivityManager.lua

162 lines
No EOL
5.9 KiB
Lua

XLivWarmExtActivityCreator = function()
local pairs = pairs
local stringFormat = string.format
local XLivWarmExtActivityManager = {}
-----------------活动入口 begin----------------
local _ActivityId = XLivWarmExtActivityConfig.GetDefaultActivityId() --当前开放活动Id
local _ActivityEnd = false --活动是否结束
local CheckLivExtBtnInterval = CS.XGame.ClientConfig:GetInt("LivExtBtnInterval")
local LivWarmExtTimeId = 0
local function UpdateActivityId(activityId)
XCountDown.RemoveTimer(XCountDown.GTimerName.LivWarmExActivity)
if not XTool.IsNumberValid(activityId) then
_ActivityId = XLivWarmExtActivityConfig.GetDefaultActivityId()
return
end
_ActivityId = activityId
local nowTime = XTime.GetServerNowTimestamp()
local leftTime = XLivWarmExtActivityManager.GetEndTime() - nowTime
if leftTime > 0 then
XCountDown.CreateTimer(XCountDown.GTimerName.LivWarmExActivity, leftTime)
end
end
function XLivWarmExtActivityManager.GetActivityName()
return XLivWarmExtActivityConfig.GetActivityName(_ActivityId)
end
function XLivWarmExtActivityManager.GetActivityId()
return _ActivityId
end
function XLivWarmExtActivityManager.IsOpen()
if not XTool.IsNumberValid(_ActivityId) then
return false
end
local nowTime = XTime.GetServerNowTimestamp()
local beginTime = XLivWarmExtActivityManager.GetStartTime()
local endTime = XLivWarmExtActivityManager.GetEndTime()
return beginTime <= nowTime and nowTime < endTime
end
function XLivWarmExtActivityManager.GetStartTime()
local startTime = XLivWarmExtActivityConfig.GetActivityStartTime(_ActivityId)
return startTime
end
function XLivWarmExtActivityManager.GetEndTime()
local endTime = XLivWarmExtActivityConfig.GetActivityEndTime(_ActivityId)
return endTime
end
function XLivWarmExtActivityManager.GetCurrActivityTime()
return XLivWarmExtActivityManager.GetStartTime(), XLivWarmExtActivityManager.GetEndTime()
end
function XLivWarmExtActivityManager.GetLeftTimeStamp()
local endTime = XLivWarmExtActivityManager.GetEndTime()
return endTime > 0 and endTime - XTime.GetServerNowTimestamp() or 0
end
function XLivWarmExtActivityManager.SetActivityEnd()
_ActivityEnd = true
CsXGameEventManager.Instance:Notify(XEventId.EVENT_XLIVWARM_EXT_ACTIVITY_END)
end
function XLivWarmExtActivityManager.ClearActivityEnd()
_ActivityEnd = nil
end
function XLivWarmExtActivityManager.CheckActivityIsOpen()
if not XLivWarmExtActivityManager.IsOpen() then
if CS.XFight.IsRunning or XLuaUiManager.IsUiLoad("UiLoading") then
return false
end
XLivWarmExtActivityManager.ClearActivityEnd()
XUiManager.TipText("ActivityMainLineEnd")
XLuaUiManager.RunMain()
return false
end
return true
end
-----------------活动入口 end----------------
----------红点-----
--检查红点判断任务可领取
function XLivWarmExtActivityManager.CheckTaskRedPoint()
return XDataCenter.TaskManager.GetIsRewardFor(TaskType.LivWarmExtActivity)
end
function XLivWarmExtActivityManager.CheckTimeRedPoint()
local length = XLivWarmExtActivityConfig.GetLivWarmExtTimelineLength()
local timeId
local isInTime
for i = 1, length do
timeId = XLivWarmExtActivityConfig.GetLivWarmExtTimelineTimeId(i)
isInTime = XFunctionManager.CheckInTimeByTimeId(timeId)
if isInTime then
if not XLivWarmExtActivityManager.CheckEverClickIndex(i) then
return true
end
end
end
return false
end
--检查是否有未点击过的按钮
function XLivWarmExtActivityManager.CheckEverClickIndex(clickIndex)
local clickData = XSaveTool.GetData(stringFormat("%d_%d_XLivWarmExtActivityManager_CookieKeyClickIndex_%d", XPlayer.Id, _ActivityId,clickIndex))
return clickData and true or false
end
function XLivWarmExtActivityManager.SaveClickIndex(clickIndex)
local clickData = XSaveTool.GetData(stringFormat("%d_%d_XLivWarmExtActivityManager_CookieKeyClickIndex_%d", XPlayer.Id, _ActivityId,clickIndex))
if not clickData then
XSaveTool.SaveData(stringFormat("%d_%d_XLivWarmExtActivityManager_CookieKeyClickIndex_%d", XPlayer.Id, _ActivityId,clickIndex), true)
CsXGameEventManager.Instance:Notify(XEventId.EVENT_XLIVWARM_EXT_ACTIVITY_CLICK,clickIndex)
end
end
--------红点end-----
local function ResetData()
if not XTool.IsNumberValid(LivWarmExtTimeId) then
XScheduleManager.UnSchedule(LivWarmExtTimeId)
end
XLivWarmExtActivityManager.SetActivityEnd()
_ActivityId = 0 --当前开放活动Id
LivWarmExtTimeId = 0
end
function XLivWarmExtActivityManager.NotifyLivWarmExtActivityOnChange(data)
local data = data.ExtActivityDb
if XTool.IsNumberValid(_ActivityId) and data.ActivityId ~= _ActivityId then
ResetData()
XLivWarmExtActivityManager.Init()
end
UpdateActivityId(data.ActivityId)
end
function XLivWarmExtActivityManager.Init()
LivWarmExtTimeId = XScheduleManager.ScheduleForever(function()
XEventManager.DispatchEvent(XEventId.EVENT_XLIVWARM_EXT_ACTIVITY_TIME)
end,CheckLivExtBtnInterval,0)
end
XLivWarmExtActivityManager.Init()
return XLivWarmExtActivityManager
end
---------------------Notify begin------------------
XRpc.NotifyLivWarmExtActivityOnChange = function(data)
XDataCenter.LivWarmExtActivityManager.NotifyLivWarmExtActivityOnChange(data)
end
---------------------Notify end------------------