Refactor spawn position algorithm
parent
61b4ff5983
commit
3fa99f446f
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue