From 8ff209c4122fb83310939bf1b73f56b704a3c982 Mon Sep 17 00:00:00 2001 From: Zughy <63455151+Zughy@users.noreply.github.com> Date: Thu, 21 Jan 2021 19:01:37 +0000 Subject: Load system-wide texture packs too (#10791) Co-authored-by: Zughy <4279489-marco_a@users.noreply.gitlab.com> --- builtin/mainmenu/pkgmgr.lua | 59 ++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 25 deletions(-) (limited to 'builtin') diff --git a/builtin/mainmenu/pkgmgr.lua b/builtin/mainmenu/pkgmgr.lua index 5b8807310..bfb5d269a 100644 --- a/builtin/mainmenu/pkgmgr.lua +++ b/builtin/mainmenu/pkgmgr.lua @@ -72,6 +72,34 @@ local function cleanup_path(temppath) return temppath end +local function load_texture_packs(txtpath, retval) + local list = core.get_dir_list(txtpath, true) + local current_texture_path = core.settings:get("texture_path") + + for _, item in ipairs(list) do + if item ~= "base" then + local name = item + + local path = txtpath .. DIR_DELIM .. item .. DIR_DELIM + if path == current_texture_path then + name = fgettext("$1 (Enabled)", name) + end + + local conf = Settings(path .. "texture_pack.conf") + + retval[#retval + 1] = { + name = item, + author = conf:get("author"), + release = tonumber(conf:get("release") or "0"), + list_name = name, + type = "txp", + path = path, + enabled = path == current_texture_path, + } + end + end +end + function get_mods(path,retval,modpack) local mods = core.get_dir_list(path, true) @@ -112,7 +140,7 @@ function get_mods(path,retval,modpack) toadd.type = "mod" -- Check modpack.txt - -- Note: modpack.conf is already checked above + -- Note: modpack.conf is already checked above local modpackfile = io.open(prefix .. DIR_DELIM .. "modpack.txt") if modpackfile then modpackfile:close() @@ -136,32 +164,13 @@ pkgmgr = {} function pkgmgr.get_texture_packs() local txtpath = core.get_texturepath() - local list = core.get_dir_list(txtpath, true) + local txtpath_system = core.get_texturepath_share() local retval = {} - local current_texture_path = core.settings:get("texture_path") - - for _, item in ipairs(list) do - if item ~= "base" then - local name = item - - local path = txtpath .. DIR_DELIM .. item .. DIR_DELIM - if path == current_texture_path then - name = fgettext("$1 (Enabled)", name) - end - - local conf = Settings(path .. "texture_pack.conf") - - retval[#retval + 1] = { - name = item, - author = conf:get("author"), - release = tonumber(conf:get("release") or "0"), - list_name = name, - type = "txp", - path = path, - enabled = path == current_texture_path, - } - end + load_texture_packs(txtpath, retval) + -- on portable versions these two paths coincide. It avoids loading the path twice + if txtpath ~= txtpath_system then + load_texture_packs(txtpath_system, retval) end table.sort(retval, function(a, b) -- cgit v1.2.3