InfOS/Programs/biovat.lua
Gabriel Moreira Minossi a3dd881119 Formatting files
2020-12-19 16:24:16 -03:00

61 lines
2.0 KiB
Lua

local comp = require("component")
local event = require("event")
local screen = require("term")
local computer = require("computer")
local transposers = {}
function configureTransposers()
for address, type in pairs(comp.list()) do
if type == "transposer" then
local transposer = comp.proxy(comp.get(address))
local foundTanks = {}
for side = 0, 5, 1 do
if transposer.getTankCapacity(side) > 0 then
foundTanks[#foundTanks + 1] = {side = side, capacity = transposer.getTankCapacity(side)}
end
end
if #foundTanks == 2 then
if foundTanks[1].capacity > foundTanks[2].capacity then
transposers[address] = {source = foundTanks[2].side, sink = foundTanks[1].side}
else
transposers[address] = {source = foundTanks[1].side, sink = foundTanks[2].side}
end
else
screen.write("Some transposers have more than two tanks! FIX IT!\n")
end
end
end
screen.write("Found " .. countTransposers() .. " output hatches to keep at 50%\n")
end
function countTransposers()
local count = 0
for address, type in pairs(comp.list()) do
if type == "transposer" then
count = count + 1
end
end
return count
end
function tick()
for address, sides in pairs(transposers) do
local transposer = comp.proxy(comp.get(address))
local sourceCurrent, sourceMax = transposer.getTankLevel(sides.source), transposer.getTankCapacity(sides.source)
if sourceCurrent / sourceMax > 0.5 then
local fluidToRemove = sourceCurrent - sourceMax / 2
transposer.transferFluid(sides.source, sides.sink, fluidToRemove)
end
end
end
configureTransposers()
local count = countTransposers()
local tempCount = 0
while true do
tempCount = countTransposers()
if count ~= tempCount then
configureTransposers()
end
count = tempCount
tick()
os.sleep()
end