mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-12-23 09:28:45 +00:00
181 lines
6 KiB
Lua
181 lines
6 KiB
Lua
|
------------------------------------------------------------------------------------------------------------
|
||
|
-------------------
|
||
|
-- BG DOWNLOADER --
|
||
|
-------------------
|
||
|
|
||
|
|
||
|
bgdownloader =
|
||
|
{
|
||
|
ChangePriorityLock = false
|
||
|
}
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
function bgdownloader:getProgressGroup()
|
||
|
if isInGame() then
|
||
|
local grp = getUI("ui:interface:bg_downloader")
|
||
|
return grp
|
||
|
else
|
||
|
local grp = getUI("ui:outgame:charsel:bgd_progress")
|
||
|
return grp
|
||
|
end
|
||
|
end
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
function bgdownloader:getPrioCB()
|
||
|
return self:getProgressGroup():find("prio")
|
||
|
end
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
function bgdownloader:getProgressBar()
|
||
|
return self:getProgressGroup():find("progress")
|
||
|
end
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
function bgdownloader:setIcon(icon)
|
||
|
local bm = self:getProgressGroup():find("bm");
|
||
|
if icon == "" then
|
||
|
bm.active = false
|
||
|
else
|
||
|
bm.active = true
|
||
|
bm.texture = icon
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local pausedText = i18n.get("uiBGD_Paused")
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
function bgdownloader:setProgressText(ucstr, color, progress, ellipsis)
|
||
|
local text = self:getProgressGroup():find("text")
|
||
|
local ellipsisTxt = self:getProgressGroup():find("ellipsis")
|
||
|
text.color = color
|
||
|
text.uc_hardtext = ucstr
|
||
|
if ellipsis then
|
||
|
ellipsisTxt.hardtext = ellipsis
|
||
|
else
|
||
|
ellipsisTxt.hardtext = ""
|
||
|
end
|
||
|
ellipsisTxt.color = color
|
||
|
if getBGDownloaderPriority() == 0 then -- paused ?
|
||
|
-- don't update progress when in pause (it may change because the pause actually wait
|
||
|
-- any current download to finish, otherwise connection may be lost)
|
||
|
self:setIcon("bgd_pause.tga")
|
||
|
ellipsisTxt.hardtext = ""
|
||
|
text.uc_hardtext = pausedText
|
||
|
else
|
||
|
self:setIcon("")
|
||
|
local progressCtrl = self:getProgressBar()
|
||
|
progressCtrl.range = 100
|
||
|
progressCtrl.value = progress * 100
|
||
|
progressCtrl.active = true
|
||
|
end
|
||
|
self:displayPriority()
|
||
|
end
|
||
|
|
||
|
|
||
|
local progress progressSymbol = { ".", "..", "..." }
|
||
|
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
-- set patching progression (from 0 to 1)
|
||
|
function bgdownloader:setPatchProgress(progress)
|
||
|
if not isInGame() then
|
||
|
self:getProgressGroup().active = true
|
||
|
end
|
||
|
|
||
|
self:getPrioCB().active = true
|
||
|
local progressPercentText = string.format("%d%%", 100 * progress)
|
||
|
local progressPostfix = math.mod(os.time(), 3)
|
||
|
local progressDate = nltime.getLocalTime() / 500
|
||
|
local colValue = math.floor(230 + 24 * math.sin(progressDate))
|
||
|
local color = string.format("%d %d %d %d", colValue, colValue, colValue, 255)
|
||
|
self:setProgressText(concatUCString(i18n.get("uiBGD_Progress"), ucstring(progressPercentText)), color, progress, progressSymbol[progressPostfix + 1])
|
||
|
end
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
function bgdownloader:setPatchSuccess()
|
||
|
if not isInGame() then
|
||
|
self:getProgressGroup().active = true
|
||
|
end
|
||
|
self:setProgressText(i18n.get("uiBGD_PatchUpToDate"), "0 255 0 255", 1)
|
||
|
self:setIcon("W_answer_16_valid.tga")
|
||
|
--if isInGame() then
|
||
|
self:getPrioCB().active = false
|
||
|
--end
|
||
|
end
|
||
|
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
function bgdownloader:setPatchError()
|
||
|
if not isInGame() then
|
||
|
self:getProgressGroup().active = true
|
||
|
end
|
||
|
local errMsg = getPatchLastErrorMessage()
|
||
|
if errMsg == ucstring() then
|
||
|
self:setProgressText(i18n.get("uiBGD_PatchError"), "255 0 0 255", 0)
|
||
|
else
|
||
|
self:setProgressText(errMsg, "255 0 0 255", 0)
|
||
|
end
|
||
|
self:setIcon("W_answer_16_cancel.tga")
|
||
|
--if isInGame() then
|
||
|
self:getPrioCB().active = false
|
||
|
--end
|
||
|
end
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
function bgdownloader:setNoDownloader()
|
||
|
if isInGame() then
|
||
|
self:setProgressText(i18n.get("uiBGD_NotUsed"), "255 255 255 255", 0)
|
||
|
else
|
||
|
self:getProgressGroup().active = false
|
||
|
end
|
||
|
self:setIcon("")
|
||
|
--if isInGame() then
|
||
|
self:getPrioCB().active = false
|
||
|
--end
|
||
|
self:getProgressBar().active = false
|
||
|
end
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
function bgdownloader:setNoNecessaryPatch()
|
||
|
if isInGame() then
|
||
|
self:setProgressText(i18n.get("uiBGD_PatchUpToDate"), "255 255 255 255", 0)
|
||
|
|
||
|
else
|
||
|
self:getProgressGroup().active = false
|
||
|
end
|
||
|
self:setIcon("")
|
||
|
--if isInGame() then
|
||
|
self:getPrioCB().active = false
|
||
|
--end
|
||
|
self:getProgressBar().active = false
|
||
|
end
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
-- the priority was changed by the user
|
||
|
function bgdownloader:onChangePriority()
|
||
|
if not self.ChangePriorityLock then
|
||
|
requestBGDownloaderPriority(self:getPrioCB().selection)
|
||
|
self:displayPriority()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
-- the priority has been changed externally, display it
|
||
|
function bgdownloader:displayPriority()
|
||
|
--if not isInGame() then return end
|
||
|
self.ChangePriorityLock = true
|
||
|
self:getPrioCB().selection = getBGDownloaderPriority()
|
||
|
self.ChangePriorityLock = false
|
||
|
self:getPrioCB().active = (getBGDownloaderPriority() ~= -1)
|
||
|
end
|
||
|
|
||
|
------------------------------------------------------------------------------------------------------------
|
||
|
-- display a warning telling that the user need a fully patched client to go further
|
||
|
function bgdownloader:inGamePatchUncompleteWarning()
|
||
|
local pg = self:getProgressGroup()
|
||
|
pg.active = true
|
||
|
setTopWindow(pg)
|
||
|
pg:blink(2)
|
||
|
messageBoxWithHelp(i18n.get("uiBGD_InGamePatchIncomplete"), "ui:interface", tonumber(getDefine("case_normal")))
|
||
|
displaySystemInfo(i18n.get("uiBGD_InGamePatchIncompleteBC"), "BC")
|
||
|
end
|