some improvement if nodes not loaded
This commit is contained in:
parent
3b8f629d0f
commit
c7620656ab
34
elevator.lua
34
elevator.lua
@ -364,24 +364,30 @@ minetest.register_node("hyperloop:elevator_bottom", {
|
|||||||
end
|
end
|
||||||
-- store the floor name in the global elevator list
|
-- store the floor name in the global elevator list
|
||||||
local floor_pos = get_floor_pos(pos)
|
local floor_pos = get_floor_pos(pos)
|
||||||
add_to_elevator_list(floor_pos, {name=floor})
|
if floor_pos ~= nil then
|
||||||
hyperloop.update_elevator(floor_pos)
|
add_to_elevator_list(floor_pos, {name=floor})
|
||||||
|
hyperloop.update_elevator(floor_pos)
|
||||||
|
end
|
||||||
-- destination selected?
|
-- destination selected?
|
||||||
elseif fields.button ~= nil then
|
elseif fields.button ~= nil then
|
||||||
local floor = get_floor_item(get_floor_pos(pos))
|
local floor = get_floor_item(get_floor_pos(pos))
|
||||||
local idx = tonumber(fields.button)
|
if floor then
|
||||||
local list = floor_list(floor.pos)
|
local idx = tonumber(fields.button)
|
||||||
local dest = list[#list-idx]
|
local list = floor_list(floor.pos)
|
||||||
local dist = math.abs(dest.pos.y - floor.pos.y)
|
local dest = list[#list-idx]
|
||||||
|
if dest and dest.pos and floor.pos then
|
||||||
|
local dist = math.abs(dest.pos.y - floor.pos.y)
|
||||||
|
|
||||||
if dist ~= 0 and floor.busy ~= true then
|
if dist ~= 0 and floor.busy ~= true then
|
||||||
-- due to the missing display, a trip needś 20 sec maximum
|
-- due to the missing display, a trip needś 20 sec maximum
|
||||||
local seconds = math.min(1 + math.floor(dist/30), 20)
|
local seconds = math.min(1 + math.floor(dist/30), 20)
|
||||||
floor.busy = true
|
floor.busy = true
|
||||||
minetest.forceload_block(dest.pos)
|
minetest.forceload_block(dest.pos)
|
||||||
door_command(floor.pos, floor.facedir, "close", true)
|
door_command(floor.pos, floor.facedir, "close", true)
|
||||||
door_command(dest.pos, dest.facedir, "close", true)
|
door_command(dest.pos, dest.facedir, "close", true)
|
||||||
minetest.after(1.0, on_travel, floor, dest, player, seconds)
|
minetest.after(1.0, on_travel, floor, dest, player, seconds)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user