-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcans.js
More file actions
339 lines (286 loc) · 18.6 KB
/
Copy pathcans.js
File metadata and controls
339 lines (286 loc) · 18.6 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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
let can_rotate_turntable = {
"A" : true,
"B" : true,
"C" : true,
"D" : true
}
let can_unload_cockpit = {
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let can_open_brief_door = {
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let can_close_brief_door = {
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let can_open_enter_door = {
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let can_close_enter_door = {
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let can_open_exit_door = {
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let can_close_exit_door = {
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let can_call_ada = {
"left" : false,
"right" : false
}
let can_open_ada_door = {
"left" : false,
"right" : false
}
let can_close_ada_door = {
"left" : false,
"right" : false
}
let turntable_in_motion = {
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let brief_doors = { // true - open, false - closed
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let enter_doors = { // true - open, false - closed
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let exit_doors = { // true - open, false - closed
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let can_call_to_briefing = {
"A" : false,
"B" : false,
"C" : false,
"D" : false
}
let ada_doors = {
"left" : false,
"right" : false
}
let ada_elevator_doors = {
"left" : false,
"right" : false
}
let can_open_preshow = {
"left" : false,
"right" : false
}
let can_close_preshow = {
"left" : false,
"right" : false
}
let can_start_preshow = false;
function updateCans() {
can_call_to_briefing = {
"A" : (leftCrewTracker.closeCallStage==2&&leftCrewTracker.closeBriefStage==0&&leftCrewTracker.closeBriefStageChange+4000<ChoreoGraph.nowint),
"B" : (leftCrewTracker.farCallStage==2&&leftCrewTracker.farBriefStage==0),
"C" : (rightCrewTracker.closeCallStage==2&&rightCrewTracker.closeBriefStage==0&&rightCrewTracker.closeBriefStageChange+4000<ChoreoGraph.nowint),
"D" : (rightCrewTracker.farCallStage==2&&rightCrewTracker.farBriefStage==0)
}
controlPanel.tAc = can_call_to_briefing["A"];
controlPanel.tBc = can_call_to_briefing["B"];
controlPanel.tCc = can_call_to_briefing["C"];
controlPanel.tDc = can_call_to_briefing["D"];
if (controlPanel.tAc==0) { controlPanel.tAc = 3; } // Make it red
if (controlPanel.tBc==0) { controlPanel.tBc = 3; }
if (controlPanel.tCc==0) { controlPanel.tCc = 3; }
if (controlPanel.tDc==0) { controlPanel.tDc = 3; }
can_rotate_turntable = {
"A" : (exit_doors["A"]==false&&enter_doors["A"]==false&&turntable_in_motion["A"]==false&&leftCrewTracker.closeUnloadStage==0&&Math.floor((turntables["A"].nextRot-ChoreoGraph.nowint)/1000)<=0), // Enter closed, exit closed, turntable not in motion, unload reset, turntable timer below 0
"B" : (exit_doors["B"]==false&&enter_doors["B"]==false&&turntable_in_motion["B"]==false&&leftCrewTracker.farUnloadStage==0&&Math.floor((turntables["B"].nextRot-ChoreoGraph.nowint)/1000)<=0),
"C" : (exit_doors["C"]==false&&enter_doors["C"]==false&&turntable_in_motion["C"]==false&&rightCrewTracker.closeUnloadStage==0&&Math.floor((turntables["C"].nextRot-ChoreoGraph.nowint)/1000)<=0),
"D" : (exit_doors["D"]==false&&enter_doors["D"]==false&&turntable_in_motion["D"]==false&&rightCrewTracker.farUnloadStage==0&&Math.floor((turntables["D"].nextRot-ChoreoGraph.nowint)/1000)<=0)
}
controlPanel.tAr = can_rotate_turntable["A"];
controlPanel.tBr = can_rotate_turntable["B"];
controlPanel.tCr = can_rotate_turntable["C"];
controlPanel.tDr = can_rotate_turntable["D"];
if (controlPanel.tAr&&leftCrewTracker.closeCockpitStage==0) { controlPanel.tAr = 4; }
if (controlPanel.tBr&&leftCrewTracker.farCockpitStage==0) { controlPanel.tBr = 4; }
if (controlPanel.tCr&&rightCrewTracker.closeCockpitStage==0) { controlPanel.tCr = 4; }
if (controlPanel.tDr&&rightCrewTracker.farCockpitStage==0) { controlPanel.tDr = 4; }
can_unload_cockpit = {
"A" : (leftCrewTracker.closeUnloadStage==1&&exit_doors["A"]),
"B" : (leftCrewTracker.farUnloadStage==1&&exit_doors["B"]),
"C" : (rightCrewTracker.closeUnloadStage==1&&exit_doors["C"]),
"D" : (rightCrewTracker.farUnloadStage==1&&exit_doors["D"])
}
// --- BRIEF DOORS ---
can_open_brief_door = {
"A" : (leftCrewTracker.closeBriefStage==2&&enter_doors["A"]&&leftCrewTracker.closeCockpitStage==0), // Guests ready to enter cockpit, cockpit entrance door open, no guests in cockpit
"B" : (leftCrewTracker.farBriefStage==2&&enter_doors["B"]&&leftCrewTracker.farCockpitStage==0),
"C" : (rightCrewTracker.closeBriefStage==2&&enter_doors["C"]&&rightCrewTracker.closeCockpitStage==0),
"D" : (rightCrewTracker.farBriefStage==2&&enter_doors["D"]&&rightCrewTracker.farCockpitStage==0)
}
let timeForMove = 12000; // The time that is estimated for guests to have left the brief to be past the brief door
can_close_brief_door = {
"A" : ((leftCrewTracker.closeBriefStageChange+timeForMove<ChoreoGraph.nowint||leftCrewTracker.closeCockpitStage!=1)&&(leftCrewTracker.closeBriefStage!=2||leftCrewTracker.closeCockpitStage==2)), // Guests past door or guests not entering cockpit, no guests ready to enter cockpit or cockpit is loaded
"B" : ((leftCrewTracker.farBriefStageChange+timeForMove<ChoreoGraph.nowint||leftCrewTracker.farCockpitStage!=1)&&(leftCrewTracker.farBriefStage!=2||leftCrewTracker.farCockpitStage==2)),
"C" : ((rightCrewTracker.closeBriefStageChange+timeForMove<ChoreoGraph.nowint||rightCrewTracker.closeCockpitStage!=1)&&(rightCrewTracker.closeBriefStage!=2||rightCrewTracker.closeCockpitStage==2)),
"D" : ((rightCrewTracker.farBriefStageChange+timeForMove<ChoreoGraph.nowint||rightCrewTracker.farCockpitStage!=1)&&(rightCrewTracker.farBriefStage!=2||rightCrewTracker.farCockpitStage==2))
}
controlPanel.tAbC = brief_doors["A"] ? (leftCrewTracker.closeBriefStageChange+timeForMove>ChoreoGraph.nowint ? 2 : can_close_brief_door["A"]) : can_open_brief_door["A"];
controlPanel.tBbC = brief_doors["B"] ? (leftCrewTracker.farBriefStageChange+timeForMove>ChoreoGraph.nowint ? 2 : can_close_brief_door["B"]) : can_open_brief_door["B"];
controlPanel.tCbC = brief_doors["C"] ? (rightCrewTracker.closeBriefStageChange+timeForMove>ChoreoGraph.nowint ? 2 : can_close_brief_door["C"]) : can_open_brief_door["C"];
controlPanel.tDbC = brief_doors["D"] ? (rightCrewTracker.farBriefStageChange+timeForMove>ChoreoGraph.nowint ? 2 : can_close_brief_door["D"]) : can_open_brief_door["D"];
if (controlPanel.tAbC==0) { controlPanel.tAbC = 3; }
if (controlPanel.tBbC==0) { controlPanel.tBbC = 3; }
if (controlPanel.tCbC==0) { controlPanel.tCbC = 3; }
if (controlPanel.tDbC==0) { controlPanel.tDbC = 3; }
// --- ENTER DOORS ---
can_open_enter_door = {
"A" : (leftCrewTracker.closeCockpitStage==0&&turntable_in_motion["A"]==false), // Cockpit empty, turntable not in motion
"B" : (leftCrewTracker.farCockpitStage==0&&turntable_in_motion["B"]==false),
"C" : (rightCrewTracker.closeCockpitStage==0&&turntable_in_motion["C"]==false),
"D" : (rightCrewTracker.farCockpitStage==0&&turntable_in_motion["D"]==false)
}
can_close_enter_door = {
"A" : (brief_doors["A"]==false&&(leftCrewTracker.closeCockpitStage==2||leftCrewTracker.closeCockpitStage==0)), // Brief door closed, (guests seated or cockpit empty)
"B" : (brief_doors["B"]==false&&(leftCrewTracker.farCockpitStage==2||leftCrewTracker.farCockpitStage==0)),
"C" : (brief_doors["C"]==false&&(rightCrewTracker.closeCockpitStage==2||rightCrewTracker.closeCockpitStage==0)),
"D" : (brief_doors["D"]==false&&(rightCrewTracker.farCockpitStage==2||rightCrewTracker.farCockpitStage==0))
}
controlPanel.tAeC = enter_doors["A"] ? (can_open_brief_door["A"]&&can_close_enter_door["A"] ? 4 : can_close_enter_door["A"]) : (can_open_enter_door["A"]&&leftCrewTracker.closeBriefStage!=2 ? 4 : can_open_enter_door["A"]); // If door is open and the door can be closed make it green but if the brief door can be opened, make it blue, if the door is closed and the door can be opened make it green but if the brefing is not ready make it blue
controlPanel.tBeC = enter_doors["B"] ? (can_open_brief_door["B"]&&can_close_enter_door["B"] ? 4 : can_close_enter_door["B"]) : (can_open_enter_door["B"]&&leftCrewTracker.farBriefStage!=2 ? 4 : can_open_enter_door["B"]);
controlPanel.tCeC = enter_doors["C"] ? (can_open_brief_door["C"]&&can_close_enter_door["C"] ? 4 : can_close_enter_door["C"]) : (can_open_enter_door["C"]&&rightCrewTracker.closeBriefStage!=2 ? 4 : can_open_enter_door["C"]);
controlPanel.tDeC = enter_doors["D"] ? (can_open_brief_door["D"]&&can_close_enter_door["D"] ? 4 : can_close_enter_door["D"]) : (can_open_enter_door["D"]&&rightCrewTracker.farBriefStage!=2 ? 4 : can_open_enter_door["D"]);
if (controlPanel.tAeC==0) { controlPanel.tAeC = 3; } // Make it red
if (controlPanel.tBeC==0) { controlPanel.tBeC = 3; }
if (controlPanel.tCeC==0) { controlPanel.tCeC = 3; }
if (controlPanel.tDeC==0) { controlPanel.tDeC = 3; }
// --- EXIT DOORS ---
can_open_exit_door = {
"A" : (leftCrewTracker.closeUnloadStage==1||leftCrewTracker.closeUnloadStage==0&&turntable_in_motion["A"]==false), // Guests ready to exit cockpit or the cockpit is empty, turntable not in motion
"B" : (leftCrewTracker.farUnloadStage==1||leftCrewTracker.farUnloadStage==0&&turntable_in_motion["B"]==false),
"C" : (rightCrewTracker.closeUnloadStage==1||rightCrewTracker.closeUnloadStage==0&&turntable_in_motion["C"]==false),
"D" : (rightCrewTracker.farUnloadStage==1||rightCrewTracker.farUnloadStage==0&&turntable_in_motion["D"]==false)
}
timeForMove = 16000; // The time that is estimated for guests to have left the the cockpit and be well into the walkways
can_close_exit_door = {
"A" : (leftCrewTracker.closeUnloadStage==2&&leftCrewTracker.closeUnloadStageChange+timeForMove<ChoreoGraph.nowint)||leftCrewTracker.closeUnloadStage==0, // Guests unloaded and the time elapsed for the guests to leave the cockpit has passed or the unload is in stage 0
"B" : (leftCrewTracker.farUnloadStage==2&&leftCrewTracker.farUnloadStageChange+timeForMove<ChoreoGraph.nowint)||leftCrewTracker.farUnloadStage==0,
"C" : (rightCrewTracker.closeUnloadStage==2&&rightCrewTracker.closeUnloadStageChange+timeForMove<ChoreoGraph.nowint)||rightCrewTracker.closeUnloadStage==0,
"D" : (rightCrewTracker.farUnloadStage==2&&rightCrewTracker.farUnloadStageChange+timeForMove<ChoreoGraph.nowint)||rightCrewTracker.farUnloadStage==0
}
controlPanel.tAxC = exit_doors["A"] ? can_close_exit_door["A"] : (leftCrewTracker.closeUnloadStage==0&&turntable_in_motion["A"]==false ? 4 : can_open_exit_door["A"]); // If door is open and the door can be closed make it green, if the door is closed and the door can be opened make it green but if the cockpit is empty and the turntable is not in motion make it blue
controlPanel.tBxC = exit_doors["B"] ? can_close_exit_door["B"] : (leftCrewTracker.farUnloadStage==0&&turntable_in_motion["B"]==false ? 4 : can_open_exit_door["B"]);
controlPanel.tCxC = exit_doors["C"] ? can_close_exit_door["C"] : (rightCrewTracker.closeUnloadStage==0&&turntable_in_motion["C"]==false ? 4 : can_open_exit_door["C"]);
controlPanel.tDxC = exit_doors["D"] ? can_close_exit_door["D"] : (rightCrewTracker.farUnloadStage==0&&turntable_in_motion["D"]==false ? 4 : can_open_exit_door["D"]);
if (controlPanel.tAxC==0) { controlPanel.tAxC = 3; } // Make it red
if (controlPanel.tBxC==0) { controlPanel.tBxC = 3; }
if (controlPanel.tCxC==0) { controlPanel.tCxC = 3; }
if (controlPanel.tDxC==0) { controlPanel.tDxC = 3; }
// --- ADA ---
can_call_ada = {
"left" : (leftCrewTracker.farCallStage==2&&leftCrewTracker.ADABriefStage==0), // Guests waiting at far call and no guests occupying the ADA briefing location
"right" : (rightCrewTracker.farCallStage==2&&rightCrewTracker.ADABriefStage==0)
}
controlPanel.acL = can_call_ada["left"];
controlPanel.acR = can_call_ada["right"];
if (controlPanel.acR==0) { controlPanel.acR = 3; } // Make it red
if (controlPanel.acL==0) { controlPanel.acL = 3; }
can_open_ada_door = {
"left" : (leftCrewTracker.ADACockpitStage==0||leftCrewTracker.ADACockpitStage==1||leftCrewTracker.ADACockpitStage==4||leftCrewTracker.ADACockpitStage==5), // Cockpit docked
"right" : (rightCrewTracker.ADACockpitStage==0||rightCrewTracker.ADACockpitStage==1||rightCrewTracker.ADACockpitStage==4||rightCrewTracker.ADACockpitStage==5)
}
can_close_ada_door = {
"left" : (leftCrewTracker.ADACockpitStage==0||leftCrewTracker.ADACockpitStage==2||leftCrewTracker.ADACockpitStage==3), // Guests seated
"right" : (rightCrewTracker.ADACockpitStage==0||rightCrewTracker.ADACockpitStage==2||rightCrewTracker.ADACockpitStage==3)
}
controlPanel.adLC = ada_doors["left"] ? (leftCrewTracker.ADABriefStage!=0&&leftCrewTracker.ADACockpitStage==0 ? 4 : can_close_ada_door["left"]):(leftCrewTracker.ADABriefStage==0&&leftCrewTracker.ADACockpitStage==0 ? 4 : can_open_ada_door["left"]); // If the door can be closed make it green but if guests are related to brief and the cockpit is ready make it blue, if the door can be opened make it green but if the briefing is not ready and the cockpit is waiting make it blue
controlPanel.adRC = ada_doors["right"] ? (rightCrewTracker.ADABriefStage!=0&&rightCrewTracker.ADACockpitStage==0 ? 4 : can_close_ada_door["right"]):(rightCrewTracker.ADABriefStage==0&&rightCrewTracker.ADACockpitStage==0 ? 4 : can_open_ada_door["right"]);
if (controlPanel.adLC==0) { controlPanel.adLC = 3; } // Make it red
if (controlPanel.adRC==0) { controlPanel.adRC = 3; }
// --- PRESHOW ---
controlPanel.pdLT = mainPreshow.entrance[0];
controlPanel.pdRT = mainPreshow.entrance[1];
can_open_preshow = {
"left" : ((mainPreshow.operating==false||(ChoreoGraph.nowint-mainPreshow.start_time>mainPreshow.reenter_time))&&mainPreshow.escaping[0]==false&&mainPreshow.census[0]<leftPreshowCPSpots.length&&mainPreshow.experiencing[0]==false), // Preshow not operating
"right" : ((mainPreshow.operating==false||(ChoreoGraph.nowint-mainPreshow.start_time>mainPreshow.reenter_time))&&mainPreshow.escaping[1]==false&&mainPreshow.census[1]<rightPreshowCPSpots.length&&mainPreshow.experiencing[1]==false)
};
can_close_preshow = {
"left" : true, // It's just always a thing, in fact this isnt even used below...
"right" : true // Hello me from the 30th of May 2024 here, this code doesnt do anything but ill leave it because its a nice memory of a time when I thought it made sense to program this room so that it had a door for entering and exiting each time, it worked like this for the longest time before I decided not to do it that way and now there are just the two entrance "doors" that are represting two doors that the ride doesnt even use anymore... general fun information anyway uh... time for you to go so uh bye bye!!
};
controlPanel.pdLC = mainPreshow.entrance[0] ? (mainPreshow.census[0]>=leftPreshowCPSpots.length&&(mainPreshow.census[1]==0||mainPreshow.escaping[1]) ? 1 : (mainPreshow.fillSide=="left" ? ((ChoreoGraph.nowint+361)%1000>500 ? 2 : 4) : 4)) : (mainPreshow.census[1]==0||mainPreshow.escaping[1])||(mainPreshow.operating||mainPreshow.escaping[0]) ? can_open_preshow.left : 4; // If the entrance is open then check if its full and if it is make it green to close but if its not then check if the fill side is its side and if it is make it flash between blue and yellow but if its closed just go check the can open
controlPanel.pdRC = mainPreshow.entrance[1] ? (mainPreshow.census[1]>=rightPreshowCPSpots.length&&(mainPreshow.census[0]==0||mainPreshow.escaping[0]) ? 1 : (mainPreshow.fillSide=="right" ? ((ChoreoGraph.nowint+832)%1000>500 ? 2 : 4) : 4)) : (mainPreshow.census[0]==0||mainPreshow.escaping[0])||(mainPreshow.operating||mainPreshow.escaping[1]) ? can_open_preshow.right : 4;
if (controlPanel.pdLC==1&&mainPreshow.entrance[0]==false&&mainPreshow.entrance[1]) { controlPanel.pdLC = 4; } // Make it blue if the other side is open
if (controlPanel.pdRC==1&&mainPreshow.entrance[1]==false&&mainPreshow.entrance[0]) { controlPanel.pdRC = 4; }
if (controlPanel.pdLC==4&&mainPreshow.entrance[0]==true&&mainPreshow.census[0]>=leftPreshowCPSpots.length) { controlPanel.pdLC = 1; } // Make it green if its full and open
if (controlPanel.pdRC==4&&mainPreshow.entrance[1]==true&&mainPreshow.census[1]>=rightPreshowCPSpots.length) { controlPanel.pdRC = 1; } // Make it green if its full and open
if (controlPanel.pdLC==4&&mainPreshow.entrance[0]==false&&can_open_preshow.left==false) { controlPanel.pdLC = 0; } // Make it red its blue, closed and cant be opened
if (controlPanel.pdRC==4&&mainPreshow.entrance[1]==false&&can_open_preshow.right==false) { controlPanel.pdRC = 0; } // Make it red its blue, closed and cant be opened
// pInk nO BlUE no PinK No BlUE nO PINK NO BLUE!!
if (controlPanel.pdLC==0) { controlPanel.pdLC = 3; } // Make it red
if (controlPanel.pdRC==0) { controlPanel.pdRC = 3; }
can_start_preshow = (mainPreshow.entrance[0]==false&&mainPreshow.entrance[1]==false&&(ChoreoGraph.nowint-mainPreshow.start_time>mainPreshow.main_time)&&((mainPreshow.census[0]>0&&mainPreshow.escaping[0]==false)||(mainPreshow.census[1]>0&&mainPreshow.escaping[1]==false))); // Entrances closed, preshow ended, guests in preshow, no guests escaping
controlPanel.psC = can_start_preshow;
if (controlPanel.psC==0) { controlPanel.psC = 3; } // Make it red
controlPanel.pP = Math.min((ChoreoGraph.nowint-mainPreshow.start_time)/mainPreshow.main_time,1);
// --- DOOR TOGGLE STATES ---
controlPanel.tAbT = brief_doors["A"];
controlPanel.tBbT = brief_doors["B"];
controlPanel.tCbT = brief_doors["C"];
controlPanel.tDbT = brief_doors["D"];
controlPanel.tAeT = enter_doors["A"];
controlPanel.tBeT = enter_doors["B"];
controlPanel.tCeT = enter_doors["C"];
controlPanel.tDeT = enter_doors["D"];
controlPanel.tAxT = exit_doors["A"];
controlPanel.tBxT = exit_doors["B"];
controlPanel.tCxT = exit_doors["C"];
controlPanel.tDxT = exit_doors["D"];
controlPanel.adLT = ada_doors["left"];
controlPanel.adRT = ada_doors["right"];
doors.ttAb.open = brief_doors["A"];
doors.ttBb.open = brief_doors["B"];
doors.ttCb.open = brief_doors["C"];
doors.ttDb.open = brief_doors["D"];
doors.ttAe.open = enter_doors["A"];
doors.ttBe.open = enter_doors["B"];
doors.ttCe.open = enter_doors["C"];
doors.ttDe.open = enter_doors["D"];
doors.ttAx.open = exit_doors["A"];
doors.ttBx.open = exit_doors["B"];
doors.ttCx.open = exit_doors["C"];
doors.ttDx.open = exit_doors["D"];
doors.aLe.open = ada_doors["left"];
doors.aRe.open = ada_doors["right"];
doors.aLl.open = ada_elevator_doors["left"];
doors.aRl.open = ada_elevator_doors["right"];
}