Skip to content

Commit

Permalink
Add buttons to ContentDB in game bar and configure world (#9944)
Browse files Browse the repository at this point in the history
  • Loading branch information
rubenwardy committed Jun 4, 2020
1 parent c1e01bc commit 850af80
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 39 deletions.
95 changes: 56 additions & 39 deletions builtin/mainmenu/dlg_config_world.lua
Expand Up @@ -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 =
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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()

Expand Down Expand Up @@ -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 changes: 11 additions & 0 deletions builtin/mainmenu/dlg_contentstore.lua
Expand Up @@ -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",
Expand Down
12 changes: 12 additions & 0 deletions builtin/mainmenu/tab_local.lua
Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand Down
Binary file added textures/base/pack/plus.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 850af80

Please sign in to comment.