154 lines
3.2 KiB
Lua
154 lines
3.2 KiB
Lua
if (not Engine.InFrontend()) then
|
|
return
|
|
end
|
|
|
|
updatecancelled = false
|
|
updater.cancelupdate()
|
|
|
|
function startupdatecheck(popup, autoclose)
|
|
Engine.GetLuiRoot():registerEventHandler("update_check_done", function(element, event)
|
|
if (updatecancelled) then
|
|
return
|
|
end
|
|
|
|
if (not updater.getupdatecheckstatus()) then
|
|
popup.text:setText("Error: " .. updater.getlasterror())
|
|
return
|
|
end
|
|
|
|
if (not updater.isupdateavailable()) then
|
|
if (autoclose) then
|
|
LUI.FlowManager.RequestLeaveMenu(popup)
|
|
return
|
|
end
|
|
|
|
popup.text:setText("No updates available")
|
|
return
|
|
end
|
|
|
|
LUI.yesnopopup({
|
|
title = "NOTICE",
|
|
text = "An update is available, proceed with installation?",
|
|
callback = function(result)
|
|
if (result) then
|
|
startupdatedownload(popup, autoclose)
|
|
else
|
|
LUI.FlowManager.RequestLeaveMenu(popup)
|
|
end
|
|
end
|
|
})
|
|
end)
|
|
|
|
updater.startupdatecheck()
|
|
end
|
|
|
|
function startupdatedownload(popup, autoclose)
|
|
local textupdate = nil
|
|
local previousfile = nil
|
|
local timer = LUI.UITimer.new(10, "update_file")
|
|
|
|
popup:addElement(timer)
|
|
popup:registerEventHandler("update_file", function()
|
|
local file = updater.getcurrentfile()
|
|
if (file == previousfile) then
|
|
return
|
|
end
|
|
|
|
file = previousfile
|
|
popup.text:setText("Downloading file " .. updater.getcurrentfile() .. "...")
|
|
end)
|
|
|
|
Engine.GetLuiRoot():registerEventHandler("update_done", function(element, event)
|
|
timer:close()
|
|
|
|
if (updatecancelled) then
|
|
return
|
|
end
|
|
|
|
if (not updater.getupdatedownloadstatus()) then
|
|
if (autoclose) then
|
|
LUI.FlowManager.RequestLeaveMenu(popup)
|
|
return
|
|
end
|
|
|
|
popup.text:setText("Error: " .. updater.getlasterror())
|
|
return
|
|
end
|
|
|
|
popup.text:setText("Update successful")
|
|
|
|
if (updater.isrestartrequired()) then
|
|
LUI.confirmationpopup({
|
|
title = "RESTART REQUIRED",
|
|
text = "Update requires restart",
|
|
buttontext = "RESTART",
|
|
callback = function()
|
|
updater.relaunch()
|
|
end
|
|
})
|
|
else
|
|
Engine.Exec("lui_restart")
|
|
end
|
|
|
|
if (autoclose) then
|
|
LUI.FlowManager.RequestLeaveMenu(popup)
|
|
end
|
|
end)
|
|
|
|
updater.startupdatedownload()
|
|
end
|
|
|
|
function updaterpopup(oncancel)
|
|
return LUI.openpopupmenu("generic_waiting_popup_", {
|
|
oncancel = oncancel,
|
|
withcancel = true,
|
|
text = "Checking for updates..."
|
|
})
|
|
end
|
|
|
|
function createtask(data)
|
|
local interval = nil
|
|
interval = game:oninterval(function()
|
|
if (data.cancelled()) then
|
|
interval:clear()
|
|
return
|
|
end
|
|
|
|
if (data.done()) then
|
|
interval:clear()
|
|
data.callback()
|
|
end
|
|
end, data.interval)
|
|
return interval
|
|
end
|
|
|
|
function tryupdate(autoclose)
|
|
updatecancelled = false
|
|
local popup = updaterpopup(function()
|
|
updater.cancelupdate()
|
|
updatecancelled = true
|
|
end)
|
|
|
|
startupdatecheck(popup, autoclose)
|
|
end
|
|
|
|
function tryautoupdate()
|
|
if (not updater.autoupdatesenabled()) then
|
|
return
|
|
end
|
|
|
|
if (not updater.gethastriedupdate()) then
|
|
local timer = LUI.UITimer.new(100, "tryupdate")
|
|
Engine.GetLuiRoot():addElement(timer)
|
|
Engine.GetLuiRoot():registerEventHandler("tryupdate", function()
|
|
timer:close()
|
|
updater.sethastriedupdate(true)
|
|
tryupdate(true)
|
|
end)
|
|
end
|
|
end
|
|
|
|
LUI.tryupdating = tryupdate
|
|
LUI.onmenuopen("main_lockout", tryautoupdate)
|
|
LUI.onmenuopen("mp_main_menu", tryautoupdate)
|