64 lines
2.0 KiB
Lua

local S = minetest.get_translator("lzr_teleporter")
local F = minetest.formspec_escape
local open_leave_dialog = function(player)
local levelstr = lzr_levels.get_level_name(lzr_levels.get_current_level(), lzr_levels.get_current_level_data(), true)
local form = "formspec_version[4]size[7,4.5]"..
"label[0.5,0.5;"..F(S("Current level: @1", levelstr)).."]"..
"set_focus[continue]"..
"button_exit[2,1;3,1;continue;"..F(S("Continue")).."]"..
"button_exit[2,2;3,1;restart;"..F(S("Restart level")).."]"..
"button_exit[2,3;3,1;leave;"..F(S("Leave level")).."]"
minetest.show_formspec(player:get_player_name(), "lzr_teleporter:level", form)
end
minetest.register_node("lzr_teleporter:teleporter", {
description = S("Teleporter (on)"),
tiles = {
"lzr_teleporter_top.png",
"lzr_teleporter_bottom.png",
"lzr_teleporter_side.png",
"lzr_teleporter_side.png",
"lzr_teleporter_front.png",
"lzr_teleporter_rear.png",
},
on_punch = function(_, _, puncher)
if lzr_gamestate.get_state() == lzr_gamestate.LEVEL then
open_leave_dialog(puncher)
end
end,
groups = { breakable = 1, teleporter = 2 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_teleporter:teleporter_off", {
description = S("Teleporter (off)"),
tiles = {
"lzr_teleporter_off_top.png",
"lzr_teleporter_off_bottom.png",
"lzr_teleporter_off_side.png",
"lzr_teleporter_off_side.png",
"lzr_teleporter_off_front.png",
"lzr_teleporter_off_rear.png",
},
on_punch = function(_, _, puncher)
if lzr_gamestate.get_state() == lzr_gamestate.LEVEL then
open_leave_dialog(puncher)
end
end,
groups = { breakable = 1, teleporter = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname == "lzr_teleporter:level" then
if lzr_gamestate.get_state() == lzr_gamestate.LEVEL then
if fields.leave then
lzr_levels.leave_level()
elseif fields.restart then
lzr_levels.restart_level()
end
end
end
end)