capturetheflag/mods/ctf/ctf_classes/gui.lua

92 lines
2.5 KiB
Lua
Raw Normal View History

2019-03-21 01:36:59 +00:00
function ctf_classes.show_gui(name, player)
player = player or minetest.get_player_by_name(name)
assert(player.get_player_name)
local fs = {
2020-07-28 23:46:53 +00:00
"size[", #ctf_classes.__classes_ordered * 3 , ",4.5]"
2019-03-21 01:36:59 +00:00
}
local x = 0
local y = 0
for _, class in pairs(ctf_classes.__classes_ordered) do
fs[#fs + 1] = "container["
fs[#fs + 1] = tostring(x*3)
fs[#fs + 1] = ","
fs[#fs + 1] = tostring(y*3.5)
fs[#fs + 1] = "]"
fs[#fs + 1] = "image[1,-0.1;1,1;ctf_classes_"
fs[#fs + 1] = class.name
fs[#fs + 1] = ".png]"
fs[#fs + 1] = "style[select_"
fs[#fs + 1] = class.name
fs[#fs + 1] = ";bgcolor="
fs[#fs + 1] = class.color
fs[#fs + 1] = "]"
fs[#fs + 1] = "tableoptions[background=#00000000;highlight=#00000000;border=false]"
fs[#fs + 1] = "tablecolumns[color;text]"
2020-07-28 23:46:53 +00:00
fs[#fs + 1] = "table[0,0.9;2.8,2.2;;"
2019-03-21 01:36:59 +00:00
fs[#fs + 1] = class.color
fs[#fs + 1] = ","
fs[#fs + 1] = minetest.formspec_escape(class.description)
fs[#fs + 1] = ",,"
for _, item in pairs(class.pros) do
fs[#fs + 1] = ",#cfc," .. minetest.formspec_escape(item)
end
for _, item in pairs(class.cons) do
fs[#fs + 1] = ",#fcc," .. minetest.formspec_escape(item)
end
fs[#fs + 1] = "]"
2020-03-13 21:58:42 +00:00
2020-07-28 23:46:53 +00:00
fs[#fs + 1] = "box[0,3.1;2.75,0.75;#2b2b2bFF]"
for i, item in pairs(class.properties.initial_stuff) do
2020-03-13 21:58:42 +00:00
fs[#fs + 1] = "item_image["
2020-07-28 23:46:53 +00:00
fs[#fs + 1] = tostring(((i + 0.85) - ((#class.properties.initial_stuff-1) * 0.85)/2) * 0.6)
fs[#fs + 1] = ",3.17;0.7,0.7;"
2020-03-13 21:58:42 +00:00
fs[#fs + 1] = minetest.formspec_escape(ItemStack(item):get_name())
fs[#fs + 1] = "]"
local desc = ItemStack(item):get_description():split("\n")[1]
fs[#fs + 1] = "tooltip["
2020-07-28 23:46:53 +00:00
fs[#fs + 1] = tostring(((i + 0.85) - ((#class.properties.initial_stuff-1) * 0.85)/2) * 0.6)
fs[#fs + 1] = ",3.17;0.7,0.7;"
2020-03-13 21:58:42 +00:00
fs[#fs + 1] = minetest.formspec_escape(desc)
fs[#fs + 1] = "]"
end
2020-07-28 23:46:53 +00:00
fs[#fs + 1] = "button_exit[0.5,4;2,1;select_"
2019-03-21 01:36:59 +00:00
fs[#fs + 1] = class.name
fs[#fs + 1] = ";Select]"
fs[#fs + 1] = "container_end[]"
x = x + 1
if x > 3 then
x = 0
y = y + 1
end
end
minetest.show_formspec(name, "ctf_classes:select", table.concat(fs))
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "ctf_classes:select" then
return false
end
local can_change, reason = ctf_classes.can_change(player)
if not can_change then
minetest.chat_send_player(player:get_player_name(), reason)
return
2019-03-21 01:36:59 +00:00
end
for name in pairs(ctf_classes.__classes) do
if fields["select_" .. name] then
ctf_classes.set(player, name)
2019-03-21 01:36:59 +00:00
return true
end
end
end)