|
|
- 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
|