Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local rodLevels = 0
- reactor = peripheral.wrap("back")
- local numRods = reactor.getNumberOfControlRods()
- barGraph = peripheral.wrap("top")
- x,y = barGraph.getSize()
- function drawGraph()
- while true do
- while not fs.exists("graph.dat") do
- sleep(.05)
- end
- dataFile = fs.open("graph.dat", "r")
- percentValue = tonumber(dataFile.readLine())
- dataFile.close()
- print("drawGraph:"..percentValue)
- barGraph.clear()
- for j = y,1,-1 do
- barGraph.setCursorPos(1,j)
- if ( y-j ) * ( y/100 ) <= percentValue then
- barGraph.setBackgroundColour(colors.green)
- else
- barGraph.setBackgroundColour(colors.black)
- end
- barGraph.write(string.rep(" ",x))
- end
- sleep(2)
- end
- end
- --backgroundGraphing = coroutine.create(drawGraph)
- --coroutine.resume(backgroundGraphing)
- local storageArray = {}
- for i = 0,19 do
- storageArray[i] = peripheral.wrap("cofh_thermalexpansion_energycell_"..i)
- end
- function setRods()
- for i = 0, numRods - 1 do
- reactor.setControlRodLevel(i,math.max( math.min( rodLevels - ( 100 * i ), 100 ) , 0 ) )
- end
- end
- powerUsed = 0
- function getEnergyPercent()
- storageMax = 0
- storageTotal = 0
- for i,storageCell in pairs(storageArray) do
- storageTotal = storageTotal + storageCell.getEnergyStored("top")
- storageMax = storageMax + storageCell.getMaxEnergyStored("top")
- end
- fs.delete("graph.dat")
- dataFile = fs.open("graph.dat","w")
- dataFile.write(tostring(storageTotal / storageMax * 100))
- dataFile.close()
- print("Power Stored:"..tostring(storageTotal / storageMax * 100))
- return storageTotal / storageMax * 100
- end
- function getEnergy()
- storageTotal = 0
- for i,storageCell in pairs(storageArray) do
- storageTotal = storageTotal + storageCell.getEnergyStored("top")
- end
- return storageTotal
- end
- print("Starting reactor and collecting baselines")
- reactor.setActive(true)
- rodLevels = 0
- setRods()
- local maxOutput = 0
- while true do
- if maxOutput + maxOutput / 20 < reactor.getEnergyProducedLastTick() then
- maxOutput = reactor.getEnergyProducedLastTick()
- else
- break
- end
- sleep(1)
- end
- rodLevels = 100 * numRods
- setRods()
- print("Max Output:"..maxOutput)
- while true do
- lastPower = getEnergy()
- sleep(1)
- print("Power Delta:"..getEnergy() - lastPower)
- print("Power Generated:"..reactor.getEnergyProducedLastTick())
- powerUsed = math.abs( math.min( ( getEnergy() - lastPower ) - reactor.getEnergyProducedLastTick() ) , 0 )
- rodLevels = math.floor( ( 100 - ( ( powerUsed / maxOutput ) * 100 ) ) * numRods )
- if getEnergyPercent() > 40 then
- rodLevels = numRods * 100
- end
- if reactor.getEnergyStored() > 9000000 then
- reactor.setActive(false)
- else
- reactor.setActive(true)
- end
- print("Rod Levels: "..rodLevels)
- print("Power Generated:"..reactor.getEnergyProducedLastTick())
- print("Power Used:"..powerUsed)
- setRods()
- --coroutine.resume(backgroundGraphing)
- sleep(1)
- end
Advertisement
Add Comment
Please, Sign In to add comment