Files
nova-corp/main.lua
2025-06-14 17:36:55 -04:00

76 lines
2.0 KiB
Lua

local kernel = require("kernel")
reactor = peripheral.find("fissionReactorLogicAdapter")
turbine = peripheral.find("turbineValve")
turbineVent = peripheral.find("turbineVent")
monitor = peripheral.find("monitor")
tempDriver = kernel.addDriver("temperature_driver")
coolantDriver = kernel.addDriver("coolant_driver")
statusDriver = kernel.addDriver("status_driver")
turbineDriver = kernel.addDriver("turbine_driver")
burnRateDriver = kernel.addDriver("burnrate_driver")
local function runMonitors()
while true do
tempDriver.watch()
coolantDriver.watch()
statusDriver.watch()
turbineDriver.watch()
burnRateDriver.watch()
sleep(0.05)
end
end
local function runDisplay()
monitor.clear()
monitor.setTextScale(1)
while true do
monitor.setCursorPos(1, 1)
local drivers = {
{ Label = "Status", driver = statusDriver},
{ Label = "Temperature", driver = tempDriver },
{ Label = "Coolant", driver = coolantDriver },
{ Label = "Turbine", driver = turbineDriver },
{ Label = "Burn Rate", driver = burnRateDriver }
}
for i, item in ipairs(drivers) do
monitor.setCursorPos(1, i)
item.driver.report()
monitor.setCursorPos(1, i + 1)
end
sleep(0.05) -- Update every tenth second
end
end
local function run()
while not reactor do
print("Waiting for reactor signal...")
sleep(1)
end
while not turbine do
print("Waiting for turbine signal...")
sleep(1)
end
while not monitor do
print("Waiting for monitor signal...")
sleep(1)
end
-- Wait for all driver objects to be available
while not (tempDriver and coolantDriver and statusDriver and turbineDriver and burnRateDriver) do
print("Waiting for all drivers to be initialized...")
sleep(1)
end
parallel.waitForAll(runMonitors, runDisplay)
end
return { run = run}