forked from Mirrorlandia_minetest/minetest
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
This commit is contained in:
parent
66bb295436
commit
1c570cb390
@ -48,12 +48,17 @@ local function get_formspec(data)
|
|||||||
mod = {name=""}
|
mod = {name=""}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local hard_deps, soft_deps = modmgr.get_dependencies(mod.path)
|
||||||
|
|
||||||
retval = retval ..
|
retval = retval ..
|
||||||
"label[0,0.7;" .. fgettext("Mod:") .. "]" ..
|
"label[0,0.7;" .. fgettext("Mod:") .. "]" ..
|
||||||
"label[0.75,0.7;" .. mod.name .. "]" ..
|
"label[0.75,0.7;" .. mod.name .. "]" ..
|
||||||
"label[0,1.25;" .. fgettext("Depends:") .. "]" ..
|
"label[0,1.25;" .. fgettext("Dependencies:") .. "]" ..
|
||||||
"textlist[0,1.75;5,4.25;world_config_depends;" ..
|
"textlist[0,1.75;5,2.125;world_config_depends;" ..
|
||||||
modmgr.get_dependencies(mod.path) .. ";0]" ..
|
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[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") .. "]"
|
"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
|
if enabled_all then
|
||||||
retval = retval ..
|
retval = retval ..
|
||||||
"button[8.75,0.125;2.5,0.5;btn_disable_all_mods;" .. fgettext("Disable all") .. "]" ..
|
"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
|
else
|
||||||
retval = retval ..
|
retval = retval ..
|
||||||
"button[8.75,0.125;2.5,0.5;btn_enable_all_mods;" .. fgettext("Enable all") .. "]" ..
|
"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
|
end
|
||||||
retval = retval .. modmgr.render_modlist(data.list)
|
retval = retval .. modmgr.render_modlist(data.list)
|
||||||
retval = retval .. ";" .. data.selected_mod .."]"
|
retval = retval .. ";" .. data.selected_mod .."]"
|
||||||
|
@ -284,27 +284,32 @@ end
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
function modmgr.get_dependencies(modfolder)
|
function modmgr.get_dependencies(modfolder)
|
||||||
local toadd = ""
|
local toadd_hard = ""
|
||||||
|
local toadd_soft = ""
|
||||||
if modfolder ~= nil then
|
if modfolder ~= nil then
|
||||||
local filename = modfolder ..
|
local filename = modfolder ..
|
||||||
DIR_DELIM .. "depends.txt"
|
DIR_DELIM .. "depends.txt"
|
||||||
|
|
||||||
|
local hard_dependencies = {}
|
||||||
|
local soft_dependencies = {}
|
||||||
local dependencyfile = io.open(filename,"r")
|
local dependencyfile = io.open(filename,"r")
|
||||||
|
|
||||||
if dependencyfile then
|
if dependencyfile then
|
||||||
local dependency = dependencyfile:read("*l")
|
local dependency = dependencyfile:read("*l")
|
||||||
while dependency do
|
while dependency do
|
||||||
if toadd ~= "" then
|
if string.sub(dependency, -1, -1) == "?" then
|
||||||
toadd = toadd .. ","
|
table.insert(soft_dependencies, string.sub(dependency, 1, -2))
|
||||||
|
else
|
||||||
|
table.insert(hard_dependencies, dependency)
|
||||||
end
|
end
|
||||||
toadd = toadd .. dependency
|
|
||||||
dependency = dependencyfile:read()
|
dependency = dependencyfile:read()
|
||||||
end
|
end
|
||||||
dependencyfile:close()
|
dependencyfile:close()
|
||||||
end
|
end
|
||||||
|
toadd_hard = table.concat(hard_dependencies, ",")
|
||||||
|
toadd_soft = table.concat(soft_dependencies, ",")
|
||||||
end
|
end
|
||||||
|
|
||||||
return toadd
|
return toadd_hard, toadd_soft
|
||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
@ -98,12 +98,24 @@ local function get_formspec(tabview, name, tabdata)
|
|||||||
.. fgettext("Uninstall selected modpack") .. "]"
|
.. fgettext("Uninstall selected modpack") .. "]"
|
||||||
else
|
else
|
||||||
--show dependencies
|
--show dependencies
|
||||||
|
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 .. "," .. fgettext("Depends:") .. ","
|
retval = retval .. ";0]"
|
||||||
|
|
||||||
local toadd = modmgr.get_dependencies(selected_mod.path)
|
|
||||||
|
|
||||||
retval = retval .. toadd .. ";0]"
|
|
||||||
|
|
||||||
retval = retval .. "button[5.5,4.85;4.5,0.5;btn_mod_mgr_delete_mod;"
|
retval = retval .. "button[5.5,4.85;4.5,0.5;btn_mod_mgr_delete_mod;"
|
||||||
.. fgettext("Uninstall selected mod") .. "]"
|
.. fgettext("Uninstall selected mod") .. "]"
|
||||||
|
Loading…
Reference in New Issue
Block a user