148 lines
3.8 KiB
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
|
|
})
|