Add openperipheral sensor scan stategy
This commit is contained in:
parent
61bef0e040
commit
2de91526be
55
netNav/scanStrategies/openPeripheralSensorStrategy.lua
Normal file
55
netNav/scanStrategies/openPeripheralSensorStrategy.lua
Normal file
@ -0,0 +1,55 @@
|
||||
local function findSensor()
|
||||
for _, side in ipairs({"left", "right"}) do
|
||||
if peripheral.getType(side) == "turtlesensorenvironment" then
|
||||
return side
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function new()
|
||||
return {
|
||||
priority = 10,
|
||||
isAvailable = function()
|
||||
return findSensor() and true
|
||||
end,
|
||||
execute = function(currentPosition, updateSessionMap, updateServerMap)
|
||||
local rawBlockInfo = peripheral.call(findSensor(), "sonicScan")
|
||||
local sortedBlockInfo = aStar.newMap()
|
||||
for _, blockInfo in ipairs(rawBlockInfo) do
|
||||
sortedBlockInfo:set(currPos + vector.new(blockInfo.x, blockInfo.y, blockInfo.z), blockInfo)
|
||||
end
|
||||
local toCheckQueue = {}
|
||||
for _, pos in ipairs(aStar.adjacent(currPos)) do
|
||||
if sortedBlockInfo:get(pos) then
|
||||
table.insert(toCheckQueue, pos)
|
||||
end
|
||||
end
|
||||
while toCheckQueue[1] do
|
||||
local pos = table.remove(toCheckQueue, 1)
|
||||
local blockInfo = sortedBlockInfo:get(pos)
|
||||
if blockInfo.type == "AIR" then
|
||||
for _, pos2 in ipairs(aStar.adjacent(pos)) do
|
||||
local blockInfo2 = sortedBlockInfo:get(pos2)
|
||||
if blockInfo2 and not blockInfo2.checked then
|
||||
table.insert(toCheckQueue, pos2)
|
||||
end
|
||||
end
|
||||
updateSessionMap(pos, false)
|
||||
updateServerMap(pos, false)
|
||||
else
|
||||
updateSessionMap(pos, true)
|
||||
updateServerMap(pos, true)
|
||||
end
|
||||
blockInfo.checked = true
|
||||
end
|
||||
for _, blockInfo in ipairs(rawBlockInfo) do
|
||||
local pos = currPos + vector.new(blockInfo.x, blockInfo.y, blockInfo.z)
|
||||
local blockInfo = sortedBlockInfo:get(pos)
|
||||
if not blockInfo.checked then
|
||||
updateSessionMap(pos, blockInfo.type ~= "AIR")
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user