Remember selected entry in entry list

This commit is contained in:
Wuzzy 2015-03-11 17:51:41 +01:00
parent 4f4cb58bb0
commit 77ca4362d6

View File

@ -9,6 +9,7 @@ doc.VERSION.STRING = "0.1.0"
doc.data = {} doc.data = {}
doc.data.categories = {} doc.data.categories = {}
doc.data.players = {}
function doc.new_category(id, def) function doc.new_category(id, def)
if doc.data.categories[id] == nil and id ~= nil then if doc.data.categories[id] == nil and id ~= nil then
@ -73,7 +74,7 @@ function doc.formspec_main()
return formstring return formstring
end end
function doc.formspec_category(id) function doc.formspec_category(id, playername)
local formstring local formstring
if id == nil then if id == nil then
formstring = "label[0,0;You haven't selected a help topic yet. Please select one in the category list first.]" formstring = "label[0,0;You haven't selected a help topic yet. Please select one in the category list first.]"
@ -90,6 +91,10 @@ function doc.formspec_category(id)
if counter >= 1 then if counter >= 1 then
formstring = string.sub(formstring, 1, #formstring-1) formstring = string.sub(formstring, 1, #formstring-1)
end end
local catsel = doc.data.players[playername].catsel
if catsel then
formstring = formstring .. ";"..doc.data.players[playername].catsel
end
formstring = formstring .. "]" formstring = formstring .. "]"
formstring = formstring .. "button[0,8;3,1;doc_button_goto_entry;Show entry]" formstring = formstring .. "button[0,8;3,1;doc_button_goto_entry;Show entry]"
end end
@ -124,7 +129,7 @@ function doc.process_form(player,formname,fields)
contents = doc.formspec_main() contents = doc.formspec_main()
subformname = "main" subformname = "main"
elseif(tab==2) then elseif(tab==2) then
contents = doc.formspec_category("one") contents = doc.formspec_category("one", playername)
subformname = "category" subformname = "category"
elseif(tab==3) then elseif(tab==3) then
contents = doc.formspec_entry("one", "o1") contents = doc.formspec_entry("one", "o1")
@ -138,7 +143,8 @@ function doc.process_form(player,formname,fields)
if(formname == "doc:main") then if(formname == "doc:main") then
for id,category in pairs(doc.data.categories) do for id,category in pairs(doc.data.categories) do
if fields["doc_button_category_"..id] then if fields["doc_button_category_"..id] then
local formspec = doc.formspec_core(2)..doc.formspec_category(id) local formspec = doc.formspec_core(2)..doc.formspec_category(id, playername)
doc.data.players[playername].catsel = nil
minetest.show_formspec(playername, "doc:category", formspec) minetest.show_formspec(playername, "doc:category", formspec)
break break
end end
@ -148,6 +154,12 @@ function doc.process_form(player,formname,fields)
local formspec = doc.formspec_core(3)..doc.formspec_entry("one", "o1") local formspec = doc.formspec_core(3)..doc.formspec_entry("one", "o1")
minetest.show_formspec(playername, "doc:entry", formspec) minetest.show_formspec(playername, "doc:entry", formspec)
end end
if fields["doc_catlist"] then
local event = minetest.explode_textlist_event(fields["doc_catlist"])
if event.type == "CHG" then
doc.data.players[playername].catsel = event.index
end
end
elseif(formname == "doc:entry") then elseif(formname == "doc:entry") then
end end
@ -164,3 +176,11 @@ minetest.register_chatcommand("doc", {
end, end,
} }
) )
minetest.register_on_joinplayer(function(player)
doc.data.players[player:get_player_name()] = {}
end)
minetest.register_on_leaveplayer(function(player)
doc.data.players[player:get_player_name()] = nil
end)