Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --HD & IPJ's KickAss Reactor Control v1.0.0
- -------------------------------------------
- -- Abbreviations
- monitor = peripheral.wrap("monitor_26")
- t1 = peripheral.wrap("BigReactors-Turbine_18")
- t2 = peripheral.wrap("BigReactors-Turbine_24")
- t3 = peripheral.wrap("BigReactors-Turbine_25")
- t4 = peripheral.wrap("BigReactors-Turbine_23")
- t5 = peripheral.wrap("BigReactors-Turbine_19")
- r = peripheral.wrap("back")
- -- Colors
- headingColor = colors.blue
- inert = colors.yellow
- positive = colors.lime
- negative = colors.red
- backgroundColor = colors.gray
- windowColor = colors.black
- -- Rounding
- local function roundPercent(num, idp)
- local mult = 10^(idp or 0)
- return math.floor((num / 1782) * mult + 0.5 / mult)/10
- end
- local function round(num, idp)
- local mult = 10^(idp or 0)
- return math.floor(num * mult + 0.5) / mult
- end
- -- Overview Component Windows
- function drawOverView() --Defines Main GUI
- -- Main window Heading
- monitor.setCursorPos(1,1)
- monitor.setBackgroundColor(backgroundColor)
- monitor.clear()
- monitor.setTextScale(2)
- monitor.setTextColor(positive)
- monitor.write(" HD & IPJ's KickAss Reactor Control")
- -- Windows
- -- Reactor levels display Window
- local reactorDisplay = window.create(monitor, 2, 3, 17, 10)
- reactorDisplay.setBackgroundColor(windowColor)
- reactorDisplay.setVisible(true)
- --heading
- monitor.setCursorPos(2,3)
- monitor.setTextColor(headingColor)
- monitor.write("Reactor")
- -- total rf/t output display window
- local rfOutDisplay = window.create(monitor, 2, 15, 17, 3)
- rfOutDisplay.setBackgroundColor(windowColor)
- rfOutDisplay.setVisible(true)
- --heading
- monitor.setCursorPos(2,15)
- monitor.setTextColor(colors.blue)
- monitor.write("Total Output")
- monitor.setTextColor(positive)
- monitor.setCursorPos(2,17)
- output = round( (t1.getEnergyProducedLastTick()
- +t2.getEnergyProducedLastTick()
- +t3.getEnergyProducedLastTick()
- +t4.getEnergyProducedLastTick()
- +t5.getEnergyProducedLastTick() ) / 1000 , 2)
- monitor.write(output.." kRF/t")
- -- Turbine Window
- local turbineDisplay = window.create(monitor, 21, 3, 13, 15)
- turbineDisplay.setBackgroundColor(windowColor)
- turbineDisplay.setVisible(true)
- --heading
- turbineDisplay.setTextColor(headingColor)
- turbineDisplay.setCursorPos(21,3)
- turbineDisplay.write("Turbine 1")
- turbineDisplay.setCursorPos(21,6)
- turbineDisplay.write("Turbine 2")
- turbineDisplay.setCursorPos(21,9)
- turbineDisplay.write("Turbine 3")
- turbineDisplay.setCursorPos(21,12)
- turbineDisplay.write("Turbine 4")
- turbineDisplay.setCursorPos(21,15)
- turbineDisplay.write("Turbine 5")
- -- Bottom Menu bar Window
- local menuBar = window.create(monitor, 2,19, 34, 2)
- menuBar.setBackgroundColor( windowColor )
- menuBar.setVisible(true)
- end -- end drawMain()
- -- Turns the outputwindows setVisible( false )
- function menuListener()local timeout = os.startTimer(1)
- while true do
- event = {os.pullEvent()}
- if event[1] == "monitor_touch" then
- --handle monitor touches
- reactorDisplay.setVisible(false)
- rfOutDisplay.setVisible(false)
- turbineDisplay.setVisivle(false)
- os.startTimer(1)
- elseif event[1] == "timer" and event[2] == timeout then
- os.startTimer(1)
- end
- end
- end
- -- Reactor Functions `
- -- Reactor Steam
- local function getSteam()
- steam = r.getHotFluidProducedLastTick()
- monitor.setCursorPos(2,5)
- monitor.setTextColor(inert)
- monitor.write("Steam: ")
- if steam < 9500 then
- monitor.setTextColor(negative)
- else
- monitor.setTextColor(positive)
- end
- monitor.write(steam)
- monitor.setTextColor(inert)
- monitor.write(" mB")
- end
- -- Reactor Core Temp
- local function getCoreTemp()
- coreTemp = r.getFuelTemperature()
- monitor.setCursorPos(2,7)
- monitor.setTextColor(inert)
- monitor.write("CoreTemp: "..math.floor(coreTemp).."C")
- getSteam()
- end
- -- Reactor Case Temp
- local function getCaseTemp()
- temp = r.getCasingTemperature()
- monitor.setCursorPos(2,8)
- monitor.setTextColor(inert)
- monitor.write("CaseTemp: "..math.floor(temp).."C")
- getCoreTemp()
- end
- -- Reactor Reactivity
- local function getReactivity()
- reactivity = math.floor(r.getFuelReactivity())
- monitor.setCursorPos(2,10)
- monitor.setTextColor(inert)
- monitor.write("Reactivity: "..reactivity.."%")
- getCaseTemp()
- end
- -- Reactor Fuel Use
- local function getFuelUse()
- fuelUsed = round(r.getFuelConsumedLastTick(),2)
- monitor.setCursorPos(2,11)
- monitor.setTextColor(inert)
- monitor.write("FuelUse: "..fuelUsed.."mB")
- getReactivity()
- end
- -- Turbine Functions
- -- determines text color for speed
- local function turbineSpeedColor(amount)
- if amount < 1750 then
- return negative
- else
- return positive
- end
- end
- -- Turbine Speed
- local function getTurbine()
- drawOverView()
- speed = t1.getRotorSpeed()
- rf = math.floor(t1.getEnergyProducedLastTick())
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,4)
- monitor.write("Speed: ")
- monitor.setTextColor( turbineSpeedColor(speed) )
- monitor.write(roundPercent(speed,3).."%")
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,5)
- monitor.write("RF/t: "..rf)
- speed = t2.getRotorSpeed()
- rf = math.floor(t2.getEnergyProducedLastTick())
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,7)
- monitor.write("Speed: ")
- monitor.setTextColor( turbineSpeedColor(speed) )
- monitor.write(roundPercent(speed,3).."%")
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,8)
- monitor.write("RF/t: "..rf)
- speed = t3.getRotorSpeed()
- rf = math.floor(t3.getEnergyProducedLastTick())
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,10)
- monitor.write("Speed: ")
- monitor.setTextColor( turbineSpeedColor(speed) )
- monitor.write(roundPercent(speed,3).."%")
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,11)
- monitor.write("RF/t: "..rf)
- speed = t4.getRotorSpeed()
- rf = math.floor(t4.getEnergyProducedLastTick())
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,13)
- monitor.write("Speed: ")
- monitor.setTextColor( turbineSpeedColor(speed) )
- monitor.write(roundPercent(speed,3).."%")
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,14)
- monitor.write("RF/t: "..rf)
- speed = t5.getRotorSpeed()
- rf = math.floor(t5.getEnergyProducedLastTick())
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,16)
- monitor.write("Speed: ")
- monitor.setTextColor( turbineSpeedColor(speed) )
- monitor.write(roundPercent(speed,3).."%")
- monitor.setTextColor(inert)
- monitor.setCursorPos(21,17)
- monitor.write("RF/t: "..rf)
- getFuelUse()
- end -- end turbineSpeed
- -- Start Of execution
- -- Draws main overview windows
- drawOverView()
- while true do
- getTurbine()
- menuListener()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement