Add minimal 'editor' gamestate

master
Wuzzy 2022-01-09 04:20:00 +01:00
parent b4a8950e7d
commit d38a90a546
5 changed files with 57 additions and 2 deletions

32
mods/lzr_editor/init.lua Normal file
View File

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

2
mods/lzr_editor/mod.conf Normal file
View File

@ -0,0 +1,2 @@
name = lzr_editor
depends = lzr_gamestate, lzr_gui, lzr_player

View File

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

View File

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

View File

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