c1_lua/lua/app/userdata/activity/act_time_data.lua
2025-05-08 22:43:25 +08:00

120 lines
3.7 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local ActTimeData = class("ActTimeData", BaseData)
function ActTimeData:ctor()
self.actTimeList = {}
end
function ActTimeData:clear()
end
---- 活动改版后服务器只会发一个活动类型的当前或下一次的数据不是想之前一样无脑把activity表转过来
function ActTimeData:init(data)
if EDITOR_MODE then
Logger.logHighlight("活动时间初始化-------------------" .. tostring(data ~= nil))
-- Logger.printTable(data)
end
data = data or {}
self.actTimeList = data
self:refreshActTime()
end
function ActTimeData:refreshActTime()
local curTime = Time:getServerTime()
self.actTypeTimeList = {}
for _, info in ipairs(self.actTimeList) do
local actId = info.id
if ModuleManager.ActivityManager:getActivityInCfg(actId) then
if EDITOR_MODE then
Logger.logHighlight("活动id" .. info.id .. " 类型:" .. info.type .. " 开启:" .. info.start_at .. " 结束:" .. info.end_at .. " 额外:" .. info.extra_at)
end
local actType = info.type
local startTime = info.start_at or 0
if startTime < 0 then
startTime = 0
end
local endTime = info.end_at
if endTime < 0 then
endTime = 0
end
local extraTime = info.extra_at
if extraTime < endTime then
extraTime = endTime
end
local actGifts = info.gifts or {}
local data = info.data
if curTime < extraTime then -- 在有效期内
if self.actTypeTimeList[actType] == nil or self.actTypeTimeList[actType].endTime > endTime then
self.actTypeTimeList[actType] = {actId = actId, actType = actType, startTime = startTime, endTime = endTime, extraTime = extraTime, actGifts = actGifts, data = data}
self:initActivityData(actType, self.actTypeTimeList[actType])
end
else
if EDITOR_MODE then
Logger.logHighlight("活动暂未开启:" .. info.id)
end
end
end
end
end
function ActTimeData:getActTimeList()
return self.actTimeList
end
function ActTimeData:getActTimeInfoByActId(id)
for _, info in ipairs(self.actTimeList) do
if info.id == id then
return info
end
end
end
function ActTimeData:getActStartTime(actId)
for _, info in ipairs(self.actTimeList) do
if info.id == actId then
return info.start_at
end
end
end
function ActTimeData:getActEndTime(actId)
for _, info in ipairs(self.actTimeList) do
if info.id == actId then
local extraTime = info.extra_at
if extraTime < info.end_at then
extraTime = info.end_at
end
return extraTime
end
end
end
function ActTimeData:getActExtraTime(actId)
for _, info in ipairs(self.actTimeList) do
if info.id == actId then
local extraTime = info.extra_at
if extraTime < info.end_at then
extraTime = info.end_at
end
return extraTime
end
end
end
function ActTimeData:getActTypeTimeList()
return self.actTypeTimeList or {}
end
function ActTimeData:initActivityData(actType, info)
local data = DataManager[GConst.ActivityConst.ACTIVITY_TYPE_DATA[actType]]
if data then
if data.initActInfo then
data:initActInfo(info)-- 初始化基类方法
end
data:setActivityInfo(info)-- 初始化子类方法
end
end
return ActTimeData