Add restart button to level teleporter
parent
f62b5c8a5e
commit
92502d8210
|
@ -271,6 +271,20 @@ function lzr_levels.leave_level()
|
|||
lzr_gamestate.set_state(lzr_gamestate.MENU)
|
||||
end
|
||||
|
||||
function lzr_levels.get_current_level()
|
||||
return current_level
|
||||
end
|
||||
|
||||
function lzr_levels.restart_level()
|
||||
local state = lzr_gamestate.get_state()
|
||||
if state == lzr_gamestate.LEVEL or state == lzr_gamestate.EDITOR then
|
||||
lzr_levels.start_level(current_level)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_chatcommand("restart", {
|
||||
privs = {},
|
||||
params = "",
|
||||
|
@ -278,7 +292,7 @@ minetest.register_chatcommand("restart", {
|
|||
func = function(name, param)
|
||||
local state = lzr_gamestate.get_state()
|
||||
if state == lzr_gamestate.LEVEL or state == lzr_gamestate.EDITOR then
|
||||
lzr_levels.start_level(current_level)
|
||||
lzr_levels.restart_level()
|
||||
return true
|
||||
elseif state == lzr_gamestate.LEVEL_COMPLETE then
|
||||
return false, S("Can’t restart level right now.")
|
||||
|
|
|
@ -2,11 +2,13 @@ local S = minetest.get_translator("lzr_teleporter")
|
|||
local F = minetest.formspec_escape
|
||||
|
||||
local open_leave_dialog = function(player)
|
||||
local form = "formspec_version[4]size[7.5,2.5]"..
|
||||
"label[0.5,0.5;"..F(S("Do you want to leave this level?")).."]"..
|
||||
"button_exit[0.5,1;3,1;yes;"..F(S("Yes")).."]"..
|
||||
"button_exit[4,1;3,1;no;"..F(S("No")).."]"
|
||||
minetest.show_formspec(player:get_player_name(), "lzr_teleporter:leave", form)
|
||||
local levelstr = tostring(lzr_levels.get_current_level())
|
||||
local form = "formspec_version[4]size[7.5,4.5]"..
|
||||
"label[0.5,0.5;"..F(S("You are in level @1.", levelstr)).."]"..
|
||||
"button_exit[2.5,1;3,1;continue;"..F(S("Continue")).."]"..
|
||||
"button_exit[2.5,2;3,1;restart;"..F(S("Restart level")).."]"..
|
||||
"button_exit[2.5,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", {
|
||||
|
@ -20,9 +22,7 @@ minetest.register_node("lzr_teleporter:teleporter", {
|
|||
"lzr_teleporter_rear.png",
|
||||
},
|
||||
on_punch = function(_, _, puncher)
|
||||
if lzr_gamestate.get_state() == lzr_gamestate.LEVEL or lzr_gamestate.get_state() == lzr_gamestate.LEVEL_COMPLETE then
|
||||
open_leave_dialog(puncher)
|
||||
end
|
||||
open_leave_dialog(puncher)
|
||||
end,
|
||||
groups = { breakable = 1, teleporter = 2 },
|
||||
sounds = lzr_sounds.node_sound_stone_defaults(),
|
||||
|
@ -39,19 +39,19 @@ minetest.register_node("lzr_teleporter:teleporter_off", {
|
|||
"lzr_teleporter_off_rear.png",
|
||||
},
|
||||
on_punch = function(_, _, puncher)
|
||||
if lzr_gamestate.get_state() == lzr_gamestate.LEVEL or lzr_gamestate.get_state() == lzr_gamestate.LEVEL_COMPLETE then
|
||||
open_leave_dialog(puncher)
|
||||
end
|
||||
open_leave_dialog(puncher)
|
||||
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:leave" then
|
||||
if fields.yes then
|
||||
if lzr_gamestate.get_state() == lzr_gamestate.LEVEL or lzr_gamestate.get_state() == lzr_gamestate.LEVEL_COMPLETE then
|
||||
if formname == "lzr_teleporter:level" then
|
||||
if lzr_gamestate.get_state() == lzr_gamestate.LEVEL or lzr_gamestate.get_state() == lzr_gamestate.LEVEL_COMPLETE then
|
||||
if fields.leave then
|
||||
lzr_levels.leave_level()
|
||||
elseif fields.restart then
|
||||
lzr_levels.restart_level()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue