local RoleTimeReset = {} RoleTimeReset.bind = function (Role) -- 重置内容 对应 GlobalVar TimeReset local ResetFunc = {} ResetFunc["CrossDay"] = function(self, notify, response) self.dailyData:refreshDailyData(notify) self.dinerData:refreshDailyData(notify) self:setProperty("dTask", {}) self:advRandomSupportEffect() response.dTask = {} response.advSup = self:getProperty("advSup") end ResetFunc["CrossWeek"] = function(self, notify, response) self:setProperties({ wTask = {}, dinerS = {}, }) response.wTask = {} response.dinerS = {} end ResetFunc["DinerRank"] = function(self, notify, response) self.dinerData:rankResetData(notify) end ResetFunc["PvpShop"] = function(self, notify, response) self:setProperty("pvpShop", {}) response.pvpShop = {} end function Role:updateTimeReset(now, notify) local timeReset = self:getProperty("timeReset") local passTime = now - START_RESET_TIME local needResetId = {} for resetId, resetData in pairs(csvdb["time_resetCsv"]) do local curRound = math.floor((passTime - resetData.start) / resetData.interval) if not timeReset[resetId] or curRound ~= timeReset[resetId] then needResetId[resetId] = curRound end end if not next(needResetId) then return end local response = {} for funcName, resetId in pairs(TimeReset) do if needResetId[resetId] and ResetFunc[funcName] then ResetFunc[funcName](self, notify, response) end end for resetId, round in pairs(needResetId) do timeReset[resetId] = round end self:setProperty("timeReset", timeReset) response.timeReset = timeReset if notify then self:notifyUpdateProperties(response) end end -- 持续时间取 min(interval, duration) duration 填 0 默认使用 interval 作为持续时间 local function getTimeResetDuration(rtype) local resetData = csvdb["time_resetCsv"][rtype] if not resetData then return 0 end return resetData.duration == 0 and resetData.interval or math.min(resetData.interval, resetData.duration) end --检查功能是否是在开放期 function Role:isTimeResetOpen(rtype) local resetData = csvdb["time_resetCsv"][rtype] if not resetData or getTimeResetDuration(rtype) >= resetData.interval then return true end return self:getTimeResetEndTime(rtype) > skynet.timex() end -- 当前轮次 开始时间 function Role:getTimeResetStartTime(rtype) local timeReset = self:getProperty("timeReset") if not timeReset[rtype] then return 0 end local resetData = csvdb["time_resetCsv"][rtype] if not resetData then return 0 end return START_RESET_TIME + timeReset[rtype] * resetData.interval + resetData.start end -- 当前轮次 结束时间 function Role:getTimeResetEndTime(rtype) return self:getTimeResetStartTime(rtype) + getTimeResetDuration(rtype) end function Role:getTimeResetRound(rtype) local timeReset = self:getProperty("timeReset") return timeReset[rtype] or 0 end function Role:getTimeResetDataStart(rtype) local resetData = csvdb["time_resetCsv"][rtype] if not resetData then return 0 end return resetData.start end end return RoleTimeReset