Browse Source

Load system-wide texture packs too (#10791)

Co-authored-by: Zughy <4279489-marco_a@users.noreply.gitlab.com>
Zughy 3 years ago
parent
commit
8ff209c412
1 changed files with 34 additions and 25 deletions
  1. 34 25
      builtin/mainmenu/pkgmgr.lua

+ 34 - 25
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)