Advertisement
TheSpicePhantom

stargate-functional-v1.4

Mar 29th, 2020
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.89 KB | None | 0 0
  1. local mon = peripheral.wrap("monitor_1")
  2. local sg = peripheral.wrap("stargate_1")
  3. local buttonTable = {}
  4. local buttonName
  5.  
  6. mon.setBackgroundColor(colors.black)
  7. mon.clear()
  8. term.clear()
  9. term.setCursorPos(1,1)
  10. w,h = mon.getSize()
  11. print("W: "..w , "H: "..h)
  12.  
  13. local function createButton(btnName, PosX, PosY, SizeXadd, SizeY, Address, bkCol)
  14.     buttonTable[btnName] = {}
  15.     buttonTable[btnName]["rectangle"] = {}
  16.     buttonTable[btnName]["PosX"] = PosX
  17.     buttonTable[btnName]["PosY"] = PosY
  18.     buttonTable[btnName]["SizeX"] = string.len(btnName)+SizeXadd
  19.     buttonTable[btnName]["SizeY"] = SizeY
  20.     --buttonTable[btnName]["Name"] = btnName
  21.     buttonTable[btnName]["Address"] = Address
  22.     buttonTable[btnName]["bkCol"] = bkCol
  23.     buttonTable[btnName]["state"] = {}
  24.    
  25. end
  26.  
  27. --createButton(registryName, Xmin, Ymin, 2, Ymax (ideally odd), displayName, stargate, color)
  28. --Dimensions
  29. createButton("Nether", 0,0, 2,3, "PFER-7QN-9R", colors.orange)
  30. createButton("End", 8, 0, 2, 3, "I454-OTE-QX", colors.purple)
  31. --Planets
  32. createButton("Moon", 0, 9, 2, 3,"1FYB-81J-KE", colors.lightGray)
  33. createButton("Mars", 6, 9, 2, 3, "PFS5-21P-6H", colors.orange)
  34. --POIs
  35. createButton("Mesa", 0, 3, 2, 3, "TAGJ-YB8-GC", colors.yellow)
  36. --No touchs
  37. createButton(tostring(sg.localAddress()), 39, 18, 2, 1, "", colors.gray)
  38. createButton("Disconnect", 18, 16, 4, 3, "", colors.gray)
  39. createButton("EARTH", 0,16,2,3, "FFYO-FV6-0R", colors.lime)
  40. --tbd createButton("Iris", 0,18,6,1, "RDJT-5IA-MU", colors.lime)--"RDJT-5IA-MU", colors.lime)
  41. --tbd createButton("WiFi",39, 17, 7,1,"",colors.lime)
  42.  
  43.  
  44. local function drawButton(btnName)
  45.     str = string.len(btnName)
  46.     for y = 1,buttonTable[btnName]["SizeY"] do
  47.         for x = 1, buttonTable[btnName]["SizeX"] do
  48.  
  49.             mon.setBackgroundColor(buttonTable[btnName]["bkCol"])
  50.             mon.setCursorPos(buttonTable[btnName]["PosX"]+x, buttonTable[btnName]["PosY"]+y)
  51.             mon.write(" ")
  52.             buttonTable[btnName]["rectangle"][x..":"..y] = {}
  53.             buttonTable[btnName]["rectangle"][x..":"..y] = buttonTable[btnName]["PosX"]+x ..":"..buttonTable[btnName]["PosY"]+y
  54.             if y == (buttonTable[btnName]["SizeY"]) then
  55.                 textPosiX = buttonTable[btnName]["SizeX"]-str+2
  56.                 textPosX = textPosiX/2
  57.                 if y ~= 1 and y ~= 2 then
  58.                     mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"] + buttonTable[btnName]["SizeY"]-1)--(buttonTable[btnName]["SizeY"]))
  59.                 elseif y == 1 or y == 2 then
  60.                     mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"]+y)
  61.                 end
  62.                 mon.write(btnName)
  63.             end
  64.         end
  65.     end
  66.     sleep(0.1)
  67. end
  68.  
  69. local function drawButtonPress(btnName)
  70.  
  71.         str = string.len(btnName)
  72.         for y = 1,buttonTable[btnName]["SizeY"] do
  73.             for x = 1, buttonTable[btnName]["SizeX"] do
  74.                 --print(x..","..y.." : "..buttonTable[btnName]["PosX"]+x-1)
  75.                 --print(x..","..y.." : "..buttonTable[btnName]["PosY"]+y-1)
  76.                 mon.setBackgroundColor(colors.red)
  77.                 mon.setCursorPos(buttonTable[btnName]["PosX"]+x, buttonTable[btnName]["PosY"]+y)
  78.                 mon.write(" ")
  79.                
  80.                 --mon.setBackgroundColor(colors.gray)
  81.                 if y == buttonTable[btnName]["SizeY"] then
  82.                     textPosiX = buttonTable[btnName]["SizeX"]-str+2
  83.                     textPosX = textPosiX/2
  84.                     if y ~= 1 and y ~= 2 then
  85.                         mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"] + buttonTable[btnName]["SizeY"]-1)--(buttonTable[btnName]["SizeY"]))
  86.                     elseif y == 1 or y == 2 then
  87.                         mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"]+y)
  88.                     end
  89.                     mon.write(btnName)
  90.                 end
  91.             end
  92.         end
  93.     sleep(0.2)
  94. end
  95.  
  96. local function testButtonPress(tPosX, tPosY)
  97.     for k,v in pairs(buttonTable) do
  98.         for a,b in pairs(buttonTable[k]["rectangle"]) do
  99.             if b == tPosX..":"..tPosY then
  100.                 return k
  101.             end
  102.         end
  103.     end
  104. end
  105.  
  106. local function autoDrawBtn()
  107.     for k,v in pairs(buttonTable) do
  108.         drawButton(k)
  109.     end
  110. end
  111.  
  112. local function monitor_touch_event()
  113.     event, side, xPos, yPos = os.pullEvent("monitor_touch")
  114.     if event == "monitor_touch" then
  115.         buttonName = testButtonPress(xPos, yPos)
  116.         print(xPos, yPos)
  117.         if buttonName ~= nil then
  118.             if buttonName == "Disconnect" and buttonTable[buttonName]["Address"] == "" then
  119.                 print("Disconnecting")
  120.                 drawButtonPress(buttonName)
  121.                 drawButton(buttonName)
  122.                 drawButtonPress(buttonName)
  123.                 drawButton(buttonName)
  124.                 drawButtonPress(buttonName)
  125.                 sg.disconnect()
  126.             elseif buttonTable[buttonName]["Address"] ~= "" then
  127.                 drawButtonPress(buttonName)
  128.                 sg.dial(buttonTable[buttonName]["Address"])
  129.                 print(os.time().." | Connecting to: "..buttonName.." @ "..buttonTable[buttonName]["Address"])
  130.             else
  131.                 --drawButton(buttonName)
  132.             end
  133.             drawButton(buttonName)
  134.         end
  135.     end
  136.    
  137. end
  138.  
  139. --called once to set up all buttons
  140. autoDrawBtn()
  141.  
  142. while true do
  143.     mon.setTextColor(colors.white)
  144.     monitor_touch_event()
  145. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement