Advertisement
djgaven588

Base Control

Sep 18th, 2017
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.79 KB | None | 0 0
  1. if fs.exists("button") then
  2.   print("API Installed, Continuing...")
  3.   sleep(1)
  4. else
  5.   print("API Isn't Installed, Downloading...")
  6.   shell.run("pastebin", "get", "XBbMUYNn", "button")
  7.   sleep(1)
  8.   print("API Installed, Rebooting...")
  9.   sleep(3)
  10.   os.reboot()
  11. end
  12. os.loadAPI("button")
  13. m = peripheral.wrap("top")
  14. m.clear()
  15.  
  16. local oreProcessEnabled = false
  17. local powerEnabled = false
  18. local quarryEnabled = false
  19. local reactorEnabled = false
  20.  
  21. --Save data
  22. function saveData()
  23.  
  24.   fs.makeDir("saves")
  25.   local file = fs.open("saves/control","w")
  26.  
  27.   file.writeLine(oreProcessEnabled)
  28.   file.writeLine(powerEnabled)
  29.   file.writeLine(quarryEnabled)
  30.   file.writeLine(reactorEnabled)
  31.  
  32.   file.close()
  33. end
  34.  
  35. --Load data
  36. function loadData()
  37.  
  38.   local file = fs.open("saves/control","r")
  39.  
  40.   local fileData = {}
  41.   local line
  42.  
  43.   repeat
  44.     line = file.readLine()
  45.     table.insert(fileData, line)
  46.   until line == nil
  47.  
  48.   file.close()
  49.  
  50.   oreProcessEnabled = fileData[1]
  51.   powerEnabled = fileData[2]
  52.   quarryEnabled = fileData[3]
  53.   reactorEnabled = fileData[4]
  54. end
  55.  
  56. --Sets the state of redstone for a specific side and color.
  57. function changeEnabled(col,enabled,side)
  58.  
  59.   if enabled == true then
  60.     redstone.setBundledOutput(side,colors.combine(redstone.getBundledOutput(side),col))
  61.   else
  62.     redstone.setBundledOutput(side,colors.subtract(redstone.getBundledOutput(side),col))
  63.   end
  64.  
  65. end
  66.  
  67. --This is the "main" menu
  68. function mainMenu()
  69.  
  70.   m.clear()
  71.   button.clearTable()
  72.   button.setTable("Basement", Basement,false,9,19,3,5)
  73.   button.setTable("Reactor", Reactor,reactorEnabled,21,31,3,5)
  74.   button.screen()
  75.   button.heading("Main Menu")
  76.  
  77. end
  78.  
  79. --This is the "basement" menu.
  80. function basementMenu()
  81.  
  82.   m.clear()
  83.   button.clearTable()
  84.   button.setTable("Ore_Processing", Ore_Processing,oreProcessEnabled,3,19,3,5)
  85.   button.setTable("Power", Power,powerEnabled,21,37,3,5)
  86.   button.setTable("Quarry", Quarry,quarryEnabled,12,28,7,9)
  87.   button.setTable("Back", Back,false,9,31,16,18)
  88.   button.heading("Basement Control")
  89.   button.screen()
  90.   button.setButton("Ore_Processing", oreProcessEnabled)
  91.   button.setButton("Power", powerEnabled)
  92.   button.setButton("Quarry", quarryEnabled)
  93.   setWires()
  94.  
  95. end
  96.  
  97. --If the "Basement" button is pressed.
  98. function Basement()
  99.   print("Basement Menu Opened")
  100.   loadData()
  101.   basementMenu()
  102. end
  103.  
  104. --If the "Ore_Processing" button is pressed.
  105. function Ore_Processing()
  106.  
  107.   oreProcessEnabled = not oreProcessEnabled
  108.   sleep(0.1)
  109.   button.setButton("Ore_Processing", oreProcessEnabled)
  110.   saveData()
  111.   setWires()
  112.  
  113. end
  114.  
  115. --If the "Power" button is pressed.
  116. function Power()
  117.  
  118.   powerEnabled = not powerEnabled
  119.   sleep(0.1)
  120.   button.setButton("Power", powerEnabled)
  121.   saveData()
  122.   setWires()
  123.  
  124. end
  125.  
  126. --If the "Quarry" button is pressed.
  127. function Quarry()
  128.  
  129.   quarryEnabled = not quarryEnabled
  130.   sleep(0.1)
  131.   button.setButton("Quarry", quarryEnabled)
  132.   saveData()
  133.   setWires()
  134.  
  135. end
  136.  
  137. --If the "Back" button is pressed
  138. function Back()
  139.   mainMenu()
  140. end
  141.  
  142. --If the "Reactor" button is clicked.
  143. function Reactor()
  144.  
  145.   reactorEnabled = not reactorEnabled
  146.   sleep(0.1)
  147.   button.setButton("Reactor", reactorEnabled)
  148.   print("Reactor has no function")
  149.   saveData()
  150.   setWires()
  151.  
  152. end
  153.  
  154. function setWires()
  155.   changeEnabled(colors.red,oreProcessEnabled,"back")
  156.   changeEnabled(colors.blue,powerEnabled,"back")
  157.   changeEnabled(colors.white,quarryEnabled,"back")
  158. end
  159.  
  160. --Does stuff with input
  161. function getClick()
  162.   event ,side,x,y = os.pullEvent("monitor_touch")
  163.   button.checkxy(x,y)
  164. end
  165.  
  166. --Start of Program
  167.  
  168. --Make it fancy
  169. term.clear()
  170. term.setCursorPos(1,1)
  171. print("Base Control By: djgaven588")
  172.  
  173. --Load Data
  174. loadData()
  175. setWires()
  176.  
  177. --Go to main menu
  178. mainMenu()
  179.  
  180. --Detect input
  181. while true do
  182.   getClick()
  183. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement