Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local chat = peripheral.wrap("top")
- local mon = peripheral.wrap("monitor_0")
- local sg = peripheral.wrap("stargate_0")
- local buttonTable = {}
- local buttonName
- mon.setBackgroundColor(colors.black)
- mon.clear()
- chat.capture("^SG")
- function catchEntry()
- local _, message, pattern, player, uuid = os.pullEvent("chat_capture")
- if pattern == "^SG" then
- cutSG = string.gsub(message, "SG", "")
- chat.tell("[Stargate] Starting 'Stargate Protocol'!")
- end
- end
- function createButton(btnName, PosX, PosY, SizeX, SizeY, Name, Address, bkCol)
- buttonTable[btnName] = {}
- buttonTable[btnName]["rectangle"] = {}
- buttonTable[btnName]["PosX"] = PosX
- buttonTable[btnName]["PosY"] = PosY
- buttonTable[btnName]["SizeX"] = SizeX
- buttonTable[btnName]["SizeY"] = SizeY
- buttonTable[btnName]["Name"] = Name
- buttonTable[btnName]["Address"] = Address
- buttonTable[btnName]["bkCol"] = bkCol
- end
- local function drawButton(btnName)
- i = 1
- str = string.len(buttonTable[btnName]["Name"])
- for y = 1,buttonTable[btnName]["SizeY"] do
- for x = 1, buttonTable[btnName]["SizeX"] do
- --print(x..","..y.." : "..buttonTable[btnName]["PosX"]+x-1)
- --print(x..","..y.." : "..buttonTable[btnName]["PosY"]+y-1)
- mon.setBackgroundColor(buttonTable[btnName]["bkCol"])
- mon.setCursorPos(buttonTable[btnName]["PosX"]+x-1, buttonTable[btnName]["PosY"]+y-1)
- mon.write(" ")
- --mon.setBackgroundColor(colors.gray)
- buttonTable[btnName]["rectangle"][x..":"..y] = {}
- buttonTable[btnName]["rectangle"][x..":"..y] = buttonTable[btnName]["PosX"]+x-1 ..":"..buttonTable[btnName]["PosY"]+y-1
- if y == buttonTable[btnName]["SizeY"] then
- textPosiX = buttonTable[btnName]["SizeX"]-str
- textPosX = textPosiX/2
- if y ~= 1 and y ~= 2 then
- mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"]+y/(buttonTable[btnName]["SizeY"]))
- elseif y == 1 or y == 2 then
- mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"])
- end
- mon.write(buttonTable[btnName]["Name"])
- end
- i = i+1
- end
- end
- --print(str)
- end
- local function drawButtonPress(btnName)
- if btnName ~= nil then
- str = string.len(buttonTable[btnName]["Name"])
- for y = 1,buttonTable[btnName]["SizeY"] do
- for x = 1, buttonTable[btnName]["SizeX"] do
- --print(x..","..y.." : "..buttonTable[btnName]["PosX"]+x-1)
- --print(x..","..y.." : "..buttonTable[btnName]["PosY"]+y-1)
- mon.setBackgroundColor(colors.red)
- mon.setCursorPos(buttonTable[btnName]["PosX"]+x-1, buttonTable[btnName]["PosY"]+y-1)
- mon.write(" ")
- --mon.setBackgroundColor(colors.gray)
- if y == buttonTable[btnName]["SizeY"] then
- textPosiX = buttonTable[btnName]["SizeX"]-str
- textPosX = textPosiX/2
- if y ~= 1 and y ~= 2 then
- mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, math.floor(buttonTable[btnName]["PosY"]+y/buttonTable[btnName]["SizeY"]))
- elseif y == 1 or y == 2 then
- mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"])
- end
- mon.write(buttonTable[btnName]["Name"])
- end
- i = i+1
- end
- end
- else
- print("Looks like the button you requested is not available")
- end
- end
- local function testButtonPress(tPosX, tPosY)
- for k,v in pairs(buttonTable) do
- for a,b in pairs(buttonTable[k]["rectangle"]) do
- if b == tPosX..":"..tPosY then
- return k
- end
- end
- end
- end
- --createButton(registryName, Xmin, Ymin, Xmax, Ymax, displayName, stargate, color)
- createButton("Nether", 1,1,10,2, "Nether", "PFER-7QN-9R", colors.orange)
- createButton("Moon", 1,11,10,3,"Moon", "1FYB-81J-KE", colors.lightGray)
- createButton("End", 11,1,10,2,"End", "I454-OTE-QX", colors.purple)
- createButton("Mesa", 1,3,10,1,"Mesa", "TAGJ-YB8-GC", colors.yellow)
- createButton("Mars", 11,11,10,3, "Mars", "PFS5-21P-6H", colors.orange)
- createButton("disconnect", 1, 17, 39,1, "Disconnect", "", colors.gray)
- createButton("iris", 1,18,39,1, "", "", colors.lime)
- createButton("status", 1,19,39,1, "","",colors.lime)
- local function autoDrawBtn()
- for k,v in pairs(buttonTable) do
- drawButton(k)
- end
- end
- local function monitor_touch_event()
- event, side, xPos, yPos = os.pullEvent("monitor_touch")
- if event == "monitor_touch" then
- buttonName = testButtonPress(xPos, yPos)
- drawButtonPress(buttonName)
- print(xPos, yPos)
- if buttonName == "disconnect" then
- print("Disconnecting")
- sg.disconnect()
- sleep(1)
- autoDrawBtn()
- elseif buttonName ~= nil then
- sg.dial(buttonTable[buttonName]["Address"])
- sleep(1)
- autoDrawBtn()
- end
- end
- end
- autoDrawBtn()
- while true do
- monitor_touch_event()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement