Advertisement
cronoise

Industrial Machines

Apr 24th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Programm made by Mrswisstobi--
  2.  
  3. local button         = {}
  4. local side           = "bottom"
  5. local mon            = peripheral.wrap("monitor_7")
  6. local textScale      = 1
  7.  
  8. ------------ color variables ------------
  9.  
  10. local btnTextColor   = colors.black
  11. local defaultBgColor = colors.black
  12. local headerColor    = colors.green
  13.  
  14. -----------------------------------------
  15. function turnAllOff()
  16.   rs.setBundledOutput(side, 0)
  17.   for name, data in pairs(button) do
  18.     data["active"] = false
  19.     if name == "All OFF" then
  20.       button[name]["active"] = true
  21.     end
  22.     mon.clear()
  23.     heading("AFCC Industrial Machines")
  24.     screen()
  25.   end
  26. end
  27.  
  28. function turnAllOn()
  29.   rs.setBundledOutput(side, 65535)
  30.   for name, data in pairs(button) do
  31.     data["active"] = true
  32.     if name == "All OFF" then
  33.       button[name]["active"] = false
  34.     end
  35.     mon.clear()
  36.     heading("AFCC Industrial Machines")
  37.     screen()
  38.   end
  39. end
  40.  
  41. rs.setBundledOutput(side, 0)  
  42. term.clear()
  43. term.setCursorPos(1,1)
  44. mon.setBackgroundColor(defaultBgColor)
  45. mon.setTextScale(textScale)
  46. mon.clear()
  47.        
  48. function fillTable()
  49.    setTable("Cobblestone",     switchOutput, 17, 27,  3,  5, colors.white,     colors.lightGray,    colors.green)
  50.    setTable("Obsidian",       switchOutput, 17, 27,  7,  9, colors.orange,    colors.lightGray,    colors.green)    
  51.    setTable("Sand",      switchOutput, 17, 27, 11, 13, colors.magenta,   colors.lightGray,    colors.green)
  52.    setTable("Enderium",    switchOutput, 17, 27, 15, 17, colors.lightBlue, colors.lightGray,    colors.green)      
  53.    setTable("Glass",       switchOutput, 31, 41,  3,  5, colors.yellow,    colors.lightGray,    colors.green)
  54.    setTable("cr. Obs.",      switchOutput, 31, 41,  7,  9, colors.lime,      colors.lightGray,    colors.green)
  55.    setTable("empty",     switchOutput, 31, 41, 11, 13, colors.pink,      colors.lightGray,    colors.green)
  56.    setTable("empty",   switchOutput, 31, 41, 15, 17, colors.gray,      colors.lightGray,    colors.green)
  57.    setTable("empty",        switchOutput, 45, 55,  3,  5, colors.lightGray, colors.lightGray,    colors.green)
  58.    setTable("empty",      switchOutput, 45, 55,  7,  9, colors.cyan,      colors.lightGray,    colors.green)
  59.    setTable("empty",    switchOutput, 45, 55, 11, 13, colors.purple,    colors.lightGray,    colors.green)
  60.    setTable("empty",       switchOutput, 45, 55, 15, 17, colors.blue,      colors.lightGray,    colors.green)
  61.    setTable("empty",      switchOutput, 59, 69,  3,  5, colors.brown,     colors.lightGray,    colors.green)
  62.    setTable("empty",         switchOutput, 59, 69,  7,  9, colors.green,     colors.lightGray,    colors.green)
  63.    setTable("empty",         switchOutput, 59, 69, 11, 13, colors.red,       colors.lightGray,    colors.green)
  64.    setTable("empty",     switchOutput, 59, 69, 15, 17, colors.black,     colors.lightGray,    colors.green)
  65.    setTable("All ON",       turnAllOn,      3, 13,  3,  9, "" ,             colors.green, colors.green)
  66.    setTable("All OFF",      turnAllOff,     3, 13, 11, 17, "" ,             colors.lightGray, colors.lightGray)
  67. end
  68.  
  69. function setTable(name, func, xmin, xmax, ymin, ymax, color, btnOff, btnOn)
  70.    button[name]           = {}
  71.    button[name]["func"]   = func
  72.    button[name]["active"] = false
  73.    button[name]["xmin"]   = xmin
  74.    button[name]["ymin"]   = ymin
  75.    button[name]["xmax"]   = xmax
  76.    button[name]["ymax"]   = ymax
  77.    button[name]["color"]  = color
  78.    button[name]["btnOff"] = btnOff
  79.    button[name]["btnOn"]  = btnOn
  80. end
  81.  
  82. function switchOutput(color)
  83.    if rs.testBundledInput(side, color) then
  84.      rs.setBundledOutput(side, (rs.getBundledInput(side)-color))
  85.    else
  86.      rs.setBundledOutput(side, (rs.getBundledInput(side)+color))
  87.    end  
  88. end  
  89.  
  90. function fill(text, color, bData)
  91.    mon.setBackgroundColor(color)
  92.    mon.setTextColor(btnTextColor)
  93.    local yspot = math.floor((bData["ymin"] + bData["ymax"]) /2)
  94.    local xspot = math.floor((bData["xmax"] - bData["xmin"] - string.len(text)) /2) +1
  95.    for j = bData["ymin"], bData["ymax"] do
  96.       mon.setCursorPos(bData["xmin"], j)
  97.       if j == yspot then
  98.          for k = 0, bData["xmax"] - bData["xmin"] - string.len(text) +1 do
  99.             if k == xspot then
  100.                mon.write(text)
  101.             else
  102.                mon.write(" ")
  103.             end
  104.          end
  105.       else
  106.          for i = bData["xmin"], bData["xmax"] do
  107.             mon.write(" ")
  108.          end
  109.       end
  110.    end
  111.    mon.setBackgroundColor(defaultBgColor)
  112. end
  113.      
  114. function screen()
  115.    local currColor
  116.    for name,data in pairs(button) do
  117.       local on = data["active"]
  118.       if on == true then currColor = data["btnOn"] else currColor = data["btnOff"] end
  119.       fill(name, currColor, data)
  120.    end
  121. end
  122.      
  123. function checkxy(x, y)
  124.    for name, data in pairs(button) do
  125.       if y>=data["ymin"] and  y <= data["ymax"] then
  126.          if x>=data["xmin"] and x<= data["xmax"] then
  127.             data["func"](button[name]["color"])
  128.             data["active"] = not data["active"]
  129.          end
  130.       end
  131.    end
  132. end
  133.      
  134. function heading(text)
  135.    w, h = mon.getSize()
  136.    mon.setTextColor(headerColor)
  137.    mon.setCursorPos((w-string.len(text))/2+1, 1)
  138.    mon.write(text)
  139. end
  140.      
  141. fillTable()
  142. while true do
  143.    mon.clear()
  144.    heading("AFCC Industrial Machines")
  145.    screen()
  146.    local e,side,x,y = os.pullEvent("monitor_touch")
  147.    checkxy(x,y)
  148.    sleep(.1)
  149. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement