Refactor spawn position algorithm

master
Wuzzy 2022-02-03 18:46:58 +01:00
parent 61b4ff5983
commit 3fa99f446f
1 changed files with 12 additions and 7 deletions

View File

@ -157,16 +157,21 @@ end
function lzr_levels.start_level(level)
current_level = level
local player = get_singleplayer()
local start_pos
local start_pos -- player start position, relative to level
local size = level_data[level].size
if level_data[level].start_pos then
start_pos = vector.add(lzr_globals.LEVEL_POS, level_data[level].start_pos)
start_pos = level_data[level].start_pos
else
-- Fallback
local size = level_data[level].size
start_pos = vector.add(lzr_globals.LEVEL_POS, vector.new(math.floor(size.x/2), -0.5, math.floor(size.z/2)))
-- Fallback start pos
start_pos = vector.new(math.floor(size.x/2), -0.5, math.floor(size.z/2))
end
player:set_pos(start_pos)
player:set_look_horizontal(0)
local spawn_pos = vector.add(lzr_globals.LEVEL_POS, start_pos) -- absolute spawn position
player:set_pos(spawn_pos)
local yaw = 0
if start_pos.z > size.z/2 then
yaw = yaw + math.pi
end
player:set_look_horizontal(yaw)
lzr_levels.prepare_and_build_level(level)
local needs_rotate = level_data[current_level].contains_rotatable_block
reset_inventory(player, needs_rotate)