LivioBrunner

Energy Control v.2.0

Nov 19th, 2013
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.45 KB | None | 0 0
  1. function load(name)
  2.   local file = fs.open(name,"r")
  3.   local data = file.readAll()
  4.   file.close()
  5.   return textutils.unserialize(data)
  6. end
  7. function save(table,name)
  8.   local file = fs.open(name,"w")
  9.   file.write(textutils.serialize(table))
  10.   file.close()
  11. end
  12. function tablelength(T)
  13.   local count = 0
  14.   for _ in pairs(T) do count = count + 1 end
  15.   return count
  16. end
  17. local function centerText(text)
  18.     local x,y = term.getSize()
  19.     local x2,y2 = term.getCursorPos()
  20.     term.setCursorPos(math.floor((x / 2) - (string.len(text) / 2)), y2)
  21.     write(text)
  22. end
  23. function create(x,y,width,height,color,mon)
  24.     mon.setCursorPos(x,y)
  25.         for j = 0, height do
  26.         mon.setCursorPos(x,y+j)
  27.         for i = 0,width do
  28.             mon.setBackgroundColor(color)
  29.             mon.write(" ")
  30.         end
  31.     end
  32. end
  33. function clearAll(mon, color)
  34.     local w,h = mon.getSize()
  35.     for i = 0,h do
  36.         for j = 0, w do
  37.             mon.setCursorPos(1+j,1+i)
  38.             mon.setBackgroundColor(color)
  39.             mon.write(" ")
  40.         end
  41.     end
  42. end
  43. function file_exists(name)
  44.    local f=io.open(name,"r")
  45.    if f~=nil then io.close(f) return true else return false end
  46. end
  47.  
  48. local all = 0
  49. local version = "2.0"
  50. local mfsu = {}
  51. local strom = {}
  52. local length = 0
  53. local counter = 0
  54. local stopIt = false
  55.  
  56. term.clear()
  57.  
  58.  
  59.  
  60. function getAllEU()
  61.         local all = 0
  62.     for i = mfsu[1], tablelength(mfsu)+mfsu[1]-1 do
  63.         all = all + strom[i]
  64.     end
  65.     return all
  66. end
  67. function progressBarInit()
  68.    left = load("saves/left")
  69.    top = load("saves/top")
  70.    name = load("saves/name")
  71.    length = load("saves/length")
  72.    background = p.addBox(left,top,length + 6, 40, 0xE0E0E0, 0.3)
  73.    background.setColor2(0x81BEF7)
  74.    background.setGradient(2)
  75.    p.addText(left,top, name, 0x00FFFF)
  76.    box = p.addBox(left +3,top + 23,length,5,0x045FB4,1)
  77.    box.setColor2(0x2ADEDE)
  78.    box.setGradient(2)
  79.    box1 = p.addBox(3,10,4,15,0xF22E2E,1)
  80.    text = p.addText(3,3 , "EU", 0x00FFFF)
  81. end
  82. function progressBar()
  83. left = load("saves/left")
  84. top = load("saves/top")
  85. mfsu = load("saves/id")
  86. length = load("saves/length")
  87. for i = mfsu[1], tablelength(mfsu)+mfsu[1]-1 do
  88.     EU = nb.callRemote("mfsu_"..i, "getStored")
  89.     strom[i] = EU
  90.   end
  91.    red =  length / (tablelength(mfsu) * 10000000) * getAllEU()
  92.    box1.delete()
  93.    text.delete()
  94.    box1 = p.addBox(left + 3 + red - 2,top + 17,4,15,0xF22E2E,1)
  95.    text = p.addText(left + 3,top + 10 , getAllEU() .."/".. (tablelength(mfsu) * 10000000).."EU", 0x00FFFF)
  96.    sleep(1)
  97. end
  98. function startMessage()
  99.     clearAll(term,colors.blue)
  100.     term.setTextColor(colors.white)
  101.     term.setCursorPos(1,1)
  102.     centerText("Welcome to Sutrang's Glass Version ".. version)
  103.     sleep(1)
  104. end
  105. function settings()
  106.     term.clear()
  107.     term.setCursorPos(1,1)
  108.     local w, h = term.getSize()
  109.     create(0,0,w, h, colors.blue,term)
  110.     term.setTextColor(colors.white)
  111.     startMessage()
  112.     term.setCursorPos(1,3)
  113.     centerText("Terminal Glasses Bridge Side:")
  114.     termglass = read()
  115.     term.setCursorPos(1,4)
  116.     centerText("Network Cable Side:")
  117.     networkcableside = read()
  118.     save(networkcableside, "saves/networkcable")
  119.     save(termglass, "saves/termglass")
  120.     term.setCursorPos(1,5)
  121.     centerText("Name your MFSU's:")
  122.     name = read()
  123.     save(name, "saves/name")
  124.     term.setCursorPos(1,6)
  125.     centerText("Progressbar distance from left:")
  126.     left = read()
  127.     save(tonumber(left), "saves/left")
  128.     term.setCursorPos(1,7)
  129.     centerText("Progressbar distance from top:")
  130.     top = read()
  131.     save(tonumber(top), "saves/top")
  132.    
  133.     while length < 130 do
  134.         term.setCursorPos(1,8)
  135.         term.clearLine()
  136.         centerText("Length of Progressbar:")
  137.         length = tonumber(read())
  138.         save(length, "saves/length")
  139.         if length < 113 then
  140.             term.setCursorPos(1,8)
  141.             term.setTextColor(colors.red)
  142.             term.clearLine()
  143.             centerText("ERROR:The length has to be over 130")
  144.             sleep(3)
  145.             term.setTextColor(colors.white)
  146.         end
  147.     end
  148.     while stopIt ~= true do
  149.         counter = counter + 1
  150.         term.setCursorPos(1,8 + counter)
  151.         centerText("Write id of your MFSU's:")
  152.         message = read()
  153.         if message == "" then
  154.             stopIt = true
  155.             term.clearLine()
  156.         else
  157.             table.insert(mfsu, message)
  158.         end
  159.     end
  160.     save(mfsu, "saves/id")
  161.     startMessage()
  162. end
  163.  
  164.  
  165. --{MAIN PROGRAMM}--
  166. --{INIT}--
  167. fs.makeDir("saves")
  168. term.clear()
  169. term.setCursorPos(1,1)
  170.  
  171. if fs.exists("saves/id") ~= true then
  172.     settings()
  173. end
  174. networkcableside = load("saves/networkcable")
  175.  
  176. termglass = load("saves/termglass")
  177. nb = peripheral.wrap(networkcableside)
  178. p = peripheral.wrap(termglass)
  179. p.clear()
  180. progressBarInit()
  181. while true do
  182.     progressBar()
  183. end
  184. --{INIT}--
Advertisement
Add Comment
Please, Sign In to add comment