diff --git a/mods/lzr_editor/init.lua b/mods/lzr_editor/init.lua new file mode 100644 index 0000000..1d6c008 --- /dev/null +++ b/mods/lzr_editor/init.lua @@ -0,0 +1,32 @@ +local S = minetest.get_translator("lzr_editor") + +minetest.register_chatcommand("editor", { + privs = { server = true }, + description = S("Start level editor"), + params = S("[ enter | exit ]"), + func = function(name, param) + if param == "" or param == "enter" then + lzr_gamestate.set_state(lzr_gamestate.EDITOR) + return true + elseif param == "exit" then + lzr_gamestate.set_state(lzr_gamestate.MENU) + return true + end + return false + end, +}) + +lzr_gamestate.register_on_enter_state(function(state) + if state == lzr_gamestate.EDITOR then + local player = minetest.get_player_by_name("singleplayer") + lzr_player.set_editor_inventory(player) + 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_editor/mod.conf b/mods/lzr_editor/mod.conf new file mode 100644 index 0000000..ccebd9b --- /dev/null +++ b/mods/lzr_editor/mod.conf @@ -0,0 +1,2 @@ +name = lzr_editor +depends = lzr_gamestate, lzr_gui, lzr_player diff --git a/mods/lzr_gamestate/init.lua b/mods/lzr_gamestate/init.lua index c68d2a7..2cfef6c 100644 --- a/mods/lzr_gamestate/init.lua +++ b/mods/lzr_gamestate/init.lua @@ -31,6 +31,7 @@ lzr_gamestate.set_state = function(new_state) end current_state = new_state + minetest.log("action", "[lzr_gamestate] Game state changed to "..tostring(current_state)) end lzr_gamestate.get_state = function() diff --git a/mods/lzr_gui/init.lua b/mods/lzr_gui/init.lua index 9085d30..766a9fc 100644 --- a/mods/lzr_gui/init.lua +++ b/mods/lzr_gui/init.lua @@ -1,7 +1,16 @@ +lzr_gui = {} + +lzr_gui.set_play_gui = function(player) + player:hud_set_hotbar_itemcount(3) +end +lzr_gui.set_editor_gui = function(player) + player:hud_set_hotbar_itemcount(8) +end + minetest.register_on_joinplayer(function(player) player:hud_set_flags({minimap = false, minimap_radar = false, healthbar = false, breathbar = false}) - player:hud_set_hotbar_itemcount(8) player:set_inventory_formspec( "formspec_version[4]size[11,6]list[current_player;main;0.5,0.5;8,4]" ) + lzr_gui.set_play_gui(player) end) diff --git a/mods/lzr_player/init.lua b/mods/lzr_player/init.lua index 4771637..a868a77 100644 --- a/mods/lzr_player/init.lua +++ b/mods/lzr_player/init.lua @@ -1,6 +1,16 @@ +lzr_player = {} + +lzr_player.set_play_inventory = function(player) + local inv = player:get_inventory() + inv:set_size("main", 3) +end +lzr_player.set_editor_inventory = function(player) + local inv = player:get_inventory() + inv:set_size("main", 32) +end + minetest.register_on_joinplayer(function(player) local inv = player:get_inventory() - inv:set_size("main", 8) inv:set_size("craft", 0) player:set_sky({ sky_color = { @@ -20,6 +30,7 @@ minetest.register_on_joinplayer(function(player) color = "#FFFFFF", }) + lzr_player.set_play_inventory(player) end) -- Can't drop items