local function __ShowTip(_version_view,text, callback) local ctr_state = _version_view:GetController("state") ctr_state.selectedIndex = 1 _version_view:GetChild("tex_tip").text = text _version_view:GetChild("btn_ok").onClick:Set(function() ctr_state.selectedIndex = 0 if (callback ~= null) then callback:DynamicInvoke() end end) local btn_close = _version_view:GetChild("btn_close") if btn_close then btn_close.onClick:Set(function() _version_view:Dispose() _version_view = nil end) end end local function __update_check_size(data, onback, _version_view) local tex_tip = _version_view:GetChild("tex_info") local totalSize = 0 for k, game_data in ipairs(data) do local asset_path = game_data["bundle"]:gsub("\r\n", "") asset_path = string.gsub(asset_path, "%.", "/") local local_version = Version.DEFUALT local server_version = Version(game_data["version"]) local version_update = Hotupdate(asset_path .. "/", local_version, server_version) version_update.AssetName = game_data["name"] version_update:SetTipCallback(function(text, callback) __ShowTip(_version_view, text, callback) end) version_update:LoadAssetSize() while (not version_update.Done) do coroutine.step() end game_data["size"] = version_update.Size totalSize = totalSize + version_update.Size end onback(totalSize, true) end local function __update_check(data, onback, _version_view) print("===================updateCheck") local tex_tip = _version_view:GetChild("tex_info") local download_size = 0 for k, game_data in ipairs(data) do local asset_path = game_data["bundle"]:gsub("\r\n", "") asset_path = string.gsub(asset_path, "%.", "/") local local_version = Version.DEFUALT local server_version = Version(game_data["version"]) local version_update = Hotupdate(asset_path .. "/", local_version, server_version) version_update.AssetName = game_data["name"] version_update:SetTipCallback(function(text,callback) __ShowTip(_version_view,text, callback) end) version_update:LoadAsset() while (not version_update.Done) do if game_data["size"] then printlog("lingmeng down", download_size, version_update.Progress, game_data["size"]) onback( download_size + (version_update.Progress > 1 and 1 or version_update.Progress) * game_data["size"], false) else onback(version_update.Progress, false) tex_tip.text = version_update.TextTip end coroutine.step() end download_size = download_size + game_data["size"] ResourcesManager.ReadAssetConfig(asset_path) end onback(1, true) end ExtendHotupdate = { -- 正常 VERSION_NORMAL = 0, -- 下载 VERSION_DOWN = 1, -- 更新 VERSION_UPDATE = 2, } function ExtendHotupdate.UpdateGameList(list, callback) if (not GameApplication.Instance.buildApp) then callback() return end local _version_view = UIPackage.CreateObjectFromURL("ui://Hotupdate/Version") _version_view:GetChild("tex_info").text = "正在检查游戏资源" local _pd = _version_view:GetChild("pb_progress") _pd.value = 0 GRoot.inst:AddChild(_version_view) _version_view:MakeFullScreen() _version_view:AddRelation(GRoot.inst, RelationType.Size) local toltal_size = 0 coroutine.start(__update_check_size, list, function(totalSize, finish) if (finish) then toltal_size = totalSize coroutine.start(__update_check, list, function(progress, finish) if (finish) then _pd.value = 100 callback() _version_view:Dispose() _version_view = nil else _pd.value = progress / toltal_size * 100 _version_view:GetChild("tex_info").text = string.format("%.1fMB / %.1fMB", progress / 1024 / 1024, toltal_size / 1024 / 1024) end end, _version_view) end end, _version_view) end function ExtendHotupdate.UpdateGame(data,callback) if (not GameApplication.Instance.buildApp) then ExtendManager.UpdateExtend(data) if callback then callback() end return end ViewUtil.CloseModalWait() NetResetConnectWindow.CloseNetReset() local _version_view = UIPackage.CreateObjectFromURL("ui://Common/ExtendHotUpdate") _version_view:GetChild("tex_info").text = "正在检查资源。。。" local _pd = _version_view:GetChild("pb_progress") _pd.value = 0 _version_view:AddRelation(GRoot.inst, RelationType.Size) GRoot.inst:AddChild(_version_view) _version_view:MakeFullScreen() coroutine.start(__update_check,{data}, function(progress, finish) _pd.value = progress * 100 if (finish) then ExtendManager.UpdateExtend(data) if callback then callback() end _version_view:Dispose() end end, _version_view) end function ExtendHotupdate.CheckVersion(game_data) if (not GameApplication.Instance.buildApp) then ExtendManager.UpdateExtend(game_data) return ExtendHotupdate.VERSION_NORMAL end if (not game_data) then return ExtendHotupdate.VERSION_DOWN end local asset_path = game_data.bundle asset_path = string.gsub(asset_path,'%.', '/') local local_version = Hotupdate.GetLocalVersion(asset_path.. "/") local server_version =Version(game_data.version) if not local_version then return ExtendHotupdate.VERSION_DOWN end if local_version:ContainAll(server_version) then return ExtendHotupdate.VERSION_UPDATE end ResourcesManager.ReadAssetConfig(asset_path) ExtendManager.UpdateExtend(game_data) return ExtendHotupdate.VERSION_NORMAL end