Set level size properly in lzr_levels

master
Wuzzy 2022-03-02 16:40:13 +01:00
parent efc8569515
commit a53110033c
2 changed files with 16 additions and 8 deletions

View File

@ -1,7 +1,5 @@
local S = minetest.get_translator("lzr_editor")
local level_size = table.copy(lzr_globals.DEFAULT_LEVEL_SIZE)
minetest.register_chatcommand("editor", {
privs = { server = true },
description = S("Start or exit level editor"),
@ -52,9 +50,8 @@ minetest.register_chatcommand("editor_size", {
if size.x < 1 or size.y < 4 or size.z < 1 then
return false, S("Too small!")
end
level_size = size
lzr_levels.clear_playfield(level_size)
lzr_levels.build_room(lzr_globals.LEVEL_POS, level_size)
lzr_levels.clear_playfield(size)
lzr_levels.build_room(lzr_globals.LEVEL_POS, size)
return true
end,
})
@ -77,7 +74,7 @@ minetest.register_chatcommand("editor_save", {
local level_name = "level_custom_"..num
minetest.mkdir(minetest.get_worldpath().."/levels")
local filename = minetest.get_worldpath().."/levels/"..level_name..".mts"
local size = vector.subtract(level_size, vector.new(1, 1, 1))
local size = vector.subtract(lzr_levels.get_level_size(), vector.new(1, 1, 1))
local ok = minetest.create_schematic(lzr_globals.LEVEL_POS, vector.add(lzr_globals.LEVEL_POS, size), {}, filename, {})
if ok then
minetest.log("action", "[lzr_editor] Level written to "..filename)
@ -123,8 +120,7 @@ minetest.register_chatcommand("editor_load", {
local filename = minetest.get_worldpath().."/levels/"..level_name..".mts"
local schem = minetest.read_schematic(filename, {})
if schem then
level_size = schem.size
lzr_levels.build_room(lzr_globals.LEVEL_POS, level_size)
lzr_levels.build_room(lzr_globals.LEVEL_POS, schem.size)
minetest.place_schematic(lzr_globals.LEVEL_POS, schem, "0", {}, true, {})
minetest.log("action", "[lzr_editor] Level loaded from "..filename)
return true, S("Level loaded.")

View File

@ -13,6 +13,17 @@ local current_level = nil
local level_data = {}
lzr_levels.LAST_LEVEL = 0
local level_size = table.copy(lzr_globals.DEFAULT_LEVEL_SIZE)
lzr_levels.get_level_size = function()
return level_size
end
local set_level_size = function(new_size)
level_size = new_size
minetest.log("verbose", "[lzr_levels] Level size set to: "..minetest.pos_to_string(new_size))
end
-- Mod storage for game progress
local mod_storage = minetest.get_mod_storage()
@ -71,6 +82,7 @@ local build_room = function(param)
local posses_window = {}
local posses_floor = {}
local size = vector.add(psize, {x=1,y=1,z=1})
set_level_size(psize)
for x=0,size.x do
for z=0,size.z do
for y=0,size.y do