Advertisement
SuPeRMiNoR3

ComputerCraft: Perif

Jul 25th, 2013
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.11 KB | None | 0 0
  1. bridge = peripheral.wrap("left")
  2. net = peripheral.wrap("back")
  3. width = 120
  4. shutting = false
  5. ready = false
  6. restarting = false
  7.  
  8. storageUnits = {
  9.    {
  10.          ["id"] = "virtual",
  11.          ["name"] = "All Power (Test)",
  12.      ["type"] = "all_power",
  13.      
  14.    },
  15.    {
  16.          ["id"] = "batbox_11",
  17.          ["name"] = "Power One:",
  18.      ["type"] = "power",
  19.    },
  20.    {
  21.          ["id"] = "batbox_12",
  22.          ["name"] = "Power Two:",
  23.      ["type"] = "power",
  24.    },
  25.    {
  26.          ["id"] = "batbox_13",
  27.          ["name"] = "Power Three:",
  28.      ["type"] = "power",
  29.    },
  30.     {
  31.          ["id"] = "batbox_14",
  32.          ["name"] = "Power One:",
  33.      ["type"] = "power",
  34.    },
  35.    {
  36.          ["id"] = "batbox_15",
  37.          ["name"] = "Power Two:",
  38.      ["type"] = "power",
  39.    },
  40.    {
  41.          ["id"] = "batbox_16",
  42.          ["name"] = "Power Three:",
  43.      ["type"] = "power",
  44.    },
  45.    {
  46.          ["id"] = "LogisticsPowerJunction_2",
  47.          ["name"] = "Logistics Pipes Backup",
  48.      ["type"] = "log_power",
  49.      
  50.    },
  51.    {
  52.          ["id"] = "me_controller_4",
  53.          ["name"] = "ME/AE Total Storage",
  54.      ["type"] = "me_storage",
  55.    
  56.    },
  57.      
  58. }
  59.  
  60. gColors = {}
  61. gColors.red = 0xff3333
  62. gColors.blue = 0x7dd2e4
  63. gColors.yellow = 0xffff4d
  64. gColors.green = 0x4dff4d
  65. gColors.gray = 0xe0e0e0
  66. gColors.textGray = 0x818181
  67. gColors.text = 0x5a5a5a
  68. gColors.rain = 0x2e679f
  69. gColors.plain = 0x000000
  70. gColors.black = 0x000000
  71.  
  72. function shutdown(name)
  73. if name == "controller" then
  74. shutting = true
  75. end
  76. if name == "glasses" then
  77. ready = true
  78. end
  79. if name == "get" then
  80. return shutting
  81. end
  82. if name == "restart" then
  83. restarting = true
  84. shutting = true
  85. end
  86.  
  87. if shutting == true then
  88. if restarting == true then
  89. if ready == true then
  90. os.reboot()
  91. end
  92. end
  93. if ready == true then
  94. os.shutdown()
  95. end
  96. end
  97. end
  98.  
  99. function glass()
  100. --Init Area
  101. bridge.clear()
  102. offset = 1
  103. startup = bridge.addText(4, 4, "System Starting Up...", gColors.red)
  104. for key, storageUnit in pairs(storageUnits) do
  105. --[[
  106. if storageUnit.type == "power" then
  107.   pxOffset = offset * 20
  108.   storageUnit["label"] = bridge.addText(4, 4 + pxOffset, storageUnit["name"], gColors.yellow)
  109.   storageUnit["bar"] = bridge.addBox(4, 14 + pxOffset, 0, 5, gColors.red, 0.9)
  110.   storageUnit["bar"].setZIndex(2)
  111.   storageUnit["bg"] = bridge.addBox(4, 14 + pxOffset, width, 5, gColors.plain, 0.5)
  112. offset = offset + 1
  113. end
  114. ]]--
  115. if storageUnit.type == "me_storage" then
  116.   pxOffset = offset * 20
  117.   storageUnit["label"] = bridge.addText(4, 4 + pxOffset, storageUnit["name"], gColors.yellow)
  118.   storageUnit["bar"] = bridge.addBox(4, 14 + pxOffset, 0, 5, gColors.red, 0.9)
  119.   storageUnit["bar"].setZIndex(2)
  120.   storageUnit["bg"] = bridge.addBox(4, 14 + pxOffset, width, 5, gColors.plain, 0.5)  
  121. offset = offset + 1
  122. end
  123. if storageUnit.type == "log_power" then
  124.   pxOffset = offset * 20
  125.   storageUnit["label"] = bridge.addText(4, 4 + pxOffset, storageUnit["name"], gColors.yellow)
  126.   storageUnit["bar"] = bridge.addBox(4, 14 + pxOffset, 0, 5, gColors.red, 0.9)
  127.   storageUnit["bar"].setZIndex(2)
  128.   storageUnit["bg"] = bridge.addBox(4, 14 + pxOffset, width, 5, gColors.plain, 0.5)  
  129. offset = offset + 1
  130. end
  131. if storageUnit.type == "all_power" then
  132.   pxOffset = offset * 20
  133.   storageUnit["label"] = bridge.addText(4, 4 + pxOffset, storageUnit["name"], gColors.yellow)
  134.   storageUnit["bar"] = bridge.addBox(4, 14 + pxOffset, 0, 5, gColors.red, 0.9)
  135.   storageUnit["bar"].setZIndex(2)
  136.   storageUnit["bg"] = bridge.addBox(4, 14 + pxOffset, width, 5, gColors.plain, 0.5)
  137. offset = offset + 1
  138. end
  139. end
  140. sleep(0.5)
  141.  
  142.  
  143. sleep(1)
  144. startup.delete()
  145. startup = bridge.addText(4, 4, "System Ready.", gColors.green)
  146. sleep(1)
  147. --Init Over
  148.  
  149. while true do
  150.  
  151. time = os.time()
  152. time = textutils.formatTime(time, false)
  153. startup.setText("System Running: "..time)
  154. if shutdown("get") == true then
  155. bridge.clear()
  156. bridge.addText(4, 4, "Shutting Down!!!", gColors.red)
  157. sleep(2)
  158. bridge.clear()
  159. shutdown("glasses")
  160. sleep(99)
  161. end
  162.  
  163. for i=#storageUnits,1,-1 do
  164. storageUnit = storageUnits[i]
  165. --[[
  166. if storageUnit.type == "power" then
  167.     if net.isPresentRemote(storageUnit["id"]) then
  168.         capacity = net.callRemote(storageUnit["id"], "getCapacity")
  169.         amount = net.callRemote(storageUnit["id"], "getStored")
  170.         storageUnit["bar"].setWidth(width / capacity * amount)
  171.         else
  172.         storageUnit["bar"].delete()
  173.         storageUnit["bg"].delete()
  174.         storageUnit["label"].delete()
  175.         table.remove(storageUnits, i)
  176.         end
  177. end
  178. ]]--
  179. if storageUnit.type == "me_storage" then
  180.     if net.isPresentRemote(storageUnit["id"]) then
  181.         capacity = net.callRemote(storageUnit["id"], "getTotalBytes")
  182.         amount = net.callRemote(storageUnit["id"], "getUsedBytes")
  183.         storageUnit["bar"].setWidth(width / capacity * amount)
  184.         else
  185.         storageUnit["bar"].delete()
  186.         storageUnit["bg"].delete()
  187.         storageUnit["label"].delete()
  188.         table.remove(storageUnits, i)
  189.         end
  190. end
  191. if storageUnit.type == "log_power" then
  192.     if net.isPresentRemote(storageUnit["id"]) then
  193.         capacity = 2000000
  194.         amount = net.callRemote(storageUnit["id"], "getPowerLevel")
  195.         storageUnit["bar"].setWidth(width / capacity * amount)
  196.         else
  197.         storageUnit["bar"].delete()
  198.         storageUnit["bg"].delete()
  199.         storageUnit["label"].delete()
  200.         table.remove(storageUnits, i)
  201.         end
  202. end
  203. if storageUnit.type == "all_power" then
  204.     capacity = 0
  205.     amount = 0
  206.     backup = storageUnit
  207.     for i=#storageUnits,1,-1 do
  208.     storageUnit = storageUnits[i]
  209.     if storageUnit.type == "power" then
  210.         capacity = capacity + net.callRemote(storageUnit["id"], "getCapacity")
  211.         amount = amount + net.callRemote(storageUnit["id"], "getStored")
  212.     end
  213.     end
  214.     storageUnit = backup
  215.         storageUnit["bar"].setWidth(width / capacity * amount)
  216. end
  217. end
  218. sleep(0.2)
  219. end
  220. end
  221.  
  222. function shell()
  223. term.clear()
  224. term.setCursorPos(1,1)
  225. print("Monitor System Started.")
  226. while true do
  227. inp = read()
  228. if inp == "shutdown" then
  229. shutdown("controller")
  230. end
  231. if inp == "restart" or "update" then
  232. shutdown("restart")
  233. end
  234. if inp == "ping" then
  235. print("pong")
  236. end
  237. end
  238. end
  239.  
  240. parallel.waitForAll(glass, shell)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement