1
0
mirror of https://github.com/luanti-org/luanti.git synced 2025-11-02 00:05:26 +01:00

Add formspec table

This commit is contained in:
Kahrl
2013-08-23 12:24:11 +02:00
committed by ShadowNinja
parent 2b1eff7725
commit 8966c16ad2
13 changed files with 1798 additions and 246 deletions

View File

@@ -31,7 +31,7 @@ end
--------------------------------------------------------------------------------
function gamemgr.handle_games_buttons(fields)
if fields["gamelist"] ~= nil then
local event = explode_textlist_event(fields["gamelist"])
local event = engine.explode_textlist_event(fields["gamelist"])
gamemgr.selected_game = event.index
end

View File

@@ -459,8 +459,8 @@ function tabbuilder.handle_multiplayer_buttons(fields)
end
if fields["favourites"] ~= nil then
local event = explode_textlist_event(fields["favourites"])
if event.typ == "DCL" then
local event = engine.explode_textlist_event(fields["favourites"])
if event.type == "DCL" then
if event.index <= #menu.favorites then
gamedata.address = menu.favorites[event.index].address
gamedata.port = menu.favorites[event.index].port
@@ -484,7 +484,7 @@ function tabbuilder.handle_multiplayer_buttons(fields)
end
end
if event.typ == "CHG" then
if event.type == "CHG" then
if event.index <= #menu.favorites then
local address = menu.favorites[event.index].address
local port = menu.favorites[event.index].port
@@ -586,12 +586,12 @@ function tabbuilder.handle_server_buttons(fields)
local world_doubleclick = false
if fields["srv_worlds"] ~= nil then
local event = explode_textlist_event(fields["srv_worlds"])
local event = engine.explode_textlist_event(fields["srv_worlds"])
if event.typ == "DCL" then
if event.type == "DCL" then
world_doubleclick = true
end
if event.typ == "CHG" then
if event.type == "CHG" then
engine.setting_set("mainmenu_last_selected_world",
filterlist.get_raw_index(worldlist,engine.get_textlist_index("srv_worlds")))
end
@@ -737,13 +737,13 @@ function tabbuilder.handle_singleplayer_buttons(fields)
local world_doubleclick = false
if fields["sp_worlds"] ~= nil then
local event = explode_textlist_event(fields["sp_worlds"])
local event = engine.explode_textlist_event(fields["sp_worlds"])
if event.typ == "DCL" then
if event.type == "DCL" then
world_doubleclick = true
end
if event.typ == "CHG" then
if event.type == "CHG" then
engine.setting_set("mainmenu_last_selected_world",
filterlist.get_raw_index(worldlist,engine.get_textlist_index("sp_worlds")))
end
@@ -813,8 +813,8 @@ end
--------------------------------------------------------------------------------
function tabbuilder.handle_texture_pack_buttons(fields)
if fields["TPs"] ~= nil then
local event = explode_textlist_event(fields["TPs"])
if event.typ == "CHG" or event.typ=="DCL" then
local event = engine.explode_textlist_event(fields["TPs"])
if event.type == "CHG" or event.type == "DCL" then
local index = engine.get_textlist_index("TPs")
engine.setting_set("mainmenu_last_selected_TP",
index)

View File

@@ -115,26 +115,6 @@ function math.hypot(x, y)
return x * math.sqrt(1 + t * t)
end
--------------------------------------------------------------------------------
function explode_textlist_event(text)
local retval = {}
retval.typ = "INV"
local parts = text:split(":")
if #parts == 2 then
retval.typ = parts[1]:trim()
retval.index= tonumber(parts[2]:trim())
if type(retval.index) ~= "number" then
retval.typ = "INV"
end
end
return retval
end
--------------------------------------------------------------------------------
function get_last_folder(text,count)
local parts = text:split(DIR_DELIM)
@@ -368,6 +348,37 @@ if minetest then
end
end
--------------------------------------------------------------------------------
function tbl.explode_table_event(evt)
if evt ~= nil then
local parts = evt:split(":")
if #parts == 3 then
local t = parts[1]:trim()
local r = tonumber(parts[2]:trim())
local c = tonumber(parts[3]:trim())
if type(r) == "number" and type(c) == "number" and t ~= "INV" then
return {type=t, row=r, column=c}
end
end
end
return {type="INV", row=0, column=0}
end
--------------------------------------------------------------------------------
function tbl.explode_textlist_event(evt)
if evt ~= nil then
local parts = evt:split(":")
if #parts == 2 then
local t = parts[1]:trim()
local r = tonumber(parts[2]:trim())
if type(r) == "number" and t ~= "INV" then
return {type=t, index=r}
end
end
end
return {type="INV", index=0}
end
--------------------------------------------------------------------------------
-- mainmenu only functions
--------------------------------------------------------------------------------

View File

@@ -572,7 +572,7 @@ function modmgr.handle_modmgr_buttons(fields)
}
if fields["modlist"] ~= nil then
local event = explode_textlist_event(fields["modlist"])
local event = engine.explode_textlist_event(fields["modlist"])
modmgr.selected_mod = event.index
end
@@ -693,10 +693,10 @@ end
--------------------------------------------------------------------------------
function modmgr.handle_configure_world_buttons(fields)
if fields["world_config_modlist"] ~= nil then
local event = explode_textlist_event(fields["world_config_modlist"])
local event = engine.explode_textlist_event(fields["world_config_modlist"])
modmgr.world_config_selected_mod = event.index
if event.typ == "DCL" then
if event.type == "DCL" then
modmgr.world_config_enable_mod(nil)
end
end