Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Functions
- --Button functions
- function dial()
- button.flash("Dial")
- setButtonGroup("dial")
- local addresses = fs.open("stargate/addresses", "r")
- while addresses.readLine() do
- end
- end
- function add()
- button.flash("Add")
- end
- function connect()
- button.flash("Connect")
- end
- function acceptAddressRequest(recieverID)
- button.flash("Accept")
- rednet.send(recieverID, sgate.localAddress())
- end
- function declineAddressRequest(receiverID)
- button.flash("Decline")
- rednet.send(receiverID, "REQUEST_DECLINE")
- end
- function requestAddress(ID)
- rednet.send(ID, "ADDRESS_REQUEST")
- event, senderID, message, distance = os.pullEvent("rednet_message")
- end
- --Button groups
- function setButtonGroup(group, ...)
- local arg = {...}
- button.remTable("Dial")
- button.remTable("Accept")
- button.remTable("Decline")
- button.remTable("Add")
- button.remTable("Remove")
- button.remTable("Connect")
- button.remTable("<")
- button.remTable(">")
- if group == "addressRequest" then
- button.setTable("Accept", acceptAddressRequest, arg[1], "", false, 6, 13, 6, 8)
- button.setTable("Decline", declineAddressRequest, arg[1], "", false, 16, 24, 6, 8)
- button.heading("Stargate Controller", colors.blue)
- term.redirect(mon)
- paintutils.drawFilledBox(5, 3, 25, 9, colors.yellow)
- term.native()
- button.label(6, 4, "Stargate ID Request", colors.yellow, colors.black)
- mon.setTextColor(colors.white)
- elseif group == "mainMenu" then
- mon.setBackgroundColor(colors.blue)
- mon.clear()
- button.setTable("Dial", dial, "", "", false, 2, 7, 3, 5)
- button.heading("Stargate Controller", colors.blue)
- elseif group == "dial" then
- mon.setBackgroundColor(colors.blue)
- mon.clear()
- term.redirect(mon)
- paintutils.drawFilledBox(0, 10, 30, 12, colors.yellow)
- term.native()
- button.setTable("Add", add, "", "", false, 2, 6, 3, 5)
- button.setTable("Remove", remove, "", "", false, 8, 15, 3, 5)
- button.setTable("Connect", connect, "", "", false, 17, 25, 3, 5)
- button.setTable("<", left, "", "", false, 1, 3, 10, 12)
- button.setTable(">", right, "", "", false, 27, 29, 10, 12)
- --button.setTable("/\\", up, "", "", false, 1, 1, 1, 1)
- --button.setTable("\\/", down, "", false, 1, 1, 1, 1)
- button.heading("Dial", colors.blue)
- end
- button.screen()
- end
- --Listener functions
- local function rednetListen()
- local event, senderID, message, distance = os.pullEvent("rednet_message")
- if message == "ADDRESS_REQUEST" then
- setButtonGroup("addressRequest", senderID)
- while true do
- local event, side, x, y = os.pullEvent("monitor_touch")
- if button.checkxy(x, y) then
- break
- end
- end
- setButtonGroup("mainMenu")
- end
- end
- local function monitorListen()
- event, side, x, y = os.pullEvent("monitor_touch")
- button.checkxy(x, y)
- end
- --Code
- rednet.open("left")
- sgate = peripheral.find("stargate")
- mon = peripheral.find("monitor")
- os.loadAPI("button")
- setButtonGroup("mainMenu")
- while true do
- parallel.waitForAny(rednetListen, monitorListen)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement