diff --git a/mods/lzr_editor/init.lua b/mods/lzr_editor/init.lua index 3c24ab2..6c2c6f3 100644 --- a/mods/lzr_editor/init.lua +++ b/mods/lzr_editor/init.lua @@ -37,10 +37,3 @@ lzr_gamestate.register_on_enter_state(function(state) lzr_gui.set_editor_gui(player) end end) -lzr_gamestate.register_on_exit_state(function(state) - if state == lzr_gamestate.EDITOR then - local player = minetest.get_player_by_name("singleplayer") - lzr_player.set_play_inventory(player) - lzr_gui.set_play_gui(player) - end -end) diff --git a/mods/lzr_laser/blocks.lua b/mods/lzr_laser/blocks.lua index 6765702..246899f 100644 --- a/mods/lzr_laser/blocks.lua +++ b/mods/lzr_laser/blocks.lua @@ -94,10 +94,14 @@ end -- Update the whole playfield after placing or digging a laser node local full_update = function() - if lzr_gamestate.get_state() ~= lzr_gamestate.LEVEL then + local state = lzr_gamestate.get_state() + if state ~= lzr_gamestate.LEVEL and state ~= lzr_gamestate.EDITOR then return end lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) + if state == lzr_gamestate.EDITOR then + return + end local done = lzr_laser.check_level_won() if done then lzr_levels.level_complete() @@ -109,10 +113,14 @@ end -- inventory has to be ignored because after_dig_node is called BEFORE -- the inventory change after placing the node. local full_update_detector_placed = function() - if lzr_gamestate.get_state() ~= lzr_gamestate.LEVEL then + local state = lzr_gamestate.get_state() + if state ~= lzr_gamestate.LEVEL and state ~= lzr_gamestate.EDITOR then return end lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) + if state == lzr_gamestate.EDITOR then + return + end local done = lzr_laser.check_level_won(true) if done then lzr_levels.level_complete() diff --git a/mods/lzr_levels/init.lua b/mods/lzr_levels/init.lua index 8651944..603d417 100644 --- a/mods/lzr_levels/init.lua +++ b/mods/lzr_levels/init.lua @@ -217,5 +217,18 @@ minetest.register_chatcommand("leave", { end, }) +lzr_gamestate.register_on_enter_state(function(state) + if state == lzr_gamestate.LEVEL then + local player = minetest.get_player_by_name("singleplayer") + lzr_player.set_play_inventory(player) + lzr_gui.set_play_gui(player) + lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) + local done = lzr_laser.check_level_won() + if done then + lzr_levels.level_complete() + end + end +end) + analyze_levels() diff --git a/mods/lzr_menu/init.lua b/mods/lzr_menu/init.lua index 96b3898..c0bb974 100644 --- a/mods/lzr_menu/init.lua +++ b/mods/lzr_menu/init.lua @@ -61,3 +61,11 @@ minetest.register_node("lzr_menu:startbook", { groups = { snappy = 3, not_in_creative_inventory = 1, }, }) +lzr_gamestate.register_on_enter_state(function(state) + if state == lzr_gamestate.MENU then + local player = minetest.get_player_by_name("singleplayer") + lzr_player.set_play_inventory(player) + lzr_gui.set_play_gui(player) + end +end) +