Advertisement
Guest User

button

a guest
Jan 24th, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.57 KB | None | 0 0
  1. local mon = peripheral.wrap("right")
  2. mon.setTextScale(1)
  3. mon.setTextColor(colors.white)
  4. local button={}
  5. mon.setBackgroundColor(colors.black)
  6.  
  7. function clearTable()
  8.    button = {}
  9.    mon.clear()
  10. end
  11.                
  12. function setTable(name, func, xmin, xmax, ymin, ymax)
  13.    button[name] = {}
  14.    button[name]["func"] = func
  15.    button[name]["active"] = false
  16.    button[name]["xmin"] = xmin
  17.    button[name]["ymin"] = ymin
  18.    button[name]["xmax"] = xmax
  19.    button[name]["ymax"] = ymax
  20. end
  21.  
  22. function funcName()
  23.    print("You clicked buttonText")
  24. end
  25.        
  26. function fillTable()
  27.    setTable("ButtonText", funcName, 5, 25, 4, 8)
  28. end    
  29.  
  30. function fill(text, color, bData)
  31.    mon.setBackgroundColor(color)
  32.    local yspot = math.floor((bData["ymin"] + bData["ymax"]) /2)
  33.    local xspot = math.floor((bData["xmax"] - bData["xmin"] - string.len(text)) /2) +1
  34.    for j = bData["ymin"], bData["ymax"] do
  35.       mon.setCursorPos(bData["xmin"], j)
  36.       if j == yspot then
  37.          for k = 0, bData["xmax"] - bData["xmin"] - string.len(text) +1 do
  38.             if k == xspot then
  39.                mon.write(text)
  40.             else
  41.                mon.write(" ")
  42.             end
  43.          end
  44.       else
  45.          for i = bData["xmin"], bData["xmax"] do
  46.             mon.write(" ")
  47.          end
  48.       end
  49.    end
  50.    mon.setBackgroundColor(colors.black)
  51. end
  52.      
  53. function screen()
  54.    local currColor
  55.    for name,data in pairs(button) do
  56.       local on = data["active"]
  57.       if on == true then currColor = colors.lime else currColor = colors.red end
  58.       fill(name, currColor, data)
  59.    end
  60. end
  61.  
  62. function toggleButton(name)
  63.    button[name]["active"] = not button[name]["active"]
  64.    screen()
  65. end    
  66.  
  67. function buttonOff(name)
  68.   button[name]["active"] = false
  69.   screen()
  70. end
  71.  
  72. function buttonOn(name)
  73.   button[name]["active"] = true
  74.   screen()
  75. end
  76.  
  77. function flash(name)
  78.    toggleButton(name)
  79.    screen()
  80.    sleep(0.15)
  81.    toggleButton(name)
  82.    screen()
  83. end
  84.                                              
  85. function checkxy(x, y)
  86.    for name, data in pairs(button) do
  87.       if y>=data["ymin"] and  y <= data["ymax"] then
  88.          if x>=data["xmin"] and x<= data["xmax"] then
  89.             data["func"]()
  90.             return true
  91.             --data["active"] = not data["active"]
  92.             --print(name)
  93.          end
  94.       end
  95.    end
  96.    return false
  97. end
  98.      
  99. function heading(text)
  100.    w, h = mon.getSize()
  101.    mon.setCursorPos((w-string.len(text))/2+1, 1)
  102.    mon.write(text)
  103. end
  104.      
  105. function label(w, h, text)
  106.    mon.setCursorPos(w, h)
  107.    mon.write(text)
  108. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement