Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local reactor = peripheral.wrap("back")
- local monitor = peripheral.wrap("monitor_0")
- if reactor == nil then
- error("No reactor found")
- end
- if monitor == nil then
- error("No monitor found")
- end
- local energyStored = 0
- local energyProduced = 0
- local energyCapacity = 0
- local fillPercentage = 0
- local controlRodLevel = 0
- -- CONSTANTS
- local BT_X = 2
- local BT_Y = 2
- local CR_X = 10
- local CR_Y = 2
- local WIN_HEIGHT = 25
- local WIN_WIDTH = 5
- -- Initialize Battery Window
- local batteryWindowBG = window.create(monitor, BT_X, BT_Y, WIN_WIDTH, WIN_HEIGHT, true)
- local batteryWindowFG = window.create(monitor, BT_X, BT_Y, WIN_WIDTH, WIN_HEIGHT/2, true)
- batteryWindowBG.setBackgroundColor(colours.red)
- batteryWindowBG.clear()
- batteryWindowBG.redraw()
- batteryWindowFG.setBackgroundColor(colours.green)
- batteryWindowFG.clear()
- batteryWindowFG.redraw()
- -- Initialize Controll Rod Window
- local cRodWindowBG = window.create(monitor, CR_X, CR_Y, WIN_WIDTH, WIN_HEIGHT, true)
- local cRodWindowFG = window.create(monitor, CR_X, CR_Y, WIN_WIDTH, WIN_HEIGHT/2, true)
- cRodWindowBG.setBackgroundColor(colours.grey)
- cRodWindowBG.clear()
- cRodWindowBG.redraw()
- cRodWindowFG.setBackgroundColor(colours.yellow)
- cRodWindowFG.clear()
- cRodWindowFG.redraw()
- local function round(num, numDecimalPlaces)
- local mult = 10^(numDecimalPlaces or 2)
- return math.floor(num * mult + 0.5) / mult
- end
- local function getAvgControlRodLevel()
- local levelTotal = 0
- for i=1, reactor.getNumberOfControlRods()-1 do
- levelTotal = levelTotal + reactor.getControlRodLevel(i)
- end
- local avglvl = levelTotal / reactor.getNumberOfControlRods()
- return avglvl
- end
- local function UpdateReactorStats()
- local stats = reactor.getEnergyStats()
- energyStored = stats["energyStored"]
- energyProduced = stats["energyProducedLastTick"]
- energyCapacity = stats["energyCapacity"]
- controlRodLevel = getAvgControlRodLevel()
- if energyStored == 0 then
- fillPercentage = 0
- else
- fillPercentage = energyStored / energyCapacity * 100
- end
- end
- local function ClearScreen()
- term.setBackgroundColor(colours.black)
- term.clear()
- term.setCursorPos(1,1)
- end
- local function ClearMonitor()
- monitor.setBackgroundColor(colours.black)
- monitor.clear()
- monitor.setCursorPos(1,1)
- end
- local function UpdateMonitorStats()
- batteryWindowFG.reposition(BT_X, BT_Y, WIN_WIDTH, fillPercentage/10)
- batteryWindowBG.redraw()
- batteryWindowFG.redraw()
- cRodWindowFG.reposition(CR_X, CR_Y, WIN_WIDTH, controlRodLevel/10)
- cRodWindowBG.redraw()
- cRodWindowFG.redraw()
- end
- ClearScreen()
- ClearMonitor()
- UpdateReactorStats()
- while true do
- os.sleep(0.1)
- UpdateReactorStats()
- ClearScreen()
- ClearMonitor()
- UpdateMonitorStats()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement