-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaverage-button.lua
More file actions
250 lines (223 loc) · 6.02 KB
/
average-button.lua
File metadata and controls
250 lines (223 loc) · 6.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
local expanded = false
local _Black = Color.Black
function buttonPress()
if lockout == false then
--Call on any other function here. For example:
--Global.call("Function Name", {table of parameters if needed})
--You could also add your own scrting here. For example:
--print("The button was pressed. Hoozah.")
self.AssetBundle.playTriggerEffect(0) --triggers animation/sound
lockout = true --locks out the button
startLockoutTimer() --Starts up a timer to remove lockout
local notes = self.getGMNotes()
local vars = JSON.decode(notes)
-- send to open all things from seated players
-- and send it back to a notepad
if not notes then
printError()
return
end
local notecard = getObjectFromGUID(vars["note"])
if not notecard then
printError()
return
else
notecard.setDescription("")
end
if not expanded then
Global.call("showHuds", {notecard = vars["note"], players = createSeatedTable()})
notecard.call("reset")
else
Global.call("showHuds", {notecard = vars["note"], players = createSelectedTable()})
notecard.call("reset", {colors = createSelectedTable()})
end
end
end
function printError()
printToColor("Error in the average, gotta setup the note in the GM Note", "Black", Color.White)
end
function onload()
self.createButton(
{
label = "Big Red Button\n\nBy: MrStump",
click_function = "buttonPress",
function_owner = self,
position = {0, 0.25, 0},
height = 1400,
width = 1400
}
)
local colors = getAllColors()
local x = 1.9
local z = -1.4
for i = 1, #colors do
x = x + 1.5
if i == 5 or i == 9 then
z = z + 1.6
x = 3.4
end
local button = {
label = colors[i],
click_function = "Button_" .. colors[i],
function_owner = self,
position = {x, 0.2, z},
font_size = 215,
color = _Black,
font_color = Color.White,
width = 700,
height = 700,
scale = {0, 0, 0}
}
self.createButton(button)
end
self.createButton(
{
-- button for expanding extra buttons
click_function = "toggleExtra",
function_owner = self,
label = "▶",
position = {2.1, 0.2, 0},
scale = {0.5, 0.5, 0.5},
width = 950,
height = 950,
font_size = 900,
color = _Black,
font_color = Color.White
}
)
lockout = false
end
function createSeatedTable()
local returner = {}
local colors = getAllColors()
for i = 1, #colors do
local seat = Seated(colors[i])
if seat then
table.insert(returner, seat)
end
end
return returner
end
function createSelectedTable()
returner = {}
local buttons = self.getButtons()
for i = 1, #getAllColors() do
if buttons[i].font_color == Color.Red then
log("Found color " .. buttons[i].label)
table.insert(returner, buttons[i].label)
end
end
return returner
end
function toggleExtra()
local buttons = #self.getButtons()
local button = self.getButtons()[buttons]
if button.label == "▶" then
self.editButton({index = buttons - 1, label = "◀"})
enlargeExtras(true)
else
self.editButton({index = buttons - 1, label = "▶"})
enlargeExtras(false)
end
end
function enlargeExtras(doIt)
local scale = doIt and {1, 1, 1} or {0, 0, 0}
local colors = getAllColors()
for i = 1, #colors do
self.editButton({index = i, scale = scale})
if not Seated(colors[i]) then
self.editButton({index = i, font_color = _Black})
else
self.editButton({index = i, font_color = Color.White})
end
end
expanded = doIt
end
function getAllColors()
return {
"White",
"Teal",
"Brown",
"Blue",
"Red",
"Purple",
"Orange",
"Pink",
"Yellow",
"Green"
}
end
function Seated(color)
if Player[color].seated then
return color
else
return nil
end
end
function getColorIndex(color)
local colors = getAllColors()
for i = 1, #colors do
if color == colors[i] then
return i
end
end
return -1
end
function toggleButton(color)
local buttons = self.getButtons()
for i = 1, #buttons do
local label = buttons[i].label
if label == color then
local fc = buttons[i].font_color
if fc.b ~= _Black.b then
if fc ~= Color.White then
self.editButton({index = i - 1, font_color = Color.White})
else
self.editButton({index = i - 1, font_color = Color.Red})
end
end
end
end
end
function Button_White()
toggleButton("White")
end
function Button_Teal()
toggleButton("Teal")
end
function Button_Brown()
toggleButton("Brown")
end
function Button_Blue()
toggleButton("Blue")
end
function Button_Red()
toggleButton("Red")
end
function Button_Purple()
toggleButton("Purple")
end
function Button_Orange()
toggleButton("Orange")
end
function Button_Pink()
toggleButton("Pink")
end
function Button_Yellow()
toggleButton("Yellow")
end
function Button_Green()
toggleButton("Green")
end
--Starts a timer that, when it ends, will unlock the button
function startLockoutTimer()
Timer.create({identifier = self.getGUID(), function_name = "unlockLockout", delay = 0.5})
end
--Unlocks button
function unlockLockout()
lockout = false
end
--Ends the timer if the object is destroyed before the timer ends, to prevent an error
function onDestroy()
Timer.destroy(self.getGUID())
end