123 lines
4.3 KiB
Lua
123 lines
4.3 KiB
Lua
|
XActivityCalendarManagerCreator = function()
|
|||
|
local tableInsert = table.insert
|
|||
|
local pairs = pairs
|
|||
|
local XActivityInfo = require("XEntity/XActivityCalendar/XActivityInfo")
|
|||
|
local XActivityCalendarManager = {}
|
|||
|
local ActivityInfoDic = {}
|
|||
|
|
|||
|
local function Init()
|
|||
|
local activityConfigs = XActivityCalendarConfigs.GetActivityConfigs()
|
|||
|
for id,cfg in pairs(activityConfigs) do
|
|||
|
ActivityInfoDic[id] = XActivityInfo.New(cfg)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XActivityCalendarManager.GetActivityInfo(id)
|
|||
|
if not ActivityInfoDic[id] then
|
|||
|
XLog.Error("活动配置不存在,请检查ActivityCalendar.tab")
|
|||
|
return
|
|||
|
end
|
|||
|
return ActivityInfoDic[id]
|
|||
|
end
|
|||
|
|
|||
|
function XActivityCalendarManager.GetInCalendarActivity()
|
|||
|
local tempList = {}
|
|||
|
for _,activityInfo in pairs(ActivityInfoDic) do
|
|||
|
local todayDt = CS.XDateUtil.GetGameDateTime(XTime.GetServerNowTimestamp())
|
|||
|
local weekStartTime = CS.XDateUtil.GetFirstDayOfThisWeek(todayDt, CS.System.DayOfWeek.Sunday):ToTimestamp()
|
|||
|
local weekEndTime = weekStartTime + CS.XDateUtil.ONE_WEEK_SECOND
|
|||
|
local activityStartTime = activityInfo:GetStartTime()
|
|||
|
local activityEndTime = activityInfo:GetEndTime()
|
|||
|
local isOpenThisWeek = activityEndTime > weekStartTime and activityStartTime < weekEndTime
|
|||
|
if activityInfo:IsInCalendar() and isOpenThisWeek then
|
|||
|
tableInsert(tempList, activityInfo)
|
|||
|
end
|
|||
|
end
|
|||
|
return tempList
|
|||
|
end
|
|||
|
|
|||
|
--有新活动解锁
|
|||
|
function XActivityCalendarManager.CheckNewActivityUnlock()
|
|||
|
--本周内的活动
|
|||
|
local showActivityList = XActivityCalendarManager.GetInCalendarActivity()
|
|||
|
|
|||
|
for _, activityInfo in pairs(showActivityList) do
|
|||
|
--是否达成开启活动的要求
|
|||
|
if not activityInfo:IsJudgeOpen() then
|
|||
|
goto continue
|
|||
|
end
|
|||
|
|
|||
|
local activityStartTime = activityInfo:GetStartTime()
|
|||
|
local todayTime = XTime.GetServerNowTimestamp()
|
|||
|
|
|||
|
--活动开始时间和当前时间在同一天
|
|||
|
if XTime.IsToday(activityStartTime, todayTime) and activityStartTime < todayTime then
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
:: continue ::
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
--有活动准备结束
|
|||
|
function XActivityCalendarManager.CheckActivityReadyEnd()
|
|||
|
--本周内的活动
|
|||
|
local showActivityList = XActivityCalendarManager.GetInCalendarActivity()
|
|||
|
|
|||
|
for _, activityInfo in pairs(showActivityList) do
|
|||
|
--是否达成开启活动的要求
|
|||
|
if not activityInfo:IsJudgeOpen() then
|
|||
|
goto continue
|
|||
|
end
|
|||
|
|
|||
|
local activityEndTime = activityInfo:GetEndTime()
|
|||
|
local yesterdayTime = activityEndTime - CS.XDateUtil.ONE_DAY_SECOND
|
|||
|
local todayTime = XTime.GetServerNowTimestamp()
|
|||
|
|
|||
|
--活动结束的前一天或者当天
|
|||
|
if XTime.IsToday(todayTime, yesterdayTime) or
|
|||
|
(XTime.IsToday(todayTime, activityEndTime) and activityEndTime > todayTime) then
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
:: continue ::
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function XActivityCalendarManager.CheckWeekIsClick()
|
|||
|
local data = XSaveTool.GetData("ActivityCalendarWhetherClickButton")
|
|||
|
if data then
|
|||
|
local todayTime = XTime.GetServerNowTimestamp()
|
|||
|
if XTime.IsToday(data.Time, todayTime) then
|
|||
|
return data.IsClick
|
|||
|
end
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function XActivityCalendarManager.SaveWeekClick(isClick)
|
|||
|
if XActivityCalendarManager.CheckWeekIsClick() then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local isShowRedPoint = XDataCenter.ActivityCalendarManager.CheckNewActivityUnlock() or
|
|||
|
XDataCenter.ActivityCalendarManager.CheckActivityReadyEnd()
|
|||
|
|
|||
|
if not isShowRedPoint then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local todayTime = XTime.GetServerNowTimestamp()
|
|||
|
local value = {
|
|||
|
Time = todayTime,
|
|||
|
IsClick = isClick
|
|||
|
}
|
|||
|
XSaveTool.SaveData("ActivityCalendarWhetherClickButton", value)
|
|||
|
end
|
|||
|
|
|||
|
Init()
|
|||
|
return XActivityCalendarManager
|
|||
|
end
|