SHOW:
|
|
- or go back to the newest paste.
1 | local mon = peripheral.wrap("top") | |
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 flash(name) | |
68 | toggleButton(name) | |
69 | screen() | |
70 | sleep(0.15) | |
71 | toggleButton(name) | |
72 | screen() | |
73 | end | |
74 | ||
75 | function checkxy(x, y) | |
76 | for name, data in pairs(button) do | |
77 | if y>=data["ymin"] and y <= data["ymax"] then | |
78 | if x>=data["xmin"] and x<= data["xmax"] then | |
79 | data["func"]() | |
80 | return true | |
81 | --data["active"] = not data["active"] | |
82 | --print(name) | |
83 | end | |
84 | end | |
85 | end | |
86 | return false | |
87 | end | |
88 | ||
89 | function heading(text) | |
90 | w, h = mon.getSize() | |
91 | mon.setCursorPos((w-string.len(text))/2+1, 1) | |
92 | mon.write(text) | |
93 | end | |
94 | ||
95 | function label(w, h, text) | |
96 | mon.setCursorPos(w, h) | |
97 | mon.write(text) | |
98 | end |