forked from endernon/PGRData
80 lines
No EOL
2.8 KiB
Lua
80 lines
No EOL
2.8 KiB
Lua
XResetManager = XResetManager or {}
|
|
|
|
local insert = table.insert
|
|
|
|
local DailyResetSpan = CS.XGame.Config:GetInt("DailyResetTimestamp")
|
|
local ResetCfg = {}
|
|
local TABLE_RESET = "Share/Reset/SystemResetConfig.tab"
|
|
|
|
XResetManager.ResetType = {
|
|
NoNeed = 0, -- 无需重置
|
|
Interval = 1, -- 间隔一段时间
|
|
Daily = 2, -- 每天
|
|
Weekly = 3, -- 每周
|
|
Monthly = 4 -- 每月
|
|
}
|
|
|
|
function XResetManager.Init()
|
|
ResetCfg = XTableManager.ReadByIntKey(TABLE_RESET, XTable.XTableSystemReset, "ResetKey")
|
|
end
|
|
|
|
-- function XResetManager.GetTodayRemainTime(checkTime)
|
|
-- checkTime = checkTime or XTime.GetServerNowTimestamp()
|
|
-- local targetTime = CS.XDateUtil.GetGameDateTime(checkTime).Date:AddSeconds(DailyResetSpan):ToTimestamp()
|
|
-- targetTime = checkTime > targetTime and (targetTime + CS.XDateUtil.ONE_DAY_SECOND) or targetTime
|
|
-- return targetTime - checkTime
|
|
-- end
|
|
|
|
function XResetManager.GetResetTimeByString(resetType, timeStr)
|
|
local seconds, days = {}, {}
|
|
|
|
if resetType == XResetManager.ResetType.Interval or resetType == XResetManager.ResetType.Daily then
|
|
seconds = string.ToIntArray(timeStr, '|')
|
|
elseif resetType == XResetManager.ResetType.Weekly or resetType == XResetManager.ResetType.Monthly then
|
|
local times = string.Split(timeStr)
|
|
for _, str in pairs(times) do
|
|
local dayAndSecond = string.ToIntArray(str, '#')
|
|
if #dayAndSecond > 1 then
|
|
insert(days, dayAndSecond[1])
|
|
insert(seconds, dayAndSecond[2])
|
|
elseif #dayAndSecond > 0 then
|
|
insert(days, dayAndSecond[1])
|
|
insert(seconds, DailyResetSpan)
|
|
end
|
|
end
|
|
end
|
|
|
|
return seconds, days
|
|
end
|
|
|
|
-- function XResetManager.GetResetTodayDayOfWeek()
|
|
-- local day = XTime.DayOfWeekToInt(CS.XDateUtil.GetGameNow().DayOfWeek)
|
|
-- local now = XTime.GetServerNowTimestamp()
|
|
-- local stamp = CS.XDateUtil.GetGameDateTime(checkTime).Date:AddSeconds(DailyResetSpan):ToTimestamp()
|
|
|
|
-- if now >= stamp then -- 超过属于后面的一天
|
|
-- day = (day + 1) % 7
|
|
-- end
|
|
-- return day
|
|
-- end
|
|
|
|
function XResetManager.GetNextResetTime(resetType, lastTime, seconds, days)
|
|
return CS.XReset.GetNextResetTime(resetType, lastTime, seconds, days)
|
|
end
|
|
|
|
function XResetManager.GetRemainTime(resetCfg, lastTime)
|
|
local resetType = resetCfg.ResetType
|
|
local recTime = resetCfg.ResetTime
|
|
local seconds, days = XResetManager.GetResetTimeByString(resetType, recTime)
|
|
return CS.XReset.GetNextResetTime(resetType, lastTime, seconds, days) - XTime.GetServerNowTimestamp()
|
|
end
|
|
|
|
function XResetManager.GetResetCfg(reseTimeId)
|
|
local cfg = ResetCfg[reseTimeId]
|
|
if not cfg then
|
|
XLog.ErrorTableDataNotFound("XResetManager.GetResetCfg", "cfg", TABLE_RESET, "reseTimeId", tostring(reseTimeId))
|
|
return
|
|
end
|
|
|
|
return cfg
|
|
end |