源战役客户端
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 

173 řádky
4.3 KiB

ServerTimeModel = ServerTimeModel or BaseClass(BaseModel)
ServerTimeModel.DAY_CHANGE = "ST.DAY_CHANGE"
ServerTimeModel.OVER_TWENTY_FOUR_HOURS = "OVER_TWENTY_FOUR_HOURS"
ServerTimeModel.INIT_TIME_SUCCEED = "ServerTimeModel.INIT_TIME_SUCCEED"
function ServerTimeModel:__init()
ServerTimeModel.Instance = self
--开服时间
self.open_time = 0
--合服时间
self.merge_time = 0
--合服0点时间
self.merge_midnight_time = 0
--合服次数
self.merge_count = 0
--登录天数
self.login_day = 0
--当天的零点时间戳
self.unixdate = 0
--当前的世界等级
self.world_lv = 0
--是否初始化开服天数
self.is_init_serverTime = false
--创角时间
self.create_time = 0
end
function ServerTimeModel:getInstance()
if ServerTimeModel.Instance == nil then
ServerTimeModel.New();
end
return ServerTimeModel.Instance;
end
--初始化开服信息
function ServerTimeModel:InitServerTime(vo)
--开服时间
self.open_time = vo.open_time
--合服时间
self.merge_time = vo.merge_time
--合服0点时间
self.merge_midnight_time = vo.merge_midnight_time
--合服次数
self.merge_count = vo.merge_count
--当天零点的unix时间戳
self.unixdate = vo.unixdate
self.world_lv = vo.world_lv
self:EnableDayCheck(true)
self.is_init_serverTime = true
self:Fire(ServerTimeModel.INIT_TIME_SUCCEED)
-- self:CheckOverTwentyFourHours(true)
end
--选角时候返回提前更新开服天数
function ServerTimeModel:UpdateOpenTime( open_time )
self.open_time = open_time
end
function ServerTimeModel:EnableDayCheck(bool)
if bool then
local curDay = self:GetOpenServerDay()
if self.lastDay and self.lastDay ~= curDay then
EventSystem.Fire(GlobalEventSystem,ServerTimeModel.DAY_CHANGE)
end
self.lastDay = curDay
if not self.timer_clock then
local function day_ticktock()
local curDay = self:GetOpenServerDay()
if curDay ~= self.lastDay then
EventSystem.Fire(GlobalEventSystem,ServerTimeModel.DAY_CHANGE)
end
self.lastDay = curDay
end
self.lastDay = self:GetOpenServerDay()
self.timer_clock = TimerQuest.AddPeriodQuest(GlobalTimerQuest, day_ticktock, 59)
end
else
if self.timer_clock then
TimerQuest.CancelQuest(GlobalTimerQuest, self.timer_clock)
self.timer_clock = nil
end
end
end
function ServerTimeModel:CheckOverTwentyFourHours(bool)
if bool then
if not self.twenty_four_timer then
local function second_count_down()
local gap = TimeUtil:getServerTime() - self.open_time
local day_sec = gap % (3600 * 24)
local tweenty_four_sec = 21 * 3600 --开服时间是3点开始的,要减去3小时
if day_sec >= tweenty_four_sec and not self.have_notify then
self.have_notify = true
GlobalEventSystem:Fire(ServerTimeModel.OVER_TWENTY_FOUR_HOURS)
elseif day_sec < tweenty_four_sec and self.have_notify then
self.have_notify = false
end
end
self.twenty_four_timer = GlobalTimerQuest:AddPeriodQuest(second_count_down, 1)
end
else
if self.twenty_four_timer then
GlobalTimerQuest:CancelQuest(self.twenty_four_timer)
self.twenty_four_timer = nil
end
end
end
function ServerTimeModel:GetOpenServerTime()
return self.open_time
end
function ServerTimeModel:GetMergeServerTime()
return self.merge_time
end
function ServerTimeModel:GetUnixDataTime()
return self.unixdate
end
--获取开服天数
function ServerTimeModel:GetOpenServerDay()
local gap = TimeUtil:getServerTime() - self.open_time
local day = gap / 3600 / 24
return math.ceil(day)
end
--获取合服天数
function ServerTimeModel:GetMergeServerDay()
local gap = TimeUtil:getServerTime() - self.merge_time
if self.merge_time == 0 then
gap = 0
end
local day = gap / 3600 / 24
return math.ceil(day)
end
--根据开服天数得到服务器等级
function ServerTimeModel:GetWorldLevel()
return self.world_lv
end
function ServerTimeModel:SetLoginDay(login_day)
self.login_day = login_day
end
--登录累积天数
function ServerTimeModel:GetLoginDay()
return self.login_day
end
--创角时间
function ServerTimeModel:SetCreateRoleTime( create_time )
self.create_time = create_time
end
function ServerTimeModel:GetCreateRoleTime()
return self.create_time or 0
end
function ServerTimeModel:GetCreateRoleDay( )
if not self.create_time then
return 0
end
local gap = TimeUtil:getServerTime() - self.create_time
if self.create_time == 0 then
gap = 0
end
local day = gap / 3600 / 24
return math.ceil(day)
end