Fix laser shutoff bug

This commit is contained in:
Joachim Stolberg 2021-02-17 20:15:22 +01:00
parent ae4e687363
commit 3aed046eb7
2 changed files with 20 additions and 6 deletions

View File

@ -34,9 +34,12 @@ local function get_positions(pos, mem, dir)
mem.peer_node_pos = pos3
local dist = vector.distance(pos1, pos3)
if dist > GAP_MIN and dist <= GAP_MAX then
return pos1, pos3
return true, pos1, pos3 -- new values
else
return false -- invalid values
end
end
return true -- no new values
end
-- return both both laser entities the pos and length
@ -119,15 +122,15 @@ function techage.renew_laser(pos, force)
end
mem.param2 = mem.param2 or minetest.get_node(pos).param2
local dir = minetest.facedir_to_dir(mem.param2)
local pos1, pos2 = get_positions(pos, mem, dir)
local res, pos1, pos2 = get_positions(pos, mem, dir)
if pos1 then
local size, pos3, pos4 = get_laser_length_and_pos(pos1, pos2, dir)
if size then
add_laser(pos, pos3, pos4, size, mem.param2)
return pos1, pos2
return res, pos1, pos2
end
end
return res
end
-- techage.del_laser(pos)

View File

@ -39,7 +39,7 @@ minetest.register_node("techage:ta4_laser_emitter", {
Cable:prepare_pairing(pos, tube_dir, "")
Cable:after_place_node(pos, {tube_dir})
local pos1, pos2 = techage.renew_laser(pos, true)
local res, pos1, pos2 = techage.renew_laser(pos, true)
if pos1 then
local node = techage.get_node_lvm(pos2)
if node.name == "techage:ta4_laser_receiver" then
@ -57,13 +57,24 @@ minetest.register_node("techage:ta4_laser_emitter", {
end,
on_timer = function(pos, elapsed)
local pos1, pos2 = techage.renew_laser(pos)
local res, pos1, pos2 = techage.renew_laser(pos)
if pos1 then
local node = techage.get_node_lvm(pos2)
if node.name == "techage:ta4_laser_receiver" then
Cable:pairing(pos2, "laser")
Cable:pairing(pos, "laser")
else
local metadata = M(pos):to_table()
Cable:stop_pairing(pos, metadata, "")
local tube_dir = tonumber(metadata.fields.tube_dir or 0)
Cable:after_dig_node(pos, {tube_dir})
end
elseif not res then
techage.del_laser(pos)
local metadata = M(pos):to_table()
Cable:stop_pairing(pos, metadata, "")
local tube_dir = tonumber(metadata.fields.tube_dir or 0)
Cable:after_dig_node(pos, {tube_dir})
end
return true
end,