Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local component = require("component")
- local event = require("event")
- local fs = require("filesystem")
- local keyboard = require("keyboard")
- local shell = require("shell")
- local term = require("term")
- local text = require("text")
- local unicode = require("unicode")
- local sides = require("sides")
- local colors=require("colors")
- local gpu=component.gpu
- local br = component.br_reactor
- local rs = component.redstone
- local maxTemp = 5500
- local tickCnt = 0
- local minCount = 0
- local tickEnergy = 0
- local minEnergy = 0
- local slp = 1
- local rodLevel = br.getControlRodLevel(0)
- local running = true
- local hours = 0
- local mins = 0
- term.clear()
- term.setCursorBlink(false)
- -------------------------------------------------------------------------------
- function getKey()
- return (select(4, event.pull("key_down")))
- end
- local function printXY(row, col, s, ...)
- term.setCursor(col, row)
- print(s:format(...))
- end
- local function gotoXY(row, col)
- term.setCursor(col,row)
- end
- local function center(row, msg)
- local mLen = string.len(msg)
- w, h = gpu.getResolution()
- term.setCursor((w - mLen)/2,row)
- print(msg)
- end
- local function centerF(row, msg, ...)
- local mLen = string.len(msg)
- w, h = gpu.getResolution()
- term.setCursor((w - mLen)/2,row)
- print(msg:format(...))
- end
- local function warning(row, msg)
- local mLen = string.len(msg)
- w, h = gpu.getResolution()
- term.setCursor((w - mLen)/2,row)
- print(msg)
- end
- local controlKeyCombos = {[keyboard.keys.s]=true,[keyboard.keys.w]=true,
- [keyboard.keys.c]=true,[keyboard.keys.x]=true}
- local function onKeyDown(opt)
- if opt == keyboard.keys.left then
- br.setActive(false)
- elseif opt == keyboard.keys.right then
- br.setActive(true)
- elseif opt == keyboard.keys.up then
- if (rodLevel > 0) then
- rodLevel = rodLevel - 10
- br.setAllControlRodLevels(rodLevel)
- end
- elseif opt == keyboard.keys.down then
- if (rodLevel < 100) then
- rodLevel = rodLevel + 10
- br.setAllControlRodLevels(rodLevel)
- end
- elseif opt == keyboard.keys.pageDown then
- br.doEjectWaste()
- elseif opt == keyboard.keys.q then
- running = false
- end
- end
- -------------------------------------------------------------------------------
- while running do
- tickCnt = tickCnt + 1
- if tickCnt == 20 then
- mins = mins + 1
- tickCnt = 0
- end
- if math.fmod(tickCnt,20) == 0 then
- br.doEjectWaste()
- end
- if mins == 60 then
- hours = hours + 1
- mins = 0
- end
- local reactorTemp = br.getCasingTemperature()
- term.setCursor(1,1)
- print(" Item Name: Level: Temperature: Fuel: Max Fuel Waste:")
- printXY(4, 1, " 1: %s %03d %04d %06d %06d %04d",br.getControlRodName(0), br.getControlRodLevel(0), br.getFuelTemperature(0), br.getFuelAmount(0), br.getFuelAmountMax(0), br.getWasteAmount(0))
- printXY(6, 1, " 2: %s %03d %04d %06d %06d %04d",br.getControlRodName(5), br.getControlRodLevel(5), br.getFuelTemperature(5), br.getFuelAmount(5), br.getFuelAmountMax(5), br.getWasteAmount(5))
- printXY(8, 1, " 3: %s %03d %04d %06d %06d %04d",br.getControlRodName(3), br.getControlRodLevel(3), br.getFuelTemperature(3), br.getFuelAmount(3), br.getFuelAmountMax(3), br.getWasteAmount(3))
- printXY(10, 1, " 4: %s %03d %04d %06d %06d %04d",br.getControlRodName(6), br.getControlRodLevel(6), br.getFuelTemperature(6), br.getFuelAmount(6), br.getFuelAmountMax(6), br.getWasteAmount(6))
- printXY(12, 1, " 5: %s %03d %04d %06d %06d %04d",br.getControlRodName(4), br.getControlRodLevel(4), br.getFuelTemperature(4), br.getFuelAmount(4), br.getFuelAmountMax(4), br.getWasteAmount(4))
- printXY(14, 1, " 6: %s %03d %04d %06d %06d %04d",br.getControlRodName(2), br.getControlRodLevel(2), br.getFuelTemperature(2), br.getFuelAmount(2), br.getFuelAmountMax(2), br.getWasteAmount(2))
- printXY(16, 1, " 7: %s %03d %04d %06d %06d %04d",br.getControlRodName(7), br.getControlRodLevel(7), br.getFuelTemperature(7), br.getFuelAmount(7), br.getFuelAmountMax(7), br.getWasteAmount(7))
- printXY(18, 1, " 8: %s %03d %04d %06d %06d %04d",br.getControlRodName(1), br.getControlRodLevel(1), br.getFuelTemperature(1), br.getFuelAmount(1), br.getFuelAmountMax(1), br.getWasteAmount(1))
- printXY(20, 1, " 9: %s %03d %04d %06d %06d %04d",br.getControlRodName(8), br.getControlRodLevel(8), br.getFuelTemperature(8), br.getFuelAmount(8), br.getFuelAmountMax(8), br.getWasteAmount(8))
- printXY(22, 1, " 10: Reactor %03d %04d %06d %06d %04d", br.getControlRodLevel(0), br.getCasingTemperature(), br.getFuelAmount(), br.getFuelAmountMax(), br.getWasteAmount())
- printXY(25, 1, " 11: Energy Stored %06.2f", br.getEnergyStored())
- printXY(26, 1, " 12: Energy Last Tick %06.2f", br.getEnergyProducedLastTick())
- centerF(40, "Data updates every second Tick Count: %2d", tickCnt)
- centerF(41, "Current up time: %2d hours %2d min", hours, mins)
- center(42, "Left - Turn Reactor Off Right - Turn Reactor On")
- center(43, "Up - Pull Rods 10% Down - Lower Rods 10% ")
- center(44, "Page Down - Eject Waste Q - Quit ")
- --center(39, " ")
- if (reactorTemp > maxTemp) then
- term.setCursor(25,30)
- gpu.setForeground(0xFF0000)
- gpu.setBackground(0xFFFFFF)
- warning(30, " ")
- warning(31, " WARNING WARNING WARNING ")
- warning(32, " ")
- warning(33, " Reactor Temperature Too High ")
- warning(34, " ")
- gpu.setForeground(0xFFFFFF)
- gpu.setBackground(0x000000)
- term.setCursor(1,41)
- else
- gpu.setForeground(0xFFFFFF)
- gpu.setBackground(0x000000)
- gotoXY(30,1)
- print()
- gotoXY(31,1)
- print()
- gotoXY(32,1)
- print()
- gotoXY(33,1)
- print()
- gotoXY(34,1)
- print()
- gpu.setForeground(0xFFFFFF)
- gpu.setBackground(0x000000)
- term.setCursor(1,47)
- end
- term.clearLine()
- print()
- local event, address, arg1, arg2, arg3 = event.pull(1)
- if type(address) == "string" and component.isPrimary(address) then
- if event == "key_down" then
- onKeyDown(arg2)
- end
- end
- end
- term.clear()
- term.setCursorBlink(false)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement