local WarZone_Model = {} local private = {} local EventSystem = require('Event/EventSystem') local war_zone_show_pb = require 'Proto.war_zone_show_pb' function WarZone_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageWarZoneServerList, private.WarZoneServerListResp) NetManager.RegisterMsgCB(MessageEnums.MessageG2CWarZonePlate, private.WarZonePlateG2C) NetManager.RegisterMsgCB(MessageEnums.MessageEcoSphereServerList, private.EcoSphereServerList) private.isInFirstWarZonePeriod = false private.timeInfo = nil private.groupMaxServerTimestampDic = {} private.warZoneLongestOpenTime = 0 end function WarZone_Model.OnShutdown() private.timeInfo = nil private.groupMaxServerTimestampDic = nil end function private.WarZoneServerListResp(msg) WarZone_Model.ShowInterfacePanel(msg.timeInfo) EventSystem.Dispatch(EventID.WarZone_ServerList_Refresh, msg.serverList) end function private.EcoSphereServerList(msgResp) if msgResp.Resp.Code == 0 then EventSystem.Dispatch(EventID.WarZone_ServerList_Refresh, msgResp.serverList) end end function private.WarZonePlateG2C(msg) WarZone_Model.ShowInterfacePanel(msg.timeInfo) end function WarZone_Model.WarZoneServerListRequest() local msg = war_zone_show_pb.WarZoneServerListReq() NetManager.SendMessage(MessageEnums.MessageWarZoneServerList, msg) end --获取生态区服务器列表 function WarZone_Model.EcoSphereServerListReq() local msg = war_zone_show_pb.EcoSphereServerListReq() NetManager.SendMessage(MessageEnums.MessageEcoSphereServerList, msg) end function WarZone_Model.ShowInterfacePanel(timeInfo) if IsServerDataNotNil(timeInfo) and timeInfo.noticeTime ~= 0 and timeInfo.startTime ~= 0 and timeInfo.plateCloseTime ~= 0 then private.timeInfo = timeInfo else private.timeInfo = nil end MDL.Unlock.Update() -- 战区开启状态的trigger依赖战区数据,这里刷新一下 EventSystem.Dispatch(EventID.WarZone_State_Change) private.SyncWarZoneLongestOpenTime(timeInfo.WarZoneLongestOpenTime) end function WarZone_Model.GetTimeInfo() return private.timeInfo end function private.SyncWarZoneLongestOpenTime(time) private.warZoneLongestOpenTime = time EventSystem.Dispatch(EventID.WarZone_TimeRewardFresh) end function WarZone_Model.GetWarZoneLongestOpenTime() return private.warZoneLongestOpenTime or 0 end return WarZone_Model