Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Konfiguration
- local reactorName = "BiggerReactors_Reactor_0"
- local monitorName = "monitor_0"
- local maxEnergy = 10000000 -- Maximaler Energiespeicher (für Prozentanzeige)
- -- Initialisierung
- local monitor = peripheral.wrap(monitorName)
- local reactor = peripheral.wrap(reactorName)
- if not reactor then
- error("Reaktor nicht gefunden! Bitte Peripheral-Namen prüfen.")
- end
- -- Farben und Status
- local autostart = false
- local status = "Aus"
- local toggleReactor = true
- -- Hilfsfunktionen
- local function clearScreen()
- monitor.setBackgroundColor(colors.black)
- monitor.clear()
- monitor.setCursorPos(1, 1)
- end
- local function getReactorData()
- local energyStats = reactor.getEnergyStats()
- local energy = energyStats.energyStored
- local fuel = reactor.getFuelAmount().amount
- local fuelHeat = reactor.getFuelTemperature()
- local casingHeat = reactor.getCasingTemperature()
- local rfPerTick = reactor.getEnergyProducedLastTick()
- local active = reactor.getActive()
- return {
- energy = energy,
- fuel = fuel,
- fuelHeat = fuelHeat,
- casingHeat = casingHeat,
- rfPerTick = rfPerTick,
- active = active
- }
- end
- local function displayHeader()
- monitor.setBackgroundColor(colors.blue)
- monitor.setTextColor(colors.white)
- monitor.setCursorPos(1, 1)
- monitor.write(" Bigger Reactor Monitor ")
- monitor.setCursorPos(25, 1)
- monitor.write(textutils.formatTime(os.time(), true))
- monitor.setBackgroundColor(colors.black)
- monitor.setTextColor(colors.white)
- end
- local function displayStatus(data)
- local percent = math.floor((data.energy / maxEnergy) * 100)
- monitor.setCursorPos(1, 2)
- monitor.write("Autostart: ")
- monitor.setTextColor(autostart and colors.lime or colors.red)
- monitor.write(autostart and "An" or "Aus")
- monitor.setTextColor(colors.white)
- monitor.setCursorPos(1, 3)
- monitor.write("Status: ")
- monitor.setTextColor(data.active and colors.lime or colors.red)
- monitor.write(data.active and "An" or "Aus")
- monitor.setTextColor(colors.white)
- monitor.setCursorPos(1, 4)
- monitor.write("Brennstoff: " .. math.ceil(data.fuel))
- monitor.setCursorPos(1, 5)
- monitor.write("Fuel-Temp : " .. math.ceil(data.fuelHeat))
- monitor.setCursorPos(1, 6)
- monitor.write("CasingTemp: " .. math.ceil(data.casingHeat))
- monitor.setCursorPos(1, 7)
- monitor.write("RF/t : " .. math.ceil(data.rfPerTick))
- monitor.setCursorPos(1, 8)
- monitor.write("Energie : " .. percent .. "%")
- end
- local function handleAutostart(data)
- if not autostart then return end
- if data.energy < (maxEnergy * 0.4) then
- reactor.setActive(true)
- elseif data.energy > (maxEnergy * 0.9) then
- reactor.setActive(false)
- end
- end
- local function runMonitor()
- while true do
- clearScreen()
- local data = getReactorData()
- displayHeader()
- displayStatus(data)
- handleAutostart(data)
- sleep(0.5)
- end
- end
- local function handleTouch()
- while true do
- local event, side, x, y = os.pullEvent("monitor_touch")
- if y == 2 then
- autostart = not autostart
- elseif y == 3 then
- local currentState = reactor.getActive()
- reactor.setActive(not currentState)
- end
- end
- end
- -- Start
- parallel.waitForAny(runMonitor, handleTouch)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement