zootsuitman

Stargate Control 2

Apr 16th, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.27 KB | None | 0 0
  1. interfaceName = "stargate_0"
  2. stargate = peripheral.wrap(interfaceName)
  3.  
  4. term.setBackgroundColor(colors.black)
  5. term.setTextColor(colors.white)
  6.  
  7. local addressFileName = "addresses"
  8.  
  9. local showRow = 0
  10.  
  11. function saveAddresses(addresses)
  12.     local file = fs.open(addressFileName,"w")
  13.     file.write(textutils.serialize(addresses))
  14.     file.close()
  15. end
  16.  
  17. function loadAddresses()
  18.     local file = fs.open(addressFileName,"r")
  19.     local data = file.readAll()
  20.     file.close()
  21.     return textutils.unserialize(data)
  22. end
  23.  
  24. local addresses = loadAddresses()
  25. if addresses == nil then addresses = {} end
  26. local functions = { "Dial", "Add Address", "Edit Address", "Remove Address", "Toggle Iris" }
  27.  
  28. function addAddress(name, address)
  29.     if addresses[name] ~= nil then return false end
  30.     addresses[name] = address
  31.     saveAddresses(addresses)
  32.     return true
  33. end
  34.  
  35. function removeAddress(name)
  36.     if addresses[name] ~= nil then
  37.         addresses[name] = nil
  38.     end
  39.     saveAddresses(addresses)
  40. end
  41.  
  42. function drawBg(file)
  43.     term.clear()
  44.  
  45.     local bg = paintutils.loadImage(file)
  46.     paintutils.drawImage(bg, 1, 1)
  47.  
  48.     term.setCursorPos(1,1)
  49.     term.write("Fort Dusk Stargate Control")
  50. end
  51.  
  52. function drawMenu()
  53.     drawBg("bg.nfp")
  54.     local options = { "Dial", "Edit Addresses", "Toggle Iris" }
  55.    
  56.     local buttonWidth = 16
  57.     for i = 1, 3, 1 do
  58.         term.setCursorPos(20 + (buttonWidth / 2 - #options[i] / 2), 7 + ((i - 1) * 4))
  59.         term.write(options[i])
  60.     end
  61. end
  62.  
  63. function drawButton(column1, row)
  64.     local x = if column1 then 6 else 30 end
  65.     local y = 4 + ((row - 1) * 3)
  66.     paintutils.drawPixel(x, y, 5)
  67.     paintutils.drawPixel(x + 1, y, 8)
  68.     paintutils.drawPixel(x + 2, y, 8)
  69.  
  70.     term.setCursorPos(x + 4, y)
  71. end
  72.  
  73. function getAddressNames()
  74.     local names = {}
  75.     for name, _ in pairs(addresses) do
  76.         table.insert(names, name)
  77.     end
  78.  
  79.     return names
  80. end
  81.  
  82. local maxAddress = 5
  83. function drawSelectMenu()
  84.     drawBg("address.nfp")
  85.  
  86.     local names = getAddressNames()
  87.  
  88.     -- Up and down
  89.     term.setCursorPos(3,3)
  90.     term.write('^')
  91.     term.setCursorPos(3,18)
  92.     term.write('v')
  93.  
  94.     -- Back button
  95.     term.setCursorPos(42, 2)
  96.     term.write(< Back)
  97.  
  98.     local column1 = true
  99.     for i = 1 + (2 * showRow), #names, 1, do
  100.         drawButton(column1, math.floor((i - (2 * showRow)) / 2))
  101.         term.write(names[i])
  102.         column1 = not column1
  103.     end
  104. end
  105.  
  106. drawSelectMenu()
Advertisement
Add Comment
Please, Sign In to add comment