Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local server_channel = 23
- local client_channel = 43
- local modules = peripheral.find("neuralInterface")
- if not modules then error("Must have a neural interface", 0) end
- if not modules.hasModule("plethora:glasses") then error("The overlay glasses are missing", 0) end
- local canvas = modules.canvas()
- canvas.clear()
- local modem = peripheral.find("modem")
- if not modem then
- print("No modem")
- return
- end
- modem.open(client_channel)
- modem.open(server_channel)
- -- GUI
- local main_group = canvas.addGroup({5, 50})
- local background = main_group.addRectangle(0, 0, 100, 50, 0x00000080)
- local title = main_group.addText({x = 5, y = 5}, "Reactor Stats", 0xFFFFFFFF, 0.6)
- local title_background = main_group.addRectangle(0, 0, 100, 13, 0x00009080)
- local efficiency_text = main_group.addText({x = 5, y = 15}, "Efficiency: N/A", 0xFFFFFFFF, 0.6)
- local energy_change_text = main_group.addText({x = 5, y = 23}, "Energy Change: N/A", 0xFFFFFFFF, 0.6)
- local process_power_text = main_group.addText({x = 5, y = 31}, "Process Power: N/A", 0xFFFFFFFF, 0.6)
- -- Events
- local reactor_events = {
- ["efficiency"] = function(efficiency)
- efficiency_text.setText("Efficiency: " .. efficiency)
- end;
- ["energy_change"] = function(change)
- energy_change_text.setText("Energy Change: " .. change)
- end;
- ["process_power"] = function(power)
- process_power_text.setText("Process Power: " .. power)
- end;
- }
- local events = {
- ["reactor"] = function(subevent, ...)
- local handler = reactor_events[subevent]
- if handler then
- handler(...)
- else
- print("No subevent '" .. subevent .. "'")
- end
- end;
- }
- local function process_message(message)
- if message:sub(1, ("event:"):len()) ~= "event:" then return end
- message = message:sub(("event:"):len() + 1)
- local args = {}
- for arg in message:gmatch("[^:]+") do
- table.insert(args ,arg)
- end
- local event = args[1]
- table.remove(args, 1)
- local handler = events[event]
- if handler then
- handler(table.unpack(args))
- else
- print("No event '" .. event .. "'")
- end
- end
- local function request(message, no_response)
- modem.transmit(server_channel, client_channel, message)
- if not no_response then
- while true do
- local event, side, channel, reply, message, distance = os.pullEvent("modem_message")
- if channel == client_channel then
- if message:sub(1, ("response:"):len()) == "response:" then
- return message:sub(("response:"):len() + 1)
- end
- end
- end
- end
- end
- while true do
- local event, side, channel, reply, message, distance = os.pullEventRaw()
- if event == "modem_message" then
- if channel == client_channel then
- process_message(message)
- end
- elseif event == "terminate" then
- break
- elseif event == "chat_message" then
- local player, message = side, channel
- if message == "!disable" then
- request("reactor:disable", true)
- elseif message == "!enable" then
- request("reactor:enable", true)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement