forked from Mirrorlandia_minetest/minetest
Add buttons to ContentDB in game bar and configure world (#9944)
This commit is contained in:
parent
c1e01bc638
commit
850af80089
@ -23,7 +23,49 @@ local function modname_valid(name)
|
|||||||
return not name:find("[^a-z0-9_]")
|
return not name:find("[^a-z0-9_]")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function init_data(data)
|
||||||
|
data.list = filterlist.create(
|
||||||
|
pkgmgr.preparemodlist,
|
||||||
|
pkgmgr.comparemod,
|
||||||
|
function(element, uid)
|
||||||
|
if element.name == uid then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
function(element, criteria)
|
||||||
|
if criteria.hide_game and
|
||||||
|
element.is_game_content then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if criteria.hide_modpackcontents and
|
||||||
|
element.modpack ~= nil then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
{
|
||||||
|
worldpath = data.worldspec.path,
|
||||||
|
gameid = data.worldspec.gameid
|
||||||
|
})
|
||||||
|
|
||||||
|
if data.selected_mod > data.list:size() then
|
||||||
|
data.selected_mod = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
data.list:set_filtercriteria({
|
||||||
|
hide_game = data.hide_gamemods,
|
||||||
|
hide_modpackcontents = data.hide_modpackcontents
|
||||||
|
})
|
||||||
|
data.list:add_sort_mechanism("alphabetic", sort_mod_list)
|
||||||
|
data.list:set_sortmode("alphabetic")
|
||||||
|
end
|
||||||
|
|
||||||
local function get_formspec(data)
|
local function get_formspec(data)
|
||||||
|
if not data.list then
|
||||||
|
init_data(data)
|
||||||
|
end
|
||||||
|
|
||||||
local mod = data.list:get_list()[data.selected_mod] or {name = ""}
|
local mod = data.list:get_list()[data.selected_mod] or {name = ""}
|
||||||
|
|
||||||
local retval =
|
local retval =
|
||||||
@ -85,11 +127,14 @@ local function get_formspec(data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
retval = retval ..
|
retval = retval ..
|
||||||
"button[3.25,7;2.5,0.5;btn_config_world_save;" ..
|
"button[3.25,7;2.5,0.5;btn_config_world_save;" ..
|
||||||
fgettext("Save") .. "]" ..
|
fgettext("Save") .. "]" ..
|
||||||
"button[5.75,7;2.5,0.5;btn_config_world_cancel;" ..
|
"button[5.75,7;2.5,0.5;btn_config_world_cancel;" ..
|
||||||
fgettext("Cancel") .. "]"
|
fgettext("Cancel") .. "]" ..
|
||||||
|
"button[9,7;2.5,0.5;btn_config_world_cdb;" ..
|
||||||
|
fgettext("Find More Mods") .. "]"
|
||||||
|
|
||||||
if mod.name ~= "" and not mod.is_game_content then
|
if mod.name ~= "" and not mod.is_game_content then
|
||||||
if mod.is_modpack then
|
if mod.is_modpack then
|
||||||
@ -198,6 +243,16 @@ local function handle_buttons(this, fields)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if fields.btn_config_world_cdb then
|
||||||
|
this.data.list = nil
|
||||||
|
|
||||||
|
local dlg = create_store_dlg("mod")
|
||||||
|
dlg:set_parent(this)
|
||||||
|
this:hide()
|
||||||
|
dlg:show()
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
if fields.btn_enable_all_mods then
|
if fields.btn_enable_all_mods then
|
||||||
local list = this.data.list:get_raw_list()
|
local list = this.data.list:get_raw_list()
|
||||||
|
|
||||||
@ -247,43 +302,5 @@ function create_configure_world_dlg(worldidx)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
dlg.data.list = filterlist.create(
|
|
||||||
pkgmgr.preparemodlist,
|
|
||||||
pkgmgr.comparemod,
|
|
||||||
function(element, uid)
|
|
||||||
if element.name == uid then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
function(element, criteria)
|
|
||||||
if criteria.hide_game and
|
|
||||||
element.is_game_content then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
if criteria.hide_modpackcontents and
|
|
||||||
element.modpack ~= nil then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end,
|
|
||||||
{
|
|
||||||
worldpath = dlg.data.worldspec.path,
|
|
||||||
gameid = dlg.data.worldspec.gameid
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if dlg.data.selected_mod > dlg.data.list:size() then
|
|
||||||
dlg.data.selected_mod = 0
|
|
||||||
end
|
|
||||||
|
|
||||||
dlg.data.list:set_filtercriteria({
|
|
||||||
hide_game = dlg.data.hide_gamemods,
|
|
||||||
hide_modpackcontents = dlg.data.hide_modpackcontents
|
|
||||||
})
|
|
||||||
dlg.data.list:add_sort_mechanism("alphabetic", sort_mod_list)
|
|
||||||
dlg.data.list:set_sortmode("alphabetic")
|
|
||||||
|
|
||||||
return dlg
|
return dlg
|
||||||
end
|
end
|
||||||
|
@ -513,6 +513,17 @@ function create_store_dlg(type)
|
|||||||
|
|
||||||
search_string = ""
|
search_string = ""
|
||||||
cur_page = 1
|
cur_page = 1
|
||||||
|
|
||||||
|
if type then
|
||||||
|
-- table.indexof does not work on tables that contain `nil`
|
||||||
|
for i, v in pairs(filter_types_type) do
|
||||||
|
if v == type then
|
||||||
|
filter_type = i
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
store.filter_packages(search_string)
|
store.filter_packages(search_string)
|
||||||
|
|
||||||
return dialog_create("store",
|
return dialog_create("store",
|
||||||
|
@ -35,6 +35,15 @@ if enable_gamebar then
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function game_buttonbar_button_handler(fields)
|
local function game_buttonbar_button_handler(fields)
|
||||||
|
if fields.game_open_cdb then
|
||||||
|
local maintab = ui.find_by_name("maintab")
|
||||||
|
local dlg = create_store_dlg("game")
|
||||||
|
dlg:set_parent(maintab)
|
||||||
|
maintab:hide()
|
||||||
|
dlg:show()
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
for key,value in pairs(fields) do
|
for key,value in pairs(fields) do
|
||||||
for j=1,#pkgmgr.games,1 do
|
for j=1,#pkgmgr.games,1 do
|
||||||
if ("game_btnbar_" .. pkgmgr.games[j].id == key) then
|
if ("game_btnbar_" .. pkgmgr.games[j].id == key) then
|
||||||
@ -87,6 +96,9 @@ if enable_gamebar then
|
|||||||
end
|
end
|
||||||
btnbar:add_button(btn_name, text, image, tooltip)
|
btnbar:add_button(btn_name, text, image, tooltip)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local plus_image = core.formspec_escape(defaulttexturedir .. "plus.png")
|
||||||
|
btnbar:add_button("game_open_cdb", "", plus_image, fgettext("Install games from ContentDB"))
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
function current_game()
|
function current_game()
|
||||||
|
BIN
textures/base/pack/plus.png
Normal file
BIN
textures/base/pack/plus.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 763 B |
Loading…
Reference in New Issue
Block a user