More work on editor mode state behavior

master
Wuzzy 2022-01-13 01:40:16 +01:00
parent 3164da9f0a
commit c7243d410c
4 changed files with 31 additions and 9 deletions

View File

@ -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)

View File

@ -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()

View File

@ -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()

View File

@ -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)