Skyscraper 2.0
elevators.cpp
Go to the documentation of this file.
1/*
2 Skyscraper 2.0 Alpha - Script Processor - Elevator Section
3 Copyright (C)2003-2024 Ryan Thoryk
4 https://www.skyscrapersim.net
5 https://sourceforge.net/projects/skyscraper/
6 Contact - ryan@skyscrapersim.net
7
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21*/
22
23#include "globals.h"
24#include "sbs.h"
25#include "enginecontext.h"
26#include "elevator.h"
27#include "wall.h"
28#include "scriptproc.h"
29#include "section.h"
30
31using namespace SBS;
32
33namespace Skyscraper {
34
39
41{
42 //Process elevators
43
44 //create elevator if not created already
46
47 //replace variables with actual values
48 ReplaceAll(LineData, "%elevator%", ToString(config->Current));
49
50 //IF/While statement stub (continue to global commands for processing)
51 if (StartsWithNoCase(LineData, "if") || StartsWithNoCase(LineData, "while"))
52 return sContinue;
53
54 //process math functions
55 if (MathFunctions(LineData) == sError)
56 return sError;
57
58 //process functions
59 if (parent->FunctionProc() == true)
60 return sNextLine;
61
62 //get text after equal sign
63 bool equals;
64 std::string value = GetAfterEquals(LineData, equals);
65
66 //get elevator object
68
69 //parameters
70
71 //Name parameter
72 if (StartsWithNoCase(LineData, "name"))
73 {
74 if (equals == false)
75 return ScriptError("Syntax error");
76 elev->Name = value;
77 return sNextLine;
78 }
79 //Type parameter
80 if (StartsWithNoCase(LineData, "type"))
81 {
82 if (equals == false)
83 return ScriptError("Syntax error");
84 elev->Type = value;
85 return sNextLine;
86 }
87 //Speed parameter
88 if (StartsWithNoCase(LineData, "speed"))
89 {
90 if (equals == false)
91 return ScriptError("Syntax error");
92 std::string str = Calc(value);
93 Real Speed;
94 if (!IsNumeric(str, Speed))
95 return ScriptError("Invalid value");
96 elev->UpSpeed = Speed;
97 elev->DownSpeed = Speed;
98 return sNextLine;
99 }
100 //UpSpeed parameter
101 if (StartsWithNoCase(LineData, "upspeed"))
102 {
103 if (equals == false)
104 return ScriptError("Syntax error");
105 std::string str = Calc(value);
106 if (!IsNumeric(str, elev->UpSpeed))
107 return ScriptError("Invalid value");
108 return sNextLine;
109 }
110 //DownSpeed parameter
111 if (StartsWithNoCase(LineData, "downspeed"))
112 {
113 if (equals == false)
114 return ScriptError("Syntax error");
115 std::string str = Calc(value);
116 if (!IsNumeric(str, elev->DownSpeed))
117 return ScriptError("Invalid value");
118 return sNextLine;
119 }
120 //Acceleration parameter
121 if (StartsWithNoCase(LineData, "acceleration"))
122 {
123 if (equals == false)
124 return ScriptError("Syntax error");
125 std::string str = Calc(value);
126 if (!IsNumeric(str, elev->Acceleration))
127 return ScriptError("Invalid value");
128 return sNextLine;
129 }
130 //Deceleration parameter
131 if (StartsWithNoCase(LineData, "deceleration"))
132 {
133 if (equals == false)
134 return ScriptError("Syntax error");
135 std::string str = Calc(value);
136 if (!IsNumeric(str, elev->Deceleration))
137 return ScriptError("Invalid value");
138 return sNextLine;
139 }
140 //AccelJerk parameter
141 if (StartsWithNoCase(LineData, "acceljerk"))
142 {
143 if (equals == false)
144 return ScriptError("Syntax error");
145 std::string str = Calc(value);
146 if (!IsNumeric(str, elev->AccelJerk))
147 return ScriptError("Invalid value");
148 return sNextLine;
149 }
150 //DecelJerk parameter
151 if (StartsWithNoCase(LineData, "deceljerk"))
152 {
153 if (equals == false)
154 return ScriptError("Syntax error");
155 std::string str = Calc(value);
156 if (!IsNumeric(str, elev->DecelJerk))
157 return ScriptError("Invalid value");
158 return sNextLine;
159 }
160 //AssignedShaft parameter
161 if (StartsWithNoCase(LineData, "assignedshaft"))
162 {
163 if (equals == false)
164 return ScriptError("Syntax error");
165 std::string str = Calc(value);
166 if (!IsNumeric(str, elev->AssignedShaft))
167 return ScriptError("Invalid value");
168 return sNextLine;
169 }
170 //MotorStartSound parameter
171 if (StartsWithNoCase(LineData, "motorstartsound"))
172 {
173 if (equals == false)
174 return ScriptError("Syntax error");
175
176 //check to see if file exists
177 parent->CheckFile("data/" + value);
178
179 elev->MotorUpStartSound = value;
180 elev->MotorDownStartSound = value;
181 return sNextLine;
182 }
183 //MotorUpStartSound parameter
184 if (StartsWithNoCase(LineData, "motorupstartsound"))
185 {
186 if (equals == false)
187 return ScriptError("Syntax error");
188
189 //check to see if file exists
190 parent->CheckFile("data/" + value);
191
192 elev->MotorUpStartSound = value;
193 return sNextLine;
194 }
195 //MotorDownStartSound parameter
196 if (StartsWithNoCase(LineData, "motordownstartsound"))
197 {
198 if (equals == false)
199 return ScriptError("Syntax error");
200
201 //check to see if file exists
202 parent->CheckFile("data/" + value);
203
204 elev->MotorDownStartSound = value;
205 return sNextLine;
206 }
207 //MotorRunSound parameter
208 if (StartsWithNoCase(LineData, "motorrunsound"))
209 {
210 if (equals == false)
211 return ScriptError("Syntax error");
212
213 //check to see if file exists
214 parent->CheckFile("data/" + value);
215
216 elev->MotorUpRunSound = value;
217 elev->MotorDownRunSound = value;
218 return sNextLine;
219 }
220 //MotorUpRunSound parameter
221 if (StartsWithNoCase(LineData, "motoruprunsound"))
222 {
223 if (equals == false)
224 return ScriptError("Syntax error");
225
226 //check to see if file exists
227 parent->CheckFile("data/" + value);
228
229 elev->MotorUpRunSound = value;
230 return sNextLine;
231 }
232 //MotorDownRunSound parameter
233 if (StartsWithNoCase(LineData, "motordownrunsound"))
234 {
235 if (equals == false)
236 return ScriptError("Syntax error");
237
238 //check to see if file exists
239 parent->CheckFile("data/" + value);
240
241 elev->MotorDownRunSound = value;
242 return sNextLine;
243 }
244 //MotorStopSound parameter
245 if (StartsWithNoCase(LineData, "motorstopsound"))
246 {
247 if (equals == false)
248 return ScriptError("Syntax error");
249
250 //check to see if file exists
251 parent->CheckFile("data/" + value);
252
253 elev->MotorUpStopSound = value;
254 elev->MotorDownStopSound = value;
255 return sNextLine;
256 }
257 //MotorUpStopSound parameter
258 if (StartsWithNoCase(LineData, "motorupstopsound"))
259 {
260 if (equals == false)
261 return ScriptError("Syntax error");
262
263 //check to see if file exists
264 parent->CheckFile("data/" + value);
265
266 elev->MotorUpStopSound = value;
267 return sNextLine;
268 }
269 //MotorDownStopSound parameter
270 if (StartsWithNoCase(LineData, "motordownstopsound"))
271 {
272 if (equals == false)
273 return ScriptError("Syntax error");
274
275 //check to see if file exists
276 parent->CheckFile("data/" + value);
277
278 elev->MotorDownStopSound = value;
279 return sNextLine;
280 }
281 //MotorIdleSound parameter
282 if (StartsWithNoCase(LineData, "motoridlesound"))
283 {
284 if (equals == false)
285 return ScriptError("Syntax error");
286
287 //check to see if file exists
288 parent->CheckFile("data/" + value);
289
290 elev->MotorIdleSound = value;
291 return sNextLine;
292 }
293 //FloorSkipText parameter
294 if (StartsWithNoCase(LineData, "floorskiptext"))
295 {
296 if (equals == false)
297 return ScriptError("Syntax error");
298 elev->SetFloorSkipText(value);
299 return sNextLine;
300 }
301 //RecallFloor parameter
302 if (StartsWithNoCase(LineData, "recallfloor"))
303 {
304 if (equals == false)
305 return ScriptError("Syntax error");
306 int floortemp;
307 std::string str = Calc(value);
308 if (!IsNumeric(str, floortemp))
309 return ScriptError("Invalid value");
310 elev->SetRecallFloor(floortemp);
311 return sNextLine;
312 }
313 //AlternateRecallFloor parameter
314 if (StartsWithNoCase(LineData, "alternaterecallfloor"))
315 {
316 if (equals == false)
317 return ScriptError("Syntax error");
318 int floortemp;
319 std::string str = Calc(value);
320 if (!IsNumeric(str, floortemp))
321 return ScriptError("Invalid value");
322 elev->SetAlternateRecallFloor(floortemp);
323 return sNextLine;
324 }
325 //ACPFloor parameter
326 if (StartsWithNoCase(LineData, "acpfloor"))
327 {
328 if (equals == false)
329 return ScriptError("Syntax error");
330 int floortemp;
331 std::string str = Calc(value);
332 if (!IsNumeric(str, floortemp))
333 return ScriptError("Invalid value");
334 elev->SetACPFloor(floortemp);
335 return sNextLine;
336 }
337 //MotorPosition parameter
338 if (StartsWithNoCase(LineData, "motorposition"))
339 {
340 int params = SplitAfterEquals(LineData);
341 if (params != 3)
342 return ScriptError("Incorrect number of parameters");
343
344 //check numeric values
345 for (int i = 0; i <= 2; i++)
346 {
347 if (!IsNumeric(tempdata[i]))
348 return ScriptError("Invalid value: " + tempdata[i]);
349 }
350
351 elev->MotorPosition = Vector3(ToFloat(tempdata[0]), ToFloat(tempdata[1]), ToFloat(tempdata[2]));
352 return sNextLine;
353 }
354 //QueueResets parameter
355 if (StartsWithNoCase(LineData, "queueresets"))
356 {
357 if (equals == false)
358 return ScriptError("Syntax error");
359 elev->QueueResets = ToBool(value);
360 return sNextLine;
361 }
362 //LimitQueue parameter
363 if (StartsWithNoCase(LineData, "limitqueue"))
364 {
365 if (equals == false)
366 return ScriptError("Syntax error");
367 elev->LimitQueue = ToBool(value);
368 return sNextLine;
369 }
370 //ACP parameter
371 if (StartsWithNoCase(LineData, "acp"))
372 {
373 if (equals == false)
374 return ScriptError("Syntax error");
375 elev->ACP = ToBool(value);
376 return sNextLine;
377 }
378 //UpPeak parameter
379 if (StartsWithNoCase(LineData, "uppeak"))
380 {
381 if (equals == false)
382 return ScriptError("Syntax error");
383 elev->UpPeak = ToBool(value);
384 return sNextLine;
385 }
386 //DownPeak parameter
387 if (StartsWithNoCase(LineData, "downpeak"))
388 {
389 if (equals == false)
390 return ScriptError("Syntax error");
391 elev->DownPeak = ToBool(value);
392 return sNextLine;
393 }
394 //InspectionService parameter
395 if (StartsWithNoCase(LineData, "inspectionservice"))
396 {
397 if (equals == false)
398 return ScriptError("Syntax error");
399 elev->InspectionService = ToBool(value);
400 return sNextLine;
401 }
402 //FireService1 parameter
403 if (StartsWithNoCase(LineData, "fireservice1"))
404 {
405 if (equals == false)
406 return ScriptError("Syntax error");
407
408 int value2;
409 std::string str = Calc(value);
410 if (!IsNumeric(str, value2))
411 return ScriptError("Invalid value");
412
413 elev->FireServicePhase1 = value2;
414 return sNextLine;
415 }
416 //Parking parameter
417 if (StartsWithNoCase(LineData, "parking"))
418 {
419 int params = SplitAfterEquals(LineData);
420 if (params != 2)
421 return ScriptError("Incorrect number of parameters");
422
423 //check numeric values
424 for (int i = 0; i <= 1; i++)
425 {
426 if (!IsNumeric(tempdata[i]))
427 return ScriptError("Invalid value: " + tempdata[i]);
428 }
429
430 elev->ParkingFloor = ToInt(tempdata[0]);
431 elev->ParkingDelay = ToFloat(tempdata[1]);
432 return sNextLine;
433 }
434 //LevelingSpeed parameter
435 if (StartsWithNoCase(LineData, "levelingspeed"))
436 {
437 if (equals == false)
438 return ScriptError("Syntax error");
439 Real leveling;
440 std::string str = Calc(value);
441 if (!IsNumeric(str, leveling))
442 return ScriptError("Invalid value");
443 elev->LevelingSpeed = leveling;
444 return sNextLine;
445 }
446 //LevelingOffset parameter
447 if (StartsWithNoCase(LineData, "levelingoffset"))
448 {
449 if (equals == false)
450 return ScriptError("Syntax error");
451 Real leveling;
452 std::string str = Calc(value);
453 if (!IsNumeric(str, leveling))
454 return ScriptError("Invalid value");
455 elev->LevelingOffset = leveling;
456 return sNextLine;
457 }
458 //LevelingOpen parameter
459 if (StartsWithNoCase(LineData, "levelingopen"))
460 {
461 if (equals == false)
462 return ScriptError("Syntax error");
463 Real leveling;
464 std::string str = Calc(value);
465 if (!IsNumeric(str, leveling))
466 return ScriptError("Invalid value");
467 elev->LevelingOpen = leveling;
468 return sNextLine;
469 }
470 //NotifyEarly parameter
471 if (StartsWithNoCase(LineData, "notifyearly"))
472 {
473 if (equals == false)
474 return ScriptError("Syntax error");
475 Real notify;
476 std::string str = Calc(value);
477 if (!IsNumeric(str, notify))
478 return ScriptError("Invalid value");
479 elev->NotifyEarly = notify;
480 return sNextLine;
481 }
482 //DepartureDelay parameter
483 if (StartsWithNoCase(LineData, "departuredelay"))
484 {
485 if (equals == false)
486 return ScriptError("Syntax error");
487 Real delay;
488 std::string str = Calc(value);
489 if (!IsNumeric(str, delay))
490 return ScriptError("Invalid value");
491 elev->DepartureDelay = delay;
492 return sNextLine;
493 }
494 //ArrivalDelay parameter
495 if (StartsWithNoCase(LineData, "arrivaldelay"))
496 {
497 if (equals == false)
498 return ScriptError("Syntax error");
499 Real delay;
500 std::string str = Calc(value);
501 if (!IsNumeric(str, delay))
502 return ScriptError("Invalid value");
503 elev->ArrivalDelay = delay;
504 return sNextLine;
505 }
506 //InspectionSpeed parameter
507 if (StartsWithNoCase(LineData, "inspectionspeed"))
508 {
509 if (equals == false)
510 return ScriptError("Syntax error");
511 std::string str = Calc(value);
512 if (!IsNumeric(str, elev->InspectionSpeed))
513 return ScriptError("Invalid value");
514 return sNextLine;
515 }
516 //AutoDoors parameter
517 if (StartsWithNoCase(LineData, "autodoors"))
518 {
519 if (equals == false)
520 return ScriptError("Syntax error");
521
522 elev->AutoDoors = ToBool(value);
523 return sNextLine;
524 }
525 //OpenOnStart parameter
526 if (StartsWithNoCase(LineData, "openonstart"))
527 {
528 if (equals == false)
529 return ScriptError("Syntax error");
530
531 elev->OpenOnStart = ToBool(value);
532 return sNextLine;
533 }
534 //Interlocks parameter
535 if (StartsWithNoCase(LineData, "interlocks"))
536 {
537 if (equals == false)
538 return ScriptError("Syntax error");
539
540 elev->Interlocks = ToBool(value);
541 return sNextLine;
542 }
543 //FloorHold parameter
544 if (StartsWithNoCase(LineData, "floorhold"))
545 {
546 if (equals == false)
547 return ScriptError("Syntax error");
548
549 elev->FloorHold = ToBool(value);
550 return sNextLine;
551 }
552 //MotorEmergencyStopSound parameter
553 if (StartsWithNoCase(LineData, "motoremergencystopsound"))
554 {
555 if (equals == false)
556 return ScriptError("Syntax error");
557
558 //check to see if file exists
559 parent->CheckFile("data/" + value);
560
561 elev->MotorEmergencyStopSound = value;
562 return sNextLine;
563 }
564 //EmergencyStopSpeed parameter
565 if (StartsWithNoCase(LineData, "emergencystopspeed"))
566 {
567 if (equals == false)
568 return ScriptError("Syntax error");
569 std::string str = Calc(value);
570 if (!IsNumeric(str, elev->EmergencyStopSpeed))
571 return ScriptError("Invalid value");
572 return sNextLine;
573 }
574 //ChimeOnArrival parameter
575 if (StartsWithNoCase(LineData, "chimeonarrival"))
576 {
577 if (equals == false)
578 return ScriptError("Syntax error");
579 elev->ChimeOnArrival = ToBool(value);
580 return sNextLine;
581 }
582 //ReOpen parameter
583 if (StartsWithNoCase(LineData, "reopen"))
584 {
585 if (equals == false)
586 return ScriptError("Syntax error");
587
588 elev->ReOpen = ToBool(value);
589 return sNextLine;
590 }
591 //HoistwayAccessHold parameter
592 if (StartsWithNoCase(LineData, "hoistwayaccesshold"))
593 {
594 if (equals == false)
595 return ScriptError("Syntax error");
596
597 elev->HoistwayAccessHold = ToBool(value);
598 return sNextLine;
599 }
600 //RunState parameter
601 if (StartsWithNoCase(LineData, "runstate"))
602 {
603 if (equals == false)
604 return ScriptError("Syntax error");
605
606 elev->SetRunState(ToBool(value));
607 return sNextLine;
608 }
609 //RopePosition parameter
610 if (StartsWithNoCase(LineData, "ropeposition"))
611 {
612 int params = SplitAfterEquals(LineData);
613 if (params != 3)
614 return ScriptError("Incorrect number of parameters");
615
616 //check numeric values
617 for (int i = 0; i <= 2; i++)
618 {
619 if (!IsNumeric(tempdata[i]))
620 return ScriptError("Invalid value: " + tempdata[i]);
621 }
622
623 elev->RopePosition = Vector3(ToFloat(tempdata[0]), ToFloat(tempdata[1]), ToFloat(tempdata[2]));
624 return sNextLine;
625 }
626 //RopeTexture parameter
627 if (StartsWithNoCase(LineData, "ropetexture"))
628 {
629 if (equals == false)
630 return ScriptError("Syntax error");
631
632 elev->RopeTexture = value;
633 return sNextLine;
634 }
635 //CounterweightStartSound parameter
636 if (StartsWithNoCase(LineData, "counterweightstartsound"))
637 {
638 if (equals == false)
639 return ScriptError("Syntax error");
640
641 //check to see if file exists
642 parent->CheckFile("data/" + value);
643
644 elev->CounterweightStartSound = value;
645 return sNextLine;
646 }
647 //CounterweightMoveSound parameter
648 if (StartsWithNoCase(LineData, "counterweightmovesound"))
649 {
650 if (equals == false)
651 return ScriptError("Syntax error");
652
653 //check to see if file exists
654 parent->CheckFile("data/" + value);
655
656 elev->CounterweightMoveSound = value;
657 return sNextLine;
658 }
659 //CounterweightStopSound parameter
660 if (StartsWithNoCase(LineData, "counterweightstopsound"))
661 {
662 if (equals == false)
663 return ScriptError("Syntax error");
664
665 //check to see if file exists
666 parent->CheckFile("data/" + value);
667
668 elev->CounterweightStopSound = value;
669 return sNextLine;
670 }
671 //ID parameter
672 if (StartsWithNoCase(LineData, "id "))
673 {
674 if (equals == false)
675 return ScriptError("Syntax error");
676 elev->ID = Calc(value);
677 return sNextLine;
678 }
679
680 //CreateElevator command
681 if (StartsWithNoCase(LineData, "createelevator"))
682 {
683 //get data
684 int params = SplitData(LineData, 15);
685
686 if (params != 4)
687 return ScriptError("Incorrect number of parameters");
688
689 //check numeric values
690 for (int i = 1; i <= 3; i++)
691 {
692 if (!IsNumeric(tempdata[i]))
693 return ScriptError("Invalid value: " + tempdata[i]);
694 }
695
696 bool result = elev->CreateElevator(ToBool(tempdata[0]), ToFloat(tempdata[1]), ToFloat(tempdata[2]), ToInt(tempdata[3]));
697 if (result == false)
698 return ScriptError();
699 StoreCommand(elev);
700 return sNextLine;
701 }
702
703 //CreateCounterweight command
704 if (StartsWithNoCase(LineData, "createcounterweight"))
705 {
706 //get data
707 int params = SplitData(LineData, 20);
708
709 if (params != 8)
710 return ScriptError("Incorrect number of parameters");
711
712 //check numeric values
713 for (int i = 2; i <= 7; i++)
714 {
715 if (!IsNumeric(tempdata[i]))
716 return ScriptError("Invalid value: " + tempdata[i]);
717 }
718
719 Vector3 size = Vector3(ToFloat(tempdata[4]), ToFloat(tempdata[5]), ToFloat(tempdata[6]));
720 StoreCommand(elev->CreateCounterweight(tempdata[0], tempdata[1], ToFloat(tempdata[2]), ToFloat(tempdata[3]), size, ToFloat(tempdata[7])));
721 return sNextLine;
722 }
723
724 //AddRails command
725 if (StartsWithNoCase(LineData, "addrails"))
726 {
727 //get data
728 int params = SplitData(LineData, 9);
729
730 if (params != 7)
731 return ScriptError("Incorrect number of parameters");
732
733 //check numeric values
734 for (int i = 2; i <= 6; i++)
735 {
736 if (i == 4)
737 i++;
738 if (!IsNumeric(tempdata[i]))
739 return ScriptError("Invalid value: " + tempdata[i]);
740 }
741
742 elev->AddRails(tempdata[0], tempdata[1], ToFloat(tempdata[2]), ToFloat(tempdata[3]), ToBool(tempdata[4]), ToFloat(tempdata[5]), ToFloat(tempdata[6]));
743 return sNextLine;
744 }
745
746 //process elevator car commands for default car
747 int result = parent->GetElevatorCarSection()->Run(LineData);
748 if (result != sContinue)
749 return result;
750
751 //handle end of elevator section
752 if (StartsWithNoCase(LineData, "<endelevator>") && config->RangeL == config->RangeH)
753 {
754 config->SectionNum = 0;
755 config->Context = "None";
756 engine->Report("Finished elevator");
757 return sNextLine;
758 }
759
760 //handle elevator range
761 if (config->RangeL != config->RangeH && StartsWithNoCase(LineData, "<endelevator"))
762 {
763 if (config->Current < config->RangeH)
764 {
765 config->Current++;
766 parent->line = config->RangeStart; //loop back
767 return sNextLine;
768 }
769 else
770 {
771 config->SectionNum = 0; //break out of loop
772 config->Context = "None";
773 config->RangeL = 0;
774 config->RangeH = 0;
775 engine->Report("Finished elevators");
776 return sNextLine;
777 }
778 }
779
780 return sContinue;
781}
782
783}
bool CreateElevator(bool relative, Real x, Real z, int floor)
Definition elevator.cpp:343
Real DepartureDelay
Definition elevator.h:100
bool Interlocks
Definition elevator.h:111
std::string MotorUpRunSound
Definition elevator.h:62
Vector3 MotorPosition
Definition elevator.h:86
Real DecelJerk
Definition elevator.h:51
std::string CounterweightStopSound
Definition elevator.h:124
std::string MotorEmergencyStopSound
Definition elevator.h:68
bool QueueResets
Definition elevator.h:87
Real LevelingOpen
Definition elevator.h:93
Real InspectionSpeed
Definition elevator.h:103
Real ParkingDelay
Definition elevator.h:89
Real LevelingOffset
Definition elevator.h:92
void SetFloorSkipText(const std::string &id)
Real EmergencyStopSpeed
Definition elevator.h:115
std::string MotorDownStartSound
Definition elevator.h:64
bool SetRecallFloor(int floor)
std::string Type
Definition elevator.h:38
Real ArrivalDelay
Definition elevator.h:101
std::string MotorDownRunSound
Definition elevator.h:65
void SetRunState(bool value)
bool HoistwayAccessHold
Definition elevator.h:119
bool LimitQueue
Definition elevator.h:104
Real LevelingSpeed
Definition elevator.h:91
bool DownPeak
Definition elevator.h:73
std::string Name
Definition elevator.h:36
Wall * CreateCounterweight(const std::string &frame_texture, const std::string &weight_texture, Real x, Real z, const Vector3 &size, Real weight_voffset)
Definition elevator.cpp:449
bool SetACPFloor(int floor)
std::string MotorUpStopSound
Definition elevator.h:63
int AssignedShaft
Definition elevator.h:56
Real AccelJerk
Definition elevator.h:50
std::string ID
Definition elevator.h:37
Real Deceleration
Definition elevator.h:49
std::string RopeTexture
Definition elevator.h:121
std::string MotorIdleSound
Definition elevator.h:67
std::string MotorUpStartSound
Definition elevator.h:61
bool InspectionService
Definition elevator.h:76
bool SetAlternateRecallFloor(int floor)
std::string MotorDownStopSound
Definition elevator.h:66
Real Acceleration
Definition elevator.h:48
std::string CounterweightStartSound
Definition elevator.h:122
bool ChimeOnArrival
Definition elevator.h:118
bool AddRails(const std::string &main_texture, const std::string &edge_texture, Real x, Real z, bool orientation, Real rail_distance, Real rail_width)
Definition elevator.cpp:513
int ParkingFloor
Definition elevator.h:88
int FireServicePhase1
Definition elevator.h:77
int NotifyEarly
Definition elevator.h:96
Real DownSpeed
Definition elevator.h:44
Vector3 RopePosition
Definition elevator.h:120
bool OpenOnStart
Definition elevator.h:108
std::string CounterweightMoveSound
Definition elevator.h:123
Elevator * GetElevator(int number)
Definition sbs.cpp:1746
Elevator * NewElevator(int number)
Definition sbs.cpp:1675
void Report(const std::string &message)
static const int sNextLine
Definition scriptproc.h:70
static const int sContinue
Definition scriptproc.h:69
static const int sError
Definition scriptproc.h:71
void StoreCommand(::SBS::Object *object)
std::string Calc(const std::string &expression)
Ogre::Vector3 Vector3
Definition globals.h:58
Ogre::Real Real
Definition globals.h:57
bool StartsWithNoCase(const std::string &string, const std::string &check_string)
Definition globals.cpp:237
void ReplaceAll(std::string &string, const std::string &original, const std::string &replacement)
Definition globals.cpp:201
int ToInt(const std::string &string)
Definition globals.cpp:402
std::string ToString(int number)
Definition globals.cpp:279
Real ToFloat(const std::string &string)
Definition globals.cpp:397
bool ToBool(std::string string)
Definition globals.cpp:407
bool IsNumeric(const wxString &string)