capturetheflag/mods/ctf/ctf_map/map_maker/gui.lua

148 lines
3.8 KiB
Lua

function map_maker.show_gui(name)
local context = map_maker.get_context()
local mapauthor = context.mapauthor or name
local formspec = {
"size[9,9.5]",
"bgcolor[#080808BB;true]",
"label[0,0;1. Select Area]",
"field[0.4,1;1,1;posx;X;", context.center.x, "]",
"field[1.4,1;1,1;posy;Y;", context.center.y, "]",
"field[2.4,1;1,1;posz;Z;", context.center.z, "]",
"field[0.4,2;1.5,1;posr;R;", context.center.r, "]",
"field[1.9,2;1.5,1;posh;H;", context.center.h, "]",
"button[4.3,0.7;1.75,1;set_center;Player Pos]",
"button[6.05,0.7;1.5,1;towe;To WE]",
"button[7.55,0.7;1.5,1;fromwe;From WE]",
"button[4.3,1.7;4.75,1;emerge;Emerge Area]",
"box[0,2.65;8.85,0.05;#111111BB]",
"label[0,2.8;2. Place Barriers]",
"label[0.1,3.3;This may take a few minutes.]",
"field[0.4,4.3;1,1;barrier_r;R;", context.barrier_r, "]",
"dropdown[1.15,4.05;1,1;barrier_rot;X=0,Z=0;",
context.barrier_rot == "x" and 1 or 2, "]",
"button[2.3,4;2,1;place_barriers;Place Barriers]",
"box[4.4,2.8;0.05,2.2;#111111BB]",
"label[4.8,2.8;3. Place Flags]",
"label[4.8,3.3;", minetest.formspec_escape(map_maker.get_flag_status()), "]",
"button[4.8,4;3.5,1;giveme;Giveme Flags]",
"box[0,5.06;8.85,0.05;#111111BB]",
"label[0,5.15;4. Meta Data]",
"field[0.4,6.2;8.5,1;title;Title;",
minetest.formspec_escape(context.maptitle), "]",
"field[0.4,7.3;8.5,1;initial;Stuff to give on (re)spawn, comma-separated itemstrings;",
minetest.formspec_escape(context.mapinitial), "]",
"field[0.4,8.4;4.25,1;name;File Name;",
minetest.formspec_escape(context.mapname), "]",
"field[4.625,8.4;4.25,1;author;Author;",
minetest.formspec_escape(mapauthor), "]",
"button_exit[1.3,9;3,1;close;Close]",
"button_exit[4.3,9;3,1;export;Export]",
}
formspec = table.concat(formspec, "")
minetest.show_formspec(name, "ctf_map:tool", formspec)
end
function map_maker.show_progress_formspec(name, text)
minetest.show_formspec(name, "ctf_map:progress",
"size[6,1]bgcolor[#080808BB;true]" ..
"label[0,0;" ..
minetest.formspec_escape(text) .. "]")
end
function map_maker.emerge_progress(ctx)
map_maker.show_progress_formspec(ctx.name,
string.format("Emerging Area - %d/%d blocks emerged (%.1f%%)",
ctx.current_blocks, ctx.total_blocks,
(ctx.current_blocks / ctx.total_blocks) * 100))
end
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= "ctf_map:tool" then
return
end
local name = player:get_player_name()
if fields.posx or fields.posy or fields.posz or fields.posh or fields.posr then
map_maker.set_center(name, {
x = tonumber(fields.posx),
y = tonumber(fields.posy),
z = tonumber(fields.posz),
h = tonumber(fields.posh),
r = tonumber(fields.posr)
})
end
if fields.barrier_r then
map_maker.set_meta("barrier_r", tonumber(fields.barrier_r))
end
if fields.title then
map_maker.set_meta("maptitle", fields.title)
end
if fields.author then
map_maker.set_meta("mapauthor", fields.author)
end
if fields.name then
map_maker.set_meta("mapname", fields.name)
end
if fields.initial then
map_maker.set_meta("mapinitial", fields.initial)
end
if fields.barrier_rot then
map_maker.set_meta("barrier_rot", fields.barrier_rot == "X=0" and "x" or "z")
end
if fields.set_center then
map_maker.set_center(name)
end
if fields.giveme then
player:get_inventory():add_item("main", "ctf_map:flag 2")
end
if fields.emerge then
map_maker.emerge(name)
end
if fields.place_barriers then
map_maker.place_barriers(name)
end
if fields.towe then
map_maker.we_select(name)
end
if fields.fromwe then
map_maker.we_import(name)
end
if fields.export then
map_maker.export(name)
end
if not fields.quit then
map_maker.show_gui(name)
end
end)
minetest.register_chatcommand("gui", {
func = function(name)
map_maker.show_gui(name)
return true
end
})