Add support for different level walls
parent
22855b4e3e
commit
2b5042d3a2
|
@ -1,5 +1,6 @@
|
|||
lzr_levels_level_1.mts,Demo Level 1
|
||||
lzr_levels_level_2.mts,Demo Level 2
|
||||
lzr_levels_level_3.mts,Demo Level 3
|
||||
lzr_levels_level_4.mts,Demo Level 4
|
||||
lzr_levels_level_5.mts,Demo Level 5
|
||||
lzr_levels_level_1.mts,Demo Level 1,lzr_core:wood|lzr_decor:woodframed_glass
|
||||
lzr_levels_level_2.mts,Demo Level 2,lzr_core:wood|lzr_decor:woodframed_glass
|
||||
lzr_levels_level_3.mts,Demo Level 3,lzr_core:wood|lzr_decor:woodframed_glass
|
||||
lzr_levels_level_4.mts,Demo Level 4,lzr_core:wood|lzr_decor:woodframed_glass
|
||||
lzr_levels_level_5.mts,Demo Level 5,lzr_core:wood|lzr_decor:woodframed_glass
|
||||
lzr_levels_level_6.mts,Demo Level 6,lzr_decor:ocean_stone|lzr_decor:ocean_stone|lzr_core:dirt|lzr_core:dirt
|
||||
|
|
|
|
@ -2,7 +2,8 @@ local S = minetest.get_translator("lzr_levels")
|
|||
|
||||
lzr_levels = {}
|
||||
|
||||
local ROOM_NODE = "lzr_core:wood"
|
||||
local CEILING_NODE = "lzr_core:wood"
|
||||
local WALL_NODE = "lzr_core:wood"
|
||||
local WINDOW_NODE = "lzr_decor:woodframed_glass"
|
||||
local FLOOR_NODE = "lzr_core:wood"
|
||||
local WINDOW_HEIGHT = 3
|
||||
|
@ -47,7 +48,13 @@ local analyze_levels = function()
|
|||
assert(matches ~= nil, "Malformed level_data.csv")
|
||||
local filename = matches[1]
|
||||
local lname = matches[2]
|
||||
table.insert(level_data, {filename=filename, name=lname})
|
||||
local nodes = matches[3]
|
||||
local node_matches = string.split(nodes, "|")
|
||||
local node_wall = node_matches[1]
|
||||
local node_window = node_matches[2] or node_wall
|
||||
local node_floor = node_matches[3] or node_wall
|
||||
local node_ceiling = node_matches[4] or node_wall
|
||||
table.insert(level_data, {filename=filename, name=lname, node_wall=node_wall, node_window=node_window, node_floor=node_floor, node_ceiling=node_ceiling})
|
||||
end
|
||||
lzr_levels.LAST_LEVEL = #level_data
|
||||
|
||||
|
@ -82,6 +89,7 @@ local set_room_nodes = function(param)
|
|||
local posses_border = {}
|
||||
local posses_window = {}
|
||||
local posses_floor = {}
|
||||
local posses_ceiling = {}
|
||||
local size = vector.add(psize, {x=1,y=1,z=1})
|
||||
set_level_size(psize)
|
||||
for x=0,size.x do
|
||||
|
@ -96,6 +104,8 @@ local set_room_nodes = function(param)
|
|||
else
|
||||
if y == 0 then
|
||||
table.insert(posses_floor, vector.add(pos, offset))
|
||||
elseif y == size.y then
|
||||
table.insert(posses_ceiling, vector.add(pos, offset))
|
||||
else
|
||||
table.insert(posses_border, vector.add(pos, offset))
|
||||
end
|
||||
|
@ -104,9 +114,10 @@ local set_room_nodes = function(param)
|
|||
end
|
||||
end
|
||||
end
|
||||
minetest.bulk_set_node(posses_floor, {name=FLOOR_NODE})
|
||||
minetest.bulk_set_node(posses_border, {name=ROOM_NODE})
|
||||
minetest.bulk_set_node(posses_window, {name=WINDOW_NODE})
|
||||
minetest.bulk_set_node(posses_floor, {name=param.nodes.node_floor})
|
||||
minetest.bulk_set_node(posses_border, {name=param.nodes.node_wall})
|
||||
minetest.bulk_set_node(posses_window, {name=param.nodes.node_window})
|
||||
minetest.bulk_set_node(posses_ceiling, {name=param.nodes.node_ceiling})
|
||||
end
|
||||
|
||||
local get_singleplayer = function()
|
||||
|
@ -187,16 +198,30 @@ end
|
|||
-- Either one of these (or none of them for empty room):
|
||||
-- - level: level ID (for builtin level)
|
||||
-- - schematic: Path to schematic
|
||||
-- - nodes: Table containing:
|
||||
-- - node_floor, node_ceiling, node_wall, node_window
|
||||
function lzr_levels.build_room(room_data)
|
||||
prepare_room(room_data)
|
||||
end
|
||||
|
||||
function lzr_levels.prepare_and_build_level(level, spawn_pos, yaw)
|
||||
lzr_levels.build_room({pos=lzr_globals.LEVEL_POS, size=level_data[level].size, level=level, spawn_pos=spawn_pos, yaw=yaw})
|
||||
local nodes = {
|
||||
node_floor = level_data[level].node_floor,
|
||||
node_wall = level_data[level].node_wall,
|
||||
node_ceiling = level_data[level].node_ceiling,
|
||||
node_window = level_data[level].node_window,
|
||||
}
|
||||
lzr_levels.build_room({pos=lzr_globals.LEVEL_POS, size=level_data[level].size, level=level, spawn_pos=spawn_pos, yaw=yaw, nodes=nodes})
|
||||
end
|
||||
|
||||
function lzr_levels.prepare_and_build_custom_level(schematic, spawn_pos, yaw)
|
||||
lzr_levels.build_room({pos=lzr_globals.LEVEL_POS, size=schematic.size, schematic=schematic, spawn_pos=spawn_pos, yaw=yaw})
|
||||
local nodes = {
|
||||
node_floor = FLOOR_NODE,
|
||||
node_wall = WALL_NODE,
|
||||
node_ceiling = CEILING_NODE,
|
||||
node_window = WINDOW_NODE,
|
||||
}
|
||||
lzr_levels.build_room({pos=lzr_globals.LEVEL_POS, size=schematic.size, schematic=schematic, spawn_pos=spawn_pos, yaw=yaw, nodes=nodes})
|
||||
end
|
||||
|
||||
function lzr_levels.build_level_raw(schematic_specifier)
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue