Add basic gameplay

master
Wuzzy 2021-12-22 00:35:16 +01:00
parent f12aebda50
commit 2492b6dcc6
3 changed files with 44 additions and 1 deletions

View File

@ -157,6 +157,15 @@ minetest.register_node("lzr_laser:emitter", {
after_dig_node = full_update,
after_rotate = after_rotate,
on_rightclick = function(pos, node)
minetest.swap_node(pos, {name="lzr_laser:emitter_on", param2=node.param2})
lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END)
end,
on_punch = function(pos, node)
minetest.swap_node(pos, {name="lzr_laser:emitter_on", param2=node.param2})
lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END)
end,
sounds = lzr_sounds.node_sound_wood_defaults(),
groups = { rotatable = 1, emitter = 1, laser_block = 1, choppy = 3 },
_lzr_active = "lzr_laser:emitter_on",
@ -177,6 +186,15 @@ minetest.register_node("lzr_laser:emitter_on", {
after_dig_node = full_update,
after_rotate = after_rotate,
on_rightclick = function(pos, node)
minetest.swap_node(pos, {name="lzr_laser:emitter", param2=node.param2})
lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END)
end,
on_punch = function(pos, node)
minetest.swap_node(pos, {name="lzr_laser:emitter", param2=node.param2})
lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END)
end,
sounds = lzr_sounds.node_sound_wood_defaults(),
groups = { rotatable = 1, emitter = 2, laser_block = 1, choppy = 3 },
_lzr_inactive = "lzr_laser:emitter",

View File

@ -43,7 +43,10 @@ function lzr_laser.add_laser(pos, dir)
if detected then
-- Activate node
minetest.set_node(pos, {name="lzr_laser:detector_on", param2 = node.param2})
pos = vector.add(pos, dir)
local done = lzr_laser.check_detectors_in_area(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END)
if done then
lzr_levels.next_level()
end
end
-- Laser ends here
return false

View File

@ -1,3 +1,5 @@
local S = minetest.get_translator("lzr_levels")
lzr_levels = {}
local ROOM_NODE = "lzr_core:wood"
@ -61,3 +63,23 @@ 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, "")
end
local current_level = 1
-- Startup
minetest.register_on_joinplayer(function(player)
lzr_levels.prepare_and_build_level(1)
player:set_pos({x=5,y=2,z=5})
end)
function lzr_levels.next_level()
local player = minetest.get_player_by_name("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)
end
end