CCCPaste

CC reactor monitor script

-- reactor_monitor.lua
-- Attach modem to "back" (or change side)
-- Attach monitor to "right" (or change side)

local modemSide = "back"
local monitorSide = "right"
local channel = "reactorFuel"

local mon = peripheral.wrap(monitorSide)
if not mon then
  error("No monitor on " .. monitorSide)
end

rednet.open(modemSide)
mon.setTextScale(1)

local function drawBar(fuel)
  local w, h = mon.getSize()
  local barWidth = math.floor(fuel * w)

  -- Clear
  mon.setBackgroundColor(colors.black)
  mon.clear()

  -- Fuel bar
  for x = 1, barWidth do
    local color
    if fuel > 0.5 then
      color = colors.green
    elseif fuel > 0.25 then
      color = colors.orange
    else
      color = colors.red
    end
    mon.setBackgroundColor(color)
    mon.setCursorPos(x, h // 2)
    mon.write(" ")
  end

  -- Text overlay
  mon.setBackgroundColor(colors.black)
  mon.setCursorPos(1, h)
  mon.write("Fuel: " .. math.floor(fuel * 100) .. "%")
end

while true do
  local id, fuel, proto = rednet.receive(channel)
  if fuel then
    drawBar(fuel)
  end
end