A new batch of MainMenu improvements (#110)
Co-authored-by: luk3yx <luk3yx@users.noreply.github.com>
@ -6,7 +6,8 @@ core.register_on_death(function()
|
||||
local formspec = "size[8,5]bgcolor[#320000b4;true]" ..
|
||||
"background9[0,0;0,0;bg_common.png;true;40]" ..
|
||||
"style[you_died;font_size=+4;content_offset=0]" ..
|
||||
"image_button[0.5,1.5;7,0.8;blank.png;you_died;" .. fgettext("You died") .. ";false;false]" ..
|
||||
"image_button[0.5,1.5;7,0.8;;you_died;" .. fgettext("You died") .. ";false;false]" ..
|
||||
btn_style("btn_respawn") ..
|
||||
"button_exit[2,3;4,0.5;btn_respawn;".. fgettext("Respawn") .."]"
|
||||
core.show_formspec("bultin:death", formspec)
|
||||
end)
|
||||
|
@ -8,6 +8,7 @@ dofile(commonpath .. "after.lua")
|
||||
dofile(commonpath .. "chatcommands.lua")
|
||||
dofile(clientpath .. "chatcommands.lua")
|
||||
dofile(commonpath .. "vector.lua")
|
||||
dofile(commonpath .. "btn_style.lua")
|
||||
dofile(clientpath .. "death_formspec.lua")
|
||||
dofile(clientpath .. "sscsm.lua")
|
||||
dofile(clientpath .. "misc.lua")
|
||||
|
37
builtin/common/btn_style.lua
Normal file
@ -0,0 +1,37 @@
|
||||
-- MultiCraft: builtin/common/btn_style.lua
|
||||
-- luacheck: read_globals PLATFORM
|
||||
|
||||
local device_is_tablet = core.settings:get_bool("device_is_tablet", false)
|
||||
local screen_density = core.get_screen_info().density
|
||||
function is_high_dpi()
|
||||
if PLATFORM == "OSX" then
|
||||
return tonumber(core.settings:get("screen_dpi")) / 72 >= 2
|
||||
elseif PLATFORM == "iOS" and device_is_tablet then
|
||||
return screen_density >= 2
|
||||
else
|
||||
return screen_density >= 3
|
||||
end
|
||||
end
|
||||
|
||||
local DIR_DELIM_esc = core.formspec_escape(DIR_DELIM)
|
||||
local button_path = (INIT == "mainmenu" and defaulttexturedir_esc or "") .. "gui" .. DIR_DELIM_esc
|
||||
|
||||
function btn_style(field, color)
|
||||
local btn_size = is_high_dpi() and ".x2" or ""
|
||||
color = (color and "_" .. color) or ""
|
||||
|
||||
local retval =
|
||||
"style[" .. field .. ";border=false]" ..
|
||||
"style[" .. field .. ";bgimg=" .. button_path .. "gui_button" .. color .. btn_size ..
|
||||
".png;bgimg_middle=" .. (is_high_dpi() and 48 or 32) .. ";padding=" .. (is_high_dpi() and -36 or -24) .. "]"
|
||||
|
||||
if color ~= "_gray" then
|
||||
retval = retval ..
|
||||
"style[" .. field .. ":hovered;bgimg=" .. button_path .. "gui_button" .. color .. "_hovered" .. btn_size ..
|
||||
".png]" ..
|
||||
"style[" .. field .. ":pressed;bgimg=" .. button_path .. "gui_button" .. color .. "_pressed" .. btn_size ..
|
||||
".png]"
|
||||
end
|
||||
|
||||
return retval
|
||||
end
|
@ -60,13 +60,11 @@ local function buttonbar_formspec(self)
|
||||
end
|
||||
|
||||
if button.cdb then
|
||||
local tpath = defaulttexturedir_esc .. "gui" .. DIR_DELIM_esc
|
||||
formspec = formspec ..
|
||||
"style[" .. btn_name .. ";bgimg=" .. tpath ..
|
||||
"btn_download.png;bgimg_hovered=" .. tpath .. "btn_download_hover.png]" ..
|
||||
|
||||
("image_button[%f,%f;%f,%f;;%s;%s;true;%s]tooltip[%s;%s]"):format(
|
||||
btn_pos.x, btn_pos.y, self.btn_size, self.btn_size,
|
||||
btn_style(btn_name) ..
|
||||
("image_button[%f,%f;%f,%f;%s;%s;%s;true;%s]tooltip[%s;%s]"):format(
|
||||
btn_pos.x + 0.1, btn_pos.y + 0.1, self.btn_size - 0.2, self.btn_size - 0.2,
|
||||
defaulttexturedir_esc .. "gui" .. DIR_DELIM_esc .. "btn_download.png",
|
||||
btn_name, button.caption,
|
||||
borders, btn_name, button.tooltip)
|
||||
else
|
||||
|
@ -86,7 +86,8 @@ function messagebox(name, message)
|
||||
function()
|
||||
return ([[
|
||||
set_focus[ok;true]
|
||||
textarea[1,1;10,4;;;%s]
|
||||
style[msg;font_size=+1;content_offset=0]
|
||||
image_button[1,0;10,4;;msg;%s;false;false]
|
||||
%s
|
||||
button[5,4.5;2,0.8;ok;%s]
|
||||
]]):format(message, btn_style("ok"), fgettext("OK"))
|
||||
|
@ -68,20 +68,51 @@ local function add_tab(self,tab)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
local function make_side_pane_tab(y, tab_name, tooltip, selected)
|
||||
local tpath = defaulttexturedir_esc .. "gui" .. DIR_DELIM_esc
|
||||
local formspec = "style[" .. tab_name .. "_tab;bgimg=" ..
|
||||
tpath .. tab_name
|
||||
if selected then
|
||||
formspec = formspec .. "_menu_selected.png]"
|
||||
local function add_side_button(self, btn)
|
||||
if btn.pos then
|
||||
table.insert(self.side_buttons, btn.pos, btn)
|
||||
else
|
||||
formspec = formspec .. "_menu.png;bgimg_hovered=" ..
|
||||
tpath .. tab_name .. "_menu_hover.png]"
|
||||
self.side_buttons[#self.side_buttons + 1] = btn
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
local tpath = defaulttexturedir_esc .. "gui" .. DIR_DELIM_esc
|
||||
local function get_side_menu(self, selected_tab)
|
||||
if #self.side_buttons == 0 then return "" end
|
||||
|
||||
local side_menu_h = #self.side_buttons * 1.2 + 0.2
|
||||
local bg_y = 2.35 - side_menu_h / 2
|
||||
local fs = {
|
||||
"background9[12.13,", bg_y, ";0.9,", side_menu_h, ";", tpath,
|
||||
"side_menu.png;false;30]"
|
||||
}
|
||||
|
||||
for i, btn in ipairs(self.side_buttons) do
|
||||
local y = bg_y - 1.15 + 1.2 * i
|
||||
if i > 1 then
|
||||
fs[#fs + 1] = "image[12.15," .. y - 0.04 .. ";0.9,0.06;" ..
|
||||
tpath .. "side_menu_divider.png]"
|
||||
end
|
||||
|
||||
local btn_name = self.name .. "_side_" .. i
|
||||
fs[#fs + 1] = "style[" .. btn_name .. ";bgimg="
|
||||
|
||||
local texture_prefix = btn.texture_prefix or btn.tab_name
|
||||
if btn.tab_name and btn.tab_name == selected_tab then
|
||||
fs[#fs + 1] = btn.texture_selected or tpath .. texture_prefix .. "_menu_selected.png"
|
||||
else
|
||||
fs[#fs + 1] = btn.texture or tpath .. texture_prefix .. "_menu.png"
|
||||
fs[#fs + 1] = ";bgimg_hovered="
|
||||
fs[#fs + 1] = btn.texture_hover or tpath .. texture_prefix .. "_menu_hover.png]"
|
||||
end
|
||||
fs[#fs + 1] = "]"
|
||||
|
||||
fs[#fs + 1] = "image_button[12.1," .. y .. ";1,1.3;;" .. btn_name .. ";;true;false]"
|
||||
fs[#fs + 1] = "tooltip[" .. btn_name .. ";" .. btn.tooltip .. "]"
|
||||
end
|
||||
|
||||
return formspec ..
|
||||
"image_button[12.1," .. y .. ";1,1.5;;" .. tab_name .. "_tab;;true;false]" ..
|
||||
"tooltip[" .. tab_name .. "_tab;" .. tooltip .. "]"
|
||||
return table.concat(fs)
|
||||
end
|
||||
|
||||
local function get_formspec(self)
|
||||
@ -93,7 +124,6 @@ local function get_formspec(self)
|
||||
if self.parent == nil then
|
||||
local tsize = self.tablist[self.last_tab_index].tabsize or
|
||||
{width=self.width, height=self.height}
|
||||
local tpath = defaulttexturedir_esc .. "gui" .. DIR_DELIM_esc
|
||||
formspec = formspec ..
|
||||
string.format("size[%f,%f,%s]",tsize.width + 2,tsize.height + 1,
|
||||
dump(self.fixed_size)) ..
|
||||
@ -103,11 +133,7 @@ local function get_formspec(self)
|
||||
"background9[-0.2,-1.26;" .. tsize.width + 0.4 .. "," ..
|
||||
tsize.height + 1.75 .. ";" .. defaulttexturedir_esc ..
|
||||
"bg_common.png;false;40]" ..
|
||||
|
||||
"background9[12.13,1.05;0.9,2.6;" .. tpath .. "side_menu.png;false;30]" ..
|
||||
make_side_pane_tab(0.9, "settings", fgettext("Settings"), name == "settings") ..
|
||||
"image[12.15,2.26;0.9,0.06;" .. tpath .. "side_menu_divider.png]" ..
|
||||
make_side_pane_tab(2.3, "authors", fgettext("Credits"), name == "credits")
|
||||
get_side_menu(self, name)
|
||||
end
|
||||
|
||||
-- formspec = formspec .. self:tab_header()
|
||||
@ -143,14 +169,6 @@ local function handle_buttons(self,fields)
|
||||
return true
|
||||
end
|
||||
|
||||
if fields.authors_tab then
|
||||
set_tab_by_name(self, "credits")
|
||||
return true
|
||||
elseif fields.settings_tab then
|
||||
set_tab_by_name(self, "settings")
|
||||
return true
|
||||
end
|
||||
|
||||
if self.tablist[self.last_tab_index].button_handler ~= nil then
|
||||
return
|
||||
self.tablist[self.last_tab_index].button_handler(
|
||||
@ -282,7 +300,7 @@ local function switch_to_tab(self, index)
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
local function handle_tab_buttons(self,fields)
|
||||
local function handle_tab_buttons(self, fields)
|
||||
--save tab selection to config file
|
||||
--[[if fields[self.name] then
|
||||
local index = tonumber(fields[self.name])
|
||||
@ -294,9 +312,18 @@ local function handle_tab_buttons(self,fields)
|
||||
local name_prefix_len = #name_prefix
|
||||
for field in pairs(fields) do
|
||||
if field:sub(1, name_prefix_len) == name_prefix then
|
||||
local index = tonumber(field:sub(name_prefix_len + 1))
|
||||
if math.abs(self.last_tab_index) == index then return false end
|
||||
switch_to_tab(self, index)
|
||||
if field:sub(name_prefix_len + 1, name_prefix_len + 5) == "side_" then
|
||||
local btn = self.side_buttons[tonumber(field:sub(name_prefix_len + 6))]
|
||||
if btn.tab_name then
|
||||
set_tab_by_name(self, btn.tab_name)
|
||||
else
|
||||
btn.on_click(self)
|
||||
end
|
||||
else
|
||||
local index = tonumber(field:sub(name_prefix_len + 1))
|
||||
if math.abs(self.last_tab_index) == index then return false end
|
||||
switch_to_tab(self, index)
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
@ -364,6 +391,7 @@ local tabview_metatable = {
|
||||
function(self,handler) self.glb_evt_handler = handler end,
|
||||
set_fixed_size =
|
||||
function(self,state) self.fixed_size = state end,
|
||||
add_side_button = add_side_button,
|
||||
-- tab_header = tab_header,
|
||||
button_header = button_header,
|
||||
handle_tab_buttons = handle_tab_buttons
|
||||
@ -389,6 +417,7 @@ function tabview_create(name, size, tabheaderpos)
|
||||
self.current_tab = nil
|
||||
self.last_tab_index = 1
|
||||
self.tablist = {}
|
||||
self.side_buttons = {}
|
||||
|
||||
self.autosave_tab = false
|
||||
|
||||
|
@ -300,36 +300,3 @@ function get_language_list()
|
||||
|
||||
return languages, language_dropdown, lang_idx, language_name_list
|
||||
end
|
||||
--------------------------------------------------------------------------------
|
||||
local device_is_tablet = core.settings:get_bool("device_is_tablet", false)
|
||||
local screen_density = core.get_screen_info().density
|
||||
function is_high_dpi()
|
||||
if PLATFORM == "OSX" then
|
||||
return tonumber(core.settings:get("screen_dpi")) / 72 >= 2
|
||||
elseif PLATFORM == "iOS" and device_is_tablet then
|
||||
return screen_density >= 2
|
||||
else
|
||||
return screen_density >= 3
|
||||
end
|
||||
end
|
||||
--------------------------------------------------------------------------------
|
||||
function btn_style(field, color)
|
||||
local button_path = defaulttexturedir_esc .. "gui" .. DIR_DELIM_esc
|
||||
local btn_size = is_high_dpi() and ".x2" or ""
|
||||
color = (color and "_" .. color) or ""
|
||||
|
||||
local retval =
|
||||
"style[" .. field .. ";border=false]" ..
|
||||
"style[" .. field .. ";bgimg=" .. button_path .. "gui_button" .. color .. btn_size ..
|
||||
".png;bgimg_middle=" .. (is_high_dpi() and 48 or 32) .. ";padding=" .. (is_high_dpi() and -30 or -20) .. "]"
|
||||
|
||||
if color ~= "_gray" then
|
||||
retval = retval ..
|
||||
"style[" .. field .. ":hovered;bgimg=" .. button_path .. "gui_button" .. color .. "_hovered" .. btn_size ..
|
||||
".png]" ..
|
||||
"style[" .. field .. ":pressed;bgimg=" .. button_path .. "gui_button" .. color .. "_pressed" .. btn_size ..
|
||||
".png]"
|
||||
end
|
||||
|
||||
return retval
|
||||
end
|
||||
|
@ -712,13 +712,11 @@ function store.get_formspec(dlgdata)
|
||||
|
||||
"container[0.375,0.375]",
|
||||
"image[0,0;7.25,0.8;", defaulttexturedir_esc, "field_bg.png;32]",
|
||||
"style[search_string;border=false;bgcolor=transparent]",
|
||||
"field[0.1,0;7.15,0.8;search_string;;", esc(search_string), "]",
|
||||
"field_close_on_enter[search_string;false]",
|
||||
"set_focus[search_string;true]",
|
||||
btn_style("search"),
|
||||
"image_button[7.4,0;0.8,0.8;", defaulttexturedir_esc, "search.png;search;;true;false]",
|
||||
-- "image_button[8.125,0;0.8,0.8;", defaulttexturedir_esc, "clear.png;clear;;true;false]",
|
||||
"style[Dsearch_string;border=false;bgcolor=transparent]",
|
||||
"field[0.1,0;7.15,0.8;Dsearch_string;;", esc(search_string), "]",
|
||||
"set_focus[Dsearch_string;true]",
|
||||
btn_style("clear"),
|
||||
"image_button[7.4,0;0.8,0.8;", defaulttexturedir_esc, "clear.png;clear;;true;false]",
|
||||
"dropdown[8.35,0;3.5,0.8;type;", table.concat(filter_types_titles, ","), ";", filter_type, "]",
|
||||
"container_end[]",
|
||||
|
||||
@ -878,13 +876,6 @@ function store.get_formspec(dlgdata)
|
||||
end
|
||||
|
||||
function store.handle_submit(this, fields)
|
||||
if fields.search or fields.key_enter_field == "search_string" then
|
||||
search_string = fields.search_string:trim()
|
||||
cur_page = 1
|
||||
store.filter_packages(search_string)
|
||||
return true
|
||||
end
|
||||
|
||||
if fields.clear then
|
||||
search_string = ""
|
||||
cur_page = 1
|
||||
@ -1004,6 +995,14 @@ function store.handle_submit(this, fields)
|
||||
end
|
||||
end
|
||||
|
||||
-- Should be last
|
||||
if fields.Dsearch_string then
|
||||
search_string = fields.Dsearch_string:trim()
|
||||
cur_page = 1
|
||||
store.filter_packages(search_string)
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
|
@ -340,18 +340,26 @@ local function create_world_formspec(dialogdata)
|
||||
|
||||
-- Left side
|
||||
"container[0,0]"..
|
||||
"field[0.3,0.6;6,0.5;te_world_name;" ..
|
||||
|
||||
"real_coordinates[true]" ..
|
||||
"formspec_version[3]" ..
|
||||
"image[0.37,0.6;7.28,0.8;" .. defaulttexturedir_esc .. "field_bg.png;32]" ..
|
||||
"style[te_world_name;border=false;bgcolor=transparent]" ..
|
||||
"field[0.42,0.6;7.18,0.8;te_world_name;" ..
|
||||
fgettext("World name") ..
|
||||
":;" .. core.formspec_escape(worldname) .. "]" ..
|
||||
|
||||
"field[0.3,1.7;6,0.5;te_seed;" ..
|
||||
"image[0.37,1.9;7.28,0.8;" .. defaulttexturedir_esc .. "field_bg.png;32]" ..
|
||||
"style[te_seed;border=false;bgcolor=transparent]" ..
|
||||
"field[0.42,1.9;7.18,0.8;te_seed;" ..
|
||||
fgettext("Seed") ..
|
||||
":;".. current_seed .. "]" ..
|
||||
"real_coordinates[false]" ..
|
||||
|
||||
"label[0,2;" .. fgettext("Mapgen") .. ":]"..
|
||||
"dropdown[0,2.5;6.3;dd_mapgen;" .. mglist .. ";" .. selindex .. "]" ..
|
||||
"label[0,2.1;" .. fgettext("Mapgen") .. ":]"..
|
||||
"dropdown[0,2.5;6.27;dd_mapgen;" .. mglist .. ";" .. selindex .. "]" ..
|
||||
|
||||
"label[0,3.35;" .. fgettext("Game") .. ":]"..
|
||||
"label[0,3.45;" .. fgettext("Game") .. ":]"..
|
||||
"textlist[0,3.85;5.8,"..gamelist_height..";games;" ..
|
||||
pkgmgr.gamelist() .. ";" .. _gameidx .. ";false]" ..
|
||||
"container[0,4.5]" ..
|
||||
|
@ -15,59 +15,28 @@
|
||||
--with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
local function create_world_formspec()
|
||||
local mapgens = core.get_mapgen_names()
|
||||
local mapgens = {"v7p", "valleys", "flat", "superflat"}
|
||||
local mapgen_names = {"Default", "Valleys", "Flat", "Superflat"}
|
||||
|
||||
local function create_world_formspec()
|
||||
local current_seed = core.settings:get("fixed_map_seed") or ""
|
||||
local current_mg = core.settings:get("mg_name")
|
||||
local gameid = core.settings:get("menu_last_game")
|
||||
|
||||
local gameidx = 0
|
||||
if gameid ~= nil then
|
||||
local _
|
||||
_, gameidx = pkgmgr.find_by_gameid(gameid)
|
||||
local selindex = math.max(table.indexof(mapgens, current_mg), 1)
|
||||
local mglist = table.concat(mapgen_names, ",")
|
||||
|
||||
if gameidx == nil then
|
||||
gameidx = 0
|
||||
end
|
||||
end
|
||||
|
||||
local game_by_gameidx = core.get_game(gameidx)
|
||||
if game_by_gameidx ~= nil then
|
||||
local allowed_mapgens = {"v7p", "flat", "valleys"}
|
||||
for i = #mapgens, 1, -1 do
|
||||
if table.indexof(allowed_mapgens, mapgens[i]) == -1 then
|
||||
table.remove(mapgens, i)
|
||||
end
|
||||
end
|
||||
|
||||
mapgens[#mapgens + 1] = "superflat"
|
||||
end
|
||||
|
||||
local mglist = ""
|
||||
local selindex = 1
|
||||
local i = 1
|
||||
for _, v in pairs(mapgens) do
|
||||
if current_mg == v then
|
||||
selindex = i
|
||||
end
|
||||
i = i + 1
|
||||
mglist = mglist .. v .. ","
|
||||
end
|
||||
mglist = mglist:sub(1, -2)
|
||||
|
||||
return "real_coordinates[true]" .. "formspec_version[3]" ..
|
||||
return "real_coordinates[true]formspec_version[3]" ..
|
||||
|
||||
"image[3.5,1.1;8.5,0.8;" .. defaulttexturedir_esc .. "field_bg.png;32]" ..
|
||||
"style[te_world_name;border=false;bgcolor=transparent]" ..
|
||||
"field[3.55,1.1;8.4,0.8;te_world_name;" .. fgettext("World name") .. ":" .. ";]" ..
|
||||
"field[3.55,1.1;8.4,0.8;te_world_name;" .. fgettext("World name") .. ":;]" ..
|
||||
|
||||
"image[3.5,2.5;8.5,0.8;" .. defaulttexturedir_esc .. "field_bg.png;32]" ..
|
||||
"style[te_seed;border=false;bgcolor=transparent]" ..
|
||||
"field[3.55,2.5;8.4,0.8;te_seed;" .. fgettext("Seed") .. ":" .. ";".. current_seed .. "]" ..
|
||||
"field[3.55,2.5;8.4,0.8;te_seed;" .. fgettext("Seed") .. ":;".. current_seed .. "]" ..
|
||||
|
||||
"label[3.5,3.7;" .. fgettext("Mapgen") .. ":" .. "]"..
|
||||
"dropdown[3.5,3.9;8.5,0.8;dd_mapgen;" .. mglist .. ";" .. selindex .. "]" ..
|
||||
"label[3.5,3.7;" .. fgettext("Mapgen") .. ":]"..
|
||||
"dropdown[3.5,3.9;8.5,0.8;dd_mapgen;" .. mglist .. ";" .. selindex .. ";true]" ..
|
||||
|
||||
btn_style("world_create_confirm", "green") ..
|
||||
"button[4.1,5.3;3.5,0.8;world_create_confirm;" .. fgettext("Create") .. "]" ..
|
||||
@ -114,17 +83,18 @@ local function create_world_buttonhandler(this, fields)
|
||||
local message
|
||||
if not menudata.worldlist:uid_exists_raw(worldname) then
|
||||
local old_mg_flags
|
||||
if fields["dd_mapgen"] == "superflat" then
|
||||
local mapgen = mapgens[tonumber(fields["dd_mapgen"])]
|
||||
if mapgen == "superflat" then
|
||||
core.settings:set("mg_name", "flat")
|
||||
old_mg_flags = core.settings:get("mg_flags")
|
||||
core.settings:set("mg_flags", "nocaves,nodungeons,nodecorations")
|
||||
else
|
||||
core.settings:set("mg_name", fields["dd_mapgen"])
|
||||
core.settings:set("mg_name", mapgen)
|
||||
end
|
||||
message = core.create_world(worldname,gameindex)
|
||||
|
||||
-- Restore the old mg_flags setting if creating a superflat world
|
||||
if fields["dd_mapgen"] == "superflat" then
|
||||
if mapgen == "superflat" then
|
||||
core.settings:set("mg_name", "superflat")
|
||||
if old_mg_flags then
|
||||
core.settings:set("mg_flags", old_mg_flags)
|
||||
@ -141,7 +111,6 @@ local function create_world_buttonhandler(this, fields)
|
||||
else
|
||||
if this.data.update_worldlist_filter then
|
||||
menudata.worldlist:set_filtercriteria(pkgmgr.games[gameindex].id)
|
||||
mm_texture.update("singleplayer", pkgmgr.games[gameindex].id)
|
||||
end
|
||||
menudata.worldlist:refresh()
|
||||
core.settings:set("mainmenu_last_selected_world",
|
||||
|
@ -30,6 +30,7 @@ defaulttexturedir_esc = core.formspec_escape(defaulttexturedir)
|
||||
DIR_DELIM_esc = core.formspec_escape(DIR_DELIM) -- for use in formspecs only
|
||||
|
||||
dofile(basepath .. "common" .. DIR_DELIM .. "filterlist.lua")
|
||||
dofile(basepath .. "common" .. DIR_DELIM .. "btn_style.lua")
|
||||
dofile(basepath .. "fstk" .. DIR_DELIM .. "buttonbar.lua")
|
||||
dofile(basepath .. "fstk" .. DIR_DELIM .. "dialog.lua")
|
||||
dofile(basepath .. "fstk" .. DIR_DELIM .. "tabview.lua")
|
||||
@ -151,6 +152,17 @@ function menudata.init_tabs()
|
||||
end
|
||||
end
|
||||
|
||||
tv_main:add_side_button({
|
||||
tooltip = fgettext("Settings"),
|
||||
tab_name = "settings",
|
||||
})
|
||||
|
||||
tv_main:add_side_button({
|
||||
tooltip = fgettext("Credits"),
|
||||
tab_name = "credits",
|
||||
texture_prefix = "authors"
|
||||
})
|
||||
|
||||
ui.set_default("maintab")
|
||||
|
||||
check_new_version()
|
||||
|
@ -60,7 +60,7 @@ local function get_formspec(tabview, name, tabdata)
|
||||
|
||||
local retval =
|
||||
"label[-0.05,-0.25;".. fgettext("Installed Packages:") .. "]" ..
|
||||
"background9[0,0.23;5.3,4.46;" .. defaulttexturedir_esc .. "worldlist_bg.png" .. ";false;40]" ..
|
||||
"background9[0,0.23;5.3,4.46;" .. defaulttexturedir_esc .. "worldlist_bg.png;false;40]" ..
|
||||
"tablecolumns[color;tree;text]" ..
|
||||
"tableoptions[background=#0000;border=false]" ..
|
||||
"table[0,0.25;5.1,4.3;pkglist;" ..
|
||||
@ -99,7 +99,7 @@ local function get_formspec(tabview, name, tabdata)
|
||||
retval = retval ..
|
||||
"image[5.5,0;3,2;" .. core.formspec_escape(modscreenshot) .. "]" ..
|
||||
"label[8.25,0.6;" .. core.formspec_escape(selected_pkg.name) .. "]" ..
|
||||
"background9[5.6,2.3;6.2,2.4;" .. defaulttexturedir_esc .. "desc_bg.png" .. ";false;32]"
|
||||
"background9[5.6,2.3;6.2,2.4;" .. defaulttexturedir_esc .. "desc_bg.png;false;32]"
|
||||
|
||||
if selected_pkg.type == "mod" then
|
||||
if selected_pkg.is_modpack then
|
||||
@ -138,7 +138,7 @@ local function get_formspec(tabview, name, tabdata)
|
||||
fgettext("Disable Texture Pack") .. ";true;false]"
|
||||
else
|
||||
retval = retval ..
|
||||
btn_style("btn_mod_mgr_use_txp") ..
|
||||
btn_style("btn_mod_mgr_use_txp", "green") ..
|
||||
"image_button[8.65,4.8;3.25,0.9;;btn_mod_mgr_use_txp;" ..
|
||||
fgettext("Use Texture Pack") .. ";true;false]"
|
||||
end
|
||||
@ -150,7 +150,7 @@ local function get_formspec(tabview, name, tabdata)
|
||||
|
||||
if core.may_modify_path(selected_pkg.path) then
|
||||
retval = retval ..
|
||||
btn_style("btn_mod_mgr_delete_mod") ..
|
||||
btn_style("btn_mod_mgr_delete_mod", "red") ..
|
||||
"image_button[5.5,4.8;3.25,0.9;;btn_mod_mgr_delete_mod;" ..
|
||||
fgettext("Uninstall Package") .. ";true;false]"
|
||||
end
|
||||
|
@ -131,13 +131,13 @@ return {
|
||||
"image_button[9.5,0.6;2.6,0.85;;privacy;Privacy Policy;true;false]" ..
|
||||
|
||||
"background9[0,1.5;12,4.2;" .. defaulttexturedir_esc ..
|
||||
"worldlist_bg.png" .. ";false;40]" ..
|
||||
"worldlist_bg.png;false;40]" ..
|
||||
"tablecolumns[color;text]" ..
|
||||
"tableoptions[background=#0000;highlight=#00000000;border=false]" ..
|
||||
"table[0,1.5;11.75,4.05;list_credits;" ..
|
||||
"#FFFF00," .. fgettext("Core Developers") .. " (MultiCraft)" .. ",," ..
|
||||
"#FFFF00," .. fgettext("Core Developers") .. " (MultiCraft),," ..
|
||||
buildCreditList(multicraft_developers) .. ",,," ..
|
||||
"#FFFF00," .. fgettext("Core Developers") .. " (Minetest Engine)" .. ",," ..
|
||||
"#FFFF00," .. fgettext("Core Developers") .. " (Minetest Engine),," ..
|
||||
buildCreditList(core_developers) .. ",,," ..
|
||||
"#FFFF00," .. fgettext("Active Contributors") .. ",," ..
|
||||
buildCreditList(active_contributors) .. ",,," ..
|
||||
|
@ -151,7 +151,7 @@ local function get_formspec(_, _, tab_data)
|
||||
"image_button[7.2,3.09;4,0.83;" .. defaulttexturedir_esc .. creative_checkbox ..
|
||||
";cb_creative_mode;;true;false]" ..
|
||||
|
||||
"background9[0,0;6.5,4.8;" .. defaulttexturedir_esc .. "worldlist_bg.png" .. ";false;40]" ..
|
||||
"background9[0,0;6.5,4.8;" .. defaulttexturedir_esc .. "worldlist_bg.png;false;40]" ..
|
||||
"tableoptions[background=#0000;border=false]" ..
|
||||
"table[0,0;6.28,4.64;sp_worlds;" .. menu_render_worldlist() .. ";" .. index .. "]"
|
||||
|
||||
@ -306,7 +306,8 @@ local function main_button_handler(this, fields, name, tab_data)
|
||||
world.name ~= nil and
|
||||
world.name ~= "" then
|
||||
local index = menudata.worldlist:get_raw_index(selected)
|
||||
local delete_world_dlg = create_delete_world_dlg(world.name, index, world.gameid)
|
||||
local game = pkgmgr.find_by_gameid(world.gameid)
|
||||
local delete_world_dlg = create_delete_world_dlg(world.name, index, game.name)
|
||||
delete_world_dlg:set_parent(this)
|
||||
this:hide()
|
||||
delete_world_dlg:show()
|
||||
@ -379,6 +380,8 @@ local function on_change(type, old_tab, new_tab)
|
||||
if game and game.id ~= "default" then
|
||||
menudata.worldlist:set_filtercriteria(game.id)
|
||||
mm_texture.update("singleplayer",game)
|
||||
else
|
||||
mm_texture.reset()
|
||||
end
|
||||
|
||||
core.set_topleft_text("Powered by Minetest Engine")
|
||||
|
@ -111,7 +111,7 @@ local function get_formspec(this)
|
||||
"image_button[7.2,3.09;4,0.83;" .. defaulttexturedir_esc .. creative_checkbox ..
|
||||
";cb_creative_mode;;true;false]" ..
|
||||
|
||||
"background9[0,0;6.5,4.8;" .. defaulttexturedir_esc .. "worldlist_bg.png" .. ";false;40]" ..
|
||||
"background9[0,0;6.5,4.8;" .. defaulttexturedir_esc .. "worldlist_bg.png;false;40]" ..
|
||||
"tableoptions[background=#0000;border=false]" ..
|
||||
"table[0,0;6.28,4.64;sp_worlds;" .. menu_render_worldlist() .. ";" .. index .. "]" ..
|
||||
|
||||
|
@ -46,36 +46,36 @@ local function get_formspec(tabview, name, tabdata)
|
||||
local retval =
|
||||
-- Search
|
||||
"formspec_version[3]" ..
|
||||
"image[-0.1,4.93;7,0.81;" .. defaulttexturedir_esc .. "field_bg.png;32]" ..
|
||||
"image[-0.11,4.93;7.02,0.81;" .. defaulttexturedir_esc .. "field_bg.png;32]" ..
|
||||
"style[Dte_search;border=false;bgcolor=transparent]" ..
|
||||
"field[0.25,5.25;5.7,0.83;Dte_search;;" .. esc(tabdata.search_for) .. "]" ..
|
||||
btn_style("btn_mp_search") ..
|
||||
"image_button[5.6,4.93;0.83,0.83;" .. defaulttexturedir_esc ..
|
||||
"search.png;btn_mp_search;;true;false]" ..
|
||||
btn_style("btn_mp_clear") ..
|
||||
"image_button[5.62,4.93;0.83,0.83;" .. defaulttexturedir_esc ..
|
||||
"clear.png;btn_mp_clear;;true;false]" ..
|
||||
btn_style("btn_mp_refresh") ..
|
||||
"image_button[6.35,4.93;0.83,0.83;" .. defaulttexturedir_esc ..
|
||||
"image_button[6.37,4.93;0.83,0.83;" .. defaulttexturedir_esc ..
|
||||
"refresh.png;btn_mp_refresh;;true;false]" ..
|
||||
|
||||
-- Address / Port
|
||||
"image[7.1,0.09;6,0.8;" .. defaulttexturedir_esc .. "field_bg.png;32]" ..
|
||||
"style[te_address;border=false;bgcolor=transparent]" ..
|
||||
"field[7.45,0.55;4.9,0.5;te_address;" .. fgettext("Address / Port") .. ":" .. ";" ..
|
||||
"field[7.45,0.55;4.9,0.5;te_address;" .. fgettext("Address / Port") .. ":;" ..
|
||||
esc(address) .. "]" ..
|
||||
|
||||
-- Name
|
||||
"image[7.1,1.25;2.95,0.8;" .. defaulttexturedir_esc .. "field_bg.png;32]" ..
|
||||
"style[te_name;border=false;bgcolor=transparent]" ..
|
||||
"field[7.45,1.7;2.45,0.5;te_name;" .. fgettext("Name") .. ":" .. ";" ..
|
||||
"field[7.45,1.7;2.45,0.5;te_name;" .. fgettext("Name") .. ":;" ..
|
||||
esc(core.settings:get("name")) .. "]" ..
|
||||
|
||||
-- Password
|
||||
"image[9.55,1.25;2.95,0.8;" .. defaulttexturedir_esc .. "field_bg.png;32]" ..
|
||||
"style[te_pwd;border=false;bgcolor=transparent]" ..
|
||||
"pwdfield[9.9,1.7;2.45,0.5;te_pwd;" .. fgettext("Password") .. ":" .. ";" ..
|
||||
"pwdfield[9.9,1.7;2.45,0.5;te_pwd;" .. fgettext("Password") .. ":;" ..
|
||||
esc(password_tmp) .. "]" ..
|
||||
|
||||
-- Description Background
|
||||
"background9[7.2,2.2;4.8,2.65;" .. defaulttexturedir_esc .. "desc_bg.png" .. ";false;32]" ..
|
||||
"background9[7.2,2.2;4.8,2.65;" .. defaulttexturedir_esc .. "desc_bg.png;false;32]" ..
|
||||
|
||||
-- Connect
|
||||
btn_style("btn_mp_connect") ..
|
||||
@ -102,7 +102,7 @@ local function get_formspec(tabview, name, tabdata)
|
||||
--favorites
|
||||
retval = retval ..
|
||||
"background9[0,-0.1;7.1,5;" ..
|
||||
defaulttexturedir_esc .. "worldlist_bg.png" .. ";false;40]" ..
|
||||
defaulttexturedir_esc .. "worldlist_bg.png;false;40]" ..
|
||||
"tableoptions[background=#0000;border=false]" ..
|
||||
"tablecolumns[" ..
|
||||
image_column(fgettext("Favorite")) .. ",align=center;" ..
|
||||
@ -289,12 +289,18 @@ local function main_button_handler(tabview, fields, name, tabdata)
|
||||
return true
|
||||
end
|
||||
|
||||
if fields.btn_mp_clear then
|
||||
tabdata.search_for = ""
|
||||
menudata.search_result = nil
|
||||
return true
|
||||
end
|
||||
|
||||
if fields.btn_mp_refresh then
|
||||
serverlistmgr.sync()
|
||||
return true
|
||||
end
|
||||
|
||||
if (fields.Dte_search or fields.btn_mp_search) and not
|
||||
if fields.Dte_search and not
|
||||
(fields.btn_mp_connect or fields.key_enter) then
|
||||
tabdata.selected = 1
|
||||
local input = lower(fields.Dte_search or "")
|
||||
|
@ -124,7 +124,7 @@ end
|
||||
|
||||
local function formspec(tabview, name, tabdata)
|
||||
local tab_string =
|
||||
"box[0,0;3.75,4.5;#999999]" ..
|
||||
"background9[0.1,0.1;3.75,4.5;" .. defaulttexturedir_esc .. "desc_bg.png;false;32]" ..
|
||||
"checkbox[0.25,0;cb_smooth_lighting;" .. fgettext("Smooth Lighting") .. ";"
|
||||
.. dump(core.settings:get_bool("smooth_lighting")) .. "]" ..
|
||||
"checkbox[0.25,0.5;cb_particles;" .. fgettext("Particles") .. ";"
|
||||
@ -139,7 +139,7 @@ local function formspec(tabview, name, tabdata)
|
||||
.. getSettingIndex.NodeHighlighting() .. "]" ..
|
||||
"dropdown[0.25,3.6;3.5;dd_leaves_style;" .. dd_options.leaves[1] .. ";"
|
||||
.. getSettingIndex.Leaves() .. "]" ..
|
||||
"box[4,0;3.75,4.5;#999999]" ..
|
||||
"background9[4.1,0.1;3.75,4.5;" .. defaulttexturedir_esc .. "desc_bg.png;false;32]" ..
|
||||
"label[4.25,0.1;" .. fgettext("Texturing:") .. "]" ..
|
||||
"dropdown[4.25,0.55;3.5;dd_filters;" .. dd_options.filters[1] .. ";"
|
||||
.. getSettingIndex.Filter() .. "]" ..
|
||||
@ -151,7 +151,7 @@ local function formspec(tabview, name, tabdata)
|
||||
"label[4.25,3.45;" .. fgettext("Screen:") .. "]" ..
|
||||
"checkbox[4.25,3.6;cb_autosave_screensize;" .. fgettext("Autosave Screen Size") .. ";"
|
||||
.. dump(core.settings:get_bool("autosave_screensize")) .. "]" ..
|
||||
"box[8,0;3.75,4.5;#999999]"
|
||||
"background9[8.1,0.1;3.75,4.5;" .. defaulttexturedir_esc .. "desc_bg.png;false;32]"
|
||||
|
||||
local video_driver = core.settings:get("video_driver")
|
||||
local shaders_enabled = core.settings:get_bool("enable_shaders")
|
||||
|
@ -90,67 +90,67 @@ local languages, language_dropdown, lang_idx = get_language_list()
|
||||
local function formspec(tabview, name, tabdata)
|
||||
local fps = tonumber(core.settings:get("fps_max"))
|
||||
local range = tonumber(core.settings:get("viewing_range"))
|
||||
local sensitivity = tonumber(core.settings:get("touch_sensitivity")) * 2000
|
||||
local touchtarget = core.settings:get_bool("touchtarget") or false
|
||||
local sensitivity = tonumber(core.settings:get("touch_sensitivity") or 0) * 2000
|
||||
local touchtarget = core.settings:get_bool("touchtarget", false)
|
||||
local fancy_leaves = core.settings:get("leaves_style") == "fancy"
|
||||
local arm_inertia = core.settings:get_bool("arm_inertia") or false
|
||||
local arm_inertia = core.settings:get_bool("arm_inertia", false)
|
||||
local sound = tonumber(core.settings:get("sound_volume")) ~= 0 and true or false
|
||||
|
||||
local tab_string =
|
||||
"box[-0.1,0;3.85,5.5;#999999]" ..
|
||||
"checkbox[0.15,-0.05;cb_smooth_lighting;" .. fgettext("Smooth Lighting") .. ";"
|
||||
"background9[0,0.05;3.85,5.5;" .. defaulttexturedir_esc .. "desc_bg.png;false;32]" ..
|
||||
"checkbox[0.15,-0.1;cb_smooth_lighting;" .. fgettext("Smooth Lighting") .. ";"
|
||||
.. dump(core.settings:get_bool("smooth_lighting")) .. "]" ..
|
||||
"checkbox[0.15,0.5;cb_particles;" .. fgettext("Particles") .. ";"
|
||||
"checkbox[0.15,0.45;cb_particles;" .. fgettext("Particles") .. ";"
|
||||
.. dump(core.settings:get_bool("enable_particles")) .. "]" ..
|
||||
"checkbox[0.15,1.1;cb_3d_clouds;" .. fgettext("3D Clouds") .. ";"
|
||||
"checkbox[0.15,1.05;cb_3d_clouds;" .. fgettext("3D Clouds") .. ";"
|
||||
.. dump(core.settings:get_bool("enable_3d_clouds")) .. "]" ..
|
||||
--[["checkbox[0.15,1.7;cb_opaque_water;" .. fgettext("Opaque Water") .. ";"
|
||||
--[["checkbox[0.15,1.65;cb_opaque_water;" .. fgettext("Opaque Water") .. ";"
|
||||
.. dump(core.settings:get_bool("opaque_water")) .. "]" ..
|
||||
"checkbox[0.15,2.0;cb_connected_glass;" .. fgettext("Connected Glass") .. ";"
|
||||
"checkbox[0.15,1.95;cb_connected_glass;" .. fgettext("Connected Glass") .. ";"
|
||||
.. dump(core.settings:get_bool("connected_glass")) .. "]" ..]]
|
||||
"checkbox[0.15,1.7;cb_fog;" .. fgettext("Fog") .. ";"
|
||||
"checkbox[0.15,1.65;cb_fog;" .. fgettext("Fog") .. ";"
|
||||
.. dump(core.settings:get_bool("enable_fog")) .. "]" ..
|
||||
"checkbox[0.15,2.3;cb_inventory_items_animations;" .. fgettext("Inv. animations") .. ";"
|
||||
"checkbox[0.15,2.25;cb_inventory_items_animations;" .. fgettext("Inv. animations") .. ";"
|
||||
.. dump(core.settings:get_bool("inventory_items_animations")) .. "]" ..
|
||||
"checkbox[0.15,2.9;cb_fancy_leaves;" .. fgettext("Fancy Leaves") .. ";"
|
||||
"checkbox[0.15,2.85;cb_fancy_leaves;" .. fgettext("Fancy Leaves") .. ";"
|
||||
.. dump(fancy_leaves) .. "]" ..
|
||||
"checkbox[0.15,3.5;cb_touchtarget;" .. fgettext("Touchtarget") .. ";"
|
||||
.. dump(touchtarget) .. "]" ..
|
||||
"checkbox[0.15,4.1;cb_arm_inertia;" .. fgettext("Arm inertia") .. ";"
|
||||
"checkbox[0.15,3.45;cb_crosshair;" .. fgettext("Crosshair") .. ";"
|
||||
.. dump(not touchtarget) .. "]" ..
|
||||
"checkbox[0.15,4.05;cb_arm_inertia;" .. fgettext("Arm inertia") .. ";"
|
||||
.. dump(arm_inertia) .. "]" ..
|
||||
"checkbox[0.15,4.7;cb_sound;" .. fgettext("Sound") .. ";"
|
||||
"checkbox[0.15,4.65;cb_sound;" .. fgettext("Sound") .. ";"
|
||||
.. dump(sound) .. "]" ..
|
||||
|
||||
"box[4,0;3.75,5.5;#999999]" ..
|
||||
"background9[4.1,0.05;3.75,5.5;" .. defaulttexturedir_esc .. "desc_bg.png;false;32]" ..
|
||||
|
||||
"label[4.25,0.15;" .. fgettext("Maximum FPS") .. ":]" ..
|
||||
"dropdown[4.25,0.6;3.5;dd_fps_max;30,35,45,60;" ..
|
||||
tonumber(fps <= 30 and 1 or fps == 35 and 2 or fps == 45 and 3 or 4) .. "]" ..
|
||||
"label[4.25,0.1;" .. fgettext("Maximum FPS") .. ":]" ..
|
||||
"dropdown[4.25,0.55;3.5;dd_fps_max;30,35,45,60,90;" ..
|
||||
(fps <= 30 and 1 or fps == 35 and 2 or fps == 45 and 3 or fps == 60 and 4 or 5) .. "]" ..
|
||||
|
||||
"label[4.25,1.5;" .. fgettext("Viewing range") .. ":]" ..
|
||||
"dropdown[4.25,1.95;3.5;dd_viewing_range;30,40,60,80,100,125,150,175,200;" ..
|
||||
tonumber(range <= 30 and 1 or range == 40 and 2 or range == 60 and 3 or
|
||||
(range <= 30 and 1 or range == 40 and 2 or range == 60 and 3 or
|
||||
range == 80 and 4 or range == 100 and 5 or range == 125 and 6 or
|
||||
range == 150 and 7 or range == 175 and 8 or 9) .. "]" ..
|
||||
|
||||
"label[4.25,2.85;" .. fgettext("Node highlighting") .. ":]" ..
|
||||
"dropdown[4.25,3.3;3.5;dd_node_highlighting;" .. dd_options.node_highlighting[1] .. ";"
|
||||
"label[4.25,2.9;" .. fgettext("Node highlighting") .. ":]" ..
|
||||
"dropdown[4.25,3.35;3.5;dd_node_highlighting;" .. dd_options.node_highlighting[1] .. ";"
|
||||
.. getSettingIndex.NodeHighlighting() .. "]" ..
|
||||
|
||||
"label[4.25,4.2;" .. fgettext("Mouse sensitivity") .. ":]" ..
|
||||
"scrollbar[4.25,4.65;3.23,0.5;horizontal;sb_sensitivity;" .. sensitivity .. "]" ..
|
||||
"label[4.25,4.3;" .. fgettext("Mouse sensitivity") .. ":]" ..
|
||||
"scrollbar[4.25,4.75;3.23,0.5;horizontal;sb_sensitivity;" .. sensitivity .. "]" ..
|
||||
|
||||
"box[8,0;3.85,3.25;#999999]"
|
||||
"background9[8.1,0.05;3.85,3.15;" .. defaulttexturedir_esc .. "desc_bg.png;false;32]"
|
||||
|
||||
local video_driver = core.settings:get("video_driver")
|
||||
local shaders_enabled = video_driver == "opengl" or video_driver == "ogles2"
|
||||
core.settings:set_bool("enable_shaders", shaders_enabled)
|
||||
if shaders_enabled then
|
||||
tab_string = tab_string ..
|
||||
"label[8.25,0.15;" .. fgettext("Shaders") .. "]"
|
||||
"label[8.25,0.1;" .. fgettext("Shaders") .. "]"
|
||||
else
|
||||
tab_string = tab_string ..
|
||||
"label[8.25,0.15;" .. core.colorize("#888888",
|
||||
"label[8.25,0.1;" .. core.colorize("#888888",
|
||||
fgettext("Shaders (unavailable)")) .. "]"
|
||||
end
|
||||
|
||||
@ -166,32 +166,33 @@ local function formspec(tabview, name, tabdata)
|
||||
|
||||
if shaders_enabled then
|
||||
tab_string = tab_string ..
|
||||
"checkbox[8.25,0.55;cb_tonemapping;" .. fgettext("Tone Mapping") .. ";"
|
||||
"checkbox[8.25,0.45;cb_tonemapping;" .. fgettext("Tone Mapping") .. ";"
|
||||
.. dump(core.settings:get_bool("tone_mapping")) .. "]" ..
|
||||
"checkbox[8.25,1.15;cb_waving_water;" .. fgettext("Waving liquids") .. ";"
|
||||
"checkbox[8.25,1.05;cb_waving_water;" .. fgettext("Waving liquids") .. ";"
|
||||
.. dump(core.settings:get_bool("enable_waving_water")) .. "]" ..
|
||||
"checkbox[8.25,1.75;cb_waving_leaves;" .. fgettext("Waving leaves") .. ";"
|
||||
"checkbox[8.25,1.65;cb_waving_leaves;" .. fgettext("Waving leaves") .. ";"
|
||||
.. dump(core.settings:get_bool("enable_waving_leaves")) .. "]" ..
|
||||
"checkbox[8.25,2.35;cb_waving_plants;" .. fgettext("Waving plants") .. ";"
|
||||
"checkbox[8.25,2.25;cb_waving_plants;" .. fgettext("Waving plants") .. ";"
|
||||
.. dump(core.settings:get_bool("enable_waving_plants")) .. "]"
|
||||
else
|
||||
tab_string = tab_string ..
|
||||
"label[8.38,0.75;" .. core.colorize("#888888",
|
||||
"label[8.38,0.65;" .. core.colorize("#888888",
|
||||
fgettext("Tone Mapping")) .. "]" ..
|
||||
"label[8.38,1.35;" .. core.colorize("#888888",
|
||||
"label[8.38,1.25;" .. core.colorize("#888888",
|
||||
fgettext("Waving Liquids")) .. "]" ..
|
||||
"label[8.38,1.95;" .. core.colorize("#888888",
|
||||
"label[8.38,1.85;" .. core.colorize("#888888",
|
||||
fgettext("Waving Leaves")) .. "]" ..
|
||||
"label[8.38,2.55;" .. core.colorize("#888888",
|
||||
"label[8.38,2.45;" .. core.colorize("#888888",
|
||||
fgettext("Waving Plants")) .. "]"
|
||||
end
|
||||
|
||||
tab_string = tab_string ..
|
||||
"label[8.25,3.35;" .. fgettext("Language") .. ":]" ..
|
||||
"dropdown[8.25,3.8;3.58;dd_language;" .. language_dropdown .. ";" ..
|
||||
"background9[8.1,3.35;3.85,2.2;" .. defaulttexturedir_esc .. "desc_bg.png;false;32]" ..
|
||||
"label[8.25,3.3;" .. fgettext("Language") .. ":]" ..
|
||||
"dropdown[8.25,3.75;3.58;dd_language;" .. language_dropdown .. ";" ..
|
||||
lang_idx .. ";true]" ..
|
||||
btn_style("btn_reset") ..
|
||||
"button[8.25,4.81;3.5,0.8;btn_reset;" .. fgettext("Reset all settings") .. "]"
|
||||
"button[8.25,4.6;3.5,0.8;btn_reset;" .. fgettext("Reset all settings") .. "]"
|
||||
|
||||
return tab_string
|
||||
end
|
||||
@ -234,11 +235,11 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
|
||||
return true
|
||||
end
|
||||
if fields["cb_fancy_leaves"] then
|
||||
core.settings:set("leaves_style", fields["cb_fancy_leaves"] and "fancy" or "opaque")
|
||||
core.settings:set("leaves_style", (minetest.is_yes(fields["cb_fancy_leaves"]) and "fancy" or "opaque"))
|
||||
return true
|
||||
end
|
||||
if fields["cb_touchtarget"] then
|
||||
core.settings:set("touchtarget", fields["cb_touchtarget"])
|
||||
if fields["cb_crosshair"] then
|
||||
core.settings:set_bool("touchtarget", not minetest.is_yes(fields["cb_crosshair"]))
|
||||
return true
|
||||
end
|
||||
if fields["cb_arm_inertia"] then
|
||||
@ -249,10 +250,6 @@ local function handle_settings_buttons(this, fields, tabname, tabdata)
|
||||
core.settings:set("sound_volume", (minetest.is_yes(fields["cb_sound"]) and "1.0") or "0.0")
|
||||
return true
|
||||
end
|
||||
if fields["cb_shaders"] then
|
||||
core.settings:set("enable_shaders", fields["cb_shaders"])
|
||||
return true
|
||||
end
|
||||
if fields["cb_tonemapping"] then
|
||||
core.settings:set("tone_mapping", fields["cb_tonemapping"])
|
||||
return true
|
||||
|
@ -891,34 +891,6 @@ int ModApiMainMenu::l_gettext(lua_State *L)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
int ModApiMainMenu::l_get_screen_info(lua_State *L)
|
||||
{
|
||||
lua_newtable(L);
|
||||
int top = lua_gettop(L);
|
||||
lua_pushstring(L,"density");
|
||||
lua_pushnumber(L,RenderingEngine::getDisplayDensity());
|
||||
lua_settable(L, top);
|
||||
|
||||
lua_pushstring(L,"display_width");
|
||||
lua_pushnumber(L,RenderingEngine::getDisplaySize().X);
|
||||
lua_settable(L, top);
|
||||
|
||||
lua_pushstring(L,"display_height");
|
||||
lua_pushnumber(L,RenderingEngine::getDisplaySize().Y);
|
||||
lua_settable(L, top);
|
||||
|
||||
const v2u32 &window_size = RenderingEngine::get_instance()->getWindowSize();
|
||||
lua_pushstring(L,"window_width");
|
||||
lua_pushnumber(L, window_size.X);
|
||||
lua_settable(L, top);
|
||||
|
||||
lua_pushstring(L,"window_height");
|
||||
lua_pushnumber(L, window_size.Y);
|
||||
lua_settable(L, top);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
int ModApiMainMenu::l_get_min_supp_proto(lua_State *L)
|
||||
{
|
||||
@ -1035,7 +1007,6 @@ void ModApiMainMenu::Initialize(lua_State *L, int top)
|
||||
API_FCT(gettext);
|
||||
API_FCT(get_video_drivers);
|
||||
API_FCT(get_video_modes);
|
||||
API_FCT(get_screen_info);
|
||||
API_FCT(get_min_supp_proto);
|
||||
API_FCT(get_max_supp_proto);
|
||||
API_FCT(open_url);
|
||||
|
@ -102,8 +102,6 @@ private:
|
||||
|
||||
static int l_set_formspec_prepend(lua_State *L);
|
||||
|
||||
static int l_get_screen_info(lua_State *L);
|
||||
|
||||
//filesystem
|
||||
|
||||
static int l_get_mainmenu_path(lua_State *L);
|
||||
|
@ -41,6 +41,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
#include "util/sha1.h"
|
||||
#include <algorithm>
|
||||
|
||||
#ifndef SERVER
|
||||
#include "client/renderingengine.h"
|
||||
#endif
|
||||
|
||||
|
||||
// log([level,] text)
|
||||
// Writes a line to the logger.
|
||||
@ -486,6 +490,7 @@ int ModApiUtil::l_sha1(lua_State *L)
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef SERVER
|
||||
int ModApiUtil::l_upgrade(lua_State *L)
|
||||
{
|
||||
NO_MAP_LOCK_REQUIRED;
|
||||
@ -516,6 +521,35 @@ int ModApiUtil::l_get_secret_key(lua_State *L)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ModApiUtil::l_get_screen_info(lua_State *L)
|
||||
{
|
||||
NO_MAP_LOCK_REQUIRED;
|
||||
lua_newtable(L);
|
||||
int top = lua_gettop(L);
|
||||
lua_pushstring(L,"density");
|
||||
lua_pushnumber(L,RenderingEngine::getDisplayDensity());
|
||||
lua_settable(L, top);
|
||||
|
||||
lua_pushstring(L,"display_width");
|
||||
lua_pushnumber(L,RenderingEngine::getDisplaySize().X);
|
||||
lua_settable(L, top);
|
||||
|
||||
lua_pushstring(L,"display_height");
|
||||
lua_pushnumber(L,RenderingEngine::getDisplaySize().Y);
|
||||
lua_settable(L, top);
|
||||
|
||||
const v2u32 &window_size = RenderingEngine::get_instance()->getWindowSize();
|
||||
lua_pushstring(L,"window_width");
|
||||
lua_pushnumber(L, window_size.X);
|
||||
lua_settable(L, top);
|
||||
|
||||
lua_pushstring(L,"window_height");
|
||||
lua_pushnumber(L, window_size.Y);
|
||||
lua_settable(L, top);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
void ModApiUtil::Initialize(lua_State *L, int top)
|
||||
{
|
||||
API_FCT(log);
|
||||
@ -557,6 +591,7 @@ void ModApiUtil::Initialize(lua_State *L, int top)
|
||||
|
||||
void ModApiUtil::InitializeClient(lua_State *L, int top)
|
||||
{
|
||||
#ifndef SERVER
|
||||
API_FCT(log);
|
||||
|
||||
API_FCT(get_us_time);
|
||||
@ -575,8 +610,13 @@ void ModApiUtil::InitializeClient(lua_State *L, int top)
|
||||
API_FCT(get_version);
|
||||
API_FCT(sha1);
|
||||
|
||||
API_FCT(get_screen_info);
|
||||
|
||||
LuaSettings::create(L, g_settings, g_settings_path);
|
||||
lua_setfield(L, top, "settings");
|
||||
#else
|
||||
FATAL_ERROR("InitializeClient called from server");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ModApiUtil::InitializeAsync(lua_State *L, int top)
|
||||
@ -611,6 +651,11 @@ void ModApiUtil::InitializeAsync(lua_State *L, int top)
|
||||
|
||||
void ModApiUtil::InitializeMainMenu(lua_State *L, int top) {
|
||||
Initialize(L, top);
|
||||
#ifndef SERVER
|
||||
API_FCT(upgrade);
|
||||
API_FCT(get_secret_key);
|
||||
API_FCT(get_screen_info);
|
||||
#else
|
||||
FATAL_ERROR("InitializeMainMenu called from server");
|
||||
#endif
|
||||
}
|
||||
|
@ -101,12 +101,16 @@ private:
|
||||
// sha1(string, raw)
|
||||
static int l_sha1(lua_State *L);
|
||||
|
||||
#ifndef SERVER
|
||||
// upgrade(string)
|
||||
static int l_upgrade(lua_State *L);
|
||||
|
||||
// get_secret_key(string)
|
||||
static int l_get_secret_key(lua_State *L);
|
||||
|
||||
static int l_get_screen_info(lua_State *L);
|
||||
#endif
|
||||
|
||||
public:
|
||||
static void Initialize(lua_State *L, int top);
|
||||
static void InitializeAsync(lua_State *L, int top);
|
||||
|
Before Width: | Height: | Size: 516 B After Width: | Height: | Size: 259 B |
Before Width: | Height: | Size: 279 B After Width: | Height: | Size: 331 B |
Before Width: | Height: | Size: 277 B After Width: | Height: | Size: 331 B |
Before Width: | Height: | Size: 280 B After Width: | Height: | Size: 331 B |
Before Width: | Height: | Size: 479 B After Width: | Height: | Size: 238 B |
Before Width: | Height: | Size: 480 B |
Before Width: | Height: | Size: 279 B After Width: | Height: | Size: 307 B |
Before Width: | Height: | Size: 279 B After Width: | Height: | Size: 307 B |
Before Width: | Height: | Size: 279 B After Width: | Height: | Size: 307 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 248 B |