From c7243d410c5a1f29a352b43f1ad99b9bfec98887 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 13 Jan 2022 01:40:16 +0100 Subject: [PATCH] More work on editor mode state behavior --- mods/lzr_editor/init.lua | 7 ------- mods/lzr_laser/blocks.lua | 12 ++++++++++-- mods/lzr_levels/init.lua | 13 +++++++++++++ mods/lzr_menu/init.lua | 8 ++++++++ 4 files changed, 31 insertions(+), 9 deletions(-) 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) +