local HotFix_Model = {} local private = {} local EventSystem = require('Event/EventSystem') local _maxDownloadSize = 0 private.downloadParam = {} private.hasStagePackageAward = false function HotFix_Model.OnStartup() HotFix_Model.DownLoadProgress = 0 NetManager.RegisterMsgCB(MessageEnums.MessageStagePackageAward, private.StagePackageAwardResp) NetManager.RegisterMsgCB(MessageEnums.MessageFinishPackageDownload, nil) NetManager.RegisterMsgCB(MessageEnums.MessageStartPackageBaoDownLoad, nil) EventSystem.Regist(EventID.Base_SwitchBaseCDNUrl, private.OnSwitchBaseCDNUrl) end function HotFix_Model.InitHotFixUrl() private.OnSwitchBaseCDNUrl() end function private.GetDownloadBaseURL(baseURL) local platform if UNITY_IOS then platform = "iOS" elseif UNITY_ANDROID then platform = "Android" elseif UNITY_STANDALONE == "OSX" then platform = "Mac" else platform = "Win" end if DEF.EDITOR_DOWNLOAD_PLATFORM then return string.format("%s/%s/%s", baseURL, DEF.BASE_PKG_CODE, DEF.EDITOR_DOWNLOAD_PLATFORM) end return string.format("%s/%s/%s", baseURL, DEF.BASE_PKG_CODE, platform) end function private.OnSwitchBaseCDNUrl() if USE_ASSET_UPDATE or DEF.EDITOR_DOWNLOAD_PLATFORM then local baseURL = tostring(MDL.Login.GetCDNBaseUrl() or "") if string.sub(baseURL, 1, 7) ~= "http://" and string.sub(baseURL, 1, 8) ~= "https://" then baseURL = string.format("http://%s:8001/jws2", baseURL) end local downloadUrl = private.GetDownloadBaseURL(baseURL) LoginProxy.SetBaseURL(downloadUrl) end end function HotFix_Model.SetMaxDownloadSize(num) _maxDownloadSize = num end function HotFix_Model.GetMaxDownloadSize() return _maxDownloadSize end function HotFix_Model.CheckIfHotFix(msgResp) if USE_ASSET_UPDATE then local updateVer = msgResp.Resp.UpdateVer if not string.isNilOrEmpty(updateVer) then local newVer = CTL.Login.NewGetPlatformHotVer(updateVer) if not string.isNilOrEmpty(newVer) then local lastVersion = AppInfo.hotfixCodeFromServer if ((string.isNilOrEmpty(lastVersion)) or (lastVersion ~= nil and newVer ~= lastVersion)) then --热更号变化,需要返回登录界面热更资源 UTL.MessageBox.ShowOnlyOkNoCloseBox(Const_IDS.IDS_WARNING, Const_IDS.IDS_StrongUpdate, private.BackToLogin) end end end end end function private.BackToLogin() SDKUtil.SwitchAccount() end --版本号(渠道号)_包内热更新号_包外热更新号_本地的预热更号 function HotFix_Model.GetVersionInfo() local hotfixCodeServer = string.isNilOrEmpty(AppInfo.hotfixCodeFromServer) and 0 or AppInfo.hotfixCodeFromServer local hotfixCodeLocal = string.isNilOrEmpty(DEF.LOCAL_HOTFIX_CODE) and 0 or DEF.LOCAL_HOTFIX_CODE local preHotfixCodeLocal = CTL.HotFix.GetLocalPreHotfixCode() local content = string.format("%s(%s)_%s_%s_%s", AppInfo.marketVersion, SDKUtil.ChannelID, hotfixCodeLocal, hotfixCodeServer, preHotfixCodeLocal) if DEF.DISABLE_ASSET_CHECK then --如果关闭了热更,增加前缀提示 return "热更关闭_" .. content end return content end function HotFix_Model.StagePackageAwardRequest() local msg = NetManager.GetPB("stage_package_pb").StagePackageAwardReq() NetManager.SendMessage(MessageEnums.MessageStagePackageAward, msg) end function private.StagePackageAwardResp(msgResp) if msgResp.Resp.Code == 0 then private.hasStagePackageAward = true UIManager.CloseView(Const_UI_Lua.UIEnum.UIStagePackage) EventSystem.Dispatch(EventID.UI_Close_DownloadEntry) if GameAppInfo.IsJapanesePackage() then -- 日服包专有 EventSystem.Dispatch(EventID.PreDownloadJP_ShowRedPoint) if CTL.PreDownloadJP.IsPreHotfixFinish() then -- 领取完奖励,如果本地预热更号 存在则表示已经下载过预热更。此时重新开启一次预热更检测 CTL.HotFix.TryStartPreHotfix() end end end end function HotFix_Model.SyncStagePackageAward(state) private.hasStagePackageAward = (state == 1) end function HotFix_Model.Get_HasStagePackageAward() return private.hasStagePackageAward end function HotFix_Model.SyncAwardPackageStage(states) private.hasAwardPackageStage = states end function HotFix_Model.Stage299PackageAwardRequest() if NetManager.IsLaunch() then return end local msg = NetManager.GetPB("stage_package_pb").FinishPackageDownloadReq() --完成的分包下载阶段(从分包2开始计数:分包2传1,分包3传2,以此类推) msg.stage = 1 NetManager.SendMessage(MessageEnums.MessageFinishPackageDownload, msg) end --完成的分包下载阶段(从分包2开始计数:分包2传1,分包3传2,以此类推) function HotFix_Model.StartPackageBaoDownLoadReq(stage) local msg = NetManager.GetPB("stage_package_pb").StartPackageBaoDownLoadReq() msg.stage = stage NetManager.SendMessage(MessageEnums.MessageStartPackageBaoDownLoad, msg) end return HotFix_Model