aboutsummaryrefslogtreecommitdiff
path: root/builtin/mainmenu
diff options
context:
space:
mode:
authorWuzzy <wuzzy2@mail.ru>2016-11-05 18:42:14 +0100
committerest31 <est31@users.noreply.github.com>2016-11-05 18:42:14 +0100
commit1c570cb3906a871920f8a628a307308820004a23 (patch)
treef8b45c417fb9eeef63659f4c33bc99ce2cdafe0d /builtin/mainmenu
parent66bb2954362748c4722d366d0df490ad51a591a2 (diff)
downloadminetest-1c570cb3906a871920f8a628a307308820004a23.tar.gz
minetest-1c570cb3906a871920f8a628a307308820004a23.tar.bz2
minetest-1c570cb3906a871920f8a628a307308820004a23.zip
Separate optional from required mod dependencies in main menu (#4721)
* Separate optional from require dep's in main menu * Simplify modmgr mod dependency listing code
Diffstat (limited to 'builtin/mainmenu')
-rw-r--r--builtin/mainmenu/dlg_config_world.lua15
-rw-r--r--builtin/mainmenu/modmgr.lua17
-rw-r--r--builtin/mainmenu/tab_mods.lua24
3 files changed, 39 insertions, 17 deletions
diff --git a/builtin/mainmenu/dlg_config_world.lua b/builtin/mainmenu/dlg_config_world.lua
index 6e6224c92..7b3ab9852 100644
--- a/builtin/mainmenu/dlg_config_world.lua
+++ b/builtin/mainmenu/dlg_config_world.lua
@@ -47,13 +47,18 @@ local function get_formspec(data)
if mod == nil then
mod = {name=""}
end
+
+ local hard_deps, soft_deps = modmgr.get_dependencies(mod.path)
retval = retval ..
"label[0,0.7;" .. fgettext("Mod:") .. "]" ..
"label[0.75,0.7;" .. mod.name .. "]" ..
- "label[0,1.25;" .. fgettext("Depends:") .. "]" ..
- "textlist[0,1.75;5,4.25;world_config_depends;" ..
- modmgr.get_dependencies(mod.path) .. ";0]" ..
+ "label[0,1.25;" .. fgettext("Dependencies:") .. "]" ..
+ "textlist[0,1.75;5,2.125;world_config_depends;" ..
+ hard_deps .. ";0]" ..
+ "label[0,3.875;" .. fgettext("Optional dependencies:") .. "]" ..
+ "textlist[0,4.375;5,1.8;world_config_optdepends;" ..
+ soft_deps .. ";0]" ..
"button[3.25,7;2.5,0.5;btn_config_world_save;" .. fgettext("Save") .. "]" ..
"button[5.75,7;2.5,0.5;btn_config_world_cancel;" .. fgettext("Cancel") .. "]"
@@ -86,11 +91,11 @@ local function get_formspec(data)
if enabled_all then
retval = retval ..
"button[8.75,0.125;2.5,0.5;btn_disable_all_mods;" .. fgettext("Disable all") .. "]" ..
- "textlist[5.5,0.75;5.75,5.25;world_config_modlist;"
+ "textlist[5.5,0.75;5.75,5.4;world_config_modlist;"
else
retval = retval ..
"button[8.75,0.125;2.5,0.5;btn_enable_all_mods;" .. fgettext("Enable all") .. "]" ..
- "textlist[5.5,0.75;5.75,5.25;world_config_modlist;"
+ "textlist[5.5,0.75;5.75,5.4;world_config_modlist;"
end
retval = retval .. modmgr.render_modlist(data.list)
retval = retval .. ";" .. data.selected_mod .."]"
diff --git a/builtin/mainmenu/modmgr.lua b/builtin/mainmenu/modmgr.lua
index f996df7ba..bf87b1dfa 100644
--- a/builtin/mainmenu/modmgr.lua
+++ b/builtin/mainmenu/modmgr.lua
@@ -284,27 +284,32 @@ end
--------------------------------------------------------------------------------
function modmgr.get_dependencies(modfolder)
- local toadd = ""
+ local toadd_hard = ""
+ local toadd_soft = ""
if modfolder ~= nil then
local filename = modfolder ..
DIR_DELIM .. "depends.txt"
+ local hard_dependencies = {}
+ local soft_dependencies = {}
local dependencyfile = io.open(filename,"r")
-
if dependencyfile then
local dependency = dependencyfile:read("*l")
while dependency do
- if toadd ~= "" then
- toadd = toadd .. ","
+ if string.sub(dependency, -1, -1) == "?" then
+ table.insert(soft_dependencies, string.sub(dependency, 1, -2))
+ else
+ table.insert(hard_dependencies, dependency)
end
- toadd = toadd .. dependency
dependency = dependencyfile:read()
end
dependencyfile:close()
end
+ toadd_hard = table.concat(hard_dependencies, ",")
+ toadd_soft = table.concat(soft_dependencies, ",")
end
- return toadd
+ return toadd_hard, toadd_soft
end
--------------------------------------------------------------------------------
diff --git a/builtin/mainmenu/tab_mods.lua b/builtin/mainmenu/tab_mods.lua
index 5b59aa110..4a5b6c041 100644
--- a/builtin/mainmenu/tab_mods.lua
+++ b/builtin/mainmenu/tab_mods.lua
@@ -98,12 +98,24 @@ local function get_formspec(tabview, name, tabdata)
.. fgettext("Uninstall selected modpack") .. "]"
else
--show dependencies
-
- retval = retval .. "," .. fgettext("Depends:") .. ","
-
- local toadd = modmgr.get_dependencies(selected_mod.path)
-
- retval = retval .. toadd .. ";0]"
+ local toadd_hard, toadd_soft = modmgr.get_dependencies(selected_mod.path)
+ if toadd_hard == "" and toadd_soft == "" then
+ retval = retval .. "," .. fgettext("No dependencies.")
+ else
+ if toadd_hard ~= "" then
+ retval = retval .. "," .. fgettext("Dependencies:") .. ","
+ retval = retval .. toadd_hard
+ end
+ if toadd_soft ~= "" then
+ if toadd_hard ~= "" then
+ retval = retval .. ","
+ end
+ retval = retval .. "," .. fgettext("Optional dependencies:") .. ","
+ retval = retval .. toadd_soft
+ end
+ end
+
+ retval = retval .. ";0]"
retval = retval .. "button[5.5,4.85;4.5,0.5;btn_mod_mgr_delete_mod;"
.. fgettext("Uninstall selected mod") .. "]"