Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Input Signals:
- -- control
- -- comparator
- -- Output Signals:
- -- reactor: control and (comparator < threshold)
- local signal_comparator = "top"
- local signal_control = "right"
- local signal_reactor = "front"
- local signal_reactor_local = "left"
- local monitor = peripheral.wrap("back")
- local threshold = 12
- local current_reactor_signal = false
- local last_read_comparator_level = 0
- local function update()
- local comparator = redstone.getAnalogInput(signal_comparator)
- local control = redstone.getInput(signal_control)
- local reactor = control and (comparator < 12)
- redstone.setOutput(signal_reactor, reactor)
- redstone.setOutput(signal_reactor_local, reactor)
- current_reactor_signal = reactor
- last_read_comparator_level = comparator
- end
- local function drawBox(x, y, width, height, color)
- monitor.setBackgroundColor(color)
- for i = x, x + width do
- for j = y, y + height do
- monitor.setCursorPos(i, j)
- monitor.write(" ")
- end
- end
- monitor.setBackgroundColor(colors.black)
- end
- local function render()
- local width, height = monitor.getSize()
- monitor.clear()
- monitor.setTextScale(2)
- monitor.setCursorPos(1, 1)
- monitor.write("Reactor Buffer State:")
- monitor.setTextScale(1)
- local bar_x = 1
- local bar_y = 5
- local bar_width = width - 2
- local inner_width = bar_width - 2
- local bar_height = height - 6
- local inner_height = bar_height - 2
- drawBox(bar_x, bar_y, bar_width, bar_height, colors.yellow)
- local fill_percent = last_read_comparator_level / 15
- local fill_level = math.floor(inner_width * fill_percent)
- drawBox(bar_x + 1, bar_y + 1, fill_level, inner_height, colors.red)
- end
- local function run()
- update()
- render()
- while true do
- if redstone.getAnalogInput(signal_comparator) ~= last_read_comparator_level then
- update()
- render()
- end
- os.sleep(2)
- end
- end
- run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement