Browse Source

Add buttons to ContentDB in game bar and configure world (#9944)

tags/5.3.0
rubenwardy GitHub 1 month ago
parent
commit
850af80089
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 79 additions and 39 deletions
  1. +56
    -39
      builtin/mainmenu/dlg_config_world.lua
  2. +11
    -0
      builtin/mainmenu/dlg_contentstore.lua
  3. +12
    -0
      builtin/mainmenu/tab_local.lua
  4. BIN
      textures/base/pack/plus.png

+ 56
- 39
builtin/mainmenu/dlg_config_world.lua View File

@@ -23,7 +23,49 @@ local function modname_valid(name)
return not name:find("[^a-z0-9_]")
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)
if not data.list then
init_data(data)
end

local mod = data.list:get_list()[data.selected_mod] or {name = ""}

local retval =
@@ -85,11 +127,14 @@ local function get_formspec(data)
end
end
end

retval = retval ..
"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") .. "]"
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.is_modpack then
@@ -198,6 +243,16 @@ local function handle_buttons(this, fields)
return true
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
local list = this.data.list:get_raw_list()

@@ -247,43 +302,5 @@ function create_configure_world_dlg(worldidx)
return
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
end

+ 11
- 0
builtin/mainmenu/dlg_contentstore.lua View File

@@ -513,6 +513,17 @@ function create_store_dlg(type)

search_string = ""
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)

return dialog_create("store",


+ 12
- 0
builtin/mainmenu/tab_local.lua View File

@@ -35,6 +35,15 @@ if enable_gamebar then
end

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 j=1,#pkgmgr.games,1 do
if ("game_btnbar_" .. pkgmgr.games[j].id == key) then
@@ -87,6 +96,9 @@ if enable_gamebar then
end
btnbar:add_button(btn_name, text, image, tooltip)
end

local plus_image = core.formspec_escape(defaulttexturedir .. "plus.png")
btnbar:add_button("game_open_cdb", "", plus_image, fgettext("Install games from ContentDB"))
end
else
function current_game()


BIN
textures/base/pack/plus.png View File

Before After
Width: 128  |  Height: 128  |  Size: 763B

Loading…
Cancel
Save