Add debug commands to jump to level
parent
faec32fff4
commit
33d06027f5
|
@ -6,6 +6,7 @@ local ROOM_NODE = "lzr_core:wood"
|
|||
local WINDOW_NODE = "xdecor:woodframed_glass"
|
||||
local WINDOW_HEIGHT = 3
|
||||
local WINDOW_DIST = 3
|
||||
local LAST_LEVEL = 10
|
||||
|
||||
local build_room = function(param)
|
||||
local pos = param.pos
|
||||
|
@ -61,36 +62,71 @@ function lzr_levels.prepare_and_build_level(level)
|
|||
end
|
||||
|
||||
function lzr_levels.build_level(level)
|
||||
minetest.place_schematic(lzr_globals.LEVEL_POS, minetest.get_modpath("lzr_levels").."/schematics/lzr_levels_level_"..tonumber(level)..".mts", "0", {}, true, "")
|
||||
return minetest.place_schematic(lzr_globals.LEVEL_POS, minetest.get_modpath("lzr_levels").."/schematics/lzr_levels_level_"..tonumber(level)..".mts", "0", {}, true, "")
|
||||
end
|
||||
|
||||
|
||||
local current_level = 1
|
||||
-- Startup
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local function reset_inventory(player)
|
||||
local inv = player:get_inventory()
|
||||
for i=1,inv:get_size("main") do
|
||||
inv:set_stack("main", i, "")
|
||||
end
|
||||
inv:add_item("main", "screwdriver:screwdriver")
|
||||
lzr_levels.prepare_and_build_level(1)
|
||||
player:set_pos({x=5,y=2,z=5})
|
||||
end
|
||||
|
||||
local current_level = 1
|
||||
|
||||
local get_singleplayer = function()
|
||||
return minetest.get_player_by_name("singleplayer")
|
||||
end
|
||||
|
||||
-- Startup
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
lzr_levels.start_level(1)
|
||||
end)
|
||||
|
||||
function lzr_levels.start_level(level)
|
||||
current_level = level
|
||||
local player = get_singleplayer()
|
||||
reset_inventory(player)
|
||||
player:set_pos({x=5,y=2,z=5})
|
||||
lzr_levels.prepare_and_build_level(level)
|
||||
end
|
||||
|
||||
function lzr_levels.next_level()
|
||||
local player = minetest.get_player_by_name("singleplayer")
|
||||
local player = get_singleplayer()
|
||||
current_level = current_level + 1
|
||||
if current_level > 10 then
|
||||
minetest.chat_send_player("singleplayer", S("Yarrrr! You finished the last level!"))
|
||||
else
|
||||
minetest.chat_send_player("singleplayer", S("Yarr! Level @1 completed!", current_level - 1))
|
||||
player:set_pos({x=5,y=2,z=5})
|
||||
lzr_levels.prepare_and_build_level(current_level)
|
||||
|
||||
local inv = player:get_inventory()
|
||||
for i=1,inv:get_size("main") do
|
||||
inv:set_stack("main", i, "")
|
||||
end
|
||||
inv:add_item("main", "screwdriver:screwdriver")
|
||||
lzr_levels.start_level(current_level)
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_chatcommand("level", {
|
||||
privs = { server = true },
|
||||
description = S("Go to level"),
|
||||
params = S("<level>"),
|
||||
func = function(name, param)
|
||||
local level = tonumber(param)
|
||||
if not level then
|
||||
return false
|
||||
end
|
||||
if level < 1 or level > LAST_LEVEL then
|
||||
return false, S("Invalid level!")
|
||||
end
|
||||
lzr_levels.start_level(level)
|
||||
return true
|
||||
end,
|
||||
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("restart", {
|
||||
privs = {},
|
||||
params = "",
|
||||
description = S("Restart current level"),
|
||||
func = function(name, param)
|
||||
lzr_levels.start_level(current_level)
|
||||
return true
|
||||
end,
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue