Isle
Loading...
Searching...
No Matches
isle.cpp
Go to the documentation of this file.
1#include "isle.h"
2
4#include "ambulance.h"
5#include "bike.h"
6#include "carrace.h"
7#include "dunebuggy.h"
8#include "helicopter.h"
9#include "isle_actions.h"
10#include "islepathactor.h"
11#include "jetski.h"
12#include "jetskirace.h"
13#include "jukebox_actions.h"
14#include "jukeboxentity.h"
16#include "legocontrolmanager.h"
17#include "legoinputmanager.h"
18#include "legomain.h"
19#include "legonamedtexture.h"
20#include "legopathstruct.h"
21#include "legoutils.h"
22#include "legovariables.h"
23#include "legovideomanager.h"
24#include "misc.h"
25#include "motorcycle.h"
28#include "mxmisc.h"
30#include "mxstillpresenter.h"
31#include "mxtransitionmanager.h"
32#include "mxvariabletable.h"
33#include "pizza.h"
34#include "pizzeria.h"
35#include "racecar.h"
36#include "scripts.h"
37#include "skateboard.h"
38#include "towtrack.h"
40
44
45// GLOBAL: LEGO1 0x100f1198
47
48// GLOBAL: LEGO1 0x100f37f0
51
52// FUNCTION: LEGO1 0x10030820
54{
55 m_pizza = NULL;
61 m_bike = NULL;
66 m_jetski = NULL;
69
71}
72
73// FUNCTION: LEGO1 0x10030a50
75{
78
79 if (InputManager()->GetWorld() == this) {
81 }
82
83 if (UserActor() != NULL) {
85 }
86
88}
89
90// FUNCTION: LEGO1 0x10030b20
92{
94 MxResult result = LegoWorld::Create(p_dsAction);
95
96 if (result == SUCCESS) {
97 ControlManager()->Register(this);
98 InputManager()->SetWorld(this);
100
101 switch (GameState()->GetLoadedAct()) {
104 break;
106 GameState()->StopArea(LegoGameState::e_act2main); // Looks like a bug
107 break;
110 }
111
112 if (GameState()->m_currentArea == LegoGameState::e_isle) {
114 }
115
116 LegoGameState* gameState = GameState();
117 Act1State* act1state = (Act1State*) gameState->GetState("Act1State");
118 if (act1state == NULL) {
119 act1state = (Act1State*) gameState->CreateState("Act1State");
120 }
121 m_act1state = act1state;
122
125 }
126
127 return result;
128}
129
130// FUNCTION: LEGO1 0x10030c10
131// FUNCTION: BETA10 0x10032b63
133{
134 MxLong result = 0;
135 MxNotificationParam& param = (MxNotificationParam&) p_param;
136 LegoWorld::Notify(p_param);
137
138 if (m_worldStarted) {
139 switch (param.GetNotification()) {
142 break;
145 switch (m_act1state->m_unk0x018) {
146 case 3:
147 result = m_pizza->Notify(p_param);
148 break;
149 case 10:
150 result = m_ambulance->Notify(p_param);
151 break;
152 }
153 break;
156 break;
158 switch (m_act1state->m_unk0x018) {
159 case 4:
160 result = UserActor()->Notify(p_param);
161 break;
162 case 8:
163 result = m_towtrack->Notify(p_param);
164 break;
165 case 10:
166 result = m_ambulance->Notify(p_param);
167 break;
168 }
169 break;
172 break;
174 Enable(TRUE);
175 break;
177 result = HandleTransitionEnd();
178 break;
179 }
180 }
181
182 return result;
183}
184
185// FUNCTION: LEGO1 0x10030d90
187{
188 MxLong result;
189
190 switch (m_act1state->m_unk0x018) {
191 case 2:
193 result = 1;
194 break;
195 case 3:
196 result = m_pizza->Notify(p_param);
197 break;
198 case 8:
199 result = m_towtrack->Notify(p_param);
200 break;
201 case 10:
202 result = m_ambulance->Notify(p_param);
203 break;
204 default:
205 result = m_radio.Notify(p_param);
206
207 if (result == 0) {
208 if (p_param.GetAction()->GetAtomId() == *g_jukeboxScript) {
209 MxS32 script = p_param.GetAction()->GetObjectId();
210
211 if (script >= JukeboxScript::c_JBMusic1 && script <= JukeboxScript::c_JBMusic6) {
213 result = 1;
214 }
215 }
216 else if (m_act1state->m_planeActive) {
217 MxS32 script = p_param.GetAction()->GetObjectId();
218
221 }
222 }
223 else {
224 MxS32 script = p_param.GetAction()->GetObjectId();
225
226 if (script == IsleScript::c_Avo917In_PlayWav ||
229 }
230 }
231 }
232 }
233
234 return result;
235}
236
237// FUNCTION: LEGO1 0x10030ef0
239{
240 switch (m_act1state->m_elevFloor) {
245 break;
247 if (m_act1state->m_unk0x01e) {
251 }
252 else {
256 }
257 break;
262 break;
263 }
264}
265
266// FUNCTION: LEGO1 0x10030fc0
268{
270
271 if (m_act1state->GetUnknown21()) {
275 }
276 else if (GameState()->GetLoadedAct() != LegoGameState::e_act1) {
278 FUN_10032620();
281 }
282}
283
284// FUNCTION: LEGO1 0x10031030
286{
287 if (p_param.m_unk0x28 == 1) {
288 MxDSAction action;
289
290 switch (p_param.m_clickedObjectId) {
293
294 switch (m_act1state->m_elevFloor) {
298 break;
302 break;
306 break;
307 }
308
310 break;
313
314 switch (m_act1state->m_elevFloor) {
318 break;
322 break;
326 break;
327 }
328
330 break;
333
334 switch (m_act1state->m_elevFloor) {
338 break;
342 break;
346 break;
347 }
348
350 break;
355 break;
360 break;
363 m_radio.Stop();
367 break;
370 m_radio.Stop();
374 break;
377 switch (rand() % 3) {
378 case 0:
380 break;
381 case 1:
383 break;
384 case 2:
386 break;
387 }
388
390 }
391 break;
394 break;
397 break;
400 break;
402 action.SetAtomId(*g_isleScript);
404 action.SetUnknown24(0);
405 Start(&action);
406 break;
408 UpdateGlobe();
409 break;
412 UpdateGlobe();
413 break;
416 UpdateGlobe();
417 break;
421 break;
425 break;
429 VariableTable()->SetVariable("VISIBILITY", "Show Policsta");
431 break;
435 break;
439 VariableTable()->SetVariable("VISIBILITY", "Show Gas");
441 break;
445 break;
446 }
447 }
448
449 return 0;
450}
451
452// FUNCTION: LEGO1 0x10031590
454{
455 MxS32 lightPosition = atoi(VariableTable()->GetVariable("lightposition"));
456
457 for (MxS32 i = 0; i < 6; i++) {
459
460 if (presenter != NULL) {
461 presenter->Enable(i == lightPosition);
462 }
463 }
464}
465
466// FUNCTION: LEGO1 0x100315f0
467// FUNCTION: BETA10 0x10033e46
469{
470 MxLong result = 0;
471
472 if (UserActor() != NULL) {
473 if (UserActor() == m_dunebuggy) {
474 result = m_dunebuggy->Notify(p_param);
475 }
476 else if (UserActor() == m_motocycle) {
477 result = m_motocycle->Notify(p_param);
478 }
479 }
480
481 switch (m_act1state->m_unk0x018) {
482 case 3:
483 result = m_pizza->Notify(p_param);
484 break;
485 case 8:
486 result = m_towtrack->Notify(p_param);
487 break;
488 case 10:
489 result = m_ambulance->Notify(p_param);
490 break;
491 }
492
493 if (result == 0) {
494 // These values correspond to certain paths on the island
495 switch (p_param.GetData()) {
496 case 0x12c:
498 result = 1;
499 break;
500 case 0x12d:
501 AnimationManager()->FUN_10064880("brickstr", 0, 20000);
502 result = 1;
503 break;
504 case 0x131:
505 if (m_act1state->m_unk0x018 != 10) {
507 }
508 result = 1;
509 break;
510 case 0x132:
511 AnimationManager()->FUN_10064880("mama", 0, 20000);
512 AnimationManager()->FUN_10064880("papa", 0, 20000);
513 result = 1;
514 break;
515 case 0x136:
516 LegoEntity* bouy = (LegoEntity*) Find("MxEntity", "bouybump");
517 if (bouy != NULL) {
519 }
520 result = 1;
521 break;
522 }
523 }
524
525 return result;
526}
527
528// FUNCTION: LEGO1 0x10031820
529// FUNCTION: BETA10 0x10034158
530void Isle::Enable(MxBool p_enable)
531{
532 if ((MxBool) m_set0xd0.empty() == p_enable) {
533 return;
534 }
535
536 LegoWorld::Enable(p_enable);
537 m_radio.Initialize(p_enable);
538
539 if (p_enable) {
540 CreateState();
541
544
545 if (UserActor() != NULL && UserActor()->GetActorId() != LegoActor::c_none) {
549
550 if (noPizzaSign != IsleScript::c_noneIsle) {
552 }
553 }
554
555 InputManager()->SetWorld(this);
558
560
561 if (m_act1state->m_unk0x018 == 0) {
562 MxS32 locations[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
563
564 for (MxU32 i = 0; i < 5; i++) {
565 MxS32 r = rand() % 5;
566
567 for (MxU32 j = 0; j < sizeOfArray(locations); j++) {
568 if (locations[j] != 0 && r-- == 0) {
569 AnimationManager()->AddExtra(locations[j], TRUE);
570 locations[j] = 0;
571 break;
572 }
573 }
574 }
575 }
576
577 if (UserActor() != NULL && UserActor()->IsA("Jetski")) {
579 actor->SpawnPlayer(
581 FALSE,
583 );
585 }
586 else {
587 FUN_10032620();
588 }
589
590 switch (GameState()->m_currentArea) {
595 break;
597 if (((JetskiRaceState*) GameState()->GetState("JetskiRaceState"))->m_unk0x28 == 2) {
599 }
600
603
604#ifdef COMPAT_MODE
605 {
607 m_jetski->Notify(param);
608 }
609#else
611#endif
612 break;
617 break;
622 break;
626
627#ifdef COMPAT_MODE
628 {
630 m_bike->Notify(param);
631 }
632#else
634#endif
635 break;
639
640#ifdef COMPAT_MODE
641 {
643 m_dunebuggy->Notify(param);
644 }
645#else
647#endif
648 break;
652
653#ifdef COMPAT_MODE
654 {
656 m_motocycle->Notify(param);
657 }
658#else
660#endif
661 break;
665
666#ifdef COMPAT_MODE
667 {
669 m_helicopter->Notify(param);
670 }
671#else
673#endif
674 break;
678
679#ifdef COMPAT_MODE
680 {
682 m_skateboard->Notify(param);
683 }
684#else
686#endif
687 break;
691
692#ifdef COMPAT_MODE
693 {
695 m_jetski->Notify(param);
696 }
697#else
699#endif
700 break;
701 default:
704 break;
705 }
706
707 switch (m_act1state->m_unk0x018) {
708 case 0:
709 case 1:
711
712 if (GameState()->m_currentArea == LegoGameState::e_pizzeriaExterior) {
714 }
715 else if (GameState()->m_currentArea == LegoGameState::e_unk66) {
717
718 Mx3DPointFloat sub(-21.375f, 0.0f, -41.75f);
719 sub -= position;
720 if (sub.LenSquared() < 1024.0f) {
722 }
723
724 Mx3DPointFloat sub2(98.874992f, 0.0f, -46.156292f);
725 sub2 -= position;
726 if (sub2.LenSquared() < 1024.0f) {
728 }
729 }
730 break;
731 case 5: {
733 ->SpawnPlayer(
735 FALSE,
737 );
738 JetskiRaceState* raceState = (JetskiRaceState*) GameState()->GetState("JetskiRaceState");
739
740 if (raceState->m_unk0x28 == 2) {
742
743 switch (raceState->GetState(GameState()->GetActorId())->GetUnknown0x02()) {
744 case 1:
746 break;
747 case 2:
749 break;
750 case 3:
752 break;
753 }
754
757 }
758
762 break;
763 }
764 case 6: {
767 ->SpawnPlayer(
769 FALSE,
771 );
772 CarRaceState* raceState = (CarRaceState*) GameState()->GetState("CarRaceState");
773
774 if (raceState->m_unk0x28 == 2) {
776
777 switch (raceState->GetState(GameState()->GetActorId())->GetUnknown0x02()) {
778 case 1:
780 break;
781 case 2:
783 break;
784 case 3:
786 break;
787 }
788
791 }
792
795 break;
796 }
797 case 7:
799
802
803 g_isleFlags &= ~c_playMusic;
805 break;
806 case 9:
808
811
812 g_isleFlags &= ~c_playMusic;
814 break;
815 case 11:
818 ->SpawnPlayer(
820 TRUE,
822 );
826 break;
827 }
828
830
831 if (m_act1state->m_unk0x018 != 8 &&
832 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_elevride) &&
833 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_polidoor) &&
834 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_garadoor) &&
835 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_bike) &&
836 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_dunecar) &&
837 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_motocycle) &&
838 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_copter) &&
839 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_jetski) &&
840 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_skateboard) &&
841 (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_jetrace2)) {
843 }
844
845 SetROIVisible("stretch", FALSE);
846 SetROIVisible("bird", FALSE);
847 SetROIVisible("rcred", FALSE);
848 SetROIVisible("towtk", FALSE);
849 SetROIVisible("pizpie", FALSE);
850 }
851 else {
852 if (InputManager()->GetWorld() == this) {
854 }
855
857 }
858}
859
860// FUNCTION: LEGO1 0x10032620
862{
863 VideoManager()->Get3DManager()->SetFrustrum(90.0, 0.1, 250.0);
864
865 switch (GameState()->m_currentArea) {
867 MxMatrix mat(UserActor()->GetROI()->GetLocal2World());
868 LegoPathBoundary* boundary = UserActor()->GetBoundary();
869 ((IslePathActor*) UserActor())->VTable0xec(mat, boundary, TRUE);
870 break;
871 }
883 ->SpawnPlayer(
885 TRUE,
887 );
889 break;
890 }
891}
892
893// FUNCTION: LEGO1 0x100327a0
895{
898
901 }
902
903 switch (m_destLocation) {
908 break;
911 VariableTable()->SetVariable("VISIBILITY", "Hide infocen");
913 break;
916
919 }
920 break;
925 "LCAMZIS,90",
926 FALSE
927 );
928 break;
933 "LCAMZIE,90",
934 FALSE
935 );
936 break;
941 "LCAMZIW,90",
942 FALSE
943 );
944 break;
949 "LCAMZIN,90",
950 FALSE
951 );
952 break;
955 VariableTable()->SetVariable("VISIBILITY", "Hide Gas");
957 break;
962 VariableTable()->SetVariable("VISIBILITY", "Show Gas");
967 break;
972 VariableTable()->SetVariable("VISIBILITY", "Show Policsta");
977 break;
980 VariableTable()->SetVariable("VISIBILITY", "Hide Policsta");
984 "LCAMZP1,90",
985 FALSE
986 );
987 break;
991
992 if (!m_act1state->m_unk0x01f) {
994 }
995 break;
999
1000 if (!m_act1state->m_unk0x01f) {
1002 }
1003 break;
1007
1008 if (!m_act1state->m_unk0x01f) {
1010 }
1011 break;
1015 break;
1019
1020 if (!m_act1state->m_unk0x01f) {
1022 }
1023 break;
1026 m_act1state->m_unk0x018 = 10;
1028
1029 if (!m_act1state->m_unk0x01f) {
1031 }
1032 break;
1037
1038 if (!m_act1state->m_unk0x01f) {
1040 }
1041 break;
1045
1046 if (!m_act1state->m_unk0x01f) {
1048 }
1049 break;
1050 default:
1053 }
1054
1055 return 1;
1056}
1057
1058// FUNCTION: LEGO1 0x10032d30
1060 IsleScript::Script p_script,
1061 JukeboxScript::Script p_music,
1062 const char* p_cameraLocation,
1063 MxBool p_und
1064)
1065{
1066 if (m_act1state->m_unk0x01f) {
1067 MxPresenter* presenter = (MxPresenter*) Find(m_atomId, p_script);
1068
1069 if (presenter != NULL && presenter->GetCurrentTickleState() == MxPresenter::e_repeating) {
1070 if (p_music != JukeboxScript::c_MusicTheme1) {
1071 PlayMusic(p_music);
1072 }
1073
1074 if (p_und) {
1076 }
1077 else {
1079 }
1080
1081 if (p_cameraLocation != NULL) {
1082 VariableTable()->SetVariable(g_varCAMERALOCATION, p_cameraLocation);
1083 }
1084
1089 }
1090 else {
1092 }
1093 }
1094 else {
1099 }
1100}
1101
1102// FUNCTION: LEGO1 0x10032f10
1103void Isle::Add(MxCore* p_object)
1104{
1105 LegoWorld::Add(p_object);
1106
1107 if (p_object->IsA("Pizza")) {
1108 m_pizza = (Pizza*) p_object;
1109 }
1110 else if (p_object->IsA("Pizzeria")) {
1111 m_pizzeria = (Pizzeria*) p_object;
1112 }
1113 else if (p_object->IsA("TowTrack")) {
1114 m_towtrack = (TowTrack*) p_object;
1115 }
1116 else if (p_object->IsA("Ambulance")) {
1117 m_ambulance = (Ambulance*) p_object;
1118 }
1119 else if (p_object->IsA("JukeBoxEntity")) {
1120 m_jukebox = (JukeBoxEntity*) p_object;
1121 }
1122 else if (p_object->IsA("Helicopter")) {
1123 m_helicopter = (Helicopter*) p_object;
1124 }
1125 else if (p_object->IsA("Bike")) {
1126 m_bike = (Bike*) p_object;
1127 }
1128 else if (p_object->IsA("DuneBuggy")) {
1129 m_dunebuggy = (DuneBuggy*) p_object;
1130 }
1131 else if (p_object->IsA("Motorcycle")) {
1132 m_motocycle = (Motocycle*) p_object;
1133 }
1134 else if (p_object->IsA("SkateBoard")) {
1135 m_skateboard = (SkateBoard*) p_object;
1136 }
1137 else if (p_object->IsA("Jetski")) {
1138 m_jetski = (Jetski*) p_object;
1139 }
1140 else if (p_object->IsA("RaceCar")) {
1141 m_racecar = (RaceCar*) p_object;
1142 }
1143}
1144
1145// FUNCTION: LEGO1 0x10033050
1147{
1148 LegoWorld::Remove(p_actor);
1149
1150 if (p_actor->IsA("Helicopter")) {
1152 }
1153 else if (p_actor->IsA("DuneBuggy")) {
1154 m_dunebuggy = NULL;
1155 }
1156 else if (p_actor->IsA("Jetski")) {
1157 m_jetski = NULL;
1158 }
1159 else if (p_actor->IsA("RaceCar")) {
1160 m_racecar = NULL;
1161 }
1162}
1163
1164// FUNCTION: LEGO1 0x100330e0
1166{
1167 m_act1state = (Act1State*) GameState()->GetState("Act1State");
1168 if (!m_act1state) {
1169 m_act1state = (Act1State*) GameState()->CreateState("Act1State");
1171 }
1172
1178
1179 if (m_helicopter != NULL) {
1181 }
1182}
1183
1184// FUNCTION: LEGO1 0x10033170
1186{
1187 // empty
1188}
1189
1190// FUNCTION: LEGO1 0x10033180
1192{
1193 m_radio.Stop();
1195
1196 switch (m_act1state->m_unk0x018) {
1197 case 3:
1198 if (UserActor() != NULL) {
1201 }
1202 break;
1203 case 8:
1204 if (UserActor() != NULL && !UserActor()->IsA("TowTrack")) {
1207 }
1208 break;
1209 case 10:
1210 if (UserActor() != NULL && !UserActor()->IsA("Ambulance")) {
1213 }
1214 break;
1215 }
1216
1217 if (m_act1state->m_unk0x01e == TRUE) {
1220 }
1221
1223
1226
1227 if (UserActor()) {
1228 if (UserActor()->GetActorId() != GameState()->GetActorId()) {
1229 ((IslePathActor*) UserActor())->Exit();
1231 }
1232 }
1233
1235 VariableTable()->SetVariable("VISIBILITY", "Show Policsta");
1236 }
1237
1238 if (GameState()->m_currentArea == LegoGameState::e_garadoor) {
1239 VariableTable()->SetVariable("VISIBILITY", "Show Gas");
1240 }
1241
1244 return TRUE;
1245}
1246
1247// FUNCTION: LEGO1 0x10033350
1249{
1250 if (m_act1state->m_unk0x018 == 10) {
1251 if (UserActor() != NULL && !UserActor()->IsA("Ambulance")) {
1254 }
1255 }
1256
1257 if (m_act1state->m_unk0x018 == 8) {
1258 if (UserActor() != NULL && !UserActor()->IsA("TowTrack")) {
1261 }
1262 }
1263
1264 if (m_act1state->m_unk0x018 == 3) {
1265 if (UserActor() != NULL) {
1268 }
1269 }
1270
1272
1273 if (UserActor()) {
1274 if (UserActor()->GetActorId() != GameState()->GetActorId()) {
1275 ((IslePathActor*) UserActor())->Exit();
1277 }
1278 }
1279
1281 VariableTable()->SetVariable("VISIBILITY", "Show Policsta");
1282 }
1283
1284 if (GameState()->m_currentArea == LegoGameState::e_garadoor) {
1285 VariableTable()->SetVariable("VISIBILITY", "Show Gas");
1286 }
1287
1289}
1290
1291// FUNCTION: LEGO1 0x100334b0
1292// FUNCTION: BETA10 0x10035197
1294{
1296 m_unk0x018 = 1;
1297 m_unk0x01e = FALSE;
1299 m_unk0x01f = FALSE;
1302 m_unk0x022 = FALSE;
1308 m_unk0x021 = 1;
1310 m_jetski = NULL;
1312 m_dunebuggy = NULL;
1316 m_racecar = NULL;
1317 Reset();
1318}
1319
1320// FUNCTION: LEGO1 0x10033ac0
1321// FUNCTION: BETA10 0x1003524f
1323{
1324 LegoState::Serialize(p_storage);
1325
1326 m_motocyclePlane.Serialize(p_storage);
1327 m_bikePlane.Serialize(p_storage);
1328 m_skateboardPlane.Serialize(p_storage);
1329 m_helicopterPlane.Serialize(p_storage);
1330 m_jetskiPlane.Serialize(p_storage);
1331 m_dunebuggyPlane.Serialize(p_storage);
1332 m_racecarPlane.Serialize(p_storage);
1333
1334 if (p_storage->IsWriteMode()) {
1335 if (strcmp(m_helicopterPlane.m_name.GetData(), "")) {
1337 WriteDefaultTexture(p_storage, "chwind.gif");
1338 }
1339 else {
1341 }
1342
1343 if (!m_helicopterJetLeft) {
1344 WriteDefaultTexture(p_storage, "chjetl.gif");
1345 }
1346 else {
1348 }
1349
1350 if (!m_helicopterJetRight) {
1351 WriteDefaultTexture(p_storage, "chjetr.gif");
1352 }
1353 else {
1355 }
1356 }
1357
1358 if (strcmp(m_jetskiPlane.m_name.GetData(), "")) {
1359 if (!m_jetskiFront) {
1360 WriteDefaultTexture(p_storage, "jsfrnt.gif");
1361 }
1362 else {
1363 WriteNamedTexture(p_storage, m_jetskiFront);
1364 }
1365
1366 if (!m_jetskiWindshield) {
1367 WriteDefaultTexture(p_storage, "jswnsh.gif");
1368 }
1369 else {
1371 }
1372 }
1373
1374 if (strcmp(m_dunebuggyPlane.m_name.GetData(), "")) {
1375 if (!m_dunebuggyFront) {
1376 WriteDefaultTexture(p_storage, "dbfrfn.gif");
1377 }
1378 else {
1380 }
1381 }
1382
1383 if (strcmp(m_racecarPlane.m_name.GetData(), "")) {
1384 if (!m_racecarFront) {
1385 WriteDefaultTexture(p_storage, "rcfrnt.gif");
1386 }
1387 else {
1389 }
1390
1391 if (!m_racecarBack) {
1392 WriteDefaultTexture(p_storage, "rcback.gif");
1393 }
1394 else {
1395 WriteNamedTexture(p_storage, m_racecarBack);
1396 }
1397
1398 if (!m_racecarTail) {
1399 WriteDefaultTexture(p_storage, "rctail.gif");
1400 }
1401 else {
1402 WriteNamedTexture(p_storage, m_racecarTail);
1403 }
1404 }
1405
1407 p_storage->WriteU8(m_unk0x022);
1408 }
1409 else if (p_storage->IsReadMode()) {
1410 if (strcmp(m_helicopterPlane.m_name.GetData(), "")) {
1411 if ((m_helicopterWindshield = ReadNamedTexture(p_storage)) == NULL) {
1412 return FAILURE;
1413 }
1414
1415 if ((m_helicopterJetLeft = ReadNamedTexture(p_storage)) == NULL) {
1416 return FAILURE;
1417 }
1418
1419 if ((m_helicopterJetRight = ReadNamedTexture(p_storage)) == NULL) {
1420 return FAILURE;
1421 }
1422 }
1423
1424 if (strcmp(m_jetskiPlane.m_name.GetData(), "")) {
1425 if ((m_jetskiFront = ReadNamedTexture(p_storage)) == NULL) {
1426 return FAILURE;
1427 }
1428
1429 if ((m_jetskiWindshield = ReadNamedTexture(p_storage)) == NULL) {
1430 return FAILURE;
1431 }
1432 }
1433
1434 if (strcmp(m_dunebuggyPlane.m_name.GetData(), "")) {
1435 if ((m_dunebuggyFront = ReadNamedTexture(p_storage)) == NULL) {
1436 return FAILURE;
1437 }
1438 }
1439
1440 if (strcmp(m_racecarPlane.m_name.GetData(), "")) {
1441 if ((m_racecarFront = ReadNamedTexture(p_storage)) == NULL) {
1442 return FAILURE;
1443 }
1444
1445 if ((m_racecarBack = ReadNamedTexture(p_storage)) == NULL) {
1446 return FAILURE;
1447 }
1448
1449 if ((m_racecarTail = ReadNamedTexture(p_storage)) == NULL) {
1450 return FAILURE;
1451 }
1452 }
1453
1455 p_storage->ReadU8(m_unk0x022);
1456 }
1457
1458 return SUCCESS;
1459}
1460
1461// FUNCTION: LEGO1 0x10034660
1463{
1467
1470 }
1471}
1472
1473// FUNCTION: LEGO1 0x100346a0
1475{
1479 }
1480}
1481
1482// FUNCTION: LEGO1 0x100346d0
1484{
1486 m_bikePlane.m_name = "";
1488 m_unk0x022 = FALSE;
1489
1494 }
1495
1496 if (m_helicopterJetLeft) {
1497 delete m_helicopterJetLeft;
1499 }
1500
1502 delete m_helicopterJetRight;
1504 }
1505
1506 if (m_helicopter) {
1507 delete m_helicopter;
1509 }
1510
1511 m_jetskiPlane.m_name = "";
1512 if (m_jetskiFront) {
1513 delete m_jetskiFront;
1515 }
1516
1517 if (m_jetskiWindshield) {
1518 delete m_jetskiWindshield;
1520 }
1521
1522 if (m_jetski) {
1523 delete m_jetski;
1524 m_jetski = NULL;
1525 }
1526
1528 if (m_dunebuggyFront) {
1529 delete m_dunebuggyFront;
1531 }
1532
1533 if (m_dunebuggy) {
1534 delete m_dunebuggy;
1535 m_dunebuggy = NULL;
1536 }
1537
1539 if (m_racecarFront) {
1540 delete m_racecarFront;
1542 }
1543
1544 if (m_racecarBack) {
1545 delete m_racecarBack;
1547 }
1548
1549 if (m_racecarTail) {
1550 delete m_racecarTail;
1552 }
1553
1554 if (m_racecar) {
1555 delete m_racecar;
1556 m_racecar = NULL;
1557 }
1558
1559 return TRUE;
1560}
1561
1562// FUNCTION: LEGO1 0x10034b60
1564{
1566
1570
1571 if (isle->m_helicopter != NULL) {
1573 m_helicopter = isle->m_helicopter;
1575 isle->VTable0x6c(m_helicopter);
1578 }
1579
1580 if (isle->m_jetski != NULL) {
1582 m_jetski = isle->m_jetski;
1583 isle->RemoveActor(m_jetski);
1584 isle->VTable0x6c(m_jetski);
1587 }
1588
1589 if (isle->m_dunebuggy != NULL) {
1591 m_dunebuggy = isle->m_dunebuggy;
1592 isle->RemoveActor(m_dunebuggy);
1593 isle->VTable0x6c(m_dunebuggy);
1596 }
1597
1598 if (isle->m_racecar != NULL) {
1600 m_racecar = isle->m_racecar;
1601 isle->RemoveActor(m_racecar);
1602 isle->VTable0x6c(m_racecar);
1605 }
1606}
1607
1608// FUNCTION: LEGO1 0x10034d00
1610{
1612
1615 }
1616 else {
1617 isle->PlaceActor(isle->m_motocycle, "INT43", 4, 0.5f, 1, 0.5f);
1618 }
1619
1620 if (m_bikePlane.IsPresent()) {
1622 }
1623 else {
1624 isle->PlaceActor(isle->m_bike, "INT44", 2, 0.5f, 0, 0.5f);
1625 }
1626
1629 }
1630 else {
1631 isle->PlaceActor(isle->m_skateboard, "EDG02_84", 4, 0.5f, 0, 0.5f);
1632 }
1633
1634 if (m_helicopter != NULL) {
1637 }
1638 else {
1639 isle->PlaceActor(m_helicopter, m_helicopterPlane.GetName(), 0, 0.5f, 1, 0.5f);
1644 TRUE
1645 );
1646 isle->Add(m_helicopter);
1647 m_helicopter->SetWorld(isle);
1648 }
1649
1654
1659 }
1660
1661 if (m_helicopterJetLeft != NULL) {
1663 delete m_helicopterJetLeft;
1665 }
1666
1667 if (m_helicopterJetRight != NULL) {
1669 delete m_helicopterJetRight;
1671 }
1672 }
1673
1674 if (m_jetski != NULL) {
1675 if (!m_jetskiPlane.IsPresent()) {
1677 }
1678 else {
1679 isle->PlaceActor(m_jetski, m_jetskiPlane.GetName(), 0, 0.5f, 1, 0.5f);
1680 m_jetski
1682 isle->Add(m_jetski);
1683 m_jetski->SetWorld(isle);
1684 }
1685
1689 m_jetski = NULL;
1690
1691 if (m_jetskiFront != NULL) {
1693 delete m_jetskiFront;
1695 }
1696
1697 if (m_jetskiWindshield != NULL) {
1699 delete m_jetskiWindshield;
1701 }
1702 }
1703
1704 if (m_dunebuggy != NULL) {
1705 if (!m_dunebuggyPlane.IsPresent()) {
1707 }
1708 else {
1709 isle->PlaceActor(m_dunebuggy, m_dunebuggyPlane.GetName(), 0, 0.5f, 1, 0.5f);
1714 TRUE
1715 );
1716 isle->Add(m_dunebuggy);
1717 m_dunebuggy->SetWorld(isle);
1718 }
1719
1723 m_dunebuggy = NULL;
1724
1725 if (m_dunebuggyFront != NULL) {
1727 delete m_dunebuggyFront;
1729 }
1730 }
1731
1732 if (m_racecar != NULL) {
1733 if (!m_racecarPlane.IsPresent()) {
1735 }
1736 else {
1737 isle->PlaceActor(m_racecar, m_racecarPlane.GetName(), 0, 0.5f, 1, 0.5f);
1742 TRUE
1743 );
1744 isle->Add(m_racecar);
1745 m_racecar->SetWorld(isle);
1746 }
1747
1751 m_racecar = NULL;
1752
1753 if (m_racecarFront != NULL) {
1755 delete m_racecarFront;
1757 }
1758
1759 if (m_racecarBack != NULL) {
1761 delete m_racecarBack;
1763 }
1764
1765 if (m_racecarTail != NULL) {
1767 delete m_racecarTail;
1769 }
1770 }
1771}
MxU32 g_isleFlags
Definition: isle.cpp:46
[AI] Holds state and transient gameplay data for the first act on Lego Island.
Definition: isle.h:29
MxBool Reset() override
[AI] Resets all internal state, including planes, pointers, vehicle flags, and clears dynamic memory ...
Definition: isle.cpp:1483
LegoNamedTexture * m_jetskiWindshield
[AI] Named texture for jetski windshield (state restoration, streaming). [AI]
Definition: isle.h:146
LegoNamedTexture * m_racecarFront
[AI] Named texture for racecar front (state restoration, streaming). [AI]
Definition: isle.h:164
void RemoveActors()
[AI] Serializes all current actor locations and status, disassociating them from the world for later ...
Definition: isle.cpp:1563
undefined m_unk0x021
[AI] Internal state/transition flag, possibly for initializing/handling world entry....
Definition: isle.h:107
DuneBuggy * m_dunebuggy
[AI] Serializable pointer to current dune buggy object (NULL when not held in state)....
Definition: isle.h:158
LegoNamedTexture * m_jetskiFront
[AI] Named texture for jetski front (state restoration, streaming). [AI]
Definition: isle.h:143
Playlist m_cptClickDialogue
[AI] Playlist object which cycles and holds available "Captain Click" audio scripts for the info cent...
Definition: isle.h:86
LegoNamedPlane m_bikePlane
[AI] Serialized/deserialized world placement state for bike.
Definition: isle.h:119
MxU8 GetUnknown21()
[AI] Returns the internal state variable at 0x021 (unknown, seems to control transitions).
Definition: isle.h:74
void SetUnknown18(MxU32 p_unk0x18)
[AI] Sets the gameplay progress variable at 0x018 (controls state transitions, gameplay mode changes,...
Definition: isle.h:77
Helicopter * m_helicopter
[AI] Serializable pointer to current helicopter object (NULL when not held in state)....
Definition: isle.h:137
RaceCar * m_racecar
[AI] Serializable pointer to current racecar object (NULL when not held in state)....
Definition: isle.h:173
MxBool m_unk0x022
[AI] Temporary state variable; persists through serialization, often used for logic gating....
Definition: isle.h:110
LegoNamedPlane m_motocyclePlane
[AI] Serialized/deserialized world placement state for motorcycle.
Definition: isle.h:116
void PlayCptClickDialogue()
[AI] Starts the "Captain Click" dialogue cutscene/playlist with audio and triggers background music f...
Definition: isle.cpp:1462
MxS16 m_elevFloor
[AI] Current floor of the elevator, using enum ElevatorFloor.
Definition: isle.h:95
IsleScript::Script m_currentCptClickDialogue
[AI] Currently playing island script for the cutscene/voiceover event initiated by Captain Click.
Definition: isle.h:89
LegoNamedTexture * m_helicopterJetLeft
[AI] Named texture for left jet on helicopter (needed for restoration/streaming). [AI]
Definition: isle.h:131
LegoNamedTexture * m_dunebuggyFront
[AI] Named texture for dune buggy front (state restoration, streaming). [AI]
Definition: isle.h:155
MxResult Serialize(LegoStorage *p_storage) override
[AI] Serializes all vehicle/named plane and other gameplay state to/from given persistent storage.
Definition: isle.cpp:1322
void SetUnknown21(MxU8 p_unk0x21)
[AI] Sets the state flag at offset 0x021 (purpose: controls certain transitions and checks).
Definition: isle.h:83
MxU32 m_unk0x018
[AI] Internal gameplay state variable; see Get/SetUnknown18 for usage. [AI]
Definition: isle.h:92
LegoNamedTexture * m_helicopterWindshield
[AI] Named texture for helicopter windshield (needed for state restoration, texture streaming)....
Definition: isle.h:128
LegoNamedPlane m_helicopterPlane
[AI] Serialized/deserialized world placement state for helicopter.
Definition: isle.h:125
LegoNamedPlane m_skateboardPlane
[AI] Serialized/deserialized world placement state for skateboard.
Definition: isle.h:122
void PlaceActors()
[AI] Places all actors/vehicles in the world at their previously-serialized locations and attaches th...
Definition: isle.cpp:1609
LegoNamedTexture * m_racecarTail
[AI] Named texture for racecar tail (state restoration, streaming). [AI]
Definition: isle.h:170
LegoNamedPlane m_jetskiPlane
[AI] Placement state for jetski in world (serializable). [AI]
Definition: isle.h:140
MxBool m_unk0x01e
[AI] Temporary flag for info center elevator; used to determine if elevator is currently active/trans...
Definition: isle.h:98
LegoNamedTexture * m_racecarBack
[AI] Named texture for racecar back (state restoration, streaming). [AI]
Definition: isle.h:167
LegoNamedPlane m_dunebuggyPlane
[AI] Placement state for dune buggy in world (serializable). [AI]
Definition: isle.h:152
@ c_floor3
[AI] 3rd floor
Definition: isle.h:35
@ c_floor2
[AI] 2nd floor
Definition: isle.h:34
@ c_floor1
[AI] 1st floor
Definition: isle.h:33
MxBool m_planeActive
[AI] Indicates that the airplane cutscene is currently active (info center window)....
Definition: isle.h:104
Act1State()
[AI] Constructs a new instance and resets default state, including initializing cutscene playlist and...
Definition: isle.cpp:1293
LegoNamedPlane m_racecarPlane
[AI] Placement state for racecar in world (serializable). [AI]
Definition: isle.h:161
Jetski * m_jetski
[AI] Serializable pointer to current jetski object (NULL when not held in state). [AI]
Definition: isle.h:149
MxBool m_unk0x01f
[AI] Temporary flag for info center elevator; often used as a "ready for transition" check....
Definition: isle.h:101
LegoNamedTexture * m_helicopterJetRight
[AI] Named texture for right jet on helicopter (needed for restoration/streaming)....
Definition: isle.h:134
void StopCptClickDialogue()
[AI] Stops the "Captain Click" dialogue cutscene if playing and resets background music....
Definition: isle.cpp:1474
Main game logic and control entity for the Ambulance gameplay activity.
Definition: ambulance.h:75
MxLong Notify(MxParam &p_param) override
[AI] Handles notifications from the system (events, actions, button presses, etc.).
Definition: ambulance.cpp:125
void CreateState()
[AI] Ensures AmbulanceMissionState is present in the game state manager; creates if missing....
Definition: ambulance.cpp:111
void FUN_10037250()
[AI] Resets game- and mission-related state after the mission; restores music, resets state objects,...
Definition: ambulance.cpp:574
void ActivateSceneActions()
[AI] Handles the enabling of in-game ambient/scene actions when player enters the hospital scene....
Definition: ambulance.cpp:466
void FUN_10036e60()
[AI] Marks mission as failed/successful, triggers cutscene/animation for mission outcome....
Definition: ambulance.cpp:401
void StopActions()
[AI] Stops currently running scripted actions/animations associated with the Ambulance mission....
Definition: ambulance.cpp:568
[AI] Represents the player's bicycle vehicle in LEGO Island, allowing for in-world interactions such ...
Definition: bike.h:15
void ActivateSceneActions()
[AI] Triggers the bike's area-specific actions, such as playing background music and starting scripte...
Definition: bike.cpp:109
The state object used for the car race mini-game.
Definition: carrace.h:16
[AI] Represents the player-controllable dune buggy vehicle in LEGO Island, inheriting movement and in...
Definition: dunebuggy.h:16
void ActivateSceneActions()
[AI] Triggers cutscene/cinematic actions associated with the garage/dune buggy scenario ("scene actio...
Definition: dunebuggy.cpp:190
[AI] Represents the flyable helicopter vehicle/path actor in the game, handling all in-game behaviors...
Definition: helicopter.h:57
void CreateState()
[AI] Creates or retrieves the associated HelicopterState instance for this actor. [AI]
Definition: helicopter.cpp:69
MxLong Notify(MxParam &p_param) override
[AI] Handles notification messages sent to this actor and dispatches to the appropriate handler based...
Definition: isleactor.cpp:29
Derived path actor type for handling player transitions and activities on LEGO Island.
Definition: islepathactor.h:23
@ c_spawnBit1
[AI] Bit flag to trigger additional camera/animation sequence during spawn. [AI]
Definition: islepathactor.h:30
@ c_playMusic
[AI] Bit flag to trigger background music playback on spawn. [AI]
Definition: islepathactor.h:31
@ c_spawnBit3
[AI] Unused/reserved extra spawn bit in flag set. [AI]
Definition: islepathactor.h:32
virtual void SpawnPlayer(LegoGameState::Area p_area, MxBool p_enter, MxU8 p_flags)
[AI] Spawns the player in a specific area/location, potentially triggering music and animation.
void SetWorld(LegoWorld *p_world)
[AI] Sets the current world this actor belongs to, updating its reference for placement.
MxLong Notify(MxParam &p_param) override
[AI] Dispatches notifications to specialized handlers based on notification type.
[AI] Represents the main overworld (LEGO Island) in the game, acting as the central hub and state mac...
Definition: isle.h:179
Pizzeria * m_pizzeria
[AI] Pointer to pizzeria scene.
Definition: isle.h:291
void CreateState()
[AI] Reinstantiates/reset the play state in all child objects (radio, vehicles, pizzeria,...
Definition: isle.cpp:1165
LegoGameState::Area m_destLocation
[AI] Next requested world/area to transition to after animation/dialogue/cutscene currently in progre...
Definition: isle.h:327
Act1State * m_act1state
[AI] Points to active Act1State, holding currently serialized vehicle and gameplay data.
Definition: isle.h:285
~Isle() override
[AI] Cleans up Isle world, unregistering notifications and releasing allocated resources/pointer stat...
Definition: isle.cpp:74
MxLong Notify(MxParam &p_param) override
[AI] Handles incoming notifications from various event sources, dispatches to specialized handlers wh...
Definition: isle.cpp:132
SkateBoard * m_skateboard
[AI] Pointer to skateboard actor.
Definition: isle.h:315
Jetski * m_jetski
[AI] Pointer to jetski actor.
Definition: isle.h:321
MxLong HandleControl(LegoControlManagerNotificationParam &p_param)
[AI] Processes control notifications (e.g., elevator, arrow buttons, environment toggles),...
Definition: isle.cpp:285
void FUN_10032620()
[AI] Internal utility to setup camera/actor state after some transitions (e.g., resets view and spawn...
Definition: isle.cpp:861
Ambulance * m_ambulance
[AI] Pointer to ambulance actor.
Definition: isle.h:297
Radio m_radio
[AI] In-world radio/audio playback manager.
Definition: isle.h:324
Pizza * m_pizza
[AI] Pointer to pizza actor.
Definition: isle.h:288
MxLong HandleTransitionEnd()
[AI] Handles transitions for all destination logic (scene swaps with audio/video cut,...
Definition: isle.cpp:894
MxLong HandlePathStruct(LegoPathStructNotificationParam &p_param)
[AI] Dispatches Lego path structure notifications (actor/path region completed, unique triggers) to v...
Definition: isle.cpp:468
Helicopter * m_helicopter
[AI] Pointer to helicopter actor (if present).
Definition: isle.h:303
void FUN_10032d30(IsleScript::Script p_script, JukeboxScript::Script p_music, const char *p_cameraLocation, MxBool p_und)
[AI] Facilitates transitions with visual and audio state, camera positioning and palette reset for th...
Definition: isle.cpp:1059
void Add(MxCore *p_object) override
[AI] Adds an object/actor to the Isle world, binding pointers for special-cased vehicles or entities.
Definition: isle.cpp:1103
RaceCar * m_racecar
[AI] Pointer to racecar actor.
Definition: isle.h:318
Bike * m_bike
[AI] Pointer to bike actor.
Definition: isle.h:306
MxBool Escape() override
[AI] Handles exiting from this world (Escape key, area transition, etc.). Manages background audio/sc...
Definition: isle.cpp:1191
virtual void VTable0x6c(LegoPathActor *p_actor)
[AI] Removes a path-based actor (vehicle, etc.) from the Isle world and unbinds pointers as needed.
Definition: isle.cpp:1146
MxResult Create(MxDSAction &p_dsAction) override
[AI] Sets up the Isle world based on the given MxDSAction (content/scene/act loading entry).
Definition: isle.cpp:91
MxBool IsA(const char *p_name) const override
[AI] Returns whether this or a base class matches the string argument.
MxLong HandleEndAction(MxEndActionNotificationParam &p_param)
[AI] Processes notifications marking the end of actions (animations, audio, transitions),...
Definition: isle.cpp:186
void UpdateGlobe()
[AI] Updates the globe UI in the observation area, enabling the correct presenter's bitmap representi...
Definition: isle.cpp:453
void FUN_10033350()
[AI] Performs world cleanup related to transitions and resets (see source for transition/actor logic)...
Definition: isle.cpp:1248
Isle()
[AI] Creates a new Isle world, initializing all vehicle pointers, radio, and registering for notifica...
Definition: isle.cpp:53
Motocycle * m_motocycle
[AI] Pointer to motorcycle actor.
Definition: isle.h:312
void VTable0x60() override
[AI] Stub function slot; no operation in current implementation. [AI]
Definition: isle.cpp:1185
void ReadyWorld() override
[AI] Prepares the world for play, switching areas if needed and handling music, cutscene,...
Definition: isle.cpp:267
DuneBuggy * m_dunebuggy
[AI] Pointer to dune buggy actor.
Definition: isle.h:309
JukeBoxEntity * m_jukebox
[AI] Pointer to in-world jukebox entity.
Definition: isle.h:300
void Enable(MxBool p_enable) override
[AI] Enables or disables Isle world objects/logic, forcibly setting input and world activation status...
Definition: isle.cpp:530
void HandleElevatorEndAction()
[AI] Handles the completion of elevator actions, progressing the game/area as appropriate for the cur...
Definition: isle.cpp:238
TowTrack * m_towtrack
[AI] Pointer to tow track actor.
Definition: isle.h:294
[AI] Per-race state data and logic holder for JetskiRace, used for tracking player and AI standings,...
Definition: jetskirace.h:107
[AI] Represents the jetski vehicle placed in the 3D world of LEGO Island.
Definition: jetski.h:19
void ActivateSceneActions()
[AI] Activates scene-specific scripted actions, such as music or camera animations,...
Definition: jetski.cpp:160
MxS16 GetUnknown0x160()
[AI] Gets the current jetski dashboard stream ID, used to select/activate the dashboard/overlay for r...
Definition: jetski.h:68
[AI] Represents the jukebox interactive entity in LEGO Island, handling click events,...
Definition: jukeboxentity.h:15
void StartAction()
[AI] Starts the jukebox action: plays the selected music track, sets proper animation,...
void StopAction(JukeboxScript::Script p_script)
[AI] Stops the given jukebox music and resets related animation/states.
int SetFrustrum(float p_fov, float p_front, float p_back)
[AI] Sets the 3D perspective frustum parameters for camera and view.
@ c_none
No actor ([AI])
Definition: legoactor.h:16
@ c_pepper
Pepper Roni ([AI])
Definition: legoactor.h:17
virtual MxU8 GetActorId()
[AI] Gets this actor's numeric ID, corresponding to a known enumeration/actor.
Definition: legoactor.h:77
MxResult FUN_10060dc0(MxU32 p_objectId, MxMatrix *p_matrix, MxBool p_param3, MxU8 p_param4, LegoROI *p_roi, MxBool p_param6, MxBool p_param7, MxBool p_param8, MxBool p_param9)
[AI] Helper for starting a specific animation, including world matrix and camera settings.
void FUN_10061010(MxBool p_und)
[AI] Cancels all camera/transition animations and resets camera after completion.
@ e_unk1
[AI] Unknown/unspecified play mode
void Resume()
[AI] Resumes animation manager from suspension, restoring all previously suspended state.
MxResult FUN_10064880(const char *p_name, MxS32 p_unk0x0c, MxS32 p_unk0x10)
[AI] Updates specified character's extra animation idle/play time values for active extras.
void EnableCamAnims(MxBool p_enableCamAnims)
[AI] Sets whether camera-based queued animations are enabled for the world.
MxResult FUN_10064740(Vector3 *p_position)
[AI] Similar to FUN_10064670, but triggers a different special animation event for secondary location...
MxResult FUN_10064670(Vector3 *p_position)
[AI] Activates special triggered animation in response to player position near given point.
void AddExtra(MxS32 p_location, MxBool p_und)
[AI] Spawns a new extra actor at a boundary or location, if capacity and logic allow.
void FUN_1005f6d0(MxBool p_unk0x400)
[AI] Enables or disables extras (extra actors).
void ToggleSkyColor()
Rotates hue to cycle sky color (e.g. progressing through the day), updating all visuals....
void ToggleDayNight(MxBool p_sun)
Adjusts the saturation (day/night) and updates sky color and light accordingly.
[AI] Notification parameter for the LegoControlManager, used to propagate information about control e...
MxS32 m_clickedObjectId
[AI] Object ID of the clicked control/presenter (or -1 if not set). [AI]
MxS16 m_unk0x28
[AI] Undetermined; settable via SetUnknown0x28. [AI]
void Register(MxCore *p_listener)
[AI] Adds a listener to be notified of control events.
void Unregister(MxCore *p_listener)
[AI] Removes a listener so it no longer receives control events.
[AI] Represents an entity that can be placed and managed in the LEGO Island world.
Definition: legoentity.h:16
void SetLocation(const Vector3 &p_location, const Vector3 &p_direction, const Vector3 &p_up, MxBool p_und)
[AI] Sets the world-space location, direction, and up, applying normalization and transformation.
Definition: legoentity.cpp:158
LegoROI * GetROI()
[AI] Gets the ROI (Realtime Object Instance) associated with this entity. [AI]
Definition: legoentity.h:161
MxLong Notify(MxParam &p_param) override
[AI] Handles event notification for the entity, most notably user clicks, using polymorphic dispatch.
Definition: legoentity.cpp:466
Mx3DPointFloat GetWorldPosition()
[AI] Gets the world-space position vector, optionally updating from ROI. [AI]
Definition: legoentity.cpp:224
Notification parameter class for LEGO event notifications such as mouse events and modifier keys.
Comprehensive persistent game state manager: handles save/load, player selection, area switching,...
Definition: legogamestate.h:78
void SwitchArea(Area p_area)
Switches the whole game state into a new area/world; manages transitions/scene loads.
Area m_currentArea
Area/world the player is presently in. [AI].
LegoState * CreateState(const char *p_stateName)
Creates an instance of given state, registers it, and returns pointer.
LegoBackgroundColor * GetBackgroundColor()
Gets the main background color variable object. [AI].
@ e_act3
Act 3: final main story segment. [AI].
Definition: legogamestate.h:86
@ e_act1
Act 1: the first main segment of the game. [AI].
Definition: legogamestate.h:84
@ e_actNotFound
No act currently loaded (does not correspond to valid play). [AI].
Definition: legogamestate.h:83
@ e_act2
Act 2: main story segment two. [AI].
Definition: legogamestate.h:85
void StopArea(Area p_area)
Calls cleanup logic for the specified area (removes actors, VMs, closes handles, etc....
MxU8 GetActorId()
Returns the current selected actor ID. [AI].
Area m_previousArea
Where player was before last area switch. [AI].
void FindLoadedAct()
Analyses the loaded Lego worlds to determine which act is present. [AI].
LegoState * GetState(const char *p_stateName)
Find an existing state (LegoState-derived) object by its registered script/class name.
@ e_infomain
Information Center, main screen. [AI].
Definition: legogamestate.h:96
@ e_unk20
Unknown [AI].
@ e_unk43
Unknown [AI].
@ e_previousArea
Alias: go to previous area. [AI].
Definition: legogamestate.h:94
@ e_unk31
Unknown [AI].
@ e_motocycle
Motorcycle (vehicle, spawn). [AI].
@ e_bike
Bike minigame (spawns). [AI].
@ e_police
Police Station interior. [AI].
@ e_elevdown
Elevator moving down (animated). [AI].
@ e_copter
Helicopter (vehicle, spawn). [AI].
@ e_unk66
Used for some spawn locations. [AI].
@ e_hospitalExterior
Hospital, seen from outside. [AI].
@ e_unk40
Unknown [AI].
@ e_dunecar
Dune buggy (vehicle, for spawn). [AI].
@ e_act2main
Act 2 world main screen. [AI].
@ e_jetraceExterior
Jetski race transition? [AI].
@ e_elevride2
Elevator ride/cab down (animated). [AI].
@ e_garageExterior
Garage (vehicle construction) exterior. [AI].
@ e_garage
Garage (build vehicle) interior. [AI].
@ e_garadoor
Garage door or doorway. [AI].
@ e_polidoor
Police Station door. [AI].
@ e_isle
Open world (LEGO Island main map). [AI].
Definition: legogamestate.h:95
@ e_jetrace2
Jetski race (exterior). [AI].
@ e_pizzeriaExterior
Pizzeria, seen from outside. [AI].
@ e_unk28
Used for certain spawn locations. [AI].
@ e_unk45
Unknown [AI].
@ e_towtrack
Towtruck (vehicle, spawn). [AI].
@ e_undefined
Undefined or unset area. [AI].
Definition: legogamestate.h:93
@ e_unk33
Used for certain player spawns. [AI].
@ e_skateboard
Skateboard (vehicle, spawn). [AI].
@ e_elevride
Elevator ride/cab up (animated). [AI].
@ e_unk4
Unknown / possibly reserved. [AI].
Definition: legogamestate.h:98
@ e_jukeboxExterior
Jukebox, seen from outside. [AI].
@ e_unk44
Unknown [AI].
@ e_unk21
Unknown [AI].
@ e_observe
Observatory interior. [AI].
@ e_ambulance
Ambulance (vehicle, spawn). [AI].
@ e_policeExterior
Police Station, from outside. [AI].
@ e_carraceExterior
Car race exterior/transition. [AI].
@ e_seaview
Ocean-side view at observatory. [AI].
@ e_elevopen
Elevator doors open. [AI].
@ e_unk17
Unknown. [AI].
@ e_jetski
Jetski (vehicle, spawn). [AI].
void SetDirty(MxBool p_isDirty)
Sets whether there are unsaved changes to the state.
void EnableInputProcessing()
[AI] Enable event queue and input event processing. Resets relevant state. [AI]
void ClearWorld()
[AI] Remove any world assignment (used to clear targeting/scene changes). [AI]
void SetCamera(LegoCameraController *p_camera)
[AI] Assigns a new camera controller for mouse/look operations.
void SetWorld(LegoWorld *p_world)
[AI] Assigns the current world to receive mouse/click/pick notifications.
void DisableInputProcessing()
[AI] Block most input processing, allowing only button-down and space events (UI modal input blocking...
@ c_clearScreen
[AI] When set, clears the display surface. [AI]
Definition: legomain.h:49
@ c_disable3d
[AI] When set, disables 3D rendering. [AI]
Definition: legomain.h:48
@ c_disableInput
[AI] When set, disables input processing. [AI]
Definition: legomain.h:47
[AI] An actor that moves along a predefined path, supporting boundary transitions,...
Definition: legopathactor.h:32
void SetBoundary(LegoPathBoundary *p_boundary)
[AI] Assigns a new boundary for the actor (for path switching).
void SetController(LegoPathController *p_pathController)
[AI] Assigns a new path controller (used for actor transitions between paths).
@ c_initial
[AI] Default state upon creation or reset. [AI]
Definition: legopathactor.h:37
void PlaceActor(LegoNamedPlane &p_namedPlane)
[AI] Places this actor into the world at the given plane's name, location, and orientation.
void UpdatePlane(LegoNamedPlane &p_namedPlane)
[AI] Updates a named plane to match this actor's world position, direction, and up vector.
MxBool IsA(const char *p_name) const override
[AI] RTTI-like check, matches against own or base class name for IsA hierarchy checks.
LegoPathBoundary * GetBoundary()
[AI] Retrieves the current path boundary associated with this actor.
void SetActorState(MxU32 p_actorState)
[AI] Sets the navigation/path state of the actor.
[AI] Represents a path segment or boundary in the navigation network for actors (vehicles,...
[AI] Specialized notification parameter used for path structure related events in LEGO Island.
MxS16 GetData()
[AI] Retrieves the supplemental data associated with the notification.
virtual MxResult Serialize(LegoStorage *p_storage)
[AI] Serialize state to a storage (for save/load).
Definition: legostate.h:141
Abstract base class providing an interface for file-like storage with binary and text read/write oper...
Definition: legostorage.h:16
LegoStorage * WriteU8(LegoU8 p_data)
Writes an 8-bit unsigned value to storage.
Definition: legostorage.h:99
virtual LegoBool IsWriteMode()
Returns TRUE if object was opened in write mode.
Definition: legostorage.h:72
LegoStorage * ReadU8(LegoU8 &p_data)
Reads an 8-bit unsigned value from storage.
Definition: legostorage.h:206
LegoStorage * WriteS16(LegoS16 p_data)
Writes a 16-bit signed value to storage.
Definition: legostorage.h:110
LegoStorage * ReadS16(LegoS16 &p_data)
Reads a 16-bit signed value from storage.
Definition: legostorage.h:217
virtual LegoBool IsReadMode()
Returns TRUE if object was opened in read mode.
Definition: legostorage.h:78
MxResult ResetPalette(MxBool p_ignoreSkyColor)
[AI] Resets palette entries and re-installs base palette, restoring sky color if requested.
Lego3DManager * Get3DManager()
[AI] Returns the Lego3DManager for this manager, which owns all 3D scene representations and view con...
void Remove(MxCore *p_object)
Removes an object from all relevant world-managed lists or sets, and also detaches if needed.
Definition: legoworld.cpp:508
virtual void ReadyWorld()
Called when the world is ready to be used—typically for custom scene setup after startup.
Definition: legoworld.cpp:874
MxResult PlaceActor(LegoPathActor *p_actor, const char *p_name, MxS32 p_src, float p_srcScale, MxS32 p_dest, float p_destScale)
Places an actor along a path, from source to destination, using named references and scaling.
Definition: legoworld.cpp:267
MxCoreSet m_set0xd0
Set of currently paused/disconnected objects when world is disabled.
Definition: legoworld.h:363
virtual void Add(MxCore *p_object)
Adds an object (entity, presenter, ROI, etc.) to the appropriate world-managed list or set.
Definition: legoworld.cpp:418
virtual void Enable(MxBool p_enable)
Enables or disables (pauses) the world and its main components.
Definition: legoworld.cpp:684
LegoCameraController * m_cameraController
Camera controller for world's main view.
Definition: legoworld.h:332
MxBool m_worldStarted
Indicates if the world has successfully started and is considered active.
Definition: legoworld.h:388
MxCore * Find(const char *p_class, const char *p_name)
Finds an object of a given class and name in the world.
Definition: legoworld.cpp:573
MxLong Notify(MxParam &p_param) override
Notification callback responding to registered events such as EndAction and NewPresenter.
Definition: legoworld.cpp:212
void RemoveActor(LegoPathActor *p_actor)
Removes an actor from all known path controllers.
Definition: legoworld.cpp:325
MxResult Create(MxDSAction &p_dsAction) override
Initializes the world using an action, creating entity and sound lists, and camera controller.
Definition: legoworld.cpp:58
Motocycle is an IslePathActor representing the motorcycle vehicle the user can drive in LEGO Island.
Definition: motorcycle.h:15
void ActivateSceneActions()
[AI] Triggers in-game events when scene actions should execute after transition into Motocycle.
Definition: motorcycle.cpp:149
[AI] Represents a 3D point with floating-point precision, inheriting from Vector3.
Definition: mxgeometry3d.h:14
MxDSAction * GetAction()
[AI] Direct access to the underlying action.
void RaiseVolume()
[AI] Requests that the background music volume is raised (decrements suppression counter); triggers f...
void LowerVolume()
[AI] Requests a reduction in current background music volume, queuing for fade out (increments suppre...
void Stop()
[AI] Immediately stops all background music, clears all actions and presenters, and resets tickle sta...
[AI] Base virtual class for all Mindscape engine (Mx) objects.
Definition: mxcore.h:15
virtual MxBool IsA(const char *p_name) const
[AI] Checks whether this object's class type or parents match the given name.
Definition: mxcore.h:46
[AI] Represents an action deserialized from SI chunks, holding key animation or script parameters suc...
Definition: mxdsaction.h:17
const MxAtomId & GetAtomId()
[AI] Returns a const-reference to the object's atom identifier.
Definition: mxdsobject.h:133
virtual void SetAtomId(MxAtomId p_atomId)
[AI] Sets the atom id for this object instance, used for indexing or lookup.
Definition: mxdsobject.h:118
void SetUnknown24(MxS16 p_unk0x24)
[AI] Sets the unknown field at 0x24 (possibly version/state).
Definition: mxdsobject.h:151
void SetObjectId(MxU32 p_objectId)
[AI] Sets the object id (for serialization or lookup).
Definition: mxdsobject.h:147
MxU32 GetObjectId()
[AI] Returns the object id numeric value.
Definition: mxdsobject.h:130
[AI] Notification parameter marking the end of an action, specialization of MxActionNotificationParam...
MxAtomId m_atomId
The AtomId associated with this entity, used for resource and script identification.
Definition: mxentity.h:124
[AI] Represents a 4x4 transformation matrix, specialized for the LEGO Island engine and derived from ...
Definition: mxmatrix.h:16
void Unregister(MxCore *p_listener)
[AI] Removes a previously registered listener and flushes any pending notifications for it.
void Register(MxCore *p_listener)
[AI] Registers a listener object to receive notifications.
MxResult Send(MxCore *p_listener, const MxNotificationParam &p_param)
[AI] Queues a notification to be sent to a specific registered listener.
[AI] Parameter object representing a single notification or event, carrying an identifier and sender ...
NotificationId GetNotification() const
[AI] Retrieves the current notification type of this parameter.
[AI] MxParam serves as a polymorphic base class for parameter passing in event and notification syste...
Definition: mxparam.h:7
[AI] Abstract base class for all presenter types in the LEGO Island engine, responsible for managing ...
Definition: mxpresenter.h:20
MxS32 GetCurrentTickleState() const
[AI] Returns the current tickle state.
Definition: mxpresenter.h:160
@ e_repeating
[AI] Presentation is repeating (e.g., looping media).
Definition: mxpresenter.h:28
[AI] Presenter for single still image/bitmap media sources in the game.
void Enable(MxBool p_enable) override
[AI] Sets the enabled/disabled state of the presenter, updating the video manager's rendering as need...
char * GetData() const
Returns a pointer to the internal character buffer.
Definition: mxstring.h:110
MxResult StartTransition(TransitionType p_animationType, MxS32 p_speed, MxBool p_doCopy, MxBool p_playMusicInAnim)
[AI] Begins a new transition animation of type p_animationType at the specified speed,...
@ e_mosaic
[AI] Complex mosaic block-out effect.
void SetWaitIndicator(MxVideoPresenter *p_waitIndicator)
[AI] Sets or resets the visual wait indicator presented during blocking transitions.
void SetVariable(const char *p_key, const char *p_value)
Sets a variable by key and value, replacing or updating if it exists.
Interactive pizza entity actor; manages the in-game pizza delivery sequence and reacts to mission tri...
Definition: pizza.h:263
void StopActions()
Stops all currently running pizza mission actions and resets to an idle state.
Definition: pizza.cpp:223
void FUN_100382b0()
Cancels or resets the Pizza mission, stopping music, resetting camera, and animation state.
Definition: pizza.cpp:196
void CreateState()
Initializes or restores references to PizzaMissionState and Act1State in GameState.
Definition: pizza.cpp:165
[AI] Actor representing the pizzeria (Pizza Shop) as an interactive entity in the LEGO Island world.
Definition: pizzeria.h:116
void CreateState()
[AI] Searches the game state for existing state objects for "PizzeriaState" and "PizzaMissionState",...
Definition: pizzeria.cpp:51
void SetVisibility(unsigned char p_visible)
[AI] Sets the visibility flag to the provided value.
Definition: roi.h:235
[AI] Represents the drivable race car entity in the LEGO Island world.
Definition: racecar.h:24
undefined4 m_unk0x28
[AI] Unknown extra field, always initialized to zero.
Definition: legorace.h:138
Entry * GetState(MxU8 p_id)
[AI] Fetches a race state entry matching the given entry ID, or NULL if not found in the array.
Definition: legorace.cpp:151
void Stop()
[AI] Stops radio playback if currently active and updates audio state.
Definition: radio.cpp:126
MxLong Notify(MxParam &p_param) override
[AI] Handles system notifications (end actions, control events) relevant to the radio.
Definition: radio.cpp:85
void CreateState()
[AI] Creates or retrieves a RadioState object in the game state manager.
Definition: radio.cpp:201
void Initialize(MxBool p_und)
[AI] Sets radio system as enabled/disabled and resets state if changed.
Definition: radio.cpp:192
[AI] Represents the skateboard vehicle actor used in the minigame and cutscenes.
Definition: skateboard.h:14
void SetPizzaVisible(MxBool p_pizzaVisible)
[AI] Sets whether the pizza bitmap/scene is visible in the skateboard minigame.
Definition: skateboard.h:62
void ActivateSceneActions()
[AI] Activates the skateboard scene-specific scripted actions, including animations and music.
Definition: skateboard.cpp:149
[AI] 3D world actor for the Tow Track mini-game; manages Tow Track mission logic, scene activation an...
Definition: towtrack.h:83
void StopActions()
[AI] Halts all ongoing Tow Track mini-game actions.
Definition: towtrack.cpp:532
void FUN_1004dbe0()
[AI] Handles cleanup tasks upon mini-game exit, including resetting state variables and unregistering...
Definition: towtrack.cpp:546
void ActivateSceneActions()
[AI] Triggers scene-based scripted actions according to mission state.
Definition: towtrack.cpp:517
MxLong Notify(MxParam &p_param) override
[AI] Notifies the TowTrack actor of an event.
Definition: towtrack.cpp:117
void CreateState()
[AI] Ensures the TowTrackMissionState exists and is registered in the global state manager.
Definition: towtrack.cpp:107
void FUN_1004dab0()
[AI] Begins the Tow Track mission, sets state variable, and triggers click-handling sequence.
Definition: towtrack.cpp:510
float LenSquared() const override
[AI] Computes the squared magnitude (x^2 + y^2 + z^2) of this vector.
void Add(ViewROI *p_roi)
[AI] Adds a ViewROI object to the list of managed ROI objects.
Definition: viewmanager.h:161
#define TRUE
Definition: d3drmdef.h:28
#define FALSE
Definition: d3drmdef.h:27
#define DECOMP_SIZE_ASSERT(T, S)
Definition: decomp.h:19
#define sizeOfArray(arr)
Definition: decomp.h:23
IsleScript::Script g_cptClickDialogue[]
Definition: isle.cpp:49
MxU32 g_isleFlags
Definition: isle.cpp:46
#define NULL
[AI] Null pointer value (C/C++ semantics).
Definition: legotypes.h:26
#define FAILURE
[AI] Used to indicate a failed operation in result codes.
Definition: legotypes.h:34
#define SUCCESS
[AI] Used to indicate a successful operation in result codes.
Definition: legotypes.h:30
void EnableAnimations(MxBool p_enable)
[AI] Enables or disables animation playback globally.
Definition: legoutils.cpp:554
void InvokeAction(Extra::ActionType p_actionId, const MxAtomId &p_pAtom, MxS32 p_streamId, LegoEntity *p_sender)
[AI] Dispatches and triggers a game action on the given script or object.
Definition: legoutils.cpp:271
LegoNamedTexture * ReadNamedTexture(LegoStorage *p_storage)
[AI] Reads a named texture and its associated image data from storage.
Definition: legoutils.cpp:665
MxS32 UpdateLightPosition(MxS32 p_increase)
[AI] Steps or resets the in-game light position; wraps and saves in global variables; updates lightin...
Definition: legoutils.cpp:599
void SetAppCursor(Cursor p_cursor)
[AI] Sets the in-game cursor to a specified type.
Definition: legoutils.cpp:566
void FUN_1003f930(LegoNamedTexture *p_namedTexture)
[AI] Applies the image bits of a named texture to its associated texture info container entry.
Definition: legoutils.cpp:768
@ e_cursorArrow
[AI] Standard arrow cursor. [AI]
Definition: legoutils.h:23
void WriteDefaultTexture(LegoStorage *p_storage, const char *p_name)
[AI] Writes a default texture by name (and its image/palette) to storage for serialization.
Definition: legoutils.cpp:690
void WriteNamedTexture(LegoStorage *p_storage, LegoNamedTexture *p_namedTexture)
[AI] Writes a LegoNamedTexture and its associated image to storage.
Definition: legoutils.cpp:761
MxAtomId * g_isleScript
[AI] Node used in hierarchical scene graphs and animation trees. [AI]
Definition: scripts.cpp:32
const char * g_varCAMERALOCATION
[AI] Global variable key for the camera location.
LegoGameState * GameState()
[AI] Accessor for the game's central game state controller. [AI]
Definition: misc.cpp:61
LegoVideoManager * VideoManager()
[AI] Accessor for the game's LegoVideoManager subsystem. Used for managing 3D/video hardware....
Definition: misc.cpp:29
LegoAnimationManager * AnimationManager()
[AI] Accessor for the animation manager, which controls Lego character/world animation state....
Definition: misc.cpp:69
void DeleteObjects(MxAtomId *p_id, MxS32 p_first, MxS32 p_last)
[AI] Batch deletes objects, given by atom id, and within the entity id range [p_first,...
Definition: misc.cpp:237
MxTransitionManager * TransitionManager()
[AI] Accessor for the MxTransitionManager, handling level transitions, fades, and world changes....
Definition: misc.cpp:208
MxBackgroundAudioManager * BackgroundAudioManager()
[AI] Accessor for the background audio manager. Used for background music and ambient sounds....
Definition: misc.cpp:37
ViewManager * GetViewManager()
[AI] Accessor for the current ViewManager, managing rendering views/cameras. [AI]
Definition: misc.cpp:108
LegoWorld * FindWorld(const MxAtomId &p_atom, MxS32 p_entityid)
[AI] Searches for or retrieves a LegoWorld instance based on an atom id and entity id.
Definition: misc.cpp:188
LegoControlManager * ControlManager()
[AI] Accessor for the control manager through the input manager; manages higher-level user/game contr...
Definition: misc.cpp:53
void FUN_10015820(MxBool p_disable, MxU16 p_flags)
[AI] Utility for enabling or disabling functionality in LegoOmni based on certain flags.
Definition: misc.cpp:143
void SetROIVisible(const char *p_name, MxBool p_visible)
[AI] Utility for setting the visibility flag of a named ROI object.
Definition: misc.cpp:158
void PlayMusic(JukeboxScript::Script p_objectId)
[AI] Starts music playback by scripting the background audio manager to play the music piece referenc...
Definition: misc.cpp:216
LegoPathActor * UserActor()
[AI] Accessor for the user (player-controllable) LegoPathActor. [AI]
Definition: misc.cpp:85
void SetIsWorldActive(MxBool p_isWorldActive)
[AI] Toggles whether the world should be considered active (enables/disables camera/user control etc)...
Definition: misc.cpp:228
LegoInputManager * InputManager()
[AI] Accessor for the input manager, which handles keyboard, mouse, and controller input....
Definition: misc.cpp:45
MxResult Start(MxDSAction *p_dsAction)
[AI] Schedules and initiates execution of a script action.
Definition: mxmisc.cpp:97
MxVariableTable * VariableTable()
[AI] Returns the variable table used for script variables and global key/value state.
Definition: mxmisc.cpp:73
MxNotificationManager * NotificationManager()
[AI] Returns the notification manager for system-wide state/update notifications.
Definition: mxmisc.cpp:17
@ c_notificationType20
[AI] Unspecified notification type [AI]
@ c_notificationControl
[AI] UI control event [AI]
@ c_notificationButtonUp
[AI] Mouse/gamepad button release [AI]
@ c_notificationButtonDown
[AI] Mouse/gamepad button press [AI]
@ c_notificationEndAnim
[AI] End of an animation [AI]
@ c_notificationTransitioned
[AI] Object has transitioned states or locations [AI]
@ c_notificationEndAction
[AI] Indicates the end of an action [AI]
@ c_notificationClick
[AI] Mouse click event [AI]
@ c_notificationPathStruct
[AI] Data related to a path structure [AI]
MxU8 MxBool
[AI]
Definition: mxtypes.h:124
MxLong MxResult
[AI]
Definition: mxtypes.h:106
int MxLong
[AI]
Definition: mxtypes.h:83
signed int MxS32
[AI]
Definition: mxtypes.h:38
unsigned int MxU32
[AI]
Definition: mxtypes.h:32
@ c_DuneCarFuelMeter
Definition: isle_actions.h:211
@ c_sjs014in_RunAnim
Definition: isle_actions.h:881
@ c_Avo900Ps_PlayWav
Definition: isle_actions.h:967
@ c_sjs013in_RunAnim
Definition: isle_actions.h:880
@ c_ElevDown_LeftArrow_Ctl
@ c_ElevOpen_RightArrow_Ctl
@ c_Observe_GlobeRArrow_Ctl
@ c_srt001in_RunAnim
Definition: isle_actions.h:883
@ c_Observe_SkyColor_Ctl
@ c_Avo905Ps_PlayWav
Definition: isle_actions.h:972
@ c_nic002pr_RunAnim
Definition: isle_actions.h:728
@ c_SeaView_Background_Bitmap
@ c_sba001bu_RunAnim
Definition: isle_actions.h:519
@ c_ElevRide_Three_Ctl
@ c_Observe_Background_Bitmap
@ c_PoliDoor_LeftArrow_Ctl
@ c_AmbulanceFuelMeter
Definition: isle_actions.h:186
@ c_PoliDoor_RightArrow_Ctl
@ c_ElevDown_Background_Bitmap
@ c_GaraDoor_Background_Bitmap
@ c_Avo907Ps_PlayWav
Definition: isle_actions.h:974
@ c_Avo917In_PlayWav
Definition: isle_actions.h:954
@ c_Observe_Monkey_Flc
@ c_HelicopterDashboard_Bitmap
Definition: isle_actions.h:44
@ c_Observe_RightArrow_Ctl
@ c_PoliDoor_Background_Bitmap
@ c_Observe_Globe1_Bitmap
@ c_GaraDoor_RightArrow_Ctl
@ c_ElevRide_Background_Bitmap
@ c_ElevOpen_LeftArrow_Ctl
@ c_srt002in_RunAnim
Definition: isle_actions.h:884
@ c_BikeDashboard_Bitmap
Definition: isle_actions.h:33
@ c_Observe_LeftArrow_Ctl
@ c_sjs012in_RunAnim
Definition: isle_actions.h:879
@ c_nic004pr_RunAnim
Definition: isle_actions.h:730
@ c_ElevDown_RightArrow_Ctl
@ c_ElevOpen_Background_Bitmap
@ c_GaraDoor_LeftArrow_Ctl
@ c_srt003in_RunAnim
Definition: isle_actions.h:885
@ c_SkatePizza_Bitmap
Definition: isle_actions.h:213
@ c_Observe_GlobeLArrow_Ctl
@ c_nic003pr_RunAnim
Definition: isle_actions.h:729
@ c_Avo906Ps_PlayWav
Definition: isle_actions.h:973
@ c_SeaView_RightArrow_Ctl
@ c_MotoBikeDashboard_Bitmap
Definition: isle_actions.h:170
@ c_ElevDown_Elevator_Ctl
@ c_SeaView_LeftArrow_Ctl
@ c_InfoCenter_3rd_Floor_Music
[AI] Music for the information center's third floor.
@ c_JBMusic1
[AI] Jukebox miscellaneous music 1.
@ c_JBMusic6
[AI] Jukebox miscellaneous music 6.
@ c_PoliceStation_Music
[AI] Music played inside or near the police station.
@ c_JBMusic2
[AI] Jukebox miscellaneous music 2.
@ c_Elevator_Music
[AI] Music for elevator sequences.
@ c_MusicTheme1
[AI] Main theme music, variant 1.
[AI] Contains global script AtomId pointers and utility functions for managing script AtomIds in LEGO...
MxAtomId * g_jukeboxScript
[AI] Script AtomId for the Jukebox entity/event script.
Definition: scripts.cpp:70
@ e_stop
[AI] Stop an activity or playback [AI]
Definition: extra.h:31
@ e_start
[AI] Start an activity or playback [AI]
Definition: extra.h:30
[AI] Represents a named 3D plane with orientation and position, used to describe places or camera tar...
const char * GetName() const
[AI] Default destructor (implementation likely trivial).
void Reset()
[AI] Reset the plane to "not present" by clearing its name.
const Mx3DPointFloat & GetPosition()
[AI] Get the 3D position of this plane in world coordinates.
MxString m_name
[AI] Name identifier for this plane (used for lookups and scripting).
MxResult Serialize(LegoStorage *p_storage)
[AI] Serialize or deserialize the plane data to or from a LegoStorage object.
MxBool IsPresent()
[AI] Determines whether the plane instance is valid (present) based on its name.
const Mx3DPointFloat & GetDirection()
[AI] Get the normalized direction (forward) vector of the plane.
const Mx3DPointFloat & GetUp()
[AI] Get the normalized "up" vector of the plane, defining its orientation.
[AI] Playlist structure representing an indexed list of object IDs with next-item selection strategie...
Definition: legostate.h:36
MxU32 Next()
[AI] Retrieves the object ID at the current position, advances next index according to playlist mode.
Definition: legostate.cpp:10
MxS16 m_nextIndex
[AI] Current index for next selection (suitable for sequential/random access). [AI]
Definition: legostate.h:110