64 lines
2.0 KiB
Lua
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)
|