Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local reactor = peripheral.wrap("left")
- local monitor = peripheral.wrap("monitor_0")
- function resetMonitor()
- monitor.setTextScale(0.9)
- monitor.setTextColor(colors.purple)
- monitor.setBackgroundColor(colors.white)
- monitor.clear()
- monitor.setCursorPos(1,1)
- end
- function mWrite(text)
- local x, y = monitor.getCursorPos()
- monitor.setCursorPos(1, y + 1)
- monitor.clearLine()
- monitor.write(text)
- end
- function newLine()
- mWrite("")
- end
- function writeReactorTitle()
- local active = reactor.getActive()
- local blitTextColor, blitBackColor, stateText
- resetMonitor()
- monitor.blit(" Reactor Status ", "0000000000000000", "ffffffffffffffff")
- monitor.setCursorPos(17,1)
- if active then
- stateText = " Active "
- blitTextColor = "00000000"
- blitBackColor = "55555555"
- else
- stateText = " Stopped "
- blitTextColor = "000000000"
- blitBackColor = "eeeeeeeee"
- end
- monitor.blit(stateText, blitTextColor, blitBackColor)
- monitor.setCursorPos(1, 3)
- end
- while true do
- local x, y
- local controlRodLevel = reactor.getControlRodLevel(2)
- local energyStored = reactor.getEnergyStored()
- local energyMax = 9840000
- local energyPercent = math.floor((energyStored/energyMax)*100)
- local fuelStored = reactor.getFuelAmount()
- local fuelMax = 288000
- local fuelPercent = math.floor((fuelStored/fuelMax)*100)
- local prodLastTick = math.floor(reactor.getEnergyProducedLastTick())
- local consLastTick = string.sub(tostring(reactor.getFuelConsumedLastTick()), 0, 5)
- local reactivity = math.floor(reactor.getFuelReactivity()/100)
- writeReactorTitle()
- mWrite("Core: " .. math.floor(reactor.getFuelTemperature()*1.8)+32 .. "°F")
- mWrite("Casing: " .. math.floor(reactor.getCasingTemperature()*1.8)+32 .. "°F")
- newLine()
- mWrite("Reactivity: " .. reactivity .. "%")
- newLine()
- mWrite("Control Rod Insertion: " .. controlRodLevel .. "%")
- newLine()
- newLine()
- newLine()
- local oldTerm = term.redirect(monitor)
- local progEnergy = (math.floor((energyStored/energyMax)*30)+1)
- local progFuel = (math.floor((fuelStored/fuelMax)*30)+1)
- x, y = monitor.getCursorPos()
- paintutils.drawFilledBox(2, y, 31, y+2, colors.lightGray)
- paintutils.drawFilledBox(2, y, progEnergy, y+2, colors.green)
- monitor.setCursorPos(3, y+1)
- monitor.write("+" .. prodLastTick/1000 .. "kFE/t")
- monitor.setCursorPos(1, y+5)
- x, y = monitor.getCursorPos()
- paintutils.drawFilledBox(2, y, 31, y+2, colors.lightGray)
- paintutils.drawFilledBox(2, y, progFuel, y+2, colors.yellow)
- monitor.setCursorPos(3, y+1)
- monitor.write("-" .. consLastTick .. "mb/t")
- monitor.setCursorPos(1, y+4)
- term.redirect(oldTerm)
- if energyPercent < 20 then
- reactor.setAllControlRodLevels(0)
- elseif energyPercent < 50 then
- reactor.setAllControlRodLevels(50)
- elseif energyPercent < 70 then
- reactor.setAllControlRodLevels(70)
- elseif energyPercent < 90 then
- reactor.setAllControlRodLevels(90)
- elseif energyPercent > 98 then
- reactor.setAllControlRodLevels(98)
- end
- sleep(1)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement