123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- ---@class ActivityPreviewInfo @注释
- ---@field previewInfo {leftTime:number,id:number,open:boolean,cfg:cfg_activity_rule_column,isPreview:boolean}[]
- ---@field activityCfgs cfg_activity_rule_column[]
- ActivityPreviewInfo = class()
- local this = ActivityPreviewInfo
- function this:ctor()
- end
- function this:Init()
- self.previewInfo = {}
- self.activityCfgs = SL:GetConfigTable("cfg_activity_rule")
- local tempTable = {}
- if self.activityCfgs then
- for k, v in pairs(self.activityCfgs) do
- tempTable[v.id] = v
- end
- end
- self.activityCfgs = tempTable
- self:InitData()
- self:RegistMessages()
- end
- function this:InitData()
- end
- function this:RegistMessages()
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_ACTIVITY_LIST, self.ResPreviewDataList, self)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_ACTIVITY_CHANGE, self.ResPreviewDataChange, self)
- end
- ---所有的活动信息
- ---@param message {leftTime:number,id:number,open:boolean}[]
- function this:ResPreviewDataList(_, message)
- self.previewInfo = {}
- for k, v in pairs(message) do
- if self.activityCfgs[v.id] then
- v.cfg = self.activityCfgs[v.id]
- v.leftTime = tonumber(v.leftTime)
- v.isPreview = false
- if not v.open then
- v.isPreview = self:CheckActivityIsPreview(v)
- end
- table.insert(self.previewInfo, v)
- end
- end
- self:ActivityInfoSort()
- SL:onLUAEvent(LUA_EVENT_ACTIVITYPREVIEW_CHANGE)
- end
- ---单个活动更新
- ---@param message {leftTime:number,id:number,open:boolean}
- function this:ResPreviewDataChange(_, message)
- local isHave = false
- for k, v in pairs(self.previewInfo) do
- if v.id == message.id and self.activityCfgs[message.id] then
- message.leftTime = tonumber(message.leftTime)
- message.cfg = self.activityCfgs[message.id]
- message.isPreview = false
- if not v.open then
- v.isPreview = self:CheckActivityIsPreview(v)
- end
- self.previewInfo[k] = message
- isHave = true
- break
- end
- end
- if not isHave and self.activityCfgs[message.id] then
- message.leftTime = tonumber(message.leftTime)
- message.cfg = self.activityCfgs[message.id]
- message.isPreview = false
- if not message.open then
- message.isPreview = self:CheckActivityIsPreview(message)
- end
- table.insert(self.previewInfo, message)
- end
- self:ActivityInfoSort()
- SL:onLUAEvent(LUA_EVENT_ACTIVITYPREVIEW_CHANGE)
- end
- function this:ActivityInfoSort()
- table.sort(self.previewInfo, function(a, b)
- if a.open and not b.open then
- return true
- elseif not a.open and not b.open then
- if a.cfg and b.cfg and a.cfg.rank < b.cfg.rank then
- return true
- end
- return false
- end
- return false
- end)
- end
- ---@param message {leftTime:number,id:number,open:boolean}
- ----@return boolean
- function this:CheckActivityIsPreview(message)
- local previewTime = message.leftTime - message.cfg.specialOpen * 1000
- if Time.GetServerTime() > previewTime and Time.GetServerTime() < message.leftTime then
- return true
- end
- return false
- end
- ----获取活动数据
- ----@return {leftTime:number,id:number,open:boolean,cfg:cfg_activity_rule_column,isPreview:boolean}
- function this:GetActivityInfo(activityId)
- for k, v in pairs(self.previewInfo) do
- if v.id == activityId and self.activityCfgs[activityId] then
- return v
- end
- end
- return nil
- end
- function this:Reset()
- self.previewInfo = {}
- end
|