diff --git a/.github/workflows/naming.yml b/.github/workflows/naming.yml index bc2edba4..3afed885 100644 --- a/.github/workflows/naming.yml +++ b/.github/workflows/naming.yml @@ -21,6 +21,9 @@ jobs: - name: Run ncc run: | + action_headers=$(find LEGO1/lego/legoomni/include/actions \ + -name '*.h' -print0 | xargs -0 echo) + python3 tools/ncc/ncc.py \ --clang-lib ${{ env.LLVM_PATH }}/lib/libclang.so \ --recurse \ @@ -36,4 +39,5 @@ jobs: --exclude \ LEGO1/omni/include/flic.h \ LEGO1/omni/src/video/flic.cpp \ + $action_headers \ --path LEGO1/omni LEGO1/lego/legoomni diff --git a/CMakeLists.txt b/CMakeLists.txt index 7fc1d7cb..c1b52a8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -249,7 +249,7 @@ add_library(omni STATIC LEGO1/omni/src/stream/mxstreamer.cpp LEGO1/omni/src/stream/mxstreamlist.cpp LEGO1/omni/src/stream/mxstreamprovider.cpp - LEGO1/omni/src/system/mxautolocker.cpp + LEGO1/omni/src/system/mxautolock.cpp LEGO1/omni/src/system/mxcriticalsection.cpp LEGO1/omni/src/system/mxscheduler.cpp LEGO1/omni/src/system/mxsemaphore.cpp @@ -421,6 +421,7 @@ target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1") target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/omni/include") target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources") target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include") +target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include/actions") # Link libraries target_link_libraries(lego1 PRIVATE tglrl viewmanager realtime mxdirectx roi geom anim Vec::Vec dinput dxguid misc 3dmanager omni) diff --git a/LEGO1/define.cpp b/LEGO1/define.cpp index 1e403a50..82dafb7d 100644 --- a/LEGO1/define.cpp +++ b/LEGO1/define.cpp @@ -1,15 +1,5 @@ #include "define.h" -// GLOBAL: LEGO1 0x1010141c -MxS32 g_mxcoreCount[101] = {0, -6643, -5643, -5058, -4643, -4321, -4058, -3836, -3643, -3473, -3321, -3184, -3058, - -2943, -2836, -2736, -2643, -2556, -2473, -2395, -2321, -2251, -2184, -2120, -2058, -2000, - -1943, -1888, -1836, -1785, -1736, -1689, -1643, -1599, -1556, -1514, -1473, -1434, -1395, - -1358, -1321, -1286, -1251, -1217, -1184, -1152, -1120, -1089, -1058, -1029, -1000, -971, - -943, -915, -888, -862, -836, -810, -785, -761, -736, -713, -689, -666, -643, - -621, -599, -577, -556, -535, -514, -494, -473, -454, -434, -415, -395, -377, - -358, -340, -321, -304, -286, -268, -251, -234, -217, -200, -184, -168, -152, - -136, -120, -104, -89, -74, -58, -43, -29, -14, 0}; - // GLOBAL: LEGO1 0x10102048 // STRING: LEGO1 0x10102040 const char* g_strACTION = "ACTION"; diff --git a/LEGO1/define.h b/LEGO1/define.h index d45d02c3..84400d36 100644 --- a/LEGO1/define.h +++ b/LEGO1/define.h @@ -3,7 +3,6 @@ #include "mxtypes.h" -extern MxS32 g_mxcoreCount[101]; extern const char* g_parseExtraTokens; extern const char* g_strWORLD; extern const char* g_strSOUND; diff --git a/LEGO1/lego/legoomni/include/act1state.h b/LEGO1/lego/legoomni/include/act1state.h index 533a896e..20b8d44b 100644 --- a/LEGO1/lego/legoomni/include/act1state.h +++ b/LEGO1/lego/legoomni/include/act1state.h @@ -9,43 +9,18 @@ // SIZE 0x26c class Act1State : public LegoState { public: + enum ElevatorFloor { + c_floor1 = 1, + c_floor2, + c_floor3 + }; + enum { e_unk953 = 953, e_unk954 = 954, e_unk955 = 955, }; - Act1State(); - - // FUNCTION: LEGO1 0x100338a0 - inline const char* ClassName() const override // vtable+0x0c - { - // STRING: LEGO1 0x100f0154 - return "Act1State"; - } - - // FUNCTION: LEGO1 0x100338b0 - inline MxBool IsA(const char* p_name) const override // vtable+0x10 - { - return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name); - } - - MxBool SetFlag() override; // vtable+0x18 - MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c - - inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x018 = p_unk0x18; } - inline MxU32 GetUnknown18() { return m_unk0x018; } - inline MxU32 GetUnknown1c() { return m_unk0x01c; } - inline MxS16 GetUnknown21() { return m_unk0x021; } - - inline void SetUnknown1c(MxU32 p_unk0x1c) { m_unk0x01c = p_unk0x1c; } - inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x021 = p_unk0x21; } - - void FUN_10034d00(); - - // SYNTHETIC: LEGO1 0x10033960 - // Act1State::`scalar deleting destructor' - // SIZE 0x4c class NamedPlane { public: @@ -81,19 +56,54 @@ class Act1State : public LegoState { Mx3DPointFloat m_point3; // 0x38 }; + Act1State(); + + // FUNCTION: LEGO1 0x100338a0 + inline const char* ClassName() const override // vtable+0x0c + { + // STRING: LEGO1 0x100f0154 + return "Act1State"; + } + + // FUNCTION: LEGO1 0x100338b0 + inline MxBool IsA(const char* p_name) const override // vtable+0x10 + { + return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name); + } + + MxBool SetFlag() override; // vtable+0x18 + MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c + + void FUN_10034660(); + void FUN_100346a0(); + void FUN_10034b60(); + void FUN_10034d00(); + + inline MxU32 GetUnknown18() { return m_unk0x018; } + inline ElevatorFloor GetElevatorFloor() { return (ElevatorFloor) m_elevFloor; } + inline MxS16 GetUnknown21() { return m_unk0x021; } + + inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x018 = p_unk0x18; } + inline void SetElevatorFloor(ElevatorFloor p_elevFloor) { m_elevFloor = p_elevFloor; } + inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x021 = p_unk0x21; } + + // SYNTHETIC: LEGO1 0x10033960 + // Act1State::`scalar deleting destructor' + + friend class Isle; + protected: - MxS32* m_unk0x008; // 0x008 - // FIXME: count for m_unk0x008 + MxS32* m_unk0x008; // 0x008 FIXME: count for m_unk0x008 MxS16 m_unk0x00c; // 0x00c undefined2 m_unk0x00e; // 0x00e undefined2 m_unk0x010; // 0x010 undefined m_unk0x012; // 0x012 MxS32 m_unk0x014; // 0x014 MxU32 m_unk0x018; // 0x018 - MxU16 m_unk0x01c; // 0x01c - undefined m_unk0x01e; // 0x01e - undefined m_unk0x01f; // 0x01f - undefined m_unk0x020; // 0x020 + MxS16 m_elevFloor; // 0x01c + MxBool m_unk0x01e; // 0x01e + MxBool m_unk0x01f; // 0x01f + MxBool m_planeActive; // 0x020 undefined m_unk0x021; // 0x021 undefined m_unk0x022; // 0x022 undefined m_unk0x023; // 0x023 diff --git a/LEGO1/lego/legoomni/include/actions/act2main_actions.h b/LEGO1/lego/legoomni/include/actions/act2main_actions.h new file mode 100644 index 00000000..0dfeb72e --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/act2main_actions.h @@ -0,0 +1,842 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef ACT2MAIN_ACTIONS_H +#define ACT2MAIN_ACTIONS_H + +namespace Act2mainScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneAct2main = -1, + + c__Act2Main = 0, + + c_Brickster_Actor = 8, + c_Brickster_Model = 9, + + c_Ambul_Actor = 18, + c_Ambul_Model = 19, + c_Ambul_Anim0 = 20, + + c_Ambul_Anim2 = 26, + c_Ambul_Anim3 = 27, + c_BrShoot = 28, + c_Act2Path = 29, + + c_xarrow_PlayWav = 45, + c_LoadCrashSound = 46, + c_LoadHitSound = 47, + c_LoadBrickPickSound = 48, + c_LoadBrickMusic = 49, + + c_SetAnimationFile = 88, + c_InfCtr = 89, + c_InfCtrModel = 90, + c_polices_entity = 91, + c_polices = 92, + c_tBrick1_entity = 93, + c_tBrick1 = 94, + c_tBrick2_entity = 95, + c_tBrick2 = 96, + c_tBrick3_entity = 97, + c_tBrick3 = 98, + c_tBrick4_entity = 99, + c_tBrick4 = 100, + c_hBrick1_entity = 101, + c_hBrick1 = 102, + c_hBrick2_entity = 103, + c_hBrick2 = 104, + c_hBrick3_entity = 105, + c_hBrick3 = 106, + c_hBrick4_entity = 107, + c_hBrick4 = 108, + c_Block01_entity = 109, + c_Block01 = 110, + c_Block02_entity = 111, + c_Block02 = 112, + c_CNs001xx = 113, + c_CNs002xx = 114, + c_CNs003xx = 115, + c_CNs004xx = 116, + c_CNs005xx = 117, + c_CNs007xx = 118, + c_CNs006xx = 119, + c_CNs008xx = 120, + c_CNs009xx = 121, + c_CNs010xx = 122, + c_CNs011xx = 123, + c_CNs012xx = 124, + c_CNs001Pe = 125, + c_CNs002Pe = 126, + c_CNs003Pe = 127, + c_CNs004Pe = 128, + c_CNs005Pe = 129, + c_CNs007Pe = 130, + c_CNs006Pe = 131, + c_CNs008Pe = 132, + c_CNs009Pe = 133, + c_CNs010Pe = 134, + c_CNs001Ma = 135, + c_CNs002Ma = 136, + c_CNs003Ma = 137, + c_CNs004Ma = 138, + c_CNs005Ma = 139, + c_CNs007Ma = 140, + c_CNs006Ma = 141, + c_CNs008Ma = 142, + c_CNs009Ma = 143, + c_CNs010Ma = 144, + c_CNs011Ma = 145, + c_CNs012Ma = 146, + c_CNs013Ma = 147, + c_CNs0x4Ma = 148, + c_CNs001Pa = 149, + c_CNs002Pa = 150, + c_CNs003Pa = 151, + c_CNs004Pa = 152, + c_CNs005Pa = 153, + c_CNs007Pa = 154, + c_CNs006Pa = 155, + c_CNs008Pa = 156, + c_CNs009Pa = 157, + c_CNs010Pa = 158, + c_CNs011Pa = 159, + c_CNs012Pa = 160, + c_CNs013Pa = 161, + c_CNs0x4Pa = 162, + c_CNs001Ni = 163, + c_CNs002Ni = 164, + c_CNs003Ni = 165, + c_CNs004Ni = 166, + c_CNs005Ni = 167, + c_CNs007Ni = 168, + c_CNs006Ni = 169, + c_CNs008Ni = 170, + c_CNs009Ni = 171, + c_CNs010Ni = 172, + c_CNs011Ni = 173, + c_CNsx11Ni = 174, + c_CNs001La = 175, + c_CNs002La = 176, + c_CNs003La = 177, + c_CNs004La = 178, + c_CNs005La = 179, + c_CNs007La = 180, + c_CNs006La = 181, + c_CNs008La = 182, + c_CNs009La = 183, + c_CNs010La = 184, + c_CNs011La = 185, + c_CNsx11La = 186, + c_CNs001Br = 187, + c_CNs002Br = 188, + c_CNs003Br = 189, + c_CNs004Br = 190, + c_CNs005Br = 191, + c_CNs007Br = 192, + c_CNs006Br = 193, + c_CNs008Br = 194, + c_CNs009Br = 195, + c_CNs010Br = 196, + c_CNs011Br = 197, + c_CNs012Br = 198, + c_CNs013Br = 199, + + c_CNs014Br = 201, + c_CNs900Br = 202, + c_CNs901BR = 203, + c_CNs001Bd = 204, + c_CNs001Pg = 205, + c_CNs001Rd = 206, + c_CNs001Sy = 207, + c_CNs001Sk = 208, + c_BNsAss01 = 209, + c_BadEnd_Movie = 210, + c_BNsAss02 = 211, + c_BNsAss03 = 212, + c_BNsDis01 = 213, + c_BNsDis02 = 214, + c_BNsDis03 = 215, + c_crash5_PlayWav = 216, + c_s12_crash_PlayWav = 217, + c_NNs001Br_Wav = 218, + c_NNs001Br_Anim = 219, + c_BadEnd_Wave = 220, + c_BadEnd_Smk = 221, + c_snsx50bu_Wav_500 = 222, + c_snsx50bu_Pho_500 = 223, + c_snsx50bu_0_sfx = 224, + c_snsx50bu_1_sfx = 225, + c_snsx50bu_2_sfx = 226, + c_snsx50bu_Anim = 227, + c_snsx51bu_Wav_501 = 228, + c_snsx51bu_Pho_501 = 229, + c_snsx51bu_0_sfx = 230, + c_snsx51bu_1_sfx = 231, + c_snsx51bu_2_sfx = 232, + c_snsx51bu_Anim = 233, + c_SNSX29NU_Wav_502 = 234, + c_SNSX29NU_Pho_502 = 235, + c_snsx29nu_0_sfx = 236, + c_snsx29nu_1_sfx = 237, + c_snsx29nu_2_sfx = 238, + c_snsx29nu_3_sfx = 239, + c_BldgCrash = 240, + c_NNs001Br_RunAnim = 241, + c_snsx29nu_Anim = 242, + c_SNSX30NU_Wav_503 = 243, + c_SNSX30NU_Pho_503 = 244, + c_snsx30nu_0_sfx = 245, + c_snsx30nu_1_sfx = 246, + c_snsx30nu_2_sfx = 247, + c_snsx30nu_Anim = 248, + c_SNSX33NA_Wav_504 = 249, + c_SNSX33NA_Pho_504 = 250, + c_snsx33na_0_sfx = 251, + c_snsx33na_1_sfx = 252, + c_snsx33na_2_sfx = 253, + c_snsx33na_3_sfx = 254, + c_VOhead0_PlayWav = 255, + c_VOhead1_PlayWav = 256, + c_snsx33na_4_sfx = 257, + c_snsx33na_Anim = 258, + c_SNSX34NA_Wav_505 = 259, + c_VOinterrupt0_PlayWav = 260, + c_VOinterrupt1_PlayWav = 261, + c_VOinterrupt2_PlayWav = 262, + c_VOinterrupt3_PlayWav = 263, + c_SNSX34NA_Pho_505 = 264, + c_snsx34na_0_sfx = 265, + c_snsx34na_1_sfx = 266, + c_snsx34na_2_sfx = 267, + c_snsx34na_3_sfx = 268, + c_snsx34na_4_sfx = 269, + c_VObehind0_PlayWav = 270, + c_VObehind1_PlayWav = 271, + c_VObehind2_PlayWav = 272, + c_VObehind3_PlayWav = 273, + c_snsx34na_Anim = 274, + c_tns001br_0_sfx = 275, + c_tns001br_1_sfx = 276, + c_tns001br_Anim = 277, + c_tns005br_Wav_507 = 278, + c_tns005br_Pho_507 = 279, + c_VOhide_PlayWav = 280, + c_tns002br_Wav_507 = 281, + c_tns002br_Pho_507 = 282, + c_tns002br_0_sfx = 283, + c_tns002br_1_sfx = 284, + c_tns002br_2_sfx = 285, + c_tns002br_3_sfx = 286, + c_tns002br_4_sfx = 287, + c_tns002br_5_sfx = 288, + c_tns002br_6_sfx = 289, + c_tns002br_Anim = 290, + c_tns006br_Wav_508 = 291, + c_tns006br_Pho_508 = 292, + c_tns003br_Wav_508 = 293, + c_tns003br_Pho_508 = 294, + c_tns003br_0_sfx = 295, + c_tns003br_1_sfx = 296, + c_tns003br_2_sfx = 297, + c_tns003br_3_sfx = 298, + c_tns003br_4_sfx = 299, + + c_tns003br_Anim = 304, + c_tns007br_Wav_509 = 305, + c_tns007br_Pho_509 = 306, + c_tns004br_Wav_509 = 307, + c_tns004br_Pho_509 = 308, + c_tns004br_0_sfx = 309, + c_tns004br_1_sfx = 310, + c_tns004br_2_sfx = 311, + c_tns004br_3_sfx = 312, + c_tns004br_4_sfx = 313, + c_tns004br_5_sfx = 314, + c_tns004br_6_sfx = 315, + c_tns004br_7_sfx = 316, + c_tns004br_Anim = 317, + c_TJA028PA_Wav_510 = 318, + c_TJA028PA_Pho_510 = 319, + c_TJA027LA_Wav_510 = 320, + c_TJA027LA_Pho_510 = 321, + c_TJA026NI_Wav_510 = 322, + c_TJA026NI_Pho_510 = 323, + c_TJA025MA_Wav_510 = 324, + c_TJA025MA_Pho_510 = 325, + c_TJA024LA_Wav_510 = 326, + c_TJA024LA_Pho_510 = 327, + c_TJA023IN_Wav_510 = 328, + c_TJA023IN_Pho_510 = 329, + c_TJA022LA_Wav_510 = 330, + c_TJA022LA_Pho_510 = 331, + c_TJA021NI_Wav_510 = 332, + c_TJA021NI_Pho_510 = 333, + c_TJA019IN_Wav_510 = 334, + c_TJA019IN_Pho_510 = 335, + c_TJA018NI_Wav_510 = 336, + c_TJA018NI_Pho_510 = 337, + c_TJA017IN_Wav_510 = 338, + c_TJA017IN_Pho_510 = 339, + c_TJA016MA_Wav_510 = 340, + c_TJA016MA_Pho_510 = 341, + c_tja015pa_Wav_510 = 342, + c_tja015pa_Pho_510 = 343, + c_tja013in_Wav_510 = 344, + c_tja013in_Pho_510 = 345, + c_tja012ni_Wav_510 = 346, + c_tja012ni_Pho_510 = 347, + c_tja011ni_Wav_510 = 348, + c_tja011ni_Pho_510 = 349, + c_tja010la_Wav_510 = 350, + c_tja010la_Pho_510 = 351, + c_tja009ni_Wav_510 = 352, + c_tja009ni_Pho_510 = 353, + c_tja009ni_0_sfx = 354, + c_tja009ni_1_sfx = 355, + c_tja009ni_2_sfx = 356, + c_tja009ni_3_sfx = 357, + c_tja009ni_4_sfx = 358, + c_tja009ni_5_sfx = 359, + c_tja009ni_6_sfx = 360, + c_tja009ni_7_sfx = 361, + c_tja009ni_8_sfx = 362, + c_tja009ni_9_sfx = 363, + c_tja009ni_Anim = 364, + c_TNS005BR_Wav_511 = 365, + c_TNS005BR_Pho_511 = 366, + c_tns005br_0_sfx = 367, + c_tns005br_1_sfx = 368, + c_tns005br_2_sfx = 369, + c_tns005br_Anim = 370, + c_tns006br_Wav_512 = 371, + c_tns006br_Pho_512 = 372, + c_tns006br_0_sfx = 373, + c_tns006br_1_sfx = 374, + c_tns006br_2_sfx = 375, + c_tns006br_Anim = 376, + c_tns007br_Wav_513 = 377, + c_tns007br_Pho_513 = 378, + c_tns007br_0_sfx = 379, + c_tns007br_1_sfx = 380, + c_tns007br_2_sfx = 381, + c_tns007br_Anim = 382, + c_snsx58va_Wav_514 = 383, + c_snsx58va_Pho_514 = 384, + c_snsx58va_0_sfx = 385, + c_snsx58va_Anim = 386, + c_snsx59va_Wav_515 = 387, + c_snsx59va_Pho_515 = 388, + c_snsx59va_0_sfx = 389, + c_snsx59va_1_sfx = 390, + c_snsx59va_Anim = 391, + c_snsx60va_Wav_516 = 392, + c_snsx60va_Pho_516 = 393, + c_snsx60va_0_sfx = 394, + c_snsx60va_1_sfx = 395, + c_snsx60va_2_sfx = 396, + c_snsx60va_Anim = 397, + c_SNSX31SH_Wav_517 = 398, + c_snsx31sh_0_sfx = 399, + + c_snsx31sh_Anim = 401, + c_SNSX52SN_Wav_518 = 402, + c_SNSX52SN_Pho_518 = 403, + c_snsx52sn_0_sfx = 404, + c_snsx52sn_1_sfx = 405, + c_snsx52sn_2_sfx = 406, + c_snsx52sn_Anim = 407, + c_SNSX53SN_Wav_519 = 408, + c_SNSX53SN_Pho_519 = 409, + c_snsx53sn_0_sfx = 410, + c_snsx53sn_1_sfx = 411, + c_snsx53sn_2_sfx = 412, + c_snsx53sn_Anim = 413, + c_SNSX54SN_Wav_520 = 414, + c_SNSX54SN_Pho_520 = 415, + c_snsx54sn_0_sfx = 416, + c_snsx54sn_1_sfx = 417, + c_snsx54sn_2_sfx = 418, + c_snsx54sn_Anim = 419, + c_SNSX45EN_Wav_521 = 420, + c_SNSX45EN_Pho_521 = 421, + c_SNSX43EN_Wav_521 = 422, + c_SNSX43EN_Pho_521 = 423, + c_SNSX41EN_Wav_521 = 424, + c_SNSX41EN_Pho_521 = 425, + c_SNSX39EN_Wav_521 = 426, + c_SNSX39EN_Pho_521 = 427, + c_SNSX45RE_Wav_521 = 428, + c_SNSX45RE_Pho_521 = 429, + c_SNSX44RE_Wav_521 = 430, + c_SNSX44RE_Pho_521 = 431, + c_SNSX42RE_Wav_521 = 432, + c_SNSX42RE_Pho_521 = 433, + c_SNSX40RE_Wav_521 = 434, + c_SNSX40RE_Pho_521 = 435, + c_SNSX38RE_Wav_521 = 436, + c_SNSX38RE_Pho_521 = 437, + c_snsx38re_0_sfx = 438, + c_snsx38re_1_sfx = 439, + c_snsx38re_2_sfx = 440, + c_snsx38re_3_sfx = 441, + c_snsx38re_4_sfx = 442, + c_snsx38re_Anim = 443, + c_snsx13la_Wav_522 = 444, + c_snsx13la_Pho_522 = 445, + c_snsx13la_0_sfx = 446, + c_snsx13la_1_sfx = 447, + c_snsx13la_Anim = 448, + c_snsx09ni_Wav_523 = 449, + c_snsx09ni_Pho_523 = 450, + c_snsx09ni_0_sfx = 451, + c_snsx09ni_1_sfx = 452, + c_snsx09ni_2_sfx = 453, + c_snsx09ni_3_sfx = 454, + c_snsx09ni_4_sfx = 455, + c_snsx09ni_Anim = 456, + c_snsx01ma_Wav_524 = 457, + c_snsx01ma_Pho_524 = 458, + c_snsx01ma_0_sfx = 459, + c_snsx01ma_1_sfx = 460, + c_snsx01ma_2_sfx = 461, + c_snsx01ma_Anim = 462, + c_snsx03ma_Wav_525 = 463, + c_snsx03ma_Pho_525 = 464, + c_snsx03ma_Anim = 465, + c_snsx05pa_Wav_526 = 466, + c_snsx05pa_Pho_526 = 467, + c_snsx05pa_0_sfx = 468, + c_snsx05pa_1_sfx = 469, + c_snsx05pa_Anim = 470, + c_SNSX23BR_Wav_527 = 471, + c_SNSX23BR_Pho_527 = 472, + c_TRA043NI_Wav_527 = 473, + c_TRA043NI_Pho_527 = 474, + c_TRA042LA_Wav_527 = 475, + c_TRA042LA_Pho_527 = 476, + c_TRA040NI_Wav_527 = 477, + c_TRA040NI_Pho_527 = 478, + c_TRA039LA_Wav_527 = 479, + c_TRA039LA_Pho_527 = 480, + c_TRA037NI_Wav_527 = 481, + c_TRA037NI_Pho_527 = 482, + c_TRA036RO_Wav_527 = 483, + c_TRA035BR_Wav_527 = 484, + c_TRA035BR_Pho_527 = 485, + c_TRA033LA_Wav_527 = 486, + c_TRA033LA_Pho_527 = 487, + c_TRA031NI_Wav_527 = 488, + c_TRA031NI_Pho_527 = 489, + c_tra031ni_0_sfx = 490, + c_tra031ni_1_sfx = 491, + c_tra031ni_2_sfx = 492, + c_tra031ni_3_sfx = 493, + c_tra031ni_4_sfx = 494, + c_tra031ni_5_sfx = 495, + c_tra031ni_Anim = 496, + c_SNSX23BR_Wav_528 = 497, + c_SNSX23BR_Pho_528 = 498, + c_TRA043NI_Wav_528 = 499, + c_snsx50bu_RunAnim = 500, + c_snsx51bu_RunAnim = 501, + c_snsx29nu_RunAnim = 502, + c_snsx30nu_RunAnim = 503, + c_snsx33na_RunAnim = 504, + c_snsx34na_RunAnim = 505, + c_tns001br_RunAnim = 506, + c_tns002br_RunAnim = 507, + c_tns003br_RunAnim = 508, + c_tns004br_RunAnim = 509, + c_tja009ni_RunAnim = 510, + c_tns005br_RunAnim = 511, + c_tns006br_RunAnim = 512, + c_tns007br_RunAnim = 513, + c_snsx58va_RunAnim = 514, + c_snsx59va_RunAnim = 515, + c_snsx60va_RunAnim = 516, + c_snsx31sh_RunAnim = 517, + c_snsx52sn_RunAnim = 518, + c_snsx53sn_RunAnim = 519, + c_snsx54sn_RunAnim = 520, + c_snsx38re_RunAnim = 521, + c_snsx13la_RunAnim = 522, + c_snsx09ni_RunAnim = 523, + c_snsx01ma_RunAnim = 524, + c_snsx03ma_RunAnim = 525, + c_snsx05pa_RunAnim = 526, + c_tra031ni_RunAnim = 527, + c_tra032ni_RunAnim = 528, + c_snsx55sl_RunAnim = 529, + c_snsx56sl_RunAnim = 530, + c_snsx57sl_RunAnim = 531, + c_nnsxx1br_RunAnim = 532, + c_snsx02ma_RunAnim = 533, + c_snsx04ma_RunAnim = 534, + c_snsx06pa_RunAnim = 535, + c_snsx07pa_RunAnim = 536, + c_snsx08pa_RunAnim = 537, + c_snsx10ni_RunAnim = 538, + c_snsx11ni_RunAnim = 539, + c_snsx12ni_RunAnim = 540, + c_snsx14la_RunAnim = 541, + c_snsx15la_RunAnim = 542, + c_snsx16la_RunAnim = 543, + c_snsx17br_RunAnim = 544, + c_snsx18br_RunAnim = 545, + c_snsx19br_RunAnim = 546, + c_snsx20br_RunAnim = 547, + c_snsx21br_RunAnim = 548, + c_snsx22br_RunAnim = 549, + c_snsx23br_RunAnim = 550, + c_snsx24br_RunAnim = 551, + c_snsx25br_RunAnim = 552, + c_snsx26br_RunAnim = 553, + c_snsx27br_RunAnim = 554, + c_snsx28br_RunAnim = 555, + c_snsx32na_RunAnim = 556, + c_snsx35ro_RunAnim = 557, + c_snsx36ro_RunAnim = 558, + c_snsx37ro_RunAnim = 559, + c_snsx46cl_RunAnim = 560, + c_snsx47cl_RunAnim = 561, + c_snsx48cl_RunAnim = 562, + c_snsx49ml_RunAnim = 563, + c_snsx61mg_RunAnim = 564, + c_snsx62mg_RunAnim = 565, + c_snsx63mg_RunAnim = 566, + c_snsx64rd_RunAnim = 567, + c_snsx65pg_RunAnim = 568, + c_snsx66bd_RunAnim = 569, + c_snsx67sy_RunAnim = 570, + c_snsx68pg_RunAnim = 571, + c_snsx69rd_RunAnim = 572, + c_snsx70pg_RunAnim = 573, + c_snsx72sy_RunAnim = 574, + c_snsx73rd_RunAnim = 575, + c_tns048ma_RunAnim = 576, + c_tns051in_RunAnim = 577, + c_tra045la_RunAnim = 578, + c_tns030bd_RunAnim = 579, + c_tns030pg_RunAnim = 580, + c_tns030rd_RunAnim = 581, + c_tns030sy_RunAnim = 582, + c_tra036ro_PlayWav = 583, + c_Avo906In_PlayWav = 584, + c_Avo907In_PlayWav = 585, + c_Avo908In_PlayWav = 586, + c_Avo900Ps_PlayWav = 587, + c_Avo901Ps_PlayWav = 588, + c_Avo902Ps_PlayWav = 589, + c_Avo903Ps_PlayWav = 590, + c_Avo904Ps_PlayWav = 591, + c_TRA043NI_Pho_528 = 592, + c_TRA042LA_Wav_528 = 593, + c_TRA042LA_Pho_528 = 594, + c_TRA040NI_Wav_528 = 595, + c_TRA040NI_Pho_528 = 596, + c_TRA039LA_Wav_528 = 597, + c_TRA039LA_Pho_528 = 598, + c_TRA037NI_Wav_528 = 599, + c_TRA037NI_Pho_528 = 600, + c_TRA036RO_Wav_528 = 601, + c_TRA035BR_Wav_528 = 602, + c_TRA035BR_Pho_528 = 603, + c_TRA033LA_Wav_528 = 604, + c_TRA033LA_Pho_528 = 605, + c_TRA032NI_Wav_528 = 606, + c_TRA032NI_Pho_528 = 607, + c_tra032ni_0_sfx = 608, + c_tra032ni_1_sfx = 609, + c_tra032ni_2_sfx = 610, + c_tra032ni_3_sfx = 611, + c_tra032ni_4_sfx = 612, + c_tra032ni_5_sfx = 613, + c_tra032ni_Anim = 614, + c_snsx55sl_Wav_529 = 615, + c_snsx55sl_Pho_529 = 616, + c_snsx55sl_0_sfx = 617, + c_snsx55sl_1_sfx = 618, + c_snsx55sl_2_sfx = 619, + c_snsx55sl_3_sfx = 620, + c_snsx55sl_Anim = 621, + c_snsx56sl_Wav_530 = 622, + c_snsx56sl_Pho_530 = 623, + c_snsx56sl_Anim = 624, + c_snsx57sl_Wav_531 = 625, + c_snsx57sl_Pho_531 = 626, + c_snsx57sl_0_sfx = 627, + c_snsx57sl_Anim = 628, + c_nnsxx1br_Anim = 629, + c_snsx02ma_Wav_533 = 630, + c_snsx02ma_Pho_533 = 631, + c_snsx02ma_0_sfx = 632, + c_snsx02ma_1_sfx = 633, + c_snsx02ma_2_sfx = 634, + c_snsx02ma_3_sfx = 635, + c_snsx02ma_4_sfx = 636, + c_snsx02ma_5_sfx = 637, + c_snsx02ma_Anim = 638, + c_snsx04ma_Wav_534 = 639, + c_snsx04ma_Pho_534 = 640, + c_snsx04ma_0_sfx = 641, + c_snsx04ma_1_sfx = 642, + c_snsx04ma_2_sfx = 643, + c_snsx04ma_3_sfx = 644, + c_snsx04ma_4_sfx = 645, + c_snsx04ma_Anim = 646, + c_snsx06pa_Wav_535 = 647, + c_snsx06pa_Pho_535 = 648, + c_snsx06pa_0_sfx = 649, + c_snsx06pa_1_sfx = 650, + c_snsx06pa_Anim = 651, + c_snsx07pa_Wav_536 = 652, + c_snsx07pa_Pho_536 = 653, + c_snsx07pa_0_sfx = 654, + c_snsx07pa_1_sfx = 655, + c_snsx07pa_Anim = 656, + c_snsx08pa_Wav_537 = 657, + c_snsx08pa_Pho_537 = 658, + c_snsx08pa_0_sfx = 659, + c_snsx08pa_1_sfx = 660, + c_snsx08pa_Anim = 661, + c_snsx10ni_Wav_538 = 662, + c_snsx10ni_Pho_538 = 663, + c_snsx10ni_0_sfx = 664, + c_snsx10ni_1_sfx = 665, + c_snsx10ni_2_sfx = 666, + c_snsx10ni_Anim = 667, + c_snsx11ni_Wav_539 = 668, + c_snsx11ni_Pho_539 = 669, + c_snsx11ni_0_sfx = 670, + c_snsx11ni_1_sfx = 671, + c_snsx11ni_2_sfx = 672, + c_snsx11ni_3_sfx = 673, + c_snsx11ni_Anim = 674, + c_snsx12ni_Wav_540 = 675, + c_snsx12ni_Pho_540 = 676, + c_snsx12ni_Anim = 677, + c_snsx14la_Wav_541 = 678, + c_snsx14la_Pho_541 = 679, + c_snsx14la_0_sfx = 680, + c_snsx14la_1_sfx = 681, + c_snsx14la_2_sfx = 682, + c_snsx14la_Anim = 683, + c_snsx15la_Wav_542 = 684, + c_snsx15la_Pho_542 = 685, + c_snsx15la_0_sfx = 686, + c_snsx15la_1_sfx = 687, + c_snsx15la_Anim = 688, + c_snsx16la_Wav_543 = 689, + c_snsx16la_Pho_543 = 690, + c_snsx16la_Anim = 691, + c_snsx17br_Wav_544 = 692, + c_snsx17br_Pho_544 = 693, + c_snsx17br_0_sfx = 694, + c_snsx17br_1_sfx = 695, + c_snsx17br_2_sfx = 696, + c_snsx17br_Anim = 697, + c_snsx18br_Wav_545 = 698, + c_snsx18br_Pho_545 = 699, + c_snsx18br_0_sfx = 700, + c_snsx18br_1_sfx = 701, + c_snsx18br_Anim = 702, + c_snsx19br_Wav_546 = 703, + c_snsx19br_Pho_546 = 704, + c_snsx19br_0_sfx = 705, + c_snsx19br_1_sfx = 706, + c_snsx19br_2_sfx = 707, + c_snsx19br_Anim = 708, + c_snsx20br_Wav_547 = 709, + c_snsx20br_Pho_547 = 710, + c_snsx20br_0_sfx = 711, + c_snsx20br_1_sfx = 712, + c_snsx20br_2_sfx = 713, + c_snsx20br_3_sfx = 714, + c_snsx20br_Anim = 715, + c_SNSX21BR_Wav_548 = 716, + c_SNSX21BR_Pho_548 = 717, + c_snsx21br_0_sfx = 718, + c_snsx21br_1_sfx = 719, + c_snsx21br_2_sfx = 720, + c_snsx21br_3_sfx = 721, + c_snsx21br_Anim = 722, + c_snsx22br_Wav_549 = 723, + c_snsx22br_Pho_549 = 724, + c_snsx22br_0_sfx = 725, + c_snsx22br_1_sfx = 726, + c_snsx22br_2_sfx = 727, + c_snsx22br_Anim = 728, + c_snsx23br_Wav_550 = 729, + c_snsx23br_Pho_550 = 730, + c_snsx23br_0_sfx = 731, + c_snsx23br_1_sfx = 732, + c_snsx23br_2_sfx = 733, + c_snsx23br_3_sfx = 734, + c_snsx23br_4_sfx = 735, + c_snsx23br_Anim = 736, + c_snsx24br_Wav_551 = 737, + c_snsx24br_Pho_551 = 738, + c_snsx24br_0_sfx = 739, + c_snsx24br_Anim = 740, + c_snsx25br_Wav_552 = 741, + c_snsx25br_Pho_552 = 742, + c_snsx25br_0_sfx = 743, + c_snsx25br_1_sfx = 744, + c_snsx25br_Anim = 745, + c_snsx26br_Wav_553 = 746, + c_snsx26br_Pho_553 = 747, + c_snsx26br_0_sfx = 748, + c_snsx26br_1_sfx = 749, + c_snsx26br_Anim = 750, + c_snsx27br_Wav_554 = 751, + c_snsx27br_Pho_554 = 752, + c_snsx27br_0_sfx = 753, + c_snsx27br_1_sfx = 754, + c_snsx27br_Anim = 755, + c_snsx28br_Wav_555 = 756, + c_snsx28br_Pho_555 = 757, + c_snsx28br_0_sfx = 758, + c_snsx28br_Anim = 759, + c_SNSX32NA_Wav_556 = 760, + c_SNSX32NA_Pho_556 = 761, + c_snsx32na_0_sfx = 762, + c_snsx32na_1_sfx = 763, + c_snsx32na_2_sfx = 764, + c_snsx32na_3_sfx = 765, + c_snsx32na_Anim = 766, + c_SNSX35RO_Wav_557 = 767, + c_SNSX35RO_Pho_557 = 768, + c_snsx35ro_Anim = 769, + c_SNSX36RO_Wav_558 = 770, + c_SNSX36RO_Pho_558 = 771, + c_snsx36ro_0_sfx = 772, + c_snsx36ro_1_sfx = 773, + c_snsx36ro_Anim = 774, + c_SNSX37RO_Wav_559 = 775, + c_SNSX37RO_Pho_559 = 776, + c_snsx37ro_0_sfx = 777, + c_snsx37ro_1_sfx = 778, + c_snsx37ro_Anim = 779, + c_snsx46cl_Wav_560 = 780, + c_snsx46cl_Pho_560 = 781, + c_snsx46cl_Anim = 782, + c_snsx47cl_Wav_561 = 783, + c_snsx47cl_Pho_561 = 784, + c_snsx47cl_0_sfx = 785, + c_snsx47cl_Anim = 786, + c_snsx48cl_Wav_562 = 787, + c_snsx48cl_Pho_562 = 788, + c_snsx48cl_0_sfx = 789, + c_snsx48cl_1_sfx = 790, + c_snsx48cl_2_sfx = 791, + c_snsx48cl_Anim = 792, + c_snsx49ml_Wav_563 = 793, + c_snsx49ml_Pho_563 = 794, + c_snsx49ml_0_sfx = 795, + c_snsx49ml_1_sfx = 796, + c_snsx49ml_Anim = 797, + c_SNSX61MG_Wav_564 = 798, + c_SNSX61MG_Pho_564 = 799, + c_snsx61mg_0_sfx = 800, + c_snsx61mg_1_sfx = 801, + c_snsx61mg_2_sfx = 802, + c_snsx61mg_3_sfx = 803, + c_snsx61mg_Anim = 804, + c_SNSX62MG_Wav_565 = 805, + c_SNSX62MG_Pho_565 = 806, + c_snsx62mg_0_sfx = 807, + c_snsx62mg_1_sfx = 808, + c_snsx62mg_2_sfx = 809, + c_snsx62mg_Anim = 810, + c_SNSX63MG_Wav_566 = 811, + c_SNSX63MG_Pho_566 = 812, + c_snsx63mg_0_sfx = 813, + c_snsx63mg_1_sfx = 814, + c_snsx63mg_2_sfx = 815, + c_snsx63mg_3_sfx = 816, + c_snsx63mg_Anim = 817, + c_SNSX64RD_Wav_567 = 818, + c_SNSX64RD_Pho_567 = 819, + c_snsx64rd_0_sfx = 820, + c_snsx64rd_1_sfx = 821, + c_snsx64rd_Anim = 822, + c_SNSX65PG_Wav_568 = 823, + c_SNSX65PG_Pho_568 = 824, + c_snsx65pg_0_sfx = 825, + c_snsx65pg_1_sfx = 826, + c_snsx65pg_Anim = 827, + c_snsx66bd_Wav_569 = 828, + c_snsx66bd_Pho_569 = 829, + c_snsx66bd_0_sfx = 830, + c_snsx66bd_1_sfx = 831, + c_snsx66bd_Anim = 832, + c_SNSX67SY_Wav_570 = 833, + c_SNSX67SY_Pho_570 = 834, + c_snsx67sy_0_sfx = 835, + c_snsx67sy_1_sfx = 836, + c_snsx67sy_Anim = 837, + c_snsx68pg_Wav_571 = 838, + c_snsx68pg_Pho_571 = 839, + c_snsx68pg_0_sfx = 840, + c_snsx68pg_1_sfx = 841, + c_snsx68pg_Anim = 842, + c_snsx69rd_Wav_572 = 843, + c_snsx69rd_Pho_572 = 844, + c_snsx69rd_0_sfx = 845, + c_snsx69rd_Anim = 846, + c_snsx70pg_Wav_573 = 847, + c_snsx70pg_Pho_573 = 848, + c_snsx70pg_0_sfx = 849, + c_snsx70pg_1_sfx = 850, + c_snsx70pg_Anim = 851, + c_snsx72sy_Wav_574 = 852, + c_snsx72sy_Pho_574 = 853, + c_snsx72sy_0_sfx = 854, + c_snsx72sy_Anim = 855, + c_snsx73rd_Wav_575 = 856, + c_snsx73rd_Pho_575 = 857, + c_snsx73rd_0_sfx = 858, + c_snsx73rd_1_sfx = 859, + c_snsx73rd_Anim = 860, + c_TNS049PA_Wav_576 = 861, + c_TNS049PA_Pho_576 = 862, + c_TNS048MA_Wav_576 = 863, + c_TNS048MA_Pho_576 = 864, + c_tns048ma_0_sfx = 865, + c_tns048ma_1_sfx = 866, + c_tns048ma_2_sfx = 867, + c_tns048ma_Anim = 868, + c_TNS051IN_Wav_577 = 869, + c_TNS051IN_Pho_577 = 870, + c_tns051in_0_sfx = 871, + c_tns051in_1_sfx = 872, + c_tns051in_2_sfx = 873, + c_tns051in_Anim = 874, + c_TRA046NI_Wav_578 = 875, + c_TRA046NI_Pho_578 = 876, + c_TRA045LA_Wav_578 = 877, + c_TRA045LA_Pho_578 = 878, + c_tra045la_0_sfx = 879, + c_tra045la_1_sfx = 880, + c_tra045la_2_sfx = 881, + c_tra045la_Anim = 882, + c_tns030bd_Wav_579 = 883, + c_tns030bd_Pho_579 = 884, + c_tns030bd_Anim = 885, + c_tns030pg_Wav_580 = 886, + c_tns030pg_Pho_580 = 887, + c_tns030pg_Anim = 888, + c_tns030rd_Wav_581 = 889, + c_tns030rd_Pho_581 = 890, + c_tns030rd_Anim = 891, + c_tns030sy_Wav_582 = 892, + c_tns030sy_Pho_582 = 893, + c_tns030sy_Anim = 894 +}; +} // namespace Act2mainScript + +#endif // ACT2MAIN_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/act3_actions.h b/LEGO1/lego/legoomni/include/actions/act3_actions.h new file mode 100644 index 00000000..c10c229b --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/act3_actions.h @@ -0,0 +1,241 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef ACT3_ACTIONS_H +#define ACT3_ACTIONS_H + +namespace Act3Script +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneAct3 = -1, + + c__Act3 = 0, + + c_shootpz_PlayWav = 8, + c_shootdn_PlayWav = 9, + + c_eatdn_PlayWav = 18, + c_eatpz_PlayWav = 19, + c_pzhitdn_PlayWav = 20, + c_HelicopterDashboard = 21, + c_HelicopterDashboard_Bitmap = 22, + + c_Helicopter_Pizza_Ctl = 26, + c_Helicopter_Donut_Ctl = 27, + c_Helicopter_Info_Ctl = 28, + + c_HelicopterTakeOff_Anim = 32, + c_HelicopterLand_Anim = 33, + + c_dnhitpz_PlayWav = 45, + c_stickpz_PlayWav = 46, + c_stickdn_PlayWav = 47, + c_xarrow_PlayWav = 48, + c_thpt_PlayWav = 49, + + c_Act3Path = 88, + c_InfCtr = 89, + c_InfCtrModel = 90, + c_Helicopter_Actor = 91, + c_Chptr_Model = 92, + c_Brickstr_Walk = 93, + c_Brickstr_Shoot = 94, + c_Shark_Eat = 95, + c_Shark_Actor = 96, + c_Shark_Model = 97, + c_BrickstrCar_Actor = 98, + c_BrickstrCar_Model = 99, + c_Brickstr_Actor = 100, + c_Brickstr_Model = 101, + c_Laura_Walk = 102, + c_Laura_Eat = 103, + c_LauraCar_Actor = 104, + c_LauraCar_Model = 105, + c_Laura_Actor = 106, + c_Laura_Model = 107, + c_Nick_Walk = 108, + c_Nick_Eat = 109, + c_NickCar_Actor = 110, + c_NickCar_Model = 111, + c_Nick_Actor = 112, + c_Nick_Model = 113, + c_Cm_Walk = 114, + c_Cm_Actor = 115, + c_Cm_Model = 116, + c_Bd_Walk = 117, + c_Bd_Actor = 118, + c_Bd_Model = 119, + c_Helicopter_Pizza_Up_Bitmap = 120, + c_Helicopter_Pizza_Down_Bitmap = 121, + c_Helicopter_Donut_Up_Bitmap = 122, + c_Helicopter_Donut_Down_Bitmap = 123, + c_Helicopter_Info_Up_Bitmap = 124, + c_Helicopter_Info_Down_Bitmap = 125, + c_HelicopterDotOn1_Bitmap = 126, + c_HelicopterDotOn2_Bitmap = 127, + c_HelicopterDotOn3_Bitmap = 128, + c_HelicopterDotOn4_Bitmap = 129, + c_HelicopterDotOn5_Bitmap = 130, + c_HelicopterDotOn6_Bitmap = 131, + c_HelicopterDotOn7_Bitmap = 132, + c_HelicopterDotOn8_Bitmap = 133, + c_HelicopterDotOn9_Bitmap = 134, + c_HelicopterDotOn10_Bitmap = 135, + c_HelicopterDotOn11_Bitmap = 136, + c_HelicopterDotOn12_Bitmap = 137, + c_HelicopterDotOn13_Bitmap = 138, + c_HelicopterDotOn14_Bitmap = 139, + c_HelicopterDotOn15_Bitmap = 140, + c_TLP067PA_Wav_500 = 141, + c_TLP067PA_Pho_500 = 142, + c_TLP066MA_Wav_500 = 143, + c_TLP066MA_Pho_500 = 144, + c_TLP065NI_Wav_500 = 145, + c_TLP065NI_Pho_500 = 146, + c_TLP053IN_Wav_500 = 147, + c_TLP053IN_Pho_500 = 148, + c_TLP064LA_Wav_500 = 149, + c_TLP064LA_Pho_500 = 150, + c_TLP063MA_Wav_500 = 151, + c_TLP063MA_Pho_500 = 152, + c_TLP061NI_Wav_500 = 153, + c_TLP061NI_Pho_500 = 154, + c_TLP060IN_Wav_500 = 155, + c_TLP060IN_Pho_500 = 156, + c_TLP058MA_Wav_500 = 157, + c_TLP058MA_Pho_500 = 158, + c_TLP057IN_Wav_500 = 159, + c_TLP057IN_Pho_500 = 160, + c_TLP055PA_Wav_500 = 161, + c_TLP055PA_Pho_500 = 162, + c_tlp053in_0_sfx = 163, + c_tlp053in_1_sfx = 164, + c_tlp053in_2_sfx = 165, + c_tlp053in_3_sfx = 166, + c_tlp053in_4_sfx = 167, + c_tlp053in_5_sfx = 168, + c_tlp053in_Anim = 169, + c_TLP065NI_Wav_501 = 170, + c_TLP065NI_Pho_501 = 171, + c_TLP064LA_Wav_501 = 172, + c_TLP064LA_Pho_501 = 173, + c_tlp064la_0_sfx = 174, + c_tlp064la_Anim = 175, + c_TLP068IN_Wav_502 = 176, + c_TLP068IN_Pho_502 = 177, + c_tlp068in_0_sfx = 178, + c_tlp068in_1_sfx = 179, + c_tlp068in_2_sfx = 180, + c_tlp068in_3_sfx = 181, + c_tlp068in_4_sfx = 182, + c_tlp068in_5_sfx = 183, + c_tlp068in_Anim = 184, + + c_tlp053in_RunAnim = 500, + c_tlp064la_RunAnim = 501, + c_tlp068in_RunAnim = 502, + c_sns76xra_PlayWav = 503, + c_sns77xra_PlayWav = 504, + c_sns02xni_PlayWav = 505, + c_sns03xni_PlayWav = 506, + c_sns04xni_PlayWav = 507, + c_sns05xni_PlayWav = 508, + c_sns06xni_PlayWav = 509, + c_sns07xni_PlayWav = 510, + c_sns08xni_PlayWav = 511, + c_sns09xni_PlayWav = 512, + c_sns10xni_PlayWav = 513, + c_sns11xni_PlayWav = 514, + c_sns12xla_PlayWav = 515, + c_sns13xla_PlayWav = 516, + c_sns14xla_PlayWav = 517, + c_sns15xla_PlayWav = 518, + c_sns16xla_PlayWav = 519, + c_sns17xla_PlayWav = 520, + c_sns18xni_PlayWav = 521, + c_sns19xni_PlayWav = 522, + c_sns20xni_PlayWav = 523, + c_sns21xni_PlayWav = 524, + c_sns22xni_PlayWav = 525, + c_sns23xni_PlayWav = 526, + c_sns24xni_PlayWav = 527, + c_sns25xni_PlayWav = 528, + c_sns26xni_PlayWav = 529, + c_sns27xni_PlayWav = 530, + c_sns28xni_PlayWav = 531, + c_sns29xni_PlayWav = 532, + c_sns30xni_PlayWav = 533, + c_sns31xni_PlayWav = 534, + c_sns32xni_PlayWav = 535, + c_sns33xni_PlayWav = 536, + c_sns34xla_PlayWav = 537, + c_sns35xla_PlayWav = 538, + c_sns36xla_PlayWav = 539, + c_sns37xla_PlayWav = 540, + c_sns38xla_PlayWav = 541, + c_sns39xla_PlayWav = 542, + c_sns40xla_PlayWav = 543, + c_sns41xla_PlayWav = 544, + c_sns42xla_PlayWav = 545, + c_sns43xma_PlayWav = 546, + c_sns44xma_PlayWav = 547, + c_sns45xma_PlayWav = 548, + c_sns46xin_PlayWav = 549, + c_sns47xin_PlayWav = 550, + c_sns48xin_PlayWav = 551, + c_sns49xin_PlayWav = 552, + c_sns50xin_PlayWav = 553, + c_sns51xin_PlayWav = 554, + c_sns52xro_PlayWav = 555, + c_sns53xro_PlayWav = 556, + c_sns54xro_PlayWav = 557, + c_sns55xnu_PlayWav = 558, + c_sns56xnu_PlayWav = 559, + c_sns57xnu_PlayWav = 560, + c_sns58xna_PlayWav = 561, + c_sns59xna_PlayWav = 562, + c_sns60xna_PlayWav = 563, + c_sns61xva_PlayWav = 564, + c_sns62xmg_PlayWav = 565, + c_sns63xcl_PlayWav = 566, + c_sns64xen_PlayWav = 567, + c_sns65xre_PlayWav = 568, + c_sns66xsl_PlayWav = 569, + c_sns67xml_PlayWav = 570, + c_sns68xbu_PlayWav = 571, + c_sns69xsn_PlayWav = 572, + c_sns70xni_PlayWav = 573, + c_sns71xni_PlayWav = 574, + c_sns72xni_PlayWav = 575, + c_sns73xla_PlayWav = 576, + c_sns74xla_PlayWav = 577, + c_sns75xla_PlayWav = 578, + c_sns76xja_PlayWav = 579, + c_sns76xjs_PlayWav = 580, + c_sns77xja_PlayWav = 581, + c_sns77xjs_PlayWav = 582, + c_tns069ni_PlayWav = 583, + c_tns070br_PlayWav = 584, + c_tns071ni_PlayWav = 585, + c_tns072br_PlayWav = 586, + c_tns073ni_PlayWav = 587, + c_tns074ni_PlayWav = 588, + c_tns075br_PlayWav = 589, + c_tns076la_PlayWav = 590, + c_tns077br_PlayWav = 591, + + c_tns079la_PlayWav = 593, + c_tns081ni_PlayWav = 594, + c_tns082br_PlayWav = 595, + c_tns080br_PlayWav = 596, + c_tnsx07br_PlayWav = 597, + c_tnsx02br_PlayWav = 598, + c_snsxx2br_PlayWav = 599, + c_snsy23br_PlayWav = 600 +}; +} // namespace Act3Script + +#endif // ACT3_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/carrace_actions.h b/LEGO1/lego/legoomni/include/actions/carrace_actions.h new file mode 100644 index 00000000..5084f2bc --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/carrace_actions.h @@ -0,0 +1,410 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef CARRACE_ACTIONS_H +#define CARRACE_ACTIONS_H + +namespace CarraceScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneCarrace = -1, + + c__CarRace_World = 0, + c_SpeedMeter = 1, + c_FuelMeter = 2, + c_Info_Ctl = 3, + c_DistanceMeter = 4, + c_Horn_Ctl = 5, + c_Horn_Up_Bitmap = 6, + c_Horn_Down = 7, + c_Horn_Sound = 8, + c_Horn_Down_Bitmap = 9, + c_UserCar_Actor = 10, + c_Studs_Actor = 11, + c_Rhoda_Actor = 12, + c_irtx08ra_PlayWav = 13, + c_Map_Ctl = 14, + c_Map_Up_Bitmap = 15, + c_Map_Down_Bitmap = 16, + c_Info_Up_Bitmap = 17, + c_Info_Down_Bitmap = 18, + c_CarLocator2 = 19, + c_CarLocator3 = 20, + c_StartTriggers = 21, + c_RacePath = 22, + c_HitWallSound = 23, + c_SetHitWallSound = 24, + c_HitActorSound = 25, + c_SetHitActorSound = 26, + c_VO1 = 27, + c_VO2 = 28, + c_VO3 = 29, + c_VO4 = 30, + c_VO5 = 31, + c_VO6 = 32, + c_VO7 = 33, + c_VO8 = 34, + c_VO9 = 35, + c_VO10 = 36, + c_VO11 = 37, + c_VO12 = 38, + c_VO13 = 39, + c_VO14 = 40, + c_RaceCarDashboard11_Bitmap = 41, + c_RaceCarDashboard12_Bitmap = 42, + c_RaceCarDashboard13_Bitmap = 43, + c_RaceCarDashboard14_Bitmap = 44, + c_RaceCarDashboard15_Bitmap = 45, + c_RaceCarDashboard16_Bitmap = 46, + c_VO15 = 47, + c_VO16 = 48, + c_VO17 = 49, + c_VO18 = 50, + c_RaceCarDashboard21_Bitmap = 51, + c_RaceCarDashboard22_Bitmap = 52, + c_RaceCarDashboard23_Bitmap = 53, + c_RaceCarDashboard24_Bitmap = 54, + c_RaceCarDashboard25_Bitmap = 55, + c_RaceCarDashboard26_Bitmap = 56, + c_VO19 = 57, + c_VO20 = 58, + c_VO21 = 59, + c_SkelKick_Sound = 60, + c_RaceCarDashboard31_Bitmap = 61, + c_RaceCarDashboard32_Bitmap = 62, + c_RaceCarDashboard33_Bitmap = 63, + c_RaceCarDashboard34_Bitmap = 64, + c_RaceCarDashboard35_Bitmap = 65, + c_RaceCarDashboard36_Bitmap = 66, + c_Rhoda_Sound = 67, + c_Rhoda_Locator = 68, + c_RcRhod00_Anim = 69, + c_RcRhod01_Anim = 70, + c_RaceCarDashboard41_Bitmap = 71, + c_RaceCarDashboard42_Bitmap = 72, + c_RaceCarDashboard43_Bitmap = 73, + c_RaceCarDashboard44_Bitmap = 74, + c_RaceCarDashboard45_Bitmap = 75, + c_RaceCarDashboard46_Bitmap = 76, + c_RcRhod02_Anim = 77, + c_RhodaCar_Actor = 78, + c_RhodaCar_Model = 79, + c_Rhoda_Model = 80, + c_RaceCarDashboard51_Bitmap = 81, + c_RaceCarDashboard52_Bitmap = 82, + c_RaceCarDashboard53_Bitmap = 83, + c_RaceCarDashboard54_Bitmap = 84, + c_RaceCarDashboard55_Bitmap = 85, + c_RaceCarDashboard56_Bitmap = 86, + c_Studs_Sound = 87, + c_Studs_Locator = 88, + c_RcStud00_Anim = 89, + c_RcStud01_Anim = 90, + c_RaceCarDashboard61_Bitmap = 91, + c_RaceCarDashboard62_Bitmap = 92, + c_RaceCarDashboard63_Bitmap = 93, + c_RaceCarDashboard64_Bitmap = 94, + c_RaceCarDashboard65_Bitmap = 95, + c_RaceCarDashboard66_Bitmap = 96, + c_RaceCarDashboard = 97, + c_RaceCarArms_Ctl = 98, + c_RcStud02_Anim = 99, + c_StudsCar_Actor = 100, + c_StudsCar_Model = 101, + c_Studs_Model = 102, + c_SkelKick1_Anim = 103, + c_SkelKick2_Anim = 104, + c_User_Locator = 105, + c_UserCar_Model = 106, + c_ScaryRun_Sound = 107, + c_ScaryRun_Anim = 108, + c_Skeleton_Actor = 109, + c_Skeleton_Model = 110, + c_Ghost_Sound = 111, + c_Ghost_Anim = 112, + c_Ghost_Actor = 113, + c_Ghost_Model = 114, + c_TireGuy_Anim = 115, + c_TireGuy_Actor = 116, + c_TireGuy_Model = 117, + c_Skelton1_Sound = 118, + c_SJump_Anim = 119, + c_Skelton1_Actor = 120, + c_Skelton1_Model = 121, + c_SkelBig_Anim = 122, + c_SkelBig_Actor = 123, + c_SkelBig_Model = 124, + c_DorA_Actor = 125, + c_DorA_Model = 126, + c_DorB_Actor = 127, + c_DorB_Model = 128, + c_DorC_Actor = 129, + c_DorC_Model = 130, + c_DorD_Actor = 131, + c_DorD_Model = 132, + c_DorE_Actor = 133, + c_DorE_Model = 134, + c_DorF_Actor = 135, + c_DorF_Model = 136, + c_DorG_Actor = 137, + c_DorG_Model = 138, + c_DorH_Actor = 139, + c_DorH_Model = 140, + c_DorI_Actor = 141, + c_DorI_Model = 142, + c_DorJ_Actor = 143, + c_DorJ_Model = 144, + c_HideAni_Anim = 145, + c_RaceCarArms_Mask_Bitmap = 146, + c_srt001rh_Wav_500 = 147, + c_srt001rh_Pho_500 = 148, + c_srt001rh_0_sfx = 149, + c_srt001rh_1_sfx = 150, + c_srt001rh_2_sfx = 151, + c_srt001rh_Anim = 152, + c_SRT001SL_Wav_501 = 153, + c_SRT001SL_Pho_501 = 154, + c_srt001sl_0_sfx = 155, + c_srt001sl_1_sfx = 156, + c_srt001sl_2_sfx = 157, + c_srt001sl_3_sfx = 158, + c_srt001sl_4_sfx = 159, + c_srt001sl_Anim = 160, + c_srt002rh_Wav_502 = 161, + c_srt002rh_Pho_502 = 162, + c_srt002rh_0_sfx = 163, + c_srt002rh_1_sfx = 164, + c_srt002rh_2_sfx = 165, + c_srt002rh_Anim = 166, + c_SRT002SL_Wav_503 = 167, + c_SRT002SL_Pho_503 = 168, + c_srt002sl_0_sfx = 169, + c_srt002sl_1_sfx = 170, + c_srt002sl_2_sfx = 171, + c_srt002sl_3_sfx = 172, + c_srt002sl_Anim = 173, + c_srt003rh_Wav_504 = 174, + c_srt003rh_Pho_504 = 175, + c_srt003rh_0_sfx = 176, + c_srt003rh_1_sfx = 177, + c_srt003rh_Anim = 178, + c_SRT003SL_Wav_505 = 179, + c_SRT003SL_Pho_505 = 180, + c_srt003sl_0_sfx = 181, + c_srt003sl_1_sfx = 182, + c_srt003sl_Anim = 183, + c_SRT004SL_Wav_506 = 184, + c_SRT004SL_Pho_506 = 185, + c_srt004sl_0_sfx = 186, + c_srt004sl_1_sfx = 187, + c_srt004sl_2_sfx = 188, + c_srt004sl_Anim = 189, + c_srt005sl_Wav_507 = 190, + c_srt005sl_Pho_507 = 191, + c_srt005sl_0_sfx = 192, + c_srt005sl_1_sfx = 193, + c_srt005sl_2_sfx = 194, + c_srt005sl_3_sfx = 195, + c_srt005sl_Anim = 196, + c_IRTX08RA_Wav_508 = 197, + c_nrtflag0_Anim = 198, + c_SRT007RH_Wav_509 = 199, + c_SRT007RH_Pho_509 = 200, + c_srt007rh_0_sfx = 201, + c_srt007rh_1_sfx = 202, + c_srt007rh_2_sfx = 203, + c_srt007rh_3_sfx = 204, + c_srt007rh_Anim = 205, + c_SRT008RH_Wav_510 = 206, + c_SRT008RH_Pho_510 = 207, + c_srt008rh_0_sfx = 208, + c_srt008rh_1_sfx = 209, + c_srt008rh_2_sfx = 210, + c_srt008rh_3_sfx = 211, + c_srt008rh_Anim = 212, + c_SRT009RH_Wav_511 = 213, + c_SRT009RH_Pho_511 = 214, + c_srt009rh_0_sfx = 215, + c_srt009rh_1_sfx = 216, + c_srt009rh_2_sfx = 217, + c_srt009rh_3_sfx = 218, + c_srt009rh_Anim = 219, + c_SRT010RH_Wav_512 = 220, + c_SRT010RH_Pho_512 = 221, + c_srt010rh_0_sfx = 222, + c_srt010rh_1_sfx = 223, + c_srt010rh_2_sfx = 224, + c_srt010rh_Anim = 225, + c_SRT011RH_Wav_513 = 226, + c_SRT011RH_Pho_513 = 227, + c_srt011rh_0_sfx = 228, + c_srt011rh_1_sfx = 229, + c_srt011rh_2_sfx = 230, + c_srt011rh_3_sfx = 231, + c_srt011rh_Anim = 232, + c_SRT011SL_Wav_514 = 233, + c_SRT011SL_Pho_514 = 234, + c_srt011sl_0_sfx = 235, + c_srt011sl_1_sfx = 236, + c_srt011sl_2_sfx = 237, + c_srt011sl_3_sfx = 238, + c_srt011sl_Anim = 239, + c_SRT012RH_Wav_515 = 240, + c_SRT012RH_Pho_515 = 241, + c_srt012rh_0_sfx = 242, + c_srt012rh_1_sfx = 243, + c_srt012rh_2_sfx = 244, + c_srt012rh_3_sfx = 245, + c_srt012rh_Anim = 246, + c_SRT012SL_Wav_516 = 247, + c_SRT012SL_Pho_516 = 248, + c_srt012sl_0_sfx = 249, + c_srt012sl_1_sfx = 250, + c_srt012sl_2_sfx = 251, + c_srt012sl_3_sfx = 252, + c_srt012sl_Anim = 253, + c_SRT013SL_Wav_517 = 254, + c_SRT013SL_Pho_517 = 255, + c_srt013sl_0_sfx = 256, + c_srt013sl_1_sfx = 257, + c_srt013sl_2_sfx = 258, + c_srt013sl_3_sfx = 259, + c_srt013sl_Anim = 260, + c_SRT014SL_Wav_518 = 261, + c_SRT014SL_Pho_518 = 262, + c_srt014sl_0_sfx = 263, + c_srt014sl_1_sfx = 264, + c_srt014sl_2_sfx = 265, + c_srt014sl_3_sfx = 266, + c_srt014sl_4_sfx = 267, + c_srt014sl_Anim = 268, + c_SRT015SL_Wav_519 = 269, + c_SRT015SL_Pho_519 = 270, + c_srt015sl_0_sfx = 271, + c_srt015sl_1_sfx = 272, + c_srt015sl_2_sfx = 273, + c_srt015sl_3_sfx = 274, + c_srt015sl_Anim = 275, + c_SRT016SL_Wav_520 = 276, + c_SRT016SL_Pho_520 = 277, + c_srt016sl_0_sfx = 278, + c_srt016sl_1_sfx = 279, + c_srt016sl_2_sfx = 280, + c_srt016sl_3_sfx = 281, + c_srt016sl_4_sfx = 282, + c_srt016sl_Anim = 283, + c_SRT017SL_Wav_521 = 284, + c_SRT017SL_Pho_521 = 285, + c_srt017sl_0_sfx = 286, + c_srt017sl_1_sfx = 287, + c_srt017sl_2_sfx = 288, + c_srt017sl_3_sfx = 289, + c_srt017sl_Anim = 290, + c_nrtrhod0_Anim = 291, + c_nrt001pz_Anim = 292, + c_nrt002pz_Anim = 293, + c_nrt003sh_Anim = 294, + c_nrt004sh_Anim = 295, + c_nrt005ft_Anim = 296, + c_nrt008oc_Anim = 297, + c_nrt010pz_Anim = 298, + c_nrt011pz_Anim = 299, + c_nrt012sl_Anim = 300, + c_nrt013sl_Anim = 301, + c_nrt014sl_Anim = 302, + c_nrt015gh_Anim = 303, + c_nrt015sl_Anim = 304, + c_nrt016gh_Anim = 305, + c_nrt017rc_Anim = 306, + c_nrt018rc_Anim = 307, + c_nrt020a1_Anim = 308, + c_nrt022sp_Anim = 309, + c_nrt023sk_Anim = 310, + c_nrt024a2_Anim = 311, + c_nrt025sw_Anim = 312, + c_nrt026sw_Anim = 313, + c_nrt027sw_Anim = 314, + c_nrt028sw_Anim = 315, + c_nrt029sw_Anim = 316, + c_nrt030bk_Anim = 317, + c_nrt031bk_Anim = 318, + c_nrt032bk_Anim = 319, + c_nrt033bk_Anim = 320, + c_nrt034bk_Anim = 321, + c_nrt035bk_Anim = 322, + c_nrtrhod1_Anim = 323, + c_nrtrhod2_Anim = 324, + c_nrtrhod3_Anim = 325, + c_nrtstud0_Anim = 326, + c_nrtstud1_Anim = 327, + c_nrtstud2_Anim = 328, + c_nrtstud3_Anim = 329, + + c_srt001rh_RunAnim = 500, + c_srt001sl_RunAnim = 501, + c_srt002rh_RunAnim = 502, + c_srt002sl_RunAnim = 503, + c_srt003rh_RunAnim = 504, + c_srt003sl_RunAnim = 505, + c_srt004sl_RunAnim = 506, + c_srt005sl_RunAnim = 507, + c_nrtflag0_RunAnim = 508, + c_srt007rh_RunAnim = 509, + c_srt008rh_RunAnim = 510, + c_srt009rh_RunAnim = 511, + c_srt010rh_RunAnim = 512, + c_srt011rh_RunAnim = 513, + c_srt011sl_RunAnim = 514, + c_srt012rh_RunAnim = 515, + c_srt012sl_RunAnim = 516, + c_srt013sl_RunAnim = 517, + c_srt014sl_RunAnim = 518, + c_srt015sl_RunAnim = 519, + c_srt016sl_RunAnim = 520, + c_srt017sl_RunAnim = 521, + c_nrtrhod0_RunAnim = 522, + c_nrt001pz_RunAnim = 523, + c_nrt002pz_RunAnim = 524, + c_nrt003sh_RunAnim = 525, + c_nrt004sh_RunAnim = 526, + c_nrt005ft_RunAnim = 527, + c_nrt008oc_RunAnim = 528, + c_nrt010pz_RunAnim = 529, + c_nrt011pz_RunAnim = 530, + c_nrt012sl_RunAnim = 531, + c_nrt013sl_RunAnim = 532, + c_nrt014sl_RunAnim = 533, + c_nrt015gh_RunAnim = 534, + c_nrt015sl_RunAnim = 535, + c_nrt016gh_RunAnim = 536, + c_nrt017rc_RunAnim = 537, + c_nrt018rc_RunAnim = 538, + c_nrt020a1_RunAnim = 539, + c_nrt022sp_RunAnim = 540, + c_nrt023sk_RunAnim = 541, + c_nrt024a2_RunAnim = 542, + c_nrt025sw_RunAnim = 543, + c_nrt026sw_RunAnim = 544, + c_nrt027sw_RunAnim = 545, + c_nrt028sw_RunAnim = 546, + c_nrt029sw_RunAnim = 547, + c_nrt030bk_RunAnim = 548, + c_nrt031bk_RunAnim = 549, + c_nrt032bk_RunAnim = 550, + c_nrt033bk_RunAnim = 551, + c_nrt034bk_RunAnim = 552, + c_nrt035bk_RunAnim = 553, + c_nrtrhod1_RunAnim = 554, + c_nrtrhod2_RunAnim = 555, + c_nrtrhod3_RunAnim = 556, + c_nrtstud0_RunAnim = 557, + c_nrtstud1_RunAnim = 558, + c_nrtstud2_RunAnim = 559, + c_nrtstud3_RunAnim = 560 +}; +} // namespace CarraceScript + +#endif // CARRACE_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/carracer_actions.h b/LEGO1/lego/legoomni/include/actions/carracer_actions.h new file mode 100644 index 00000000..7bde84b3 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/carracer_actions.h @@ -0,0 +1,96 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef CARRACER_ACTIONS_H +#define CARRACER_ACTIONS_H + +namespace CarracerScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneCarracer = -1, + + c_nrt002pz_Anim = 0, + c_NRT100DR_Anim = 1, + c_NRT110DR_Anim = 2, + c_NRT101DR_Anim = 3, + c_NRT111DR_Anim = 4, + c_NRT102DR_Anim = 5, + c_NRT112DR_Anim = 6, + c_NRT103DR_Anim = 7, + c_NRT113DR_Anim = 8, + c_NRT104DR_Anim = 9, + c_NRT114DR_Anim = 10, + c_NRT105DR_Anim = 11, + c_NRT115DR_Anim = 12, + c_NRT106DR_Anim = 13, + c_NRT116DR_Anim = 14, + c_NRT107DR_Anim = 15, + c_NRT117DR_Anim = 16, + c_NRT108DR_Anim = 17, + c_NRT118DR_Anim = 18, + c_NRT109DR_Anim = 19, + c_NRT119DR_Anim = 20, + c_nrt015gh_RunAnim = 21, + c_nrt001pz_RunAnim = 22, + c_nrt002pz_RunAnim = 23, + c_nrt030bk_RunAnim = 24, + c_nrt031bk_RunAnim = 25, + c_nrt032bk_RunAnim = 26, + c_nrt025sw_RunAnim = 27, + c_nrt004sh_RunAnim = 28, + c_nrt003sh_RunAnim = 29, + c_nrt022sp_RunAnim = 30, + c_nrt015sl_RunAnim = 31, + c_nrt014sl_RunAnim = 32, + c_nrt013sl_RunAnim = 33, + c_nrt012sl_RunAnim = 34, + c_nrt026sw_RunAnim = 35, + c_nrt027sw_RunAnim = 36, + c_nrt028sw_RunAnim = 37, + c_nrt029sw_RunAnim = 38, + c_nrt033bk_RunAnim = 39, + c_nrt034bk_RunAnim = 40, + c_nrt035bk_RunAnim = 41, + c_nrt016gh_RunAnim = 42, + c_nrt030sw_RunAnim = 43, + c_nrt005ft_RunAnim = 44, + c_nrt010pz_RunAnim = 45, + c_nrt011pz_RunAnim = 46, + c_nrt008oc_RunAnim = 47, + c_nrt003sh_Anim = 48, + c_nrt004sh_Anim = 49, + c_nrt005ft_Anim = 50, + c_nrt008oc_Anim = 51, + c_nrt010pz_Anim = 52, + c_nrt011pz_Anim = 53, + c_nrt012sl_Anim = 54, + c_nrt013sl_Anim = 55, + c_nrt014sl_Anim = 56, + c_nrt015gh_Anim = 57, + c_nrt015sl_Anim = 58, + c_nrt016gh_Anim = 59, + c_nrt026sw_Anim = 60, + c_nrt027sw_Anim = 61, + c_nrt028sw_Anim = 62, + c_nrt029sw_Anim = 63, + c_nrt031bk_Anim = 64, + c_nrt032bk_Anim = 65, + c_nrt035bk_Anim = 66, + c_nrt025sw_Anim = 67, + c_nrt022sp_Anim = 68, + c_nrt030sw_Anim = 69, + + c_TRS100_BlackSky = 100, + + c_TRS200_DkBlueSky = 200, + + c_TRS300_BlackSky = 300, + + c_TRS400_BlueSky = 400 +}; +} // namespace CarracerScript + +#endif // CARRACER_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/copter_actions.h b/LEGO1/lego/legoomni/include/actions/copter_actions.h new file mode 100644 index 00000000..749898b6 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/copter_actions.h @@ -0,0 +1,202 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef COPTER_ACTIONS_H +#define COPTER_ACTIONS_H + +namespace CopterScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneCopter = -1, + + c__StartUp = 0, + c_Helicopter_Actor = 1, + + c_Info_Ctl = 5, + c_Exit_Ctl = 6, + c_ShelfUp_Ctl = 7, + c_Platform_Ctl = 8, + + c_Background = 64, + c_ColorBook_Bitmap = 65, + c_ShelfUp_Up = 66, + c_ShelfUp_Up_Bitmap = 67, + c_ShelfUp_Down = 68, + c_ShelfUp_Down_Bitmap = 69, + c_PlatformUp_Bitmap = 70, + c_PlatformLeft = 71, + c_PlatformLeft_Bitmap = 72, + c_Rotate_Sound = 73, + c_Yellow_Ctl = 74, + c_Yellow_Up_Bitmap = 75, + c_Yellow_Down_Bitmap = 76, + c_Red_Ctl = 77, + c_Red_Up_Bitmap = 78, + c_Red_Down_Bitmap = 79, + c_Blue_Ctl = 80, + c_Blue_Up_Bitmap = 81, + c_Blue_Down_Bitmap = 82, + c_Green_Ctl = 83, + c_Green_Up_Bitmap = 84, + c_Green_Down_Bitmap = 85, + c_Gray_Ctl = 86, + c_Gray_Up_Bitmap = 87, + c_Gray_Down_Bitmap = 88, + c_Black_Ctl = 89, + c_Black_Up_Bitmap = 90, + c_Black_Down_Bitmap = 91, + c_Decals_Ctl = 92, + c_CHWIND_State_0 = 93, + c_CHWIND_State_0_Bitmap = 94, + c_CHWIND_State_1 = 95, + c_CHWIND_State_1_Bitmap = 96, + c_CHWIND_Texture_1 = 97, + c_CHWIND_State_3 = 98, + c_CHWIND_State_3_Bitmap = 99, + c_CHWIND_Texture_3 = 100, + c_CHWIND_State_2 = 101, + c_CHWIND_State_2_Bitmap = 102, + c_CHWIND_Texture_2 = 103, + c_CHWIND_State_4 = 104, + c_CHWIND_State_4_Bitmap = 105, + c_CHWIND_Texture_4 = 106, + c_Decals_Ctl1 = 107, + c_CHJETL_State_0 = 108, + c_CHJETL_State_0_Bitmap = 109, + c_CHJETL_State_1 = 110, + c_CHJETL_State_1_Bitmap = 111, + c_CHJETL_Texture_1 = 112, + c_CHJETL_State_3 = 113, + c_CHJETL_State_3_Bitmap = 114, + c_CHJETL_Texture_3 = 115, + c_CHJETL_State_2 = 116, + c_CHJETL_State_2_Bitmap = 117, + c_CHJETL_Texture_2 = 118, + c_CHJETL_State_4 = 119, + c_CHJETL_State_4_Bitmap = 120, + c_CHJETL_Texture_4 = 121, + c_Decals_Ctl2 = 122, + c_CHJETR_State_0 = 123, + c_CHJETR_State_0_Bitmap = 124, + c_CHJETR_State_1 = 125, + c_CHJETR_State_1_Bitmap = 126, + c_CHJETR_Texture_1 = 127, + c_CHJETR_State_3 = 128, + c_CHJETR_State_3_Bitmap = 129, + c_CHJETR_Texture_3 = 130, + c_CHJETR_State_2 = 131, + c_CHJETR_State_2_Bitmap = 132, + c_CHJETR_Texture_2 = 133, + c_CHJETR_State_4 = 134, + c_CHJETR_State_4_Bitmap = 135, + c_CHJETR_Texture_4 = 136, + c_Info_Up_Bitmap = 137, + c_Info_Down_Bitmap = 138, + c_Exit_Up_Bitmap = 139, + c_Exit_Down_Bitmap = 140, + c_Shelf_Sound = 141, + c_PlaceBrick_Sound = 142, + c_GetBrick_Sound = 143, + c_Paint_Sound = 144, + c_Decal_Sound = 145, + c_Build_Animation = 146, + c_Build_Anim0 = 147, + c_Build_Anim1 = 148, + c_Build_Anim2 = 149, + c_Chptr_Model = 150, + c_IPS001D2_Wav_500 = 151, + c_IPS001D2_Pho_500 = 152, + c_ips001d2_0_sfx = 153, + c_ips001d2_1_sfx = 154, + c_ips001d2_2_sfx = 155, + c_ips001d2_3_sfx = 156, + c_ips001d2_4_sfx = 157, + c_ips001d2_5_sfx = 158, + c_ips001d2_6_sfx = 159, + c_ips001d2_7_sfx = 160, + c_ips001d2_8_sfx = 161, + c_ips001d2_9_sfx = 162, + c_ips001d2_10_sfx = 163, + c_ips001d2_11_sfx = 164, + c_ips001d2_12_sfx = 165, + c_ips001d2_13_sfx = 166, + c_ips001d2_14_sfx = 167, + c_ips001d2_15_sfx = 168, + c_ips001d2_16_sfx = 169, + c_ips001d2_17_sfx = 170, + c_ips001d2_18_sfx = 171, + c_ips001d2_Anim = 172, + c_IPSxx1D2_Wav_501 = 173, + c_IPSxx1D2_Pho_501 = 174, + c_ipsxx1d2_0_sfx = 175, + c_ipsxx1d2_1_sfx = 176, + c_ipsxx1d2_2_sfx = 177, + c_ipsxx1d2_3_sfx = 178, + c_ipsxx1d2_Anim = 179, + c_IPS002D2_Wav_502 = 180, + c_IPS002D2_Pho_502 = 181, + c_ips002d2_0_sfx = 182, + c_ips002d2_1_sfx = 183, + c_ips002d2_2_sfx = 184, + c_ips002d2_3_sfx = 185, + c_ips002d2_Anim = 186, + c_IPS003D2_Wav_503 = 187, + c_IPS003D2_Pho_503 = 188, + c_ips003d2_0_sfx = 189, + c_ips003d2_1_sfx = 190, + c_ips003d2_2_sfx = 191, + c_ips003d2_3_sfx = 192, + c_ips003d2_4_sfx = 193, + c_ips003d2_5_sfx = 194, + c_ips003d2_Anim = 195, + c_IPS004D2_Wav_504 = 196, + c_IPS004D2_Pho_504 = 197, + c_ips004d2_0_sfx = 198, + c_ips004d2_1_sfx = 199, + c_ips004d2_2_sfx = 200, + c_ips004d2_3_sfx = 201, + c_ips004d2_4_sfx = 202, + c_ips004d2_Anim = 203, + c_IPS005D2_Wav_505 = 204, + c_IPS005D2_Pho_505 = 205, + c_ips005d2_0_sfx = 206, + c_ips005d2_1_sfx = 207, + c_ips005d2_2_sfx = 208, + c_ips005d2_3_sfx = 209, + c_ips005d2_4_sfx = 210, + c_ips005d2_5_sfx = 211, + c_ips005d2_6_sfx = 212, + c_ips005d2_7_sfx = 213, + c_ips005d2_Anim = 214, + c_IPS006D2_Wav_506 = 215, + c_IPS006D2_Pho_506 = 216, + c_ips006d2_0_sfx = 217, + c_ips006d2_1_sfx = 218, + c_ips006d2_2_sfx = 219, + c_ips006d2_3_sfx = 220, + c_ips006d2_4_sfx = 221, + c_ips006d2_5_sfx = 222, + c_ips006d2_Anim = 223, + c_SLP01XD2_Wav_507 = 224, + c_SLP01XD2_Pho_507 = 225, + c_slp01xd2_0_sfx = 226, + c_slp01xd2_1_sfx = 227, + c_slp01xd2_2_sfx = 228, + c_slp01xd2_3_sfx = 229, + c_slp01xd2_Anim = 230, + + c_ips001d2_RunAnim = 500, + c_ipsxx1d2_RunAnim = 501, + c_ips002d2_RunAnim = 502, + c_ips003d2_RunAnim = 503, + c_ips004d2_RunAnim = 504, + c_ips005d2_RunAnim = 505, + c_ips006d2_RunAnim = 506, + c_slp01xd2_RunAnim = 507 +}; +} // namespace CopterScript + +#endif // COPTER_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/credits_actions.h b/LEGO1/lego/legoomni/include/actions/credits_actions.h new file mode 100644 index 00000000..a754a15b --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/credits_actions.h @@ -0,0 +1,56 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef CREDITS_ACTIONS_H +#define CREDITS_ACTIONS_H + +namespace CreditsScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneCredits = -1, + + c_Credits_Wav = 0, + c_Credits_Smk = 1, + c_Credit01_Bitmap = 2, + c_Credit02_Bitmap = 3, + c_Credit03_Bitmap = 4, + c_Credit04_Bitmap = 5, + c_Credit05_Bitmap = 6, + c_Credit06_Bitmap = 7, + c_Credit07_Bitmap = 8, + c_Credit08_Bitmap = 9, + c_Credit09_Bitmap = 10, + c_Credit11_Bitmap = 11, + c_Credit12_Bitmap = 12, + c_Credit13_Bitmap = 13, + c_Credit14_Bitmap = 14, + c_Credit15_Bitmap = 15, + c_Credit16_Bitmap = 16, + c_Credit17_Bitmap = 17, + c_Credit21_Bitmap = 18, + c_Credit19_Bitmap = 19, + c_Credit22_Bitmap = 20, + c_Credit22b_Bitmap = 21, + c_Credit25_Bitmap = 22, + c_Credit20_Bitmap = 23, + c_Credit12b_Bitmap = 24, + c_Credit23_Bitmap = 25, + c_Credit24_Bitmap = 26, + c_Credit14b_Bitmap = 27, + c_Credit14c_Bitmap = 28, + c_Credit26_Bitmap = 29, + c_Credit27_Bitmap = 30, + c_Credit28_Bitmap = 31, + c_Credit29_Bitmap = 32, + c_Credit10_Bitmap = 33, + c_Credit17b_Bitmap = 34, + c_Credit17c_Bitmap = 35, + + c_LegoCredits = 499 +}; +} // namespace CreditsScript + +#endif // CREDITS_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/dunecar_actions.h b/LEGO1/lego/legoomni/include/actions/dunecar_actions.h new file mode 100644 index 00000000..bc1ea6fd --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/dunecar_actions.h @@ -0,0 +1,151 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef DUNECAR_ACTIONS_H +#define DUNECAR_ACTIONS_H + +namespace DunecarScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneDunecar = -1, + + c__StartUp = 0, + + c_DuneBugy_Actor = 2, + + c_Info_Ctl = 5, + c_Exit_Ctl = 6, + c_ShelfUp_Ctl = 7, + c_Platform_Ctl = 8, + + c_DuneBugy_Model = 64, + c_Background = 65, + c_ColorBook_Bitmap = 66, + c_ShelfUp_Up_Bitmap = 67, + c_ShelfUp_Down_Bitmap = 68, + c_PlatformUp_Bitmap = 69, + c_PlatformLeft = 70, + c_Rotate_Sound = 71, + c_PlatformLeft_Bitmap = 72, + c_Yellow_Ctl = 73, + c_Yellow_Up_Bitmap = 74, + c_Yellow_Down_Bitmap = 75, + c_Red_Ctl = 76, + c_Red_Up_Bitmap = 77, + c_Red_Down_Bitmap = 78, + c_Blue_Ctl = 79, + c_Blue_Up_Bitmap = 80, + c_Blue_Down_Bitmap = 81, + c_Green_Ctl = 82, + c_Green_Up_Bitmap = 83, + c_Green_Down_Bitmap = 84, + c_Gray_Ctl = 85, + c_Gray_Up_Bitmap = 86, + c_Gray_Down_Bitmap = 87, + c_Black_Ctl = 88, + c_Black_Up_Bitmap = 89, + c_Black_Down_Bitmap = 90, + c_Decals_Ctl = 91, + c_Decal_State_0 = 92, + c_Decal_State_0_Bitmap = 93, + c_Decal_State_1 = 94, + c_Decal_State_1_Bitmap = 95, + c_Decal_Texture_1 = 96, + c_Decal_State_2 = 97, + c_Decal_State_2_Bitmap = 98, + c_Decal_Texture_2 = 99, + c_Decal_State_3 = 100, + c_Decal_State_3_Bitmap = 101, + c_Decal_Texture_3 = 102, + c_Decal_State_4 = 103, + c_Decal_State_4_Bitmap = 104, + c_Decal_Texture_4 = 105, + c_Info_Up_Bitmap = 106, + c_Info_Down_Bitmap = 107, + c_Exit_Up_Bitmap = 108, + c_Exit_Down_Bitmap = 109, + c_Shelf_Sound = 110, + c_PlaceBrick_Sound = 111, + c_GetBrick_Sound = 112, + c_Paint_Sound = 113, + c_Decal_Sound = 114, + c_Build_Animation = 115, + c_Build_Anim0 = 116, + c_Build_Anim1 = 117, + c_Build_Anim2 = 118, + c_IGS001D3_Wav_500 = 119, + c_IGS001D3_Pho_500 = 120, + c_igs001d3_0_sfx = 121, + c_igs001d3_1_sfx = 122, + c_igs001d3_2_sfx = 123, + c_igs001d3_3_sfx = 124, + c_igs001d3_4_sfx = 125, + c_igs001d3_5_sfx = 126, + c_igs001d3_6_sfx = 127, + c_igs001d3_7_sfx = 128, + c_igs001d3_8_sfx = 129, + c_igs001d3_9_sfx = 130, + c_igs001d3_10_sfx = 131, + c_igs001d3_11_sfx = 132, + c_igs001d3_12_sfx = 133, + c_igs001d3_13_sfx = 134, + c_igs001d3_14_sfx = 135, + c_igs001d3_15_sfx = 136, + c_igs001d3_16_sfx = 137, + c_igs001d3_17_sfx = 138, + c_igs001d3_18_sfx = 139, + c_igs001d3_19_sfx = 140, + c_igs001d3_Anim = 141, + c_IGSxx1D3_Wav_501 = 142, + c_IGSxx1D3_Pho_501 = 143, + c_igsxx1d3_0_sfx = 144, + c_igsxx1d3_1_sfx = 145, + c_igsxx1d3_2_sfx = 146, + c_igsxx1d3_Anim = 147, + c_IGS002D3_Wav_502 = 148, + c_IGS002D3_Pho_502 = 149, + c_igs002d3_0_sfx = 150, + c_igs002d3_Anim = 151, + c_IGS003D3_Wav_503 = 152, + c_IGS003D3_Pho_503 = 153, + c_igs003d3_0_sfx = 154, + c_igs003d3_1_sfx = 155, + c_igs003d3_2_sfx = 156, + c_igs003d3_3_sfx = 157, + c_igs003d3_4_sfx = 158, + c_igs003d3_5_sfx = 159, + c_igs003d3_6_sfx = 160, + c_igs003d3_7_sfx = 161, + c_igs003d3_8_sfx = 162, + c_igs003d3_Anim = 163, + c_IGS004D3_Wav_504 = 164, + c_IGS004D3_Pho_504 = 165, + c_igs004d3_0_sfx = 166, + c_igs004d3_1_sfx = 167, + c_igs004d3_2_sfx = 168, + c_igs004d3_3_sfx = 169, + c_igs004d3_4_sfx = 170, + c_igs004d3_Anim = 171, + c_IGS005D3_Wav_505 = 172, + c_IGS005D3_Pho_505 = 173, + c_igs005d3_0_sfx = 174, + c_igs005d3_1_sfx = 175, + c_igs005d3_2_sfx = 176, + c_igs005d3_3_sfx = 177, + c_igs005d3_4_sfx = 178, + c_igs005d3_5_sfx = 179, + c_igs005d3_Anim = 180, + + c_igs001d3_RunAnim = 500, + c_igsxx1d3_RunAnim = 501, + c_igs002d3_RunAnim = 502, + c_igs003d3_RunAnim = 503, + c_igs004d3_RunAnim = 504, + c_igs005d3_RunAnim = 505 +}; +} // namespace DunecarScript + +#endif // DUNECAR_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/elevbott_actions.h b/LEGO1/lego/legoomni/include/actions/elevbott_actions.h new file mode 100644 index 00000000..45e63778 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/elevbott_actions.h @@ -0,0 +1,31 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef ELEVBOTT_ACTIONS_H +#define ELEVBOTT_ACTIONS_H + +namespace ElevbottScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneElevbott = -1, + + c__StartUp = 0, + c_LeftArrow_Ctl = 1, + c_RightArrow_Ctl = 2, + c_ElevBott_Elevator_Ctl = 3, + c_Background_Bitmap = 4, + c_LeftArrow_Up_Bitmap = 5, + c_LeftArrow_Down_Bitmap = 6, + c_RightArrow_Up_Bitmap = 7, + c_RightArrow_Down_Bitmap = 8, + c_Elevator_Mask_Bitmap = 9, + c_ConfigAnimation = 10, + + c_iica31in_PlayWav = 500 +}; +} // namespace ElevbottScript + +#endif // ELEVBOTT_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/garage_actions.h b/LEGO1/lego/legoomni/include/actions/garage_actions.h new file mode 100644 index 00000000..8d6988f5 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/garage_actions.h @@ -0,0 +1,150 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef GARAGE_ACTIONS_H +#define GARAGE_ACTIONS_H + +namespace GarageScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneGarage = -1, + + c__StartUp = 0, + c_LeftArrow_Ctl = 1, + c_RightArrow_Ctl = 2, + c_Info_Ctl = 3, + c_Buggy_Ctl = 4, + c_Nubby_Entity = 5, + c_Nubby_Model = 6, + c_Background_Bitmap = 7, + c_TrackLed_Bitmap = 8, + c_LeftArrow_Up_Bitmap = 9, + c_LeftArrow_Down_Bitmap = 10, + c_RightArrow_Up_Bitmap = 11, + c_RightArrow_Down_Bitmap = 12, + c_Info_Up_Bitmap = 13, + c_Info_Down_Bitmap = 14, + c_Buggy_Up_Bitmap = 15, + c_Buggy_Down_Bitmap = 16, + c_RadioOff_Bitmap = 17, + c_Radio_Ctl = 18, + c_RadioOn_Bitmap = 19, + c_ConfigAnimation = 20, + c_wgs002nu_Wav_500 = 21, + c_wgs002nu_Pho_500 = 22, + c_wgs002nu_0_sfx = 23, + c_wgs002nu_1_sfx = 24, + c_wgs002nu_Anim = 25, + c_wgs003nu_Wav_501 = 26, + c_wgs003nu_Pho_501 = 27, + c_wgs003nu_0_sfx = 28, + c_wgs003nu_1_sfx = 29, + c_wgs003nu_2_sfx = 30, + c_wgs003nu_Anim = 31, + c_wgs004nu_Wav_502 = 32, + c_wgs004nu_Pho_502 = 33, + c_wgs004nu_0_sfx = 34, + c_wgs004nu_Anim = 35, + c_wgs006nu_Wav_503 = 36, + c_wgs006nu_Pho_503 = 37, + c_wgs006nu_0_sfx = 38, + c_wgs006nu_Anim = 39, + c_wgs007nu_Wav_504 = 40, + c_wgs007nu_Pho_504 = 41, + c_wgs007nu_Anim = 42, + c_wgs005nu_Wav_505 = 43, + c_wgs005nu_Pho_505 = 44, + c_wgs008nu_Anim = 45, + c_wgs009nu_Wav_506 = 46, + c_wgs009nu_Pho_506 = 47, + c_wgs009nu_0_sfx = 48, + c_wgs009nu_1_sfx = 49, + c_wgs009nu_Anim = 50, + c_wgs010nu_Wav_507 = 51, + c_wgs010nu_Pho_507 = 52, + c_wgs010nu_0_sfx = 53, + c_wgs010nu_Anim = 54, + c_wgs012nu_Wav_508 = 55, + c_wgs012nu_Pho_508 = 56, + c_wgs012nu_Anim = 57, + c_WGS014NU_Wav_509 = 58, + c_WGS014NU_Pho_509 = 59, + c_WGS016P1_Wav_509 = 60, + c_wgs014nu_0_sfx = 61, + c_wgs014nu_Anim = 62, + c_WGS019NU_Wav_510 = 63, + c_WGS019NU_Pho_510 = 64, + c_WGS017NU_Wav_510 = 65, + c_WGS017NU_Pho_510 = 66, + c_wgs017nu_0_sfx = 67, + c_wgs017nu_Anim = 68, + c_WGS020NU_Wav_511 = 69, + c_WGS020NU_Pho_511 = 70, + c_wgs020nu_0_sfx = 71, + c_wgs020nu_Anim = 72, + c_WGS021NU_Wav_512 = 73, + c_WGS021NU_Pho_512 = 74, + c_wgs021nu_0_sfx = 75, + c_wgs021nu_Anim = 76, + c_WGS022NU_Wav_513 = 77, + c_WGS022NU_Pho_513 = 78, + c_wgs022nu_0_sfx = 79, + c_wgs022nu_1_sfx = 80, + c_wgs022nu_2_sfx = 81, + c_wgs022nu_Anim = 82, + c_WGS028NU_Wav_514 = 83, + c_WGS028NU_Pho_514 = 84, + c_WGS027NA_Wav_514 = 85, + c_WGS027NA_Pho_514 = 86, + c_WGS026NA_Wav_514 = 87, + c_WGS026NA_Pho_514 = 88, + c_WGS025NA_Wav_514 = 89, + c_WGS025NA_Pho_514 = 90, + c_WGS024NA_Wav_514 = 91, + c_WGS024NA_Pho_514 = 92, + c_wgs023nu_0_sfx = 93, + c_wgs023nu_1_sfx = 94, + c_wgs023nu_2_sfx = 95, + c_wgs023nu_3_sfx = 96, + c_wgs023nu_4_sfx = 97, + c_wgs023nu_5_sfx = 98, + c_wgs023nu_6_sfx = 99, + c_wgs023nu_7_sfx = 100, + c_wgs023nu_8_sfx = 101, + c_wgs023nu_9_sfx = 102, + c_wgs023nu_Anim = 103, + c_wgs030nu_Wav_515 = 104, + c_wgs030nu_Pho_515 = 105, + c_wgs029nu_Wav_515 = 106, + c_wgs029nu_Pho_515 = 107, + c_wgs029nu_0_sfx = 108, + c_wgs029nu_Anim = 109, + c_wgs031nu_Wav_516 = 110, + c_wgs031nu_Pho_516 = 111, + c_wgs031nu_0_sfx = 112, + c_wgs031nu_Anim = 113, + + c_wgs002nu_RunAnim = 500, + c_wgs003nu_RunAnim = 501, + c_wgs004nu_RunAnim = 502, + c_wgs006nu_RunAnim = 503, + c_wgs007nu_RunAnim = 504, + c_wgs008nu_RunAnim = 505, + c_wgs009nu_RunAnim = 506, + c_wgs010nu_RunAnim = 507, + c_wgs012nu_RunAnim = 508, + c_wgs014nu_RunAnim = 509, + c_wgs017nu_RunAnim = 510, + c_wgs020nu_RunAnim = 511, + c_wgs021nu_RunAnim = 512, + c_wgs022nu_RunAnim = 513, + c_wgs023nu_RunAnim = 514, + c_wgs029nu_RunAnim = 515, + c_wgs031nu_RunAnim = 516 +}; +} // namespace GarageScript + +#endif // GARAGE_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/histbook_actions.h b/LEGO1/lego/legoomni/include/actions/histbook_actions.h new file mode 100644 index 00000000..5ed2df76 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/histbook_actions.h @@ -0,0 +1,47 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef HISTBOOK_ACTIONS_H +#define HISTBOOK_ACTIONS_H + +namespace HistbookScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneHistbook = -1, + + c__StartUp = 0, + c_ScoreBox = 1, + c_Background_Bitmap = 2, + c_A_Bitmap = 3, + c_B_Bitmap = 4, + c_C_Bitmap = 5, + c_D_Bitmap = 6, + c_E_Bitmap = 7, + c_F_Bitmap = 8, + c_G_Bitmap = 9, + c_H_Bitmap = 10, + c_I_Bitmap = 11, + c_J_Bitmap = 12, + c_K_Bitmap = 13, + c_L_Bitmap = 14, + c_M_Bitmap = 15, + c_N_Bitmap = 16, + c_O_Bitmap = 17, + c_P_Bitmap = 18, + c_Q_Bitmap = 19, + c_R_Bitmap = 20, + c_S_Bitmap = 21, + c_T_Bitmap = 22, + c_U_Bitmap = 23, + c_V_Bitmap = 24, + c_W_Bitmap = 25, + c_X_Bitmap = 26, + c_Y_Bitmap = 27, + c_Z_Bitmap = 28 +}; +} // namespace HistbookScript + +#endif // HISTBOOK_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/hospital_actions.h b/LEGO1/lego/legoomni/include/actions/hospital_actions.h new file mode 100644 index 00000000..f8f52c51 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/hospital_actions.h @@ -0,0 +1,175 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef HOSPITAL_ACTIONS_H +#define HOSPITAL_ACTIONS_H + +namespace HospitalScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneHospital = -1, + + c__StartUp = 0, + c_Doc_Entity = 1, + c_Doc_Model = 2, + c_Info_Ctl = 3, + c_Door_Ctl = 4, + c_Background_Bitmap = 5, + c_PizzaLed_Bitmap = 6, + c_CopLed_Bitmap = 7, + c_Info_Up_Bitmap = 8, + c_Info_Down_Bitmap = 9, + c_Door_Mask_Bitmap = 10, + c_ConfigAnimation = 11, + c_hho002cl_Wav_500 = 12, + c_hho002cl_Pho_500 = 13, + c_hho002cl_0_sfx = 14, + c_hho002cl_1_sfx = 15, + c_hho002cl_Anim = 16, + c_HHO003CL_Wav_501 = 17, + c_HHO003CL_Pho_501 = 18, + c_hho003cl_0_sfx = 19, + c_hho003cl_1_sfx = 20, + c_hho003cl_2_sfx = 21, + c_hho003cl_3_sfx = 22, + c_hho003cl_4_sfx = 23, + c_hho003cl_Anim = 24, + c_hho004jk_Wav_502 = 25, + c_hho004jk_Pho_502 = 26, + c_hho004jk_0_sfx = 27, + c_hho004jk_1_sfx = 28, + c_hho004jk_2_sfx = 29, + c_hho004jk_3_sfx = 30, + c_hho004jk_4_sfx = 31, + c_hho004jk_5_sfx = 32, + c_hho004jk_Anim = 33, + c_hho016cl_Wav_503 = 34, + c_hho016cl_Pho_503 = 35, + c_hho016cl_0_sfx = 36, + c_hho016cl_1_sfx = 37, + c_hho016cl_Anim = 38, + c_hho017cl_Wav_504 = 39, + c_hho017cl_Pho_504 = 40, + c_hho017cl_0_sfx = 41, + c_hho017cl_1_sfx = 42, + c_hho017cl_Anim = 43, + c_hho018cl_Wav_505 = 44, + c_hho018cl_Pho_505 = 45, + c_hho018cl_0_sfx = 46, + c_hho018cl_1_sfx = 47, + c_hho018cl_2_sfx = 48, + c_hho018cl_3_sfx = 49, + c_hho018cl_Anim = 50, + c_hho019cl_Wav_506 = 51, + c_hho019cl_Pho_506 = 52, + c_hho019cl_0_sfx = 53, + c_hho019cl_1_sfx = 54, + c_hho019cl_2_sfx = 55, + c_hho019cl_Anim = 56, + c_hho020cl_Wav_507 = 57, + c_hho020cl_Pho_507 = 58, + c_hho020cl_0_sfx = 59, + c_hho020cl_1_sfx = 60, + c_hho020cl_Anim = 61, + c_hho021cl_Wav_508 = 62, + c_hho021cl_Pho_508 = 63, + c_hho021cl_0_sfx = 64, + c_hho021cl_1_sfx = 65, + c_hho021cl_2_sfx = 66, + c_hho021cl_Anim = 67, + c_hho023cl_Wav_509 = 68, + c_hho023cl_Pho_509 = 69, + c_hho023cl_0_sfx = 70, + c_hho023cl_1_sfx = 71, + c_hho023cl_2_sfx = 72, + c_hho023cl_Anim = 73, + c_hho024cl_Wav_510 = 74, + c_hho024cl_Pho_510 = 75, + c_hho024cl_0_sfx = 76, + c_hho024cl_1_sfx = 77, + c_hho024cl_2_sfx = 78, + c_hho024cl_3_sfx = 79, + c_hho024cl_Anim = 80, + c_hho025cl_Wav_511 = 81, + c_hho025cl_Pho_511 = 82, + c_hho025cl_0_sfx = 83, + c_hho025cl_1_sfx = 84, + c_hho025cl_2_sfx = 85, + c_hho025cl_Anim = 86, + c_hho026cl_Wav_512 = 87, + c_hho026cl_Pho_512 = 88, + c_hho026cl_0_sfx = 89, + c_hho026cl_1_sfx = 90, + c_hho026cl_Anim = 91, + c_hhoa22cl_Wav_513 = 92, + c_hhoa22cl_Pho_513 = 93, + c_hhoa22cl_0_sfx = 94, + c_hhoa22cl_1_sfx = 95, + c_hhoa22cl_2_sfx = 96, + c_hhoa22cl_3_sfx = 97, + c_hhoa22cl_Anim = 98, + c_hho008p1_Wav_514 = 99, + c_hho007p1_Wav_514 = 100, + c_hho007p1_0_sfx = 101, + c_hho007p1_1_sfx = 102, + c_hho007p1_2_sfx = 103, + c_hho007p1_3_sfx = 104, + c_hho007p1_Anim = 105, + c_hho006cl_Wav_515 = 106, + c_hho006cl_Pho_515 = 107, + c_hho015cl_Wav_515 = 108, + c_hho015cl_Pho_515 = 109, + c_hho009en_Wav_515 = 110, + c_hho009en_Pho_515 = 111, + c_hho010re_Wav_515 = 112, + c_hho010re_Pho_515 = 113, + c_hho014en_Wav_515 = 114, + c_hho014en_Pho_515 = 115, + c_hho013re_Wav_515 = 116, + c_hho013re_Pho_515 = 117, + c_hho012en_Wav_515 = 118, + c_hho012en_Pho_515 = 119, + c_hho011en_Wav_515 = 120, + c_hho011en_Pho_515 = 121, + c_hho011re_Wav_515 = 122, + c_hho011re_Pho_515 = 123, + c_hho008cl_Wav_515 = 124, + c_hho008cl_Pho_515 = 125, + c_hho006cl_0_sfx = 126, + c_hho006cl_1_sfx = 127, + c_hho006cl_2_sfx = 128, + c_hho006cl_3_sfx = 129, + c_hho006cl_4_sfx = 130, + c_hho006cl_5_sfx = 131, + c_hho006cl_6_sfx = 132, + c_hho006cl_7_sfx = 133, + c_hho006cl_8_sfx = 134, + c_hho006cl_9_sfx = 135, + c_hho006cl_10_sfx = 136, + c_hho006cl_11_sfx = 137, + c_hho006cl_12_sfx = 138, + c_hho006cl_Anim = 139, + + c_hho002cl_RunAnim = 500, + c_hho003cl_RunAnim = 501, + c_hho004jk_RunAnim = 502, + c_hho016cl_RunAnim = 503, + c_hho017cl_RunAnim = 504, + c_hho018cl_RunAnim = 505, + c_hho019cl_RunAnim = 506, + c_hho020cl_RunAnim = 507, + c_hho021cl_RunAnim = 508, + c_hho023cl_RunAnim = 509, + c_hho024cl_RunAnim = 510, + c_hho025cl_RunAnim = 511, + c_hho026cl_RunAnim = 512, + c_hhoa22cl_RunAnim = 513, + c_hho007p1_RunAnim = 514, + c_hho006cl_RunAnim = 515 +}; +} // namespace HospitalScript + +#endif // HOSPITAL_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/infodoor_actions.h b/LEGO1/lego/legoomni/include/actions/infodoor_actions.h new file mode 100644 index 00000000..d422e237 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/infodoor_actions.h @@ -0,0 +1,37 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef INFODOOR_ACTIONS_H +#define INFODOOR_ACTIONS_H + +namespace InfodoorScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneInfodoor = -1, + + c__StartUp = 0, + c_LeftArrow_Ctl = 1, + c_RightArrow_Ctl = 2, + c_Info_Ctl = 3, + c_Door_Ctl = 4, + c_Background_Bitmap = 5, + c_LeftArrow_Up_Bitmap = 6, + c_LeftArrow_Down_Bitmap = 7, + c_RightArrow_Up_Bitmap = 8, + c_RightArrow_Down_Bitmap = 9, + c_Info_Up_Bitmap = 10, + c_Info_Down_Bitmap = 11, + c_Door_Up_Bitmap = 12, + c_ConfigAnimation = 13, + + c_iic037in_PlayWav = 500, + c_iic038in_PlayWav = 501, + c_iicb31in_PlayWav = 502, + c_iic007in_PlayWav = 503 +}; +} // namespace InfodoorScript + +#endif // INFODOOR_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/infomain_actions.h b/LEGO1/lego/legoomni/include/actions/infomain_actions.h new file mode 100644 index 00000000..9f0afb9f --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/infomain_actions.h @@ -0,0 +1,583 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef INFOMAIN_ACTIONS_H +#define INFOMAIN_ACTIONS_H + +namespace InfomainScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneInfomain = -1, + + c__InfoMain = 0, + c_LeftArrow_Ctl = 1, + c_RightArrow_Ctl = 2, + c_Info_Ctl = 3, + c_Door_Ctl = 4, + c_Infoman_Entity = 5, + c_RedBrick_Entity = 6, + c_GreenBrick_Entity = 7, + c_RegBook_Bmp = 8, + c_RegBook_Flc = 9, + c_Boat_Ctl = 10, + c_Race_Ctl = 11, + c_Pizza_Ctl = 12, + c_Gas_Ctl = 13, + c_Med_Ctl = 14, + c_Cop_Ctl = 15, + c_BigInfo_Ctl = 16, + c_Book_Ctl = 17, + c_Radio_Ctl = 18, + c_RegBookRed_Bmp = 19, + c_RegBookRed_Flc = 20, + c_Mama_Ctl = 21, + c_Papa_Ctl = 22, + c_Pepper_Ctl = 23, + c_Nick_Ctl = 24, + c_Laura_Ctl = 25, + c_Info_A_Bitmap = 26, + c_Boat_A_Bitmap = 27, + c_Race_A_Bitmap = 28, + c_Pizza_A_Bitmap = 29, + c_MamaHot_Bitmap = 30, + c_PapaHot_Bitmap = 31, + c_PepperHot_Bitmap = 32, + c_NickHot_Bitmap = 33, + c_LauraHot_Bitmap = 34, + c_Gas_A_Bitmap = 35, + c_Med_A_Bitmap = 36, + c_Cop_A_Bitmap = 37, + c_FrameHot_Bitmap = 38, + c_Background_Bitmap = 39, + c_Mama_All_Movie = 40, + c_Papa_All_Movie = 41, + c_Pepper_All_Movie = 42, + c_Nick_All_Movie = 43, + c_Laura_All_Movie = 44, + c_BackgroundRed_Bitmap = 45, + c_Infoman_Model = 46, + c_Brick2x4grn_Model = 47, + c_Brick2x4red_Model = 48, + c_LeftArrow_Up_Bitmap = 49, + c_LeftArrow_Down_Bitmap = 50, + c_RightArrow_Up_Bitmap = 51, + c_RightArrow_Down_Bitmap = 52, + c_BigInfo_Up_Bitmap = 53, + c_BigInfo_Down = 54, + c_BigInfo_Down_Bitmap = 55, + c_RadioOff_Bitmap = 56, + c_RadioOn_Bitmap = 57, + c_Book_Mask_Bitmap = 58, + c_Door_Mask_Bitmap = 59, + c_Info_Up_Bitmap = 60, + c_Info_Down_Bitmap = 61, + c_Boat_Up_Bitmap = 62, + c_Boat_Down_Bitmap = 63, + c_Race_Up_Bitmap = 64, + c_Race_Down_Bitmap = 65, + c_Pizza_Up_Bitmap = 66, + c_Pizza_Down_Bitmap = 67, + c_Gas_Up_Bitmap = 68, + c_Gas_Down_Bitmap = 69, + c_GoTo_RegBook = 70, + c_GoTo_RegBook_Red = 71, + c_Med_Up_Bitmap = 72, + c_Med_Down_Bitmap = 73, + c_Cop_Up_Bitmap = 74, + c_Cop_Down_Bitmap = 75, + c_Mama_Up_Bitmap = 76, + c_Mama_Down_Bitmap = 77, + c_Papa_Up_Bitmap = 78, + c_Papa_Down_Bitmap = 79, + c_Pepper_Up_Bitmap = 80, + c_Pepper_Down_Bitmap = 81, + c_Nick_Up_Bitmap = 82, + c_Nick_Down_Bitmap = 83, + c_Laura_Up_Bitmap = 84, + c_Laura_Down_Bitmap = 85, + c_ConfigAnimation = 86, + c_Mama_Start_Movie = 87, + c_Mama_ScreenDown_Wave = 88, + c_Mama_ScreenDown_Smk = 89, + c_Mama_Movie = 90, + c_Mama_Wave = 91, + c_Mama_Smk = 92, + c_Mama_End_Movie = 93, + c_Mama_ScreenUp_Wave = 94, + c_Mama_ScreenUp_Smk = 95, + c_Papa_Start_Movie = 96, + c_Papa_ScreenDown_Wave = 97, + c_Papa_ScreenDown_Smk = 98, + c_Papa_Movie = 99, + c_Papa_Wave = 100, + c_Papa_Smk = 101, + c_Papa_End_Movie = 102, + c_Papa_ScreenUp_Wave = 103, + c_Papa_ScreenUp_Smk = 104, + c_Pepper_Start_Movie = 105, + c_Pepper_ScreenDown_Wave = 106, + c_Pepper_ScreenDown_Smk = 107, + c_Pepper_Movie = 108, + c_Pepper_Wave = 109, + c_Pepper_Smk = 110, + c_Pepper_End_Movie = 111, + c_Pepper_ScreenUp_Wave = 112, + c_Pepper_ScreenUp_Smk = 113, + c_Nick_Start_Movie = 114, + c_Nick_ScreenDown_Wave = 115, + c_Nick_ScreenDown_Smk = 116, + c_Nick_Movie = 117, + c_Nick_Wave = 118, + c_Nick_Smk = 119, + c_Nick_End_Movie = 120, + c_Nick_ScreenUp_Wave = 121, + c_Nick_ScreenUp_Smk = 122, + c_Laura_Start_Movie = 123, + c_Laura_ScreenDown_Wave = 124, + c_Laura_ScreenDown_Smk = 125, + c_Laura_Movie = 126, + c_Laura_Wave = 127, + c_Laura_Smk = 128, + c_Laura_End_Movie = 129, + c_Laura_ScreenUp_Wave = 130, + c_Laura_ScreenUp_Smk = 131, + c_IIC005IN_Wav_500 = 132, + c_IIC005IN_Pho_500 = 133, + c_IIC004IN_Wav_500 = 134, + c_IIC004IN_Pho_500 = 135, + c_IIC002IN_Wav_500 = 136, + c_IIC002IN_Pho_500 = 137, + c_iic001in_0_sfx = 138, + c_iic001in_1_sfx = 139, + c_iic001in_2_sfx = 140, + c_iic001in_3_sfx = 141, + c_iic001in_4_sfx = 142, + c_iic001in_5_sfx = 143, + c_iic001in_6_sfx = 144, + c_iic001in_7_sfx = 145, + c_iic001in_8_sfx = 146, + c_iic001in_9_sfx = 147, + c_iic001in_10_sfx = 148, + c_iic001in_11_sfx = 149, + c_iic001in_12_sfx = 150, + c_iic001in_13_sfx = 151, + c_iic001in_14_sfx = 152, + c_iic001in_15_sfx = 153, + c_iic001in_16_sfx = 154, + c_iic001in_17_sfx = 155, + c_iic001in_18_sfx = 156, + c_iic001in_19_sfx = 157, + c_iic001in_20_sfx = 158, + c_iic001in_21_sfx = 159, + c_iic001in_22_sfx = 160, + c_iic001in_Anim = 161, + c_IIC017IN_Wav_501 = 162, + c_IIC017IN_Pho_501 = 163, + c_IIC016IN_Wav_501 = 164, + c_IIC016IN_Pho_501 = 165, + c_iic016in_0_sfx = 166, + c_iic016in_1_sfx = 167, + c_iic016in_2_sfx = 168, + c_iic016in_3_sfx = 169, + c_iic016in_4_sfx = 170, + c_iic016in_5_sfx = 171, + c_iic016in_6_sfx = 172, + c_iic016in_7_sfx = 173, + c_iic016in_8_sfx = 174, + c_iic016in_9_sfx = 175, + c_iic016in_10_sfx = 176, + c_iic016in_11_sfx = 177, + c_iic016in_12_sfx = 178, + c_iic016in_13_sfx = 179, + c_iic016in_Anim = 180, + c_IICX17IN_Wav_502 = 181, + c_IICX17IN_Pho_502 = 182, + c_iicx17in_0_sfx = 183, + c_iicx17in_Anim = 184, + c_iic018in_Wav_503 = 185, + c_iic018in_Pho_503 = 186, + c_iic018in_0_sfx = 187, + c_iic018in_1_sfx = 188, + c_iic018in_2_sfx = 189, + c_iic018in_3_sfx = 190, + c_iic018in_4_sfx = 191, + c_iic018in_5_sfx = 192, + c_iic018in_6_sfx = 193, + c_iic018in_7_sfx = 194, + c_iic018in_8_sfx = 195, + c_iic018in_9_sfx = 196, + c_iic018in_10_sfx = 197, + c_iic018in_11_sfx = 198, + c_iic018in_12_sfx = 199, + c_iic018in_13_sfx = 200, + c_iic018in_14_sfx = 201, + c_iic018in_Anim = 202, + c_IICx18IN_Wav_504 = 203, + c_IICx18IN_Pho_504 = 204, + c_iicx18in_Anim = 205, + c_iic019in_Wav_505 = 206, + c_iic019in_Pho_505 = 207, + c_iic019in_0_sfx = 208, + c_iic019in_1_sfx = 209, + c_iic019in_2_sfx = 210, + c_iic019in_3_sfx = 211, + c_iic019in_4_sfx = 212, + c_iic019in_Anim = 213, + c_iic020in_Wav_506 = 214, + c_iic020in_Pho_506 = 215, + c_iic020in_0_sfx = 216, + c_iic020in_1_sfx = 217, + c_iic020in_2_sfx = 218, + c_iic020in_3_sfx = 219, + c_iic020in_4_sfx = 220, + c_iic020in_5_sfx = 221, + c_iic020in_Anim = 222, + c_iic021in_Wav_507 = 223, + c_iic021in_Pho_507 = 224, + c_iic021in_0_sfx = 225, + c_iic021in_1_sfx = 226, + c_iic021in_2_sfx = 227, + c_iic021in_Anim = 228, + c_iic022in_Wav_508 = 229, + c_iic022in_Pho_508 = 230, + c_iic022in_0_sfx = 231, + c_iic022in_1_sfx = 232, + c_iic022in_2_sfx = 233, + c_iic022in_3_sfx = 234, + c_iic022in_4_sfx = 235, + c_iic022in_5_sfx = 236, + c_iic022in_6_sfx = 237, + c_iic022in_7_sfx = 238, + c_iic022in_Anim = 239, + c_iic023in_Wav_509 = 240, + c_iic023in_Pho_509 = 241, + c_iic023in_0_sfx = 242, + c_iic023in_1_sfx = 243, + c_iic023in_2_sfx = 244, + c_iic023in_3_sfx = 245, + c_iic023in_4_sfx = 246, + c_iic023in_5_sfx = 247, + c_iic023in_6_sfx = 248, + c_iic023in_7_sfx = 249, + c_iic023in_8_sfx = 250, + c_iic023in_9_sfx = 251, + c_iic023in_10_sfx = 252, + c_iic023in_11_sfx = 253, + c_iic023in_Anim = 254, + c_iicx23in_Wav_510 = 255, + c_iicx23in_Pho_510 = 256, + c_iicx23in_Anim = 257, + c_iic024in_Wav_511 = 258, + c_iic024in_Pho_511 = 259, + c_iic024in_0_sfx = 260, + c_iic024in_1_sfx = 261, + c_iic024in_2_sfx = 262, + c_iic024in_3_sfx = 263, + c_iic024in_4_sfx = 264, + c_iic024in_Anim = 265, + c_iic025in_Wav_512 = 266, + c_iic025in_Pho_512 = 267, + c_iic025in_0_sfx = 268, + c_iic025in_Anim = 269, + c_iic026in_Wav_513 = 270, + c_iic026in_Pho_513 = 271, + c_iic026in_0_sfx = 272, + c_iic026in_1_sfx = 273, + c_iic026in_2_sfx = 274, + c_iic026in_3_sfx = 275, + c_iic026in_4_sfx = 276, + c_iic026in_5_sfx = 277, + c_iic026in_6_sfx = 278, + c_iic026in_7_sfx = 279, + c_iic026in_8_sfx = 280, + c_iic026in_9_sfx = 281, + c_iic026in_10_sfx = 282, + c_iic026in_11_sfx = 283, + c_iic026in_Anim = 284, + c_iicx26in_Wav_514 = 285, + c_iicx26in_Pho_514 = 286, + c_iicx26in_Anim = 287, + c_iic027in_Wav_515 = 288, + c_iic027in_Pho_515 = 289, + c_iic027in_0_sfx = 290, + c_iic027in_1_sfx = 291, + c_iic027in_2_sfx = 292, + c_iic027in_3_sfx = 293, + c_iic027in_4_sfx = 294, + c_iic027in_5_sfx = 295, + c_iic027in_Anim = 296, + c_IIC029IN_Wav_516 = 297, + c_IIC029IN_Pho_516 = 298, + c_iic029in_0_sfx = 299, + c_iic029in_1_sfx = 300, + c_iic029in_2_sfx = 301, + c_iic029in_Anim = 302, + c_IIC032IN_Wav_517 = 303, + c_IIC032IN_Pho_517 = 304, + c_iic032in_0_sfx = 305, + c_iic032in_1_sfx = 306, + c_iic032in_2_sfx = 307, + c_iic032in_3_sfx = 308, + c_iic032in_4_sfx = 309, + c_iic032in_Anim = 310, + c_iic033in_Wav_518 = 311, + c_iic033in_Pho_518 = 312, + c_iic033in_0_sfx = 313, + c_iic033in_1_sfx = 314, + c_iic033in_2_sfx = 315, + c_iic033in_3_sfx = 316, + c_iic033in_4_sfx = 317, + c_iic033in_5_sfx = 318, + c_iic033in_6_sfx = 319, + c_iic033in_Anim = 320, + c_iic034in_Wav_519 = 321, + c_iic034in_Pho_519 = 322, + c_iic034in_0_sfx = 323, + c_iic034in_1_sfx = 324, + c_iic034in_2_sfx = 325, + c_iic034in_3_sfx = 326, + c_iic034in_Anim = 327, + c_iic035in_Wav_520 = 328, + c_iic035in_Pho_520 = 329, + c_iic035in_0_sfx = 330, + c_iic035in_1_sfx = 331, + c_iic035in_Anim = 332, + c_iic036in_Wav_521 = 333, + c_iic036in_Pho_521 = 334, + c_iic036in_0_sfx = 335, + c_iic036in_1_sfx = 336, + c_iic036in_2_sfx = 337, + c_iic036in_3_sfx = 338, + c_iic036in_4_sfx = 339, + c_iic036in_5_sfx = 340, + c_iic036in_6_sfx = 341, + c_iic036in_7_sfx = 342, + c_iic036in_Anim = 343, + c_IIC044IN_Wav_522 = 344, + c_IIC044IN_Pho_522 = 345, + c_iic043in_0_sfx = 346, + c_iic043in_1_sfx = 347, + c_iic043in_2_sfx = 348, + c_iic043in_3_sfx = 349, + c_iic043in_4_sfx = 350, + c_iic043in_5_sfx = 351, + c_iic043in_6_sfx = 352, + c_iic043in_7_sfx = 353, + c_iic043in_8_sfx = 354, + c_iic043in_9_sfx = 355, + c_iic043in_10_sfx = 356, + c_iic043in_11_sfx = 357, + c_iic043in_12_sfx = 358, + c_iic043in_13_sfx = 359, + c_iic043in_14_sfx = 360, + c_iic043in_15_sfx = 361, + c_iic043in_16_sfx = 362, + c_iic043in_17_sfx = 363, + c_iic043in_Anim = 364, + c_IIC045IN_Wav_523 = 365, + c_IIC045IN_Pho_523 = 366, + c_iic045in_0_sfx = 367, + c_iic045in_1_sfx = 368, + c_iic045in_2_sfx = 369, + c_iic045in_3_sfx = 370, + c_iic045in_4_sfx = 371, + c_iic045in_5_sfx = 372, + c_iic045in_6_sfx = 373, + c_iic045in_7_sfx = 374, + c_iic045in_8_sfx = 375, + c_iic045in_Anim = 376, + c_iic046in_Wav_524 = 377, + c_iic046in_Pho_524 = 378, + c_iic046in_Anim = 379, + c_iic048in_Wav_525 = 380, + c_iic048in_Pho_525 = 381, + c_iic048in_0_sfx = 382, + c_iic048in_1_sfx = 383, + c_iic048in_2_sfx = 384, + c_iic048in_3_sfx = 385, + c_iic048in_4_sfx = 386, + c_iic048in_Anim = 387, + c_iic049in_Wav_526 = 388, + c_iic049in_Pho_526 = 389, + c_iic049in_0_sfx = 390, + c_iic049in_1_sfx = 391, + c_iic049in_2_sfx = 392, + c_iic049in_3_sfx = 393, + c_iic049in_4_sfx = 394, + c_iic049in_5_sfx = 395, + c_iic049in_6_sfx = 396, + c_iic049in_7_sfx = 397, + c_iic049in_8_sfx = 398, + c_iic049in_9_sfx = 399, + c_iic049in_10_sfx = 400, + c_iic049in_Anim = 401, + c_iic050in_Wav_527 = 402, + c_iic050in_Pho_527 = 403, + c_iic050in_0_sfx = 404, + c_iic050in_1_sfx = 405, + c_iic050in_2_sfx = 406, + c_iic050in_3_sfx = 407, + c_iic050in_4_sfx = 408, + c_iic050in_Anim = 409, + c_iic055in_Wav_528 = 410, + c_iic055in_Pho_528 = 411, + c_iic055in_0_sfx = 412, + c_iic055in_1_sfx = 413, + c_iic055in_2_sfx = 414, + c_iic055in_3_sfx = 415, + c_iic055in_4_sfx = 416, + c_iic055in_Anim = 417, + c_iic056in_Wav_529 = 418, + c_iic056in_Pho_529 = 419, + c_iic056in_0_sfx = 420, + c_iic056in_1_sfx = 421, + c_iic056in_2_sfx = 422, + c_iic056in_3_sfx = 423, + c_iic056in_4_sfx = 424, + c_iic056in_5_sfx = 425, + c_iic056in_6_sfx = 426, + c_iic056in_7_sfx = 427, + c_iic056in_Anim = 428, + c_iic057in_Wav_530 = 429, + c_iic057in_Pho_530 = 430, + c_iic057in_0_sfx = 431, + c_iic057in_1_sfx = 432, + c_iic057in_2_sfx = 433, + c_iic057in_3_sfx = 434, + c_iic057in_Anim = 435, + c_iic058in_Wav_531 = 436, + c_iic058in_Pho_531 = 437, + c_iic058in_0_sfx = 438, + c_iic058in_1_sfx = 439, + c_iic058in_2_sfx = 440, + c_iic058in_Anim = 441, + c_iica28in_Wav_532 = 442, + c_iica28in_Pho_532 = 443, + c_iica28in_Anim = 444, + c_iica30in_0_sfx = 445, + c_iica30in_Anim = 446, + c_iicb28in_Wav_534 = 447, + c_iicb28in_Pho_534 = 448, + c_iicb28in_0_sfx = 449, + c_iicb28in_Anim = 450, + c_iicb30in_0_sfx = 451, + c_iicb30in_Anim = 452, + c_iicc28in_Wav_536 = 453, + c_iicc28in_Pho_536 = 454, + c_iicc28in_0_sfx = 455, + c_iicc28in_Anim = 456, + c_nic002in_0_sfx = 457, + c_nic002in_Anim = 458, + c_nic003in_0_sfx = 459, + c_nic003in_Anim = 460, + c_tic089in_Wav_539 = 461, + c_tic089in_Pho_539 = 462, + c_tic089in_0_sfx = 463, + c_tic089in_1_sfx = 464, + c_tic089in_2_sfx = 465, + c_tic089in_Anim = 466, + c_tic092in_Wav_540 = 467, + c_tic092in_Pho_540 = 468, + c_tic092in_0_sfx = 469, + c_tic092in_1_sfx = 470, + c_tic092in_2_sfx = 471, + c_tic092in_Anim = 472, + c_AVO901IN_Wav_541 = 473, + c_AVO901IN_Pho_541 = 474, + c_avo901in_Anim = 475, + c_AVO902IN_Wav_542 = 476, + c_AVO902IN_Pho_542 = 477, + c_avo902in_Anim = 478, + c_AVO903IN_Wav_543 = 479, + c_AVO903IN_Pho_543 = 480, + c_avo903in_Anim = 481, + c_AVO904IN_Wav_544 = 482, + c_AVO904IN_Pho_544 = 483, + c_avo904in_Anim = 484, + c_AVO905IN_Wav_545 = 485, + c_AVO905IN_Pho_545 = 486, + c_avo905in_Anim = 487, + + c_iic001in_RunAnim = 500, + c_iic016in_RunAnim = 501, + c_iicx17in_RunAnim = 502, + c_iic018in_RunAnim = 503, + c_iicx18in_RunAnim = 504, + c_iic019in_RunAnim = 505, + c_iic020in_RunAnim = 506, + c_iic021in_RunAnim = 507, + c_iic022in_RunAnim = 508, + c_iic023in_RunAnim = 509, + c_iicx23in_RunAnim = 510, + c_iic024in_RunAnim = 511, + c_iic025in_RunAnim = 512, + c_iic026in_RunAnim = 513, + c_iicx26in_RunAnim = 514, + c_iic027in_RunAnim = 515, + c_iic029in_RunAnim = 516, + c_iic032in_RunAnim = 517, + c_iic033in_RunAnim = 518, + c_iic034in_RunAnim = 519, + c_iic035in_RunAnim = 520, + c_iic036in_RunAnim = 521, + c_iic043in_RunAnim = 522, + c_iic045in_RunAnim = 523, + c_iic046in_RunAnim = 524, + c_iic048in_RunAnim = 525, + c_iic049in_RunAnim = 526, + c_iic050in_RunAnim = 527, + c_iic055in_RunAnim = 528, + c_iic056in_RunAnim = 529, + c_iic057in_RunAnim = 530, + c_iic058in_RunAnim = 531, + c_iica28in_RunAnim = 532, + c_iica30in_RunAnim = 533, + c_iicb28in_RunAnim = 534, + c_iicb30in_RunAnim = 535, + c_iicc28in_RunAnim = 536, + c_nic002in_RunAnim = 537, + c_nic003in_RunAnim = 538, + c_tic089in_RunAnim = 539, + c_tic092in_RunAnim = 540, + c_avo901in_RunAnim = 541, + c_avo902in_RunAnim = 542, + c_avo903in_RunAnim = 543, + c_avo904in_RunAnim = 544, + c_avo905in_RunAnim = 545, + c_AVo901In_PlayWav = 546, + c_AVo902In_PlayWav = 547, + c_AVo903In_PlayWav = 548, + c_AVo904In_PlayWav = 549, + c_AVo905In_PlayWav = 550, + c_Avo929In_PlayWav = 551, + c_iic062in_PlayWav = 552, + c_iic063in_PlayWav = 553, + c_iic064in_PlayWav = 554, + c_igs004ra_PlayWav = 555, + c_iho003ra_PlayWav = 556, + c_iic007ra_PlayWav = 557, + c_ijs002ra_PlayWav = 558, + c_ips005ra_PlayWav = 559, + c_ipz006ra_PlayWav = 560, + c_irt001ra_PlayWav = 561, + c_iic039in_PlayWav = 562, + c_iic040in_PlayWav = 563, + c_iic041in_PlayWav = 564, + c_iic042in_PlayWav = 565, + c_iic059in_PlayWav = 566, + c_iic060in_PlayWav = 567, + c_iic061in_PlayWav = 568, + c_iic051in_PlayWav = 569, + c_iic052in_PlayWav = 570, + c_iic053in_PlayWav = 571, + c_iic054in_PlayWav = 572, + c_iic007in_PlayWav = 573, + c_sbleh2br_PlayWav = 574, + c_snshahbr_PlayWav = 575 +}; +} // namespace InfomainScript + +#endif // INFOMAIN_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/infoscor_actions.h b/LEGO1/lego/legoomni/include/actions/infoscor_actions.h new file mode 100644 index 00000000..b1cecbc1 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/infoscor_actions.h @@ -0,0 +1,41 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef INFOSCOR_ACTIONS_H +#define INFOSCOR_ACTIONS_H + +namespace InfoscorScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneInfoscor = -1, + + c__StartUp = 0, + c_LeftArrow_Ctl = 1, + c_RightArrow_Ctl = 2, + c_Book_Ctl = 3, + c_LegoBox_Ctl = 4, + c_HistBook_Bmp = 5, + c_HistBook_Flc = 6, + c_LegoBox1_Flc = 7, + c_LegoBox2_Flc = 8, + c_LegoBox3_Flc = 9, + c_GoTo_HistBook = 10, + c_Background_Bitmap = 11, + c_LeftArrow_Up_Bitmap = 12, + c_LeftArrow_Down_Bitmap = 13, + c_RightArrow_Up_Bitmap = 14, + c_RightArrow_Down_Bitmap = 15, + c_Book_Up_Bitmap = 16, + c_LegoBox_Mask_Bitmap = 17, + c_ConfigAnimation = 18, + c_nin001pr_Anim = 19, + + c_nin001pr_RunAnim = 500, + c_iicc31in_PlayWav = 501 +}; +} // namespace InfoscorScript + +#endif // INFOSCOR_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/intro_actions.h b/LEGO1/lego/legoomni/include/actions/intro_actions.h new file mode 100644 index 00000000..4f882cff --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/intro_actions.h @@ -0,0 +1,36 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef INTRO_ACTIONS_H +#define INTRO_ACTIONS_H + +namespace IntroScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneIntro = -1, + + c_Lego_Movie = 0, + c_Mindscape_Movie = 1, + c_Intro_Movie = 2, + c_Outro_Movie = 3, + c_BadEnd_Movie = 4, + c_GoodEnd_Movie = 5, + c_Lego_Smk = 6, + c_Lego_Wave = 7, + c_Mindscape_Smk = 8, + c_Mindscape_Wave = 9, + c_Intro_Smk = 10, + c_Intro_Wave = 11, + c_Outro_Smk = 12, + c_Outro_Wave = 13, + c_BadEnd_Smk = 14, + c_BadEnd_Wave = 15, + c_GoodEnd_Smk = 16, + c_GoodEnd_Wave = 17 +}; +} // namespace IntroScript + +#endif // INTRO_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/isle_actions.h b/LEGO1/lego/legoomni/include/actions/isle_actions.h new file mode 100644 index 00000000..4349a8e6 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/isle_actions.h @@ -0,0 +1,3730 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef ISLE_ACTIONS_H +#define ISLE_ACTIONS_H + +namespace IsleScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneIsle = -1, + + c__Isle = 0, + c_Floor2 = 1, + c_IslePath = 2, + c_Pizzeria_Actor = 3, + c_Pizzeria_Model = 4, + c_Gas = 5, + c_GasModel = 6, + c_Police = 7, + c_PoliceModel = 8, + c_InfCtrModel = 9, + c_BikeDashboard = 10, + c_BikeDashboard_Bitmap = 11, + c_BikeArms_Ctl = 12, + c_BikeInfo_Ctl = 13, + c_BikeHorn_Sound = 14, + c_BikeHorn_Ctl = 15, + c_Beach = 16, + c_BeachModel = 17, + c_Radio_Ctl = 18, + c_Racej = 19, + c_RacejModel = 20, + c_HelicopterDashboard = 21, + c_HelicopterDashboard_Bitmap = 22, + c_HelicopterArms_Ctl = 23, + c_Helicopter_TakeOff_Ctl = 24, + c_Helicopter_Land_Ctl = 25, + + c_Helicopter_Info_Ctl = 28, + + c_HelicopterTakeOff_Anim = 32, + c_HelicopterLand_Anim = 33, + c_MedCtr = 34, + c_MedCtrModel = 35, + c_BumpBouy_Actor = 36, + c_BumpBouy_Model = 37, + c_Bike_Model = 38, + c_JetskiSpeedMeter = 39, + c_JetskiFuelMeter = 40, + c_JetskiDashboard11_Bitmap = 41, + c_JetskiDashboard12_Bitmap = 42, + c_JetskiDashboard13_Bitmap = 43, + c_JetskiDashboard14_Bitmap = 44, + c_JetskiDashboard15_Bitmap = 45, + c_JetskiDashboard16_Bitmap = 46, + c_MotoBk_Model = 47, + c_Ambul_Actor = 48, + c_Ambul_Model = 49, + c_Towtk_Actor = 50, + c_JetskiDashboard21_Bitmap = 51, + c_JetskiDashboard22_Bitmap = 52, + c_JetskiDashboard23_Bitmap = 53, + c_JetskiDashboard24_Bitmap = 54, + c_JetskiDashboard25_Bitmap = 55, + c_JetskiDashboard26_Bitmap = 56, + c_Towtk_Model = 57, + c_SkateBoard_Model = 58, + c_JukeBox_Model = 59, + c_Pizpie_Model = 60, + c_JetskiDashboard31_Bitmap = 61, + c_JetskiDashboard32_Bitmap = 62, + c_JetskiDashboard33_Bitmap = 63, + c_JetskiDashboard34_Bitmap = 64, + c_JetskiDashboard35_Bitmap = 65, + c_JetskiDashboard36_Bitmap = 66, + c_Cave_Entity = 67, + c_Cave_Model = 68, + c_Jail_Entity = 69, + c_Jail_Model = 70, + c_JetskiDashboard41_Bitmap = 71, + c_JetskiDashboard42_Bitmap = 72, + c_JetskiDashboard43_Bitmap = 73, + c_JetskiDashboard44_Bitmap = 74, + c_JetskiDashboard45_Bitmap = 75, + c_JetskiDashboard46_Bitmap = 76, + c_TransitionSound1 = 77, + c_TransitionSound2 = 78, + c_SoundAndAnim = 79, + c_CNs001xx = 80, + c_JetskiDashboard51_Bitmap = 81, + c_JetskiDashboard52_Bitmap = 82, + c_JetskiDashboard53_Bitmap = 83, + c_JetskiDashboard54_Bitmap = 84, + c_JetskiDashboard55_Bitmap = 85, + c_JetskiDashboard56_Bitmap = 86, + c_CNs002xx = 87, + c_CNs003xx = 88, + c_CNs004xx = 89, + c_CNs005xx = 90, + c_JetskiDashboard61_Bitmap = 91, + c_JetskiDashboard62_Bitmap = 92, + c_JetskiDashboard63_Bitmap = 93, + c_JetskiDashboard64_Bitmap = 94, + c_JetskiDashboard65_Bitmap = 95, + c_JetskiDashboard66_Bitmap = 96, + c_JetskiDashboard = 97, + c_JetskiArms_Ctl = 98, + c_JetskiInfo_Ctl = 99, + c_CNs007xx = 100, + c_CNs006xx = 101, + c_CNs008xx = 102, + c_CNs009xx = 103, + c_CNs010xx = 104, + c_CNs011xx = 105, + c_CNs012xx = 106, + c_CNs001Pe = 107, + c_CNs002Pe = 108, + c_CNs003Pe = 109, + c_CNs004Pe = 110, + c_CNs005Pe = 111, + c_CNs007Pe = 112, + c_CNs006Pe = 113, + c_CNs008Pe = 114, + c_CNs009Pe = 115, + c_CNs010Pe = 116, + c_CNs001Ma = 117, + c_CNs002Ma = 118, + c_CNs003Ma = 119, + c_CNs004Ma = 120, + c_CNs005Ma = 121, + c_CNs007Ma = 122, + c_CNs006Ma = 123, + c_CNs008Ma = 124, + c_CNs009Ma = 125, + c_CNs010Ma = 126, + c_CNs011Ma = 127, + c_CNs012Ma = 128, + c_CNs013Ma = 129, + c_CNs0x4Ma = 130, + c_CNs001Pa = 131, + c_CNs002Pa = 132, + c_CNs003Pa = 133, + c_CNs004Pa = 134, + c_CNs005Pa = 135, + c_CNs007Pa = 136, + c_CNs006Pa = 137, + c_CNs008Pa = 138, + c_CNs009Pa = 139, + c_CNs010Pa = 140, + c_CNs011Pa = 141, + c_CNs012Pa = 142, + c_CNs013Pa = 143, + c_CNs0x4Pa = 144, + c_CNs001Ni = 145, + c_CNs002Ni = 146, + c_CNs003Ni = 147, + c_CNs004Ni = 148, + c_CNs005Ni = 149, + c_MotoBikeDashboard = 150, + c_MotoBikeDashboard_Bitmap = 151, + c_MotoBikeArms_Ctl = 152, + c_MotoBikeInfo_Ctl = 153, + c_MotoBikeSpeedMeter = 154, + c_MotoBikeFuelMeter = 155, + c_CNs007Ni = 156, + c_CNs006Ni = 157, + c_CNs008Ni = 158, + c_CNs009Ni = 159, + c_AmbulanceDashboard = 160, + c_AmbulanceDashboard_Bitmap = 161, + c_AmbulanceArms_Ctl = 162, + c_AmbulanceInfo_Ctl = 163, + c_AmbulanceHorn_Sound = 164, + c_AmbulanceHorn_Ctl = 165, + c_AmbulanceSpeedMeter = 166, + c_AmbulanceFuelMeter = 167, + c_CNs010Ni = 168, + c_CNs011Ni = 169, + c_TowTrackDashboard = 170, + c_TowTrackDashboard_Bitmap = 171, + c_TowTrackArms_Ctl = 172, + c_TowInfo_Ctl = 173, + c_TowHorn_Sound = 174, + c_TowHorn_Ctl = 175, + c_TowSpeedMeter = 176, + c_TowFuelMeter = 177, + c_CNsx11Ni = 178, + c_CNs001La = 179, + c_DuneCarSpeedMeter = 180, + c_DuneCarDashboard1_Bitmap = 181, + c_DuneCarDashboard2_Bitmap = 182, + c_DuneCarDashboard3_Bitmap = 183, + c_DuneCarDashboard4_Bitmap = 184, + c_DuneCarDashboard5_Bitmap = 185, + c_DuneCarDashboard6_Bitmap = 186, + c_DuneCarDashboard = 187, + c_DuneCarArms_Ctl = 188, + c_DuneCarInfo_Ctl = 189, + c_DuneCarHorn_Sound = 190, + c_DuneCarHorn_Ctl = 191, + c_DuneCarFuelMeter = 192, + c_SkateDashboard = 193, + c_SkatePizza_Bitmap = 194, + c_SkateArms_Ctl = 195, + c_CNs002La = 196, + c_CNs003La = 197, + c_CNs004La = 198, + c_CNs005La = 199, + c_CNs007La = 200, + c_CNs006La = 201, + c_CNs008La = 202, + c_CNs009La = 203, + c_CNs010La = 204, + c_CNs011La = 205, + c_CNsx11La = 206, + c_CNs001Br = 207, + c_CNs002Br = 208, + c_CNs003Br = 209, + c_CNs004Br = 210, + c_CNs005Br = 211, + c_CNs007Br = 212, + c_CNs006Br = 213, + c_CNs008Br = 214, + c_CNs009Br = 215, + c_CNs010Br = 216, + c_CNs011Br = 217, + c_CNs012Br = 218, + c_CNs013Br = 219, + c_CNs014Br = 220, + c_CNs900Br = 221, + c_CNs901BR = 222, + c_CNs001Bd = 223, + c_CNs001Pg = 224, + c_CNs001Rd = 225, + c_CNs001Sy = 226, + c_CNs001Sk = 227, + c_BNsAss01 = 228, + c_BNsAss02 = 229, + c_BNsAss03 = 230, + c_BNsDis01 = 231, + c_BNsDis02 = 232, + c_BNsDis03 = 233, + c_crash5_PlayWav = 234, + c_s12_crash_PlayWav = 235, + c_SkateArms_Mask_Bitmap_236 = 236, + c_SkateArms_Mask_Bitmap_237 = 237, + c_DuneCarArms_Bitmap = 238, + c_DuneCarHornUp_Bitmap = 239, + c_DuneCarHornDown = 240, + c_DuneCarHornDown_Bitmap = 241, + c_DuneCarInfoUp_Bitmap = 242, + c_DuneCarInfoDown_Bitmap = 243, + c_JetskiArms_Mask_Bitmap = 244, + c_JetskiInfoUp_Bitmap = 245, + c_JetskiInfoDown_Bitmap = 246, + c_HelicopterArms_Mask_Bitmap_247 = 247, + c_HelicopterArms_Mask_Bitmap_248 = 248, + c_Helicopter_TakeOff_Up_Bitmap = 249, + c_NoPizza_Texture = 250, + c_NoPizaz_Texture = 251, + c_Helicopter_TakeOff_Down_Bitmap = 252, + c_Helicopter_Land_Up_Bitmap = 253, + c_Helicopter_Land_Down_Bitmap = 254, + c_Helicopter_Info_Up_Bitmap = 255, + c_Helicopter_Info_Down_Bitmap = 256, + c_MotoBikeArms_Mask_Bitmap = 257, + c_MotoBikeInfoUp_Bitmap = 258, + c_MotoBikeInfoDown_Bitmap = 259, + c_BikeArms_Mask_Bitmap = 260, + c_BikeHornUp_Bitmap = 261, + c_BikeHornDown = 262, + c_BikeHornDown_Bitmap = 263, + c_BikeInfoUp_Bitmap = 264, + c_BikeInfoDown_Bitmap = 265, + c_TowTrackArms_Mask_Bitmap = 266, + c_TowHornUp_Bitmap = 267, + c_TowHornDown = 268, + c_TowHornDown_Bitmap = 269, + c_TowInfoUp_Bitmap = 270, + c_TowInfoDown_Bitmap = 271, + c_AmbulanceArms_Mask_Bitmap = 272, + c_AmbulanceHornUp_Bitmap = 273, + c_AmbulanceHornDown = 274, + c_AmbulanceHornDown_Bitmap = 275, + c_AmbulanceInfoUp_Bitmap = 276, + c_AmbulanceInfoDown_Bitmap = 277, + c_Floor2_Bitmap = 278, + c_Floor2_Smk = 279, + c_Floor2_Wave = 280, + c_ElevRide_Info_Up_Bitmap = 281, + c_ElevRide_Info_Down_Bitmap = 282, + c_ElevRide_Two_Up_Bitmap = 283, + c_ElevRide_Two_Down_Bitmap = 284, + c_ElevRide_Three_Up_Bitmap = 285, + c_ElevRide_Three_Down_Bitmap = 286, + c_Meter1_3_Flc = 287, + c_Elev1_3_Anim = 288, + c_Meter2_3_Flc = 289, + c_Elev2_3_Anim = 290, + c_Meter3_2_Flc = 291, + c_Elev3_2_Anim = 292, + c_Meter3_1_Flc = 293, + c_Elev3_1_Anim = 294, + c_Meter2_1_Flc = 295, + c_Elev2_1_Anim = 296, + c_Meter1_2_Flc = 297, + c_Elev1_2_Anim = 298, + c_ElevOpen_LeftArrow_Up_Bitmap = 299, + c_ElevOpen_LeftArrow_Down_Bitmap = 300, + c_ElevOpen_RightArrow_Up_Bitmap = 301, + c_ElevOpen_RightArrow_Down_Bitmap = 302, + c_Observe_LeftArrow_Up_Bitmap = 303, + c_Observe_LeftArrow_Down_Bitmap = 304, + c_Observe_RightArrow_Up_Bitmap = 305, + c_Observe_RightArrow_Down_Bitmap = 306, + c_Observe_Plane_Up_Bitmap = 307, + c_Observe_Plane_Down_Bitmap = 308, + c_Observe_Sun_Up_Bitmap = 309, + c_Observe_Sun_Down_Bitmap = 310, + c_Observe_Moon_Up_Bitmap = 311, + c_Observe_Moon_Down_Bitmap = 312, + c_Observe_SkyColor_Up_Bitmap = 313, + c_Observe_SkyColor_Down_Bitmap = 314, + c_Observe_LCab_Up_Bitmap = 315, + c_Observe_LCab_Down_Bitmap = 316, + c_Observe_RCab_Up_Bitmap = 317, + c_Observe_RCab_Down_Bitmap = 318, + c_Observe_GlobeRArrow_Up_Bitmap = 319, + c_Observe_GlobeRArrow_Down_Bitmap = 320, + c_Observe_GlobeLArrow_Up_Bitmap = 321, + c_Observe_GlobeLArrow_Down_Bitmap = 322, + c_Observe_Draw1_Bitmap = 323, + c_Observe_Draw2_Bitmap = 324, + c_RadioOff_Bitmap = 325, + c_RadioOn_Bitmap = 326, + c_SeaView_LeftArrow_Up_Bitmap = 327, + c_SeaView_LeftArrow_Down_Bitmap = 328, + c_SeaView_RightArrow_Up_Bitmap = 329, + c_SeaView_RightArrow_Down_Bitmap = 330, + c_ElevDown_LeftArrow_Up_Bitmap = 331, + c_ElevDown_LeftArrow_Down_Bitmap = 332, + c_ElevDown_RightArrow_Up_Bitmap = 333, + c_ElevDown_RightArrow_Down_Bitmap = 334, + c_ElevDown_Elevator_Up_Bitmap = 335, + c_ElevDown_Elevator_Down_Bitmap = 336, + c_PoliDoor_LeftArrow_Up_Bitmap = 337, + c_PoliDoor_LeftArrow_Down_Bitmap = 338, + c_PoliDoor_RightArrow_Up_Bitmap = 339, + c_PoliDoor_RightArrow_Down_Bitmap = 340, + c_PoliDoor_Door_Mask_Bitmap = 341, + c_GaraDoor_LeftArrow_Up_Bitmap = 342, + c_GaraDoor_LeftArrow_Down_Bitmap = 343, + c_GaraDoor_RightArrow_Up_Bitmap = 344, + c_GaraDoor_RightArrow_Down_Bitmap = 345, + c_GaraDoor_Door_Mask_Bitmap = 346, + c_sba001bu_Wav_500 = 347, + c_sba001bu_Pho_500 = 348, + c_sba001bu_0_sfx = 349, + c_sba001bu_1_sfx = 350, + c_sba001bu_Anim = 351, + c_sba002bu_Wav_501 = 352, + c_sba002bu_Pho_501 = 353, + c_sba002bu_0_sfx = 354, + c_sba002bu_1_sfx = 355, + c_sba002bu_Anim = 356, + c_sba003bu_Wav_502 = 357, + c_sba003bu_Pho_502 = 358, + c_sba003bu_0_sfx = 359, + c_sba003bu_1_sfx = 360, + c_sba003bu_2_sfx = 361, + c_sba003bu_3_sfx = 362, + c_sba003bu_4_sfx = 363, + c_sba003bu_5_sfx = 364, + c_sba003bu_6_sfx = 365, + c_sba003bu_7_sfx = 366, + c_sba003bu_8_sfx = 367, + c_sba003bu_9_sfx = 368, + c_sba003bu_10_sfx = 369, + c_sba003bu_11_sfx = 370, + c_sba003bu_Anim = 371, + c_bns146rd_0_sfx = 372, + c_bns146rd_1_sfx = 373, + c_bns146rd_2_sfx = 374, + c_bns146rd_3_sfx = 375, + c_bns146rd_Anim = 376, + c_bns144rd_0_sfx = 377, + c_bns144rd_Anim = 378, + c_Fns017la_Wav_505 = 379, + c_Fns017la_Pho_505 = 380, + c_fns017la_0_sfx = 381, + c_fns017la_Anim = 382, + c_bns005p1_0_sfx = 383, + c_bns005p1_1_sfx = 384, + c_bns005p1_2_sfx = 385, + c_bns005p1_3_sfx = 386, + c_bns005p1_4_sfx = 387, + c_bns005p1_5_sfx = 388, + c_bns005p1_6_sfx = 389, + c_bns005p1_7_sfx = 390, + c_bns005p1_Anim = 391, + c_bns147rd_0_sfx = 392, + c_bns147rd_1_sfx = 393, + c_bns147rd_2_sfx = 394, + c_bns147rd_Anim = 395, + c_IGS007NA_Wav_508 = 396, + c_IGS007NA_Pho_508 = 397, + c_IGS005NA_Wav_508 = 398, + c_IGS005NA_Pho_508 = 399, + c_wns050p1_RunAnim = 400, + c_wns049p1_RunAnim = 401, + c_wns048p1_RunAnim = 402, + c_wns057rd_RunAnim = 403, + c_pns123pr_RunAnim = 404, + c_wns045di_RunAnim = 405, + c_wns053pr_RunAnim = 406, + c_wns046mg_RunAnim = 407, + c_wns051bd_RunAnim = 408, + c_pnsx48pr_RunAnim = 409, + c_pnsx69pr_RunAnim = 410, + c_pns125ni_RunAnim = 411, + c_pns122pr_RunAnim = 412, + c_pns050p1_RunAnim = 413, + c_pns069pr_RunAnim = 414, + c_pns066db_RunAnim = 415, + c_pns065rd_RunAnim = 416, + c_pns067gd_RunAnim = 417, + c_pns099pr_RunAnim = 418, + c_pns098pr_RunAnim = 419, + c_pns097pr_RunAnim = 420, + c_pns096pr_RunAnim = 421, + c_pns042bm_RunAnim = 422, + c_pns045p1_RunAnim = 423, + c_pns048pr_RunAnim = 424, + c_pns043en_RunAnim = 425, + c_pns022pr_RunAnim = 426, + c_pns018rd_RunAnim = 427, + c_pns019pr_RunAnim = 428, + c_pns021dl_RunAnim = 429, + c_IGS001NA_Wav_508 = 430, + c_IGS001NA_Pho_508 = 431, + c_IGS003NA_Wav_508 = 432, + c_IGS003NA_Pho_508 = 433, + c_igs001na_0_sfx = 434, + c_igs001na_1_sfx = 435, + c_igs001na_2_sfx = 436, + c_igs001na_3_sfx = 437, + c_igs001na_4_sfx = 438, + c_igs001na_5_sfx = 439, + c_igs001na_6_sfx = 440, + c_igs001na_7_sfx = 441, + c_igs001na_8_sfx = 442, + c_igs001na_9_sfx = 443, + c_igs001na_10_sfx = 444, + c_igs001na_11_sfx = 445, + c_igs001na_12_sfx = 446, + c_igs001na_13_sfx = 447, + c_igs001na_14_sfx = 448, + c_igs001na_15_sfx = 449, + c_igs001na_16_sfx = 450, + c_igs001na_17_sfx = 451, + c_igs001na_Anim = 452, + c_sns003nu_Wav_509 = 453, + c_sns003nu_Pho_509 = 454, + c_sns003nu_0_sfx = 455, + c_sns003nu_1_sfx = 456, + c_sns003nu_2_sfx = 457, + c_sns003nu_3_sfx = 458, + c_sns003nu_Anim = 459, + c_sgs001na_Wav_510 = 460, + c_sgs001na_Pho_510 = 461, + c_sgs001na_0_sfx = 462, + c_sgs001na_1_sfx = 463, + c_sgs001na_2_sfx = 464, + c_sgs001na_Anim = 465, + c_sns001nu_Wav_511 = 466, + c_sns001nu_Pho_511 = 467, + c_sns001nu_0_sfx = 468, + c_sns001nu_1_sfx = 469, + c_sns001nu_2_sfx = 470, + c_sns001nu_Anim = 471, + c_sns002nu_Wav_512 = 472, + c_sns002nu_Pho_512 = 473, + c_sns002nu_0_sfx = 474, + c_sns002nu_1_sfx = 475, + c_sns002nu_2_sfx = 476, + c_sns002nu_3_sfx = 477, + c_sns002nu_Anim = 478, + c_sgs002na_Wav_513 = 479, + c_sgs002na_Pho_513 = 480, + c_sgs002na_0_sfx = 481, + c_sgs002na_1_sfx = 482, + c_sgs002na_2_sfx = 483, + c_sgs002na_3_sfx = 484, + c_sgs002na_Anim = 485, + c_sgs003na_Wav_514 = 486, + c_sgs003na_Pho_514 = 487, + c_sgs003na_0_sfx = 488, + c_sgs003na_1_sfx = 489, + c_sgs003na_2_sfx = 490, + c_sgs003na_3_sfx = 491, + c_sgs003na_Anim = 492, + c_FNS003RE_Wav_515 = 493, + c_FNS003RE_Pho_515 = 494, + c_FNS002EN_Wav_515 = 495, + c_FNS002EN_Pho_515 = 496, + c_FNS001RE_Wav_515 = 497, + c_FNS001RE_Pho_515 = 498, + c_fns001re_0_sfx = 499, + c_sba001bu_RunAnim = 500, + c_sba002bu_RunAnim = 501, + c_sba003bu_RunAnim = 502, + c_bns146rd_RunAnim = 503, + c_bns144rd_RunAnim = 504, + c_fns017la_RunAnim = 505, + c_bns005p1_RunAnim = 506, + c_bns147rd_RunAnim = 507, + c_igs001na_RunAnim = 508, + c_sns003nu_RunAnim = 509, + c_sgs001na_RunAnim = 510, + c_sns001nu_RunAnim = 511, + c_sns002nu_RunAnim = 512, + c_sgs002na_RunAnim = 513, + c_sgs003na_RunAnim = 514, + c_fns001re_RunAnim = 515, + c_fns0x1re_RunAnim = 516, + c_fns007re_RunAnim = 517, + c_fns011re_RunAnim = 518, + c_sns001cl_RunAnim = 519, + c_sns002cl_RunAnim = 520, + c_sns003cl_RunAnim = 521, + c_bns191en_RunAnim = 522, + c_bho142en_RunAnim = 523, + c_bic143sy_RunAnim = 524, + c_sja004br_RunAnim = 525, + c_sja005br_RunAnim = 526, + c_sja006br_RunAnim = 527, + c_sja007br_RunAnim = 528, + c_sja008br_RunAnim = 529, + c_sja009br_RunAnim = 530, + c_sja010br_RunAnim = 531, + c_sja011br_RunAnim = 532, + c_sja012br_RunAnim = 533, + c_sja013br_RunAnim = 534, + c_sja014br_RunAnim = 535, + c_sja015br_RunAnim = 536, + c_sja016br_RunAnim = 537, + c_sja017br_RunAnim = 538, + c_sja018br_RunAnim = 539, + c_sja001br_RunAnim = 540, + c_sja002br_RunAnim = 541, + c_sja003br_RunAnim = 542, + c_ijs001sn_RunAnim = 543, + c_fjs148gd_RunAnim = 544, + c_fjs149va_RunAnim = 545, + c_sjs001va_RunAnim = 546, + c_sjs002va_RunAnim = 547, + c_sjs003va_RunAnim = 548, + c_sjs004va_RunAnim = 549, + c_fjs019rd_RunAnim = 550, + c_bjs009gd_RunAnim = 551, + c_sjs001sn_RunAnim = 552, + c_sjs002sn_RunAnim = 553, + c_sjs003sn_RunAnim = 554, + c_sjs004sn_RunAnim = 555, + c_sjs005sn_RunAnim = 556, + c_snsx31sh_RunAnim = 557, + c_bns007gd_RunAnim = 558, + c_fns001l1_RunAnim = 559, + c_fns001l2_RunAnim = 560, + c_fra157bm_RunAnim = 561, + c_bns145rd_RunAnim = 562, + c_ips001ro_RunAnim = 563, + c_sns010ni_RunAnim = 564, + c_sns003la_RunAnim = 565, + c_fps181ni_RunAnim = 566, + c_ipz001rd_RunAnim = 567, + c_spz004ma_RunAnim = 568, + c_spz005ma_RunAnim = 569, + c_spz006ma_RunAnim = 570, + c_spz004pa_RunAnim = 571, + c_spz013ma_RunAnim = 572, + c_spz006pa_RunAnim = 573, + c_spz014ma_RunAnim = 574, + c_spz005pa_RunAnim = 575, + c_spz015ma_RunAnim = 576, + c_spz007ma_RunAnim = 577, + c_spz013pa_RunAnim = 578, + c_spz008ma_RunAnim = 579, + c_spz014pa_RunAnim = 580, + c_spz009ma_RunAnim = 581, + c_spz015pa_RunAnim = 582, + c_spz007pa_RunAnim = 583, + c_spz011pe_RunAnim = 584, + c_spz008pa_RunAnim = 585, + c_spz009pa_RunAnim = 586, + c_spz010ma_RunAnim = 587, + c_spz010pa_RunAnim = 588, + c_spz011ma_RunAnim = 589, + c_spz011pa_RunAnim = 590, + c_spz012pa_RunAnim = 591, + c_spz001ma_RunAnim = 592, + c_spz002ma_RunAnim = 593, + c_spz003ma_RunAnim = 594, + c_spz003pa_RunAnim = 595, + c_fpz166p1_RunAnim = 596, + c_fpz172rd_RunAnim = 597, + c_spz001pa_RunAnim = 598, + c_spz002pa_RunAnim = 599, + c_ppz086bs_RunAnim = 600, + c_ppz008rd_RunAnim = 601, + c_ppz009pg_RunAnim = 602, + c_ivo918in_RunAnim = 603, + c_spz004pe_RunAnim = 604, + c_spz005pe_RunAnim = 605, + c_srp006pe_RunAnim = 606, + c_spz013pe_RunAnim = 607, + c_sns001pe_RunAnim = 608, + c_fra192pe_RunAnim = 609, + c_fra163mg_RunAnim = 610, + c_fns185gd_RunAnim = 611, + c_irt001in_RunAnim = 612, + c_irtx01sl_RunAnim = 613, + c_frt135df_RunAnim = 614, + c_frt137df_RunAnim = 615, + c_frt139df_RunAnim = 616, + c_frt025rd_RunAnim = 617, + c_frt132rd_RunAnim = 618, + c_srt001rd_RunAnim = 619, + c_srt003bd_RunAnim = 620, + c_sst001mg_RunAnim = 621, + c_sns004la_RunAnim = 622, + c_sns005la_RunAnim = 623, + c_sns006la_RunAnim = 624, + c_sps004ni_RunAnim = 625, + c_sps005ni_RunAnim = 626, + c_sps006ni_RunAnim = 627, + c_sns007la_RunAnim = 628, + c_sns008la_RunAnim = 629, + c_sns009la_RunAnim = 630, + c_sns007ni_RunAnim = 631, + c_sns008ni_RunAnim = 632, + c_sns009ni_RunAnim = 633, + c_pns017ml_RunAnim = 634, + c_sns010la_RunAnim = 635, + c_sns010pe_RunAnim = 636, + c_sns011la_RunAnim = 637, + c_sns012la_RunAnim = 638, + c_sns007pe_RunAnim = 639, + c_sns008pe_RunAnim = 640, + c_sns013la_RunAnim = 641, + c_sns013ni_RunAnim = 642, + c_sns014la_RunAnim = 643, + c_sns014ni_RunAnim = 644, + c_sns015la_RunAnim = 645, + c_sns015ni_RunAnim = 646, + c_sns011ni_RunAnim = 647, + c_sns012ni_RunAnim = 648, + c_sns014pe_RunAnim = 649, + c_sns015pe_RunAnim = 650, + c_sns003pe_RunAnim = 651, + c_sns017ni_RunAnim = 652, + c_sps001ni_RunAnim = 653, + c_sps002ni_RunAnim = 654, + c_sps003ni_RunAnim = 655, + c_sns017la_RunAnim = 656, + c_sps001la_RunAnim = 657, + c_sps002la_RunAnim = 658, + c_bns005pg_RunAnim = 659, + c_sns001ml_RunAnim = 660, + c_sns002mg_RunAnim = 661, + c_sns002ml_RunAnim = 662, + c_sns002pe_RunAnim = 663, + c_sns003mg_RunAnim = 664, + c_sns004mg_RunAnim = 665, + c_sns004rd_RunAnim = 666, + c_sns006bd_RunAnim = 667, + c_sns006ro_RunAnim = 668, + c_sns011in_RunAnim = 669, + c_sps001ro_RunAnim = 670, + c_sps002ro_RunAnim = 671, + c_sps003ro_RunAnim = 672, + c_sps004ro_RunAnim = 673, + c_srt005pg_RunAnim = 674, + c_pns100ml_RunAnim = 675, + c_ppz029rd_RunAnim = 676, + c_sns007sy_RunAnim = 677, + c_cnsx12la_RunAnim = 678, + c_cnsx12ni_RunAnim = 679, + c_ijs006sn_RunAnim = 680, + c_igs008na_RunAnim = 681, + c_irt007in_RunAnim = 682, + c_ips002ro_RunAnim = 683, + c_hho142cl_RunAnim = 684, + c_hho143cl_RunAnim = 685, + c_hho144cl_RunAnim = 686, + c_hho027en_RunAnim = 687, + c_hps116bd_RunAnim = 688, + c_hps117bd_RunAnim = 689, + c_hps118re_RunAnim = 690, + c_hps120en_RunAnim = 691, + c_hps122en_RunAnim = 692, + c_hpz047pe_RunAnim = 693, + c_hpz048pe_RunAnim = 694, + c_hpz049bd_RunAnim = 695, + c_hpz050bd_RunAnim = 696, + c_hpz052ma_RunAnim = 697, + c_hpz053pa_RunAnim = 698, + c_hpz055pa_RunAnim = 699, + c_hpz057ma_RunAnim = 700, + c_hpza51gd_RunAnim = 701, + c_hpzb51gd_RunAnim = 702, + c_hpzc51gd_RunAnim = 703, + c_hpzf51gd_RunAnim = 704, + c_hpzw51gd_RunAnim = 705, + c_hpzx51gd_RunAnim = 706, + c_hpzy51gd_RunAnim = 707, + c_hpzz51gd_RunAnim = 708, + c_nic002pr_RunAnim = 709, + c_nic003pr_RunAnim = 710, + c_nic004pr_RunAnim = 711, + c_pps025ni_RunAnim = 712, + c_pps026ni_RunAnim = 713, + c_pps027ni_RunAnim = 714, + c_ppz001pe_RunAnim = 715, + c_ppz006pa_RunAnim = 716, + c_ppz007pa_RunAnim = 717, + c_ppz010pa_RunAnim = 718, + c_ppz011pa_RunAnim = 719, + c_ppz013pa_RunAnim = 720, + c_ppz014pe_RunAnim = 721, + c_ppz015pe_RunAnim = 722, + c_ppz016pe_RunAnim = 723, + c_pgs050nu_RunAnim = 724, + c_pgs051nu_RunAnim = 725, + c_pgs052nu_RunAnim = 726, + c_ppz031ma_RunAnim = 727, + c_ppz035pa_RunAnim = 728, + c_ppz036pa_RunAnim = 729, + c_ppz037ma_RunAnim = 730, + c_ppz038ma_RunAnim = 731, + c_ppz054ma_RunAnim = 732, + c_ppz055ma_RunAnim = 733, + c_ppz056ma_RunAnim = 734, + c_ppz059ma_RunAnim = 735, + c_ppz060ma_RunAnim = 736, + c_ppz061ma_RunAnim = 737, + c_ppz064ma_RunAnim = 738, + c_prt072sl_RunAnim = 739, + c_prt073sl_RunAnim = 740, + c_prt074sl_RunAnim = 741, + c_pho104re_RunAnim = 742, + c_pho105re_RunAnim = 743, + c_pho106re_RunAnim = 744, + c_ppz075pa_RunAnim = 745, + c_ppz082pa_RunAnim = 746, + c_ppz084pa_RunAnim = 747, + c_ppz088ma_RunAnim = 748, + c_ppz089ma_RunAnim = 749, + c_ppz090ma_RunAnim = 750, + c_ppz093pe_RunAnim = 751, + c_ppz094pe_RunAnim = 752, + c_ppz095pe_RunAnim = 753, + c_prp101pr_RunAnim = 754, + c_pja126br_RunAnim = 755, + c_pja127br_RunAnim = 756, + c_pja129br_RunAnim = 757, + c_pja130br_RunAnim = 758, + c_pja131br_RunAnim = 759, + c_pja132br_RunAnim = 760, + c_ppz107ma_RunAnim = 761, + c_ppz114pa_RunAnim = 762, + c_ppz117ma_RunAnim = 763, + c_ppz118ma_RunAnim = 764, + c_ppz119ma_RunAnim = 765, + c_ppz120pa_RunAnim = 766, + c_wgs083nu_RunAnim = 767, + c_wgs085nu_RunAnim = 768, + c_wgs086nu_RunAnim = 769, + c_wgs087nu_RunAnim = 770, + c_wgs088nu_RunAnim = 771, + c_wgs089nu_RunAnim = 772, + c_wgs090nu_RunAnim = 773, + c_wgs091nu_RunAnim = 774, + c_wgs092nu_RunAnim = 775, + c_wgs093nu_RunAnim = 776, + c_wgs094nu_RunAnim = 777, + c_wgs095nu_RunAnim = 778, + c_wgs096nu_RunAnim = 779, + c_wgs097nu_RunAnim = 780, + c_wgs098nu_RunAnim = 781, + c_wgs099nu_RunAnim = 782, + c_wgs100nu_RunAnim = 783, + c_wgs101nu_RunAnim = 784, + c_wgs102nu_RunAnim = 785, + c_wgs103nu_RunAnim = 786, + c_wrt060bm_RunAnim = 787, + c_wrt074sl_RunAnim = 788, + c_wrt075rh_RunAnim = 789, + c_wrt076df_RunAnim = 790, + c_wrt078ni_RunAnim = 791, + c_wrt079bm_RunAnim = 792, + c_npz001bd_RunAnim = 793, + c_npz002bd_RunAnim = 794, + c_npz003bd_RunAnim = 795, + c_npz004bd_RunAnim = 796, + c_npz005bd_RunAnim = 797, + c_npz006bd_RunAnim = 798, + c_npz007bd_RunAnim = 799, + c_nca001ca_RunAnim = 800, + c_nca002sk_RunAnim = 801, + c_nca003gh_RunAnim = 802, + c_nla001ha_RunAnim = 803, + c_nla002sd_RunAnim = 804, + c_npa001ns_RunAnim = 805, + c_npa002ns_RunAnim = 806, + c_npa003ns_RunAnim = 807, + c_npa004ns_RunAnim = 808, + c_npa005dl_RunAnim = 809, + c_npa007dl_RunAnim = 810, + c_npa009dl_RunAnim = 811, + c_npa010db_RunAnim = 812, + c_npa012db_RunAnim = 813, + c_npa014db_RunAnim = 814, + c_npa015ca_RunAnim = 815, + c_npa017ca_RunAnim = 816, + c_npa019ca_RunAnim = 817, + c_npa020p1_RunAnim = 818, + c_npa022p1_RunAnim = 819, + c_npa024p1_RunAnim = 820, + c_npa025sh_RunAnim = 821, + c_npa027sh_RunAnim = 822, + c_npa029sh_RunAnim = 823, + c_npa030fl_RunAnim = 824, + c_npa031fl_RunAnim = 825, + c_npa032fl_RunAnim = 826, + c_npa034bh_RunAnim = 827, + c_npa035bh_RunAnim = 828, + c_npa036bh_RunAnim = 829, + c_npa038pn_RunAnim = 830, + c_npa039pn_RunAnim = 831, + c_npa040pn_RunAnim = 832, + c_npa042pm_RunAnim = 833, + c_npa043pm_RunAnim = 834, + c_npa044pm_RunAnim = 835, + c_npa046sr_RunAnim = 836, + c_npa047sr_RunAnim = 837, + c_npa048sr_RunAnim = 838, + c_npa050ba_RunAnim = 839, + c_npa051ba_RunAnim = 840, + c_npa052ba_RunAnim = 841, + c_npa054po_RunAnim = 842, + c_npa055po_RunAnim = 843, + c_npa056po_RunAnim = 844, + c_npa058r1_RunAnim = 845, + c_npa059r1_RunAnim = 846, + c_npa060r1_RunAnim = 847, + c_npa061r3_RunAnim = 848, + c_npa062r2_RunAnim = 849, + c_npa062r3_RunAnim = 850, + c_npa063r2_RunAnim = 851, + c_npa063r3_RunAnim = 852, + c_npa065r2_RunAnim = 853, + c_nja001pr_RunAnim = 854, + c_nja002pr_RunAnim = 855, + c_sjs007in_RunAnim = 856, + c_sns005in_RunAnim = 857, + c_sns006in_RunAnim = 858, + c_sns008in_RunAnim = 859, + c_sjs012in_RunAnim = 860, + c_sjs013in_RunAnim = 861, + c_sjs014in_RunAnim = 862, + c_sjs015in_RunAnim = 863, + c_srt001in_RunAnim = 864, + c_srt002in_RunAnim = 865, + c_srt003in_RunAnim = 866, + c_srt004in_RunAnim = 867, + c_nrtflag0_RunAnim = 868, + c_sns001ja_PlayWav = 869, + c_sns002ja_PlayWav = 870, + c_sns002jb_PlayWav = 871, + c_sns002js_PlayWav = 872, + c_sns002ra_PlayWav = 873, + c_sns003ra_PlayWav = 874, + c_sns004ra_PlayWav = 875, + c_sns005ra_PlayWav = 876, + c_sns006ra_PlayWav = 877, + c_sns007ra_PlayWav = 878, + c_sns008ra_PlayWav = 879, + c_sns009ra_PlayWav = 880, + c_sns010ra_PlayWav = 881, + c_sns010su_PlayWav = 882, + c_sns012ra_PlayWav = 883, + c_sns013ra_PlayWav = 884, + c_snsa01js_PlayWav = 885, + c_snsb01js_PlayWav = 886, + c_snsc01js_PlayWav = 887, + c_ham033cl_PlayWav = 888, + c_ham034ra_PlayWav = 889, + c_ham035ra_PlayWav = 890, + c_ham036ra_PlayWav = 891, + c_ham039ra_PlayWav = 892, + c_ham040cl_PlayWav = 893, + c_ham041cl_PlayWav = 894, + c_ham042cl_PlayWav = 895, + c_ham043cl_PlayWav = 896, + c_ham044cl_PlayWav = 897, + c_ham045cl_PlayWav = 898, + c_ham046cl_PlayWav = 899, + c_ham075cl_PlayWav = 900, + c_ham076cl_PlayWav = 901, + c_ham078cl_PlayWav = 902, + c_ham079cl_PlayWav = 903, + c_ham087cl_PlayWav = 904, + c_ham088cl_PlayWav = 905, + c_ham113cl_PlayWav = 906, + c_ham115cl_PlayWav = 907, + c_hpz037ma_PlayWav = 908, + c_sns078pa_PlayWav = 909, + c_sns079pa_PlayWav = 910, + c_wgs032nu_PlayWav = 911, + c_wns033na_PlayWav = 912, + c_wns034na_PlayWav = 913, + c_wns035na_PlayWav = 914, + c_wns036na_PlayWav = 915, + c_wns037na_PlayWav = 916, + c_wns038na_PlayWav = 917, + c_wns039na_PlayWav = 918, + c_wns040na_PlayWav = 919, + c_wns041na_PlayWav = 920, + c_wns042na_PlayWav = 921, + c_wns043na_PlayWav = 922, + c_wns044na_PlayWav = 923, + c_wrt061na_PlayWav = 924, + c_wrt082na_PlayWav = 925, + c_Avo900In_PlayWav = 926, + c_Avo909In_PlayWav = 927, + c_Avo910In_PlayWav = 928, + c_Avo911In_PlayWav = 929, + c_Avo912In_PlayWav = 930, + c_Avo913In_PlayWav = 931, + c_Avo914In_PlayWav = 932, + c_Avo915In_PlayWav = 933, + c_Avo916In_PlayWav = 934, + c_Avo917In_PlayWav = 935, + c_Avo919In_PlayWav = 936, + c_Avo920In_PlayWav = 937, + c_Avo921In_PlayWav = 938, + c_Avo922In_PlayWav = 939, + c_Avo923In_PlayWav = 940, + c_Avo924In_PlayWav = 941, + c_Avo927In_PlayWav = 942, + c_Avo928In_PlayWav = 943, + c_Avo930In_PlayWav = 944, + c_Avo931In_PlayWav = 945, + c_Avo932In_PlayWav = 946, + c_Avo933In_PlayWav = 947, + c_Avo900Ps_PlayWav = 948, + c_Avo901Ps_PlayWav = 949, + c_Avo902Ps_PlayWav = 950, + c_Avo903Ps_PlayWav = 951, + c_Avo904Ps_PlayWav = 952, + c_Avo905Ps_PlayWav = 953, + c_Avo906Ps_PlayWav = 954, + c_Avo907Ps_PlayWav = 955, + c_fns001re_1_sfx = 956, + c_fns001re_2_sfx = 957, + c_fns001re_3_sfx = 958, + c_fns001re_4_sfx = 959, + c_fns001re_Anim = 960, + c_FNS004RE_Wav_516 = 961, + c_FNS004RE_Pho_516 = 962, + c_FNS006RE_Wav_516 = 963, + c_FNS006RE_Pho_516 = 964, + c_FNS005EN_Wav_516 = 965, + c_FNS005EN_Pho_516 = 966, + c_fns0x1re_0_sfx = 967, + c_fns0x1re_1_sfx = 968, + c_fns0x1re_2_sfx = 969, + c_fns0x1re_3_sfx = 970, + c_fns0x1re_4_sfx = 971, + c_fns0x1re_5_sfx = 972, + c_fns0x1re_6_sfx = 973, + c_fns0x1re_Anim = 974, + c_FNS010EN_Wav_517 = 975, + c_FNS010EN_Pho_517 = 976, + c_FNS009RE_Wav_517 = 977, + c_FNS009RE_Pho_517 = 978, + c_FNS007RE_Wav_517 = 979, + c_FNS007RE_Pho_517 = 980, + c_fns007re_0_sfx = 981, + c_fns007re_1_sfx = 982, + c_fns007re_2_sfx = 983, + c_fns007re_3_sfx = 984, + c_fns007re_4_sfx = 985, + c_fns007re_5_sfx = 986, + c_fns007re_6_sfx = 987, + c_fns007re_7_sfx = 988, + c_fns007re_8_sfx = 989, + c_fns007re_9_sfx = 990, + c_fns007re_10_sfx = 991, + c_fns007re_11_sfx = 992, + c_fns007re_12_sfx = 993, + c_fns007re_Anim = 994, + c_FNS011RE_Wav_518 = 995, + c_FNS011RE_Pho_518 = 996, + c_FNS019RE_Wav_518 = 997, + c_FNS019RE_Pho_518 = 998, + c_FNS018EN_Wav_518 = 999, + c_FNS018EN_Pho_518 = 1000, + c_FNS017RE_Wav_518 = 1001, + c_FNS017RE_Pho_518 = 1002, + c_FNS016EN_Wav_518 = 1003, + c_FNS016EN_Pho_518 = 1004, + c_FNS015RE_Wav_518 = 1005, + c_FNS015RE_Pho_518 = 1006, + c_FNS014EN_Wav_518 = 1007, + c_FNS014EN_Pho_518 = 1008, + c_FNS013RE_Wav_518 = 1009, + c_FNS013RE_Pho_518 = 1010, + c_FNS012EN_Wav_518 = 1011, + c_FNS012EN_Pho_518 = 1012, + c_fns011re_0_sfx = 1013, + c_fns011re_1_sfx = 1014, + c_fns011re_2_sfx = 1015, + c_fns011re_3_sfx = 1016, + c_fns011re_4_sfx = 1017, + c_fns011re_5_sfx = 1018, + c_fns011re_6_sfx = 1019, + c_fns011re_7_sfx = 1020, + c_fns011re_8_sfx = 1021, + c_fns011re_9_sfx = 1022, + c_fns011re_10_sfx = 1023, + c_fns011re_11_sfx = 1024, + c_fns011re_12_sfx = 1025, + c_fns011re_13_sfx = 1026, + c_fns011re_14_sfx = 1027, + c_fns011re_15_sfx = 1028, + c_fns011re_16_sfx = 1029, + c_fns011re_17_sfx = 1030, + c_fns011re_18_sfx = 1031, + c_fns011re_19_sfx = 1032, + c_fns011re_20_sfx = 1033, + c_fns011re_21_sfx = 1034, + c_fns011re_22_sfx = 1035, + c_fns011re_23_sfx = 1036, + c_fns011re_24_sfx = 1037, + c_fns011re_25_sfx = 1038, + c_fns011re_Anim = 1039, + c_sns001cl_Wav_519 = 1040, + c_sns001cl_Pho_519 = 1041, + c_sns001cl_0_sfx = 1042, + c_sns001cl_1_sfx = 1043, + c_sns001cl_Anim = 1044, + c_sns002cl_Wav_520 = 1045, + c_sns002cl_Pho_520 = 1046, + c_sns002cl_0_sfx = 1047, + c_sns002cl_1_sfx = 1048, + c_sns002cl_2_sfx = 1049, + c_ElevRide = 1050, + c_ElevRide_Background_Bitmap = 1051, + c_ElevRide_Info_Ctl = 1052, + c_ElevRide_Two_Ctl = 1053, + c_ElevRide_Three_Ctl = 1054, + c_Elev1_3_Ride = 1055, + c_Meter1_3_Bitmap = 1056, + c_Elev2_3_Ride = 1057, + c_Meter2_3_Bitmap = 1058, + c_Elev3_1_Ride = 1059, + c_Meter3_1_Bitmap = 1060, + c_Elev3_2_Ride = 1061, + c_Meter3_2_Bitmap = 1062, + c_Elev2_1_Ride = 1063, + c_Meter2_1_Bitmap = 1064, + c_Elev1_2_Ride = 1065, + c_Meter1_2_Bitmap = 1066, + c_Meter3_Bitmap = 1067, + c_sns002cl_3_sfx = 1068, + c_sns002cl_Anim = 1069, + c_sns003cl_Wav_521 = 1070, + c_sns003cl_Pho_521 = 1071, + c_sns003cl_0_sfx = 1072, + c_sns003cl_1_sfx = 1073, + c_sns003cl_2_sfx = 1074, + c_sns003cl_3_sfx = 1075, + c_sns003cl_4_sfx = 1076, + c_sns003cl_Anim = 1077, + c_bns191en_0_sfx = 1078, + c_bns191en_1_sfx = 1079, + c_bns191en_2_sfx = 1080, + c_bns191en_3_sfx = 1081, + c_bns191en_4_sfx = 1082, + c_bns191en_5_sfx = 1083, + c_bns191en_6_sfx = 1084, + c_bns191en_7_sfx = 1085, + c_bns191en_8_sfx = 1086, + c_bns191en_Anim = 1087, + c_bho142en_0_sfx = 1088, + c_bho142en_1_sfx = 1089, + c_bho142en_2_sfx = 1090, + c_bho142en_Anim = 1091, + c_bic143sy_0_sfx = 1092, + c_bic143sy_1_sfx = 1093, + c_bic143sy_2_sfx = 1094, + c_bic143sy_3_sfx = 1095, + c_bic143sy_4_sfx = 1096, + c_bic143sy_5_sfx = 1097, + c_bic143sy_6_sfx = 1098, + c_bic143sy_7_sfx = 1099, + c_bic143sy_8_sfx = 1100, + c_bic143sy_9_sfx = 1101, + c_bic143sy_10_sfx = 1102, + c_bic143sy_11_sfx = 1103, + c_bic143sy_Anim = 1104, + c_SJA004BR_Wav_525 = 1105, + c_SJA004BR_Pho_525 = 1106, + c_sja004br_0_sfx = 1107, + c_sja004br_1_sfx = 1108, + c_sja004br_Anim = 1109, + c_sja005br_Wav_526 = 1110, + c_sja005br_Pho_526 = 1111, + c_sja005br_0_sfx = 1112, + c_sja005br_1_sfx = 1113, + c_ElevOpen = 1114, + c_ElevOpen_Background_Bitmap = 1115, + c_ElevOpen_LeftArrow_Ctl = 1116, + c_ElevOpen_RightArrow_Ctl = 1117, + c_Observe = 1118, + c_Observe_Background_Bitmap = 1119, + c_Observe_LeftArrow_Ctl = 1120, + c_Observe_RightArrow_Ctl = 1121, + c_Observe_Plane_Ctl = 1122, + c_Observe_Sun_Ctl = 1123, + c_Observe_Moon_Ctl = 1124, + c_Observe_SkyColor_Ctl = 1125, + c_Observe_LCab_Ctl = 1126, + c_Observe_RCab_Ctl = 1127, + c_Observe_GlobeLArrow_Ctl = 1128, + c_Observe_GlobeRArrow_Ctl = 1129, + c_Observe_Globe1_Bitmap = 1130, + c_Observe_Globe2_Bitmap = 1131, + c_Observe_Globe3_Bitmap = 1132, + c_Observe_Globe4_Bitmap = 1133, + c_Observe_Globe5_Bitmap = 1134, + c_Observe_Globe6_Bitmap = 1135, + c_Observe_Monkey_Flc = 1136, + c_Observe_Draw1_Ctl = 1137, + c_Observe_Draw2_Ctl = 1138, + c_sja005br_2_sfx = 1139, + c_SeaView = 1140, + c_SeaView_Background_Bitmap = 1141, + c_SeaView_LeftArrow_Ctl = 1142, + c_SeaView_RightArrow_Ctl = 1143, + c_sja005br_Anim = 1144, + c_ElevDown = 1145, + c_ElevDown_Background_Bitmap = 1146, + c_ElevDown_LeftArrow_Ctl = 1147, + c_ElevDown_RightArrow_Ctl = 1148, + c_ElevDown_Elevator_Ctl = 1149, + c_PoliDoor = 1150, + c_PoliDoor_Background_Bitmap = 1151, + c_PoliDoor_LeftArrow_Ctl = 1152, + c_PoliDoor_RightArrow_Ctl = 1153, + c_PoliDoor_Door_Ctl = 1154, + c_sja006br_Wav_527 = 1155, + c_sja006br_Pho_527 = 1156, + c_sja006br_0_sfx = 1157, + c_sja006br_1_sfx = 1158, + c_sja006br_2_sfx = 1159, + c_GaraDoor = 1160, + c_GaraDoor_Background_Bitmap = 1161, + c_GaraDoor_LeftArrow_Ctl = 1162, + c_GaraDoor_RightArrow_Ctl = 1163, + c_GaraDoor_Door_Ctl = 1164, + c_sja006br_3_sfx = 1165, + c_sja006br_Anim = 1166, + c_sja007br_Wav_528 = 1167, + c_sja007br_Pho_528 = 1168, + c_sja007br_0_sfx = 1169, + + c_sja007br_Anim = 1171, + c_sja008br_Wav_529 = 1172, + c_sja008br_Pho_529 = 1173, + c_sja008br_0_sfx = 1174, + c_sja008br_1_sfx = 1175, + c_sja008br_Anim = 1176, + c_sja009br_Wav_530 = 1177, + c_sja009br_Pho_530 = 1178, + c_sja009br_0_sfx = 1179, + c_JukeBox_Entity = 1180, + c_Pizza_Actor = 1181, + c_SkateBoard_Actor = 1182, + c_InfoCenter_Entity = 1183, + c_Bike_Actor = 1184, + c_MotoBk_Actor = 1185, + c_sja009br_1_sfx = 1186, + c_sja009br_2_sfx = 1187, + c_sja009br_3_sfx = 1188, + c_sja009br_4_sfx = 1189, + c_sja009br_Anim = 1190, + c_sja010br_Wav_531 = 1191, + c_sja010br_Pho_531 = 1192, + c_sja010br_0_sfx = 1193, + c_sja010br_1_sfx = 1194, + c_sja010br_2_sfx = 1195, + c_sja010br_Anim = 1196, + c_sja011br_Wav_532 = 1197, + c_sja011br_Pho_532 = 1198, + c_sja011br_0_sfx = 1199, + c_sja011br_Anim = 1200, + c_sja012br_Wav_533 = 1201, + c_sja012br_Pho_533 = 1202, + c_sja012br_0_sfx = 1203, + c_sja012br_1_sfx = 1204, + c_sja012br_Anim = 1205, + c_sja013br_Wav_534 = 1206, + c_sja013br_Pho_534 = 1207, + c_sja013br_0_sfx = 1208, + c_sja013br_1_sfx = 1209, + c_sja013br_2_sfx = 1210, + c_sja013br_3_sfx = 1211, + c_sja013br_4_sfx = 1212, + c_sja013br_Anim = 1213, + c_sja014br_Wav_535 = 1214, + c_sja014br_Pho_535 = 1215, + c_sja014br_0_sfx = 1216, + c_sja014br_1_sfx = 1217, + c_sja014br_2_sfx = 1218, + c_sja014br_3_sfx = 1219, + c_sja014br_Anim = 1220, + c_sja015br_Wav_536 = 1221, + c_sja015br_Pho_536 = 1222, + c_sja015br_0_sfx = 1223, + c_sja015br_1_sfx = 1224, + c_sja015br_Anim = 1225, + c_sja016br_Wav_537 = 1226, + c_sja016br_Pho_537 = 1227, + c_sja016br_0_sfx = 1228, + c_sja016br_1_sfx = 1229, + c_sja016br_2_sfx = 1230, + c_sja016br_3_sfx = 1231, + c_sja016br_4_sfx = 1232, + c_sja016br_Anim = 1233, + c_sja017br_Wav_538 = 1234, + c_sja017br_Pho_538 = 1235, + c_sja017br_0_sfx = 1236, + c_sja017br_1_sfx = 1237, + c_sja017br_2_sfx = 1238, + c_sja017br_3_sfx = 1239, + c_sja017br_Anim = 1240, + c_sja018br_Wav_539 = 1241, + c_sja018br_Pho_539 = 1242, + c_sja018br_0_sfx = 1243, + c_sja018br_1_sfx = 1244, + c_sja018br_2_sfx = 1245, + c_sja018br_3_sfx = 1246, + c_sja018br_Anim = 1247, + c_sja001br_Wav_540 = 1248, + c_sja001br_Pho_540 = 1249, + c_sja001br_0_sfx = 1250, + c_sja001br_1_sfx = 1251, + c_sja001br_2_sfx = 1252, + c_sja001br_Anim = 1253, + c_sja002br_Wav_541 = 1254, + c_sja002br_Pho_541 = 1255, + c_sja002br_0_sfx = 1256, + c_sja002br_1_sfx = 1257, + c_sja002br_Anim = 1258, + c_sja003br_Wav_542 = 1259, + c_sja003br_Pho_542 = 1260, + c_sja003br_0_sfx = 1261, + c_sja003br_1_sfx = 1262, + c_sja003br_2_sfx = 1263, + c_sja003br_Anim = 1264, + c_IJS005SN_Wav_543 = 1265, + c_IJS005SN_Pho_543 = 1266, + c_IJS003SN_Wav_543 = 1267, + c_IJS003SN_Pho_543 = 1268, + c_IJS001SN_Wav_543 = 1269, + c_IJS001SN_Pho_543 = 1270, + c_ijs001sn_0_sfx = 1271, + c_ijs001sn_1_sfx = 1272, + c_ijs001sn_2_sfx = 1273, + c_ijs001sn_3_sfx = 1274, + c_ijs001sn_4_sfx = 1275, + c_ijs001sn_5_sfx = 1276, + c_ijs001sn_6_sfx = 1277, + c_ijs001sn_7_sfx = 1278, + c_ijs001sn_8_sfx = 1279, + c_ijs001sn_9_sfx = 1280, + c_ijs001sn_10_sfx = 1281, + c_ijs001sn_11_sfx = 1282, + c_ijs001sn_12_sfx = 1283, + c_ijs001sn_13_sfx = 1284, + c_ijs001sn_14_sfx = 1285, + c_ijs001sn_15_sfx = 1286, + c_ijs001sn_Anim = 1287, + c_FJS148GD_Wav_544 = 1288, + c_FJS148GD_Pho_544 = 1289, + c_fjs148gd_0_sfx = 1290, + c_fjs148gd_1_sfx = 1291, + c_fjs148gd_2_sfx = 1292, + c_fjs148gd_3_sfx = 1293, + c_fjs148gd_4_sfx = 1294, + c_fjs148gd_5_sfx = 1295, + c_fjs148gd_6_sfx = 1296, + c_fjs148gd_7_sfx = 1297, + c_fjs148gd_8_sfx = 1298, + c_fjs148gd_9_sfx = 1299, + c_fjs148gd_10_sfx = 1300, + c_fjs148gd_11_sfx = 1301, + c_fjs148gd_12_sfx = 1302, + c_fjs148gd_13_sfx = 1303, + c_fjs148gd_14_sfx = 1304, + c_fjs148gd_15_sfx = 1305, + c_fjs148gd_16_sfx = 1306, + c_fjs148gd_17_sfx = 1307, + c_fjs148gd_Anim = 1308, + c_FJS150VA_Wav_545 = 1309, + c_FJS150VA_Pho_545 = 1310, + c_FJS149VA_Wav_545 = 1311, + c_FJS149VA_Pho_545 = 1312, + c_fjs149va_0_sfx = 1313, + c_fjs149va_1_sfx = 1314, + c_fjs149va_2_sfx = 1315, + c_fjs149va_3_sfx = 1316, + c_fjs149va_4_sfx = 1317, + c_fjs149va_5_sfx = 1318, + c_fjs149va_6_sfx = 1319, + c_fjs149va_Anim = 1320, + c_SJS001VA_Wav_546 = 1321, + c_SJS001VA_Pho_546 = 1322, + c_sjs001va_0_sfx = 1323, + c_sjs001va_1_sfx = 1324, + c_sjs001va_2_sfx = 1325, + c_sjs001va_3_sfx = 1326, + c_sjs001va_Anim = 1327, + c_sjs002va_Wav_547 = 1328, + c_sjs002va_Pho_547 = 1329, + c_sjs002va_0_sfx = 1330, + c_sjs002va_Anim = 1331, + c_SJS003VA_Wav_548 = 1332, + c_SJS003VA_Pho_548 = 1333, + c_sjs003va_0_sfx = 1334, + c_sjs003va_1_sfx = 1335, + c_sjs003va_Anim = 1336, + c_sjs004va_Wav_549 = 1337, + c_sjs004va_Pho_549 = 1338, + c_sjs004va_0_sfx = 1339, + c_sjs004va_Anim = 1340, + c_FJS024PG_Wav_550 = 1341, + c_FJS024PG_Pho_550 = 1342, + c_FJS023RD_Wav_550 = 1343, + c_FJS023RD_Pho_550 = 1344, + c_FJS022PG_Wav_550 = 1345, + c_FJS022PG_Pho_550 = 1346, + c_FJS021RD_Wav_550 = 1347, + c_FJS021RD_Pho_550 = 1348, + c_FJS020PG_Wav_550 = 1349, + c_FJS020PG_Pho_550 = 1350, + c_FJS019RD_Wav_550 = 1351, + c_FJS019RD_Pho_550 = 1352, + c_fjs019rd_0_sfx = 1353, + c_fjs019rd_1_sfx = 1354, + c_fjs019rd_2_sfx = 1355, + c_fjs019rd_3_sfx = 1356, + c_fjs019rd_4_sfx = 1357, + c_fjs019rd_5_sfx = 1358, + c_fjs019rd_6_sfx = 1359, + c_fjs019rd_7_sfx = 1360, + c_fjs019rd_8_sfx = 1361, + c_fjs019rd_9_sfx = 1362, + c_fjs019rd_Anim = 1363, + c_bjs009gd_0_sfx = 1364, + c_bjs009gd_1_sfx = 1365, + c_bjs009gd_2_sfx = 1366, + c_bjs009gd_3_sfx = 1367, + c_bjs009gd_4_sfx = 1368, + c_bjs009gd_5_sfx = 1369, + c_bjs009gd_6_sfx = 1370, + c_bjs009gd_7_sfx = 1371, + c_bjs009gd_8_sfx = 1372, + c_bjs009gd_9_sfx = 1373, + c_bjs009gd_10_sfx = 1374, + c_bjs009gd_11_sfx = 1375, + c_bjs009gd_Anim = 1376, + c_SJS001SN_Wav_552 = 1377, + c_SJS001SN_Pho_552 = 1378, + c_sjs001sn_0_sfx = 1379, + c_sjs001sn_1_sfx = 1380, + c_sjs001sn_Anim = 1381, + c_SJS002SN_Wav_553 = 1382, + c_SJS002SN_Pho_553 = 1383, + c_sjs002sn_0_sfx = 1384, + c_sjs002sn_1_sfx = 1385, + c_sjs002sn_2_sfx = 1386, + c_sjs002sn_Anim = 1387, + c_sjs003sn_Wav_554 = 1388, + c_sjs003sn_Pho_554 = 1389, + c_sjs003sn_0_sfx = 1390, + c_sjs003sn_1_sfx = 1391, + c_sjs003sn_2_sfx = 1392, + c_sjs003sn_3_sfx = 1393, + c_sjs003sn_Anim = 1394, + c_SJS004SN_Wav_555 = 1395, + c_SJS004SN_Pho_555 = 1396, + c_sjs004sn_0_sfx = 1397, + c_sjs004sn_1_sfx = 1398, + c_sjs004sn_Anim = 1399, + c_SJS005SN_Wav_556 = 1400, + c_SJS005SN_Pho_556 = 1401, + c_sjs005sn_0_sfx = 1402, + c_sjs005sn_1_sfx = 1403, + c_sjs005sn_2_sfx = 1404, + c_sjs005sn_Anim = 1405, + c_SNSX31SH_Wav_557 = 1406, + c_snsx31sh_0_sfx = 1407, + c_snsx31sh_Anim = 1408, + c_bns007gd_0_sfx = 1409, + c_bns007gd_1_sfx = 1410, + c_bns007gd_2_sfx = 1411, + c_bns007gd_3_sfx = 1412, + c_bns007gd_4_sfx = 1413, + c_bns007gd_5_sfx = 1414, + c_bns007gd_Anim = 1415, + c_FNSH01L4_Wav_559 = 1416, + c_FNSH01L4_Pho_559 = 1417, + c_FNSA01L2_Wav_559 = 1418, + c_FNSA01L2_Pho_559 = 1419, + c_FNSD01L2_Wav_559 = 1420, + c_FNSD01L2_Pho_559 = 1421, + c_FNSI01L1_Wav_559 = 1422, + c_FNSI01L1_Pho_559 = 1423, + c_FNSK01L1_Wav_559 = 1424, + c_FNSK01L1_Pho_559 = 1425, + c_FNSB01L2_Wav_559 = 1426, + c_FNSB01L2_Pho_559 = 1427, + c_FNSI01L4_Wav_559 = 1428, + c_FNSI01L4_Pho_559 = 1429, + c_FNSC01L3_Wav_559 = 1430, + c_FNSC01L3_Pho_559 = 1431, + c_fns001l1_0_sfx = 1432, + c_fns001l1_Anim = 1433, + c_FNSJ01L4_Wav_560 = 1434, + c_FNSJ01L4_Pho_560 = 1435, + c_FNSI01L1_Wav_560 = 1436, + c_FNSI01L1_Pho_560 = 1437, + c_FNSH01L4_Wav_560 = 1438, + c_FNSH01L4_Pho_560 = 1439, + c_FNSH01L1_Wav_560 = 1440, + c_FNSH01L1_Pho_560 = 1441, + c_FNSE01L2_Wav_560 = 1442, + c_FNSE01L2_Pho_560 = 1443, + c_FNSD01L4_Wav_560 = 1444, + c_FNSD01L4_Pho_560 = 1445, + c_FNSD01L2_Wav_560 = 1446, + c_FNSD01L2_Pho_560 = 1447, + c_FNSC01L3_Wav_560 = 1448, + c_FNSC01L3_Pho_560 = 1449, + c_FNSB01L2_Wav_560 = 1450, + c_FNSB01L2_Pho_560 = 1451, + c_FNSB01L1_Wav_560 = 1452, + c_FNSB01L1_Pho_560 = 1453, + c_FNSA01L3_Wav_560 = 1454, + c_FNSA01L3_Pho_560 = 1455, + c_FNSA01L2_Wav_560 = 1456, + c_FNSA01L2_Pho_560 = 1457, + c_FNSD01L3_Wav_560 = 1458, + c_FNSD01L3_Pho_560 = 1459, + c_FNSB01L3_Wav_560 = 1460, + c_FNSB01L3_Pho_560 = 1461, + c_fns001l2_0_sfx = 1462, + c_fns001l2_1_sfx = 1463, + c_fns001l2_2_sfx = 1464, + c_fns001l2_3_sfx = 1465, + c_fns001l2_4_sfx = 1466, + c_fns001l2_5_sfx = 1467, + c_fns001l2_6_sfx = 1468, + c_fns001l2_7_sfx = 1469, + c_fns001l2_8_sfx = 1470, + c_fns001l2_9_sfx = 1471, + c_fns001l2_10_sfx = 1472, + c_fns001l2_11_sfx = 1473, + c_fns001l2_12_sfx = 1474, + c_fns001l2_13_sfx = 1475, + c_fns001l2_14_sfx = 1476, + c_fns001l2_15_sfx = 1477, + c_fns001l2_16_sfx = 1478, + c_fns001l2_17_sfx = 1479, + c_fns001l2_Anim = 1480, + c_FRA161BM_Wav_561 = 1481, + c_FRA161BM_Pho_561 = 1482, + c_FRA160JK_Wav_561 = 1483, + c_FRA160JK_Pho_561 = 1484, + c_FRA159BM_Wav_561 = 1485, + c_FRA159BM_Pho_561 = 1486, + c_FRF158GD_Wav_561 = 1487, + c_FRF158GD_Pho_561 = 1488, + c_FRD158GD_Wav_561 = 1489, + c_FRD158GD_Pho_561 = 1490, + c_FRC158GD_Wav_561 = 1491, + c_FRC158GD_Pho_561 = 1492, + c_FRB158GD_Wav_561 = 1493, + c_FRB158GD_Pho_561 = 1494, + c_FRA157BM_Wav_561 = 1495, + c_FRA157BM_Pho_561 = 1496, + c_fra157bm_0_sfx = 1497, + c_fra157bm_1_sfx = 1498, + c_fra157bm_2_sfx = 1499, + c_fra157bm_3_sfx = 1500, + c_fra157bm_4_sfx = 1501, + c_fra157bm_5_sfx = 1502, + c_fra157bm_6_sfx = 1503, + c_fra157bm_7_sfx = 1504, + c_fra157bm_8_sfx = 1505, + c_fra157bm_9_sfx = 1506, + c_fra157bm_Anim = 1507, + c_bns145rd_0_sfx = 1508, + c_bns145rd_1_sfx = 1509, + c_bns145rd_2_sfx = 1510, + c_bns145rd_3_sfx = 1511, + c_bns145rd_4_sfx = 1512, + c_bns145rd_5_sfx = 1513, + c_bns145rd_6_sfx = 1514, + c_bns145rd_7_sfx = 1515, + c_bns145rd_8_sfx = 1516, + c_bns145rd_Anim = 1517, + c_IPS001RO_Wav_563 = 1518, + c_IPS001RO_Pho_563 = 1519, + c_ips001ro_0_sfx = 1520, + c_ips001ro_1_sfx = 1521, + c_ips001ro_2_sfx = 1522, + c_ips001ro_3_sfx = 1523, + c_ips001ro_4_sfx = 1524, + c_ips001ro_5_sfx = 1525, + c_ips001ro_6_sfx = 1526, + c_ips001ro_7_sfx = 1527, + c_ips001ro_8_sfx = 1528, + c_ips001ro_9_sfx = 1529, + c_ips001ro_10_sfx = 1530, + c_ips001ro_Anim = 1531, + c_sns010ni_Wav_564 = 1532, + c_sns010ni_Pho_564 = 1533, + c_sns010ni_0_sfx = 1534, + c_sns010ni_1_sfx = 1535, + c_sns010ni_2_sfx = 1536, + c_sns010ni_3_sfx = 1537, + c_sns010ni_Anim = 1538, + c_sns003la_Wav_565 = 1539, + c_sns003la_Pho_565 = 1540, + c_sns003la_0_sfx = 1541, + c_sns003la_1_sfx = 1542, + c_sns003la_2_sfx = 1543, + c_sns003la_3_sfx = 1544, + c_sns003la_Anim = 1545, + c_Fps182p1_Wav_566 = 1546, + c_Fps184gd_Wav_566 = 1547, + c_Fps184gd_Pho_566 = 1548, + c_Fps183p2_Wav_566 = 1549, + c_Fps181ni_Wav_566 = 1550, + c_Fps181ni_Pho_566 = 1551, + c_fps181ni_0_sfx = 1552, + c_fps181ni_1_sfx = 1553, + c_fps181ni_2_sfx = 1554, + c_fps181ni_3_sfx = 1555, + c_fps181ni_4_sfx = 1556, + c_fps181ni_5_sfx = 1557, + c_fps181ni_6_sfx = 1558, + c_fps181ni_7_sfx = 1559, + c_fps181ni_8_sfx = 1560, + c_fps181ni_Anim = 1561, + c_IPZ004PG_Wav_567 = 1562, + c_IPZ004PG_Pho_567 = 1563, + c_IPZ003RD_Wav_567 = 1564, + c_IPZ003RD_Pho_567 = 1565, + c_IPZ002PG_Wav_567 = 1566, + c_IPZ002PG_Pho_567 = 1567, + c_IPZ001RD_Wav_567 = 1568, + c_IPZ001RD_Pho_567 = 1569, + c_ipz001rd_0_sfx = 1570, + c_ipz001rd_1_sfx = 1571, + c_ipz001rd_2_sfx = 1572, + c_ipz001rd_3_sfx = 1573, + c_ipz001rd_4_sfx = 1574, + c_ipz001rd_5_sfx = 1575, + c_ipz001rd_6_sfx = 1576, + c_ipz001rd_7_sfx = 1577, + c_ipz001rd_8_sfx = 1578, + c_ipz001rd_9_sfx = 1579, + c_ipz001rd_10_sfx = 1580, + c_ipz001rd_Anim = 1581, + c_spz004ma_Wav_568 = 1582, + c_spz004ma_Pho_568 = 1583, + c_spz004ma_0_sfx = 1584, + c_spz004ma_1_sfx = 1585, + c_spz004ma_2_sfx = 1586, + c_spz004ma_3_sfx = 1587, + c_spz004ma_4_sfx = 1588, + c_spz004ma_Anim = 1589, + c_spz005ma_Wav_569 = 1590, + c_spz005ma_Pho_569 = 1591, + c_spz005ma_0_sfx = 1592, + c_spz005ma_1_sfx = 1593, + c_spz005ma_Anim = 1594, + c_spz006ma_Wav_570 = 1595, + c_spz006ma_Pho_570 = 1596, + c_spz006ma_0_sfx = 1597, + c_spz006ma_1_sfx = 1598, + c_spz006ma_Anim = 1599, + c_SPZ004PA_Wav_571 = 1600, + c_SPZ004PA_Pho_571 = 1601, + c_spz004pa_0_sfx = 1602, + c_spz004pa_1_sfx = 1603, + c_spz004pa_Anim = 1604, + c_spz013ma_Wav_572 = 1605, + c_spz013ma_Pho_572 = 1606, + c_spz013ma_0_sfx = 1607, + c_spz013ma_1_sfx = 1608, + c_spz013ma_2_sfx = 1609, + c_spz013ma_3_sfx = 1610, + c_spz013ma_Anim = 1611, + c_spz006pa_Wav_573 = 1612, + c_spz006pa_Pho_573 = 1613, + c_spz006pa_0_sfx = 1614, + c_spz006pa_1_sfx = 1615, + c_spz006pa_2_sfx = 1616, + c_spz006pa_Anim = 1617, + c_spz014ma_Wav_574 = 1618, + c_spz014ma_Pho_574 = 1619, + c_spz014ma_0_sfx = 1620, + c_spz014ma_1_sfx = 1621, + c_spz014ma_2_sfx = 1622, + c_spz014ma_3_sfx = 1623, + c_spz014ma_Anim = 1624, + c_spz005pa_Wav_575 = 1625, + c_spz005pa_Pho_575 = 1626, + c_spz005pa_0_sfx = 1627, + c_spz005pa_1_sfx = 1628, + c_spz005pa_Anim = 1629, + c_spz015ma_Wav_576 = 1630, + c_spz015ma_Pho_576 = 1631, + c_spz015ma_0_sfx = 1632, + c_spz015ma_1_sfx = 1633, + c_spz015ma_Anim = 1634, + c_spz007ma_Wav_577 = 1635, + c_spz007ma_Pho_577 = 1636, + c_spz007ma_0_sfx = 1637, + c_spz007ma_1_sfx = 1638, + c_spz007ma_2_sfx = 1639, + c_spz007ma_Anim = 1640, + c_spz013pa_Wav_578 = 1641, + c_spz013pa_Pho_578 = 1642, + c_spz013pa_0_sfx = 1643, + c_spz013pa_1_sfx = 1644, + c_spz013pa_2_sfx = 1645, + c_spz013pa_3_sfx = 1646, + c_spz013pa_Anim = 1647, + c_spz008ma_Wav_579 = 1648, + c_spz008ma_Pho_579 = 1649, + c_spz008ma_0_sfx = 1650, + c_spz008ma_Anim = 1651, + c_spz014pa_Wav_580 = 1652, + c_spz014pa_Pho_580 = 1653, + c_spz014pa_0_sfx = 1654, + c_spz014pa_Anim = 1655, + c_spz009ma_Wav_581 = 1656, + c_spz009ma_Pho_581 = 1657, + c_spz009ma_0_sfx = 1658, + c_spz009ma_1_sfx = 1659, + c_spz009ma_2_sfx = 1660, + c_spz009ma_3_sfx = 1661, + c_spz009ma_4_sfx = 1662, + c_spz009ma_5_sfx = 1663, + c_spz009ma_6_sfx = 1664, + c_spz009ma_Anim = 1665, + c_spz015pa_Wav_582 = 1666, + c_spz015pa_Pho_582 = 1667, + c_spz015pa_0_sfx = 1668, + c_spz015pa_1_sfx = 1669, + c_spz015pa_2_sfx = 1670, + c_spz015pa_Anim = 1671, + c_spz007pa_Wav_583 = 1672, + c_spz007pa_Pho_583 = 1673, + c_spz007pa_0_sfx = 1674, + c_spz007pa_1_sfx = 1675, + c_spz007pa_2_sfx = 1676, + c_spz007pa_Anim = 1677, + c_SPZ011PE_Wav_584 = 1678, + c_SPZ011PE_Pho_584 = 1679, + c_spz011pe_0_sfx = 1680, + c_spz011pe_1_sfx = 1681, + c_spz011pe_Anim = 1682, + c_spz008pa_Wav_585 = 1683, + c_spz008pa_Pho_585 = 1684, + c_spz008pa_0_sfx = 1685, + c_spz008pa_1_sfx = 1686, + c_spz008pa_Anim = 1687, + c_spz009pa_Wav_586 = 1688, + c_spz009pa_Pho_586 = 1689, + c_spz009pa_0_sfx = 1690, + c_spz009pa_1_sfx = 1691, + c_spz009pa_2_sfx = 1692, + c_spz009pa_3_sfx = 1693, + c_spz009pa_Anim = 1694, + c_spz010ma_Wav_587 = 1695, + c_spz010ma_Pho_587 = 1696, + c_spz010ma_0_sfx = 1697, + c_spz010ma_1_sfx = 1698, + c_spz010ma_2_sfx = 1699, + c_spz010ma_3_sfx = 1700, + c_spz010ma_Anim = 1701, + c_spz010pa_Wav_588 = 1702, + c_spz010pa_Pho_588 = 1703, + c_spz010pa_0_sfx = 1704, + c_spz010pa_1_sfx = 1705, + c_spz010pa_2_sfx = 1706, + c_spz010pa_Anim = 1707, + c_spz011ma_Wav_589 = 1708, + c_spz011ma_Pho_589 = 1709, + c_spz011ma_0_sfx = 1710, + c_spz011ma_1_sfx = 1711, + c_spz011ma_2_sfx = 1712, + c_spz011ma_3_sfx = 1713, + c_spz011ma_Anim = 1714, + c_spz011pa_Wav_590 = 1715, + c_spz011pa_Pho_590 = 1716, + c_spz011pa_0_sfx = 1717, + c_spz011pa_1_sfx = 1718, + c_spz011pa_2_sfx = 1719, + c_spz011pa_Anim = 1720, + c_spz012pa_Wav_591 = 1721, + c_spz012pa_Pho_591 = 1722, + c_spz012pa_0_sfx = 1723, + c_spz012pa_1_sfx = 1724, + c_spz012pa_2_sfx = 1725, + c_spz012pa_Anim = 1726, + c_spz001ma_Wav_592 = 1727, + c_spz001ma_Pho_592 = 1728, + c_spz001ma_0_sfx = 1729, + c_spz001ma_Anim = 1730, + c_spz002ma_Wav_593 = 1731, + c_spz002ma_Pho_593 = 1732, + c_spz002ma_0_sfx = 1733, + c_spz002ma_1_sfx = 1734, + c_spz002ma_2_sfx = 1735, + c_spz002ma_3_sfx = 1736, + c_spz002ma_4_sfx = 1737, + c_spz002ma_Anim = 1738, + c_spz003ma_Wav_594 = 1739, + c_spz003ma_Pho_594 = 1740, + c_spz003ma_0_sfx = 1741, + c_spz003ma_1_sfx = 1742, + c_spz003ma_2_sfx = 1743, + c_spz003ma_3_sfx = 1744, + c_spz003ma_Anim = 1745, + c_spz003pa_Wav_595 = 1746, + c_spz003pa_Pho_595 = 1747, + c_spz003pa_0_sfx = 1748, + c_spz003pa_1_sfx = 1749, + c_spz003pa_2_sfx = 1750, + c_spz003pa_3_sfx = 1751, + c_spz003pa_4_sfx = 1752, + c_spz003pa_5_sfx = 1753, + c_spz003pa_Anim = 1754, + c_FPZ167P2_Wav_596 = 1755, + c_FPZ166P1_Wav_596 = 1756, + c_fpz166p1_Anim = 1757, + c_FPZ172RD_Wav_597 = 1758, + c_FPZ172RD_Pho_597 = 1759, + c_FPZ177PG_Wav_597 = 1760, + c_FPZ177PG_Pho_597 = 1761, + c_FPZ176RD_Wav_597 = 1762, + c_FPZ176RD_Pho_597 = 1763, + c_FPZ175SY_Wav_597 = 1764, + c_FPZ175SY_Pho_597 = 1765, + c_FPZ174BD_Wav_597 = 1766, + c_FPZ174BD_Pho_597 = 1767, + c_FPZ173PG_Wav_597 = 1768, + c_FPZ173PG_Pho_597 = 1769, + c_fpz172rd_0_sfx = 1770, + c_fpz172rd_1_sfx = 1771, + c_fpz172rd_2_sfx = 1772, + c_fpz172rd_3_sfx = 1773, + c_fpz172rd_4_sfx = 1774, + c_fpz172rd_5_sfx = 1775, + c_fpz172rd_6_sfx = 1776, + c_fpz172rd_7_sfx = 1777, + c_fpz172rd_Anim = 1778, + c_spz001pa_Wav_598 = 1779, + c_spz001pa_Pho_598 = 1780, + c_spz001pa_0_sfx = 1781, + c_spz001pa_1_sfx = 1782, + c_spz001pa_2_sfx = 1783, + c_spz001pa_Anim = 1784, + c_spz002pa_Wav_599 = 1785, + c_spz002pa_Pho_599 = 1786, + c_spz002pa_0_sfx = 1787, + c_spz002pa_1_sfx = 1788, + c_spz002pa_2_sfx = 1789, + c_spz002pa_Anim = 1790, + c_ppz086bs_0_sfx = 1791, + c_ppz086bs_1_sfx = 1792, + c_ppz086bs_2_sfx = 1793, + c_ppz086bs_Anim = 1794, + c_ppz008rd_0_sfx = 1795, + c_ppz008rd_1_sfx = 1796, + c_ppz008rd_2_sfx = 1797, + c_ppz008rd_3_sfx = 1798, + c_ppz008rd_4_sfx = 1799, + c_ppz008rd_Anim = 1800, + c_ppz009pg_0_sfx = 1801, + c_ppz009pg_1_sfx = 1802, + c_ppz009pg_2_sfx = 1803, + c_ppz009pg_3_sfx = 1804, + c_ppz009pg_Anim = 1805, + c_avo918in_Wav_603 = 1806, + c_avo918in_Pho_603 = 1807, + c_ivo918in_0_sfx = 1808, + c_ivo918in_1_sfx = 1809, + c_ivo918in_2_sfx = 1810, + c_ivo918in_3_sfx = 1811, + c_ivo918in_4_sfx = 1812, + c_ivo918in_5_sfx = 1813, + c_ivo918in_6_sfx = 1814, + c_ivo918in_7_sfx = 1815, + c_ivo918in_8_sfx = 1816, + c_ivo918in_9_sfx = 1817, + c_ivo918in_10_sfx = 1818, + c_ivo918in_Anim = 1819, + c_SPZ004PE_Wav_604 = 1820, + c_SPZ004PE_Pho_604 = 1821, + c_spz004pe_0_sfx = 1822, + c_spz004pe_1_sfx = 1823, + c_spz004pe_2_sfx = 1824, + c_spz004pe_Anim = 1825, + c_SPZ005PE_Wav_605 = 1826, + c_SPZ005PE_Pho_605 = 1827, + c_spz005pe_0_sfx = 1828, + c_spz005pe_1_sfx = 1829, + c_spz005pe_2_sfx = 1830, + c_spz005pe_Anim = 1831, + c_SRP006PE_Wav_606 = 1832, + c_SRP006PE_Pho_606 = 1833, + c_srp006pe_0_sfx = 1834, + c_srp006pe_1_sfx = 1835, + c_srp006pe_2_sfx = 1836, + c_srp006pe_3_sfx = 1837, + c_srp006pe_4_sfx = 1838, + c_srp006pe_5_sfx = 1839, + c_srp006pe_Anim = 1840, + c_SPZ013PE_Wav_607 = 1841, + c_SPZ013PE_Pho_607 = 1842, + c_spz013pe_0_sfx = 1843, + c_spz013pe_1_sfx = 1844, + c_spz013pe_2_sfx = 1845, + c_spz013pe_3_sfx = 1846, + c_spz013pe_4_sfx = 1847, + c_spz013pe_5_sfx = 1848, + c_spz013pe_Anim = 1849, + c_sns001pe_Wav_608 = 1850, + c_sns001pe_Pho_608 = 1851, + c_sns001pe_0_sfx = 1852, + c_sns001pe_1_sfx = 1853, + c_sns001pe_2_sfx = 1854, + c_sns001pe_Anim = 1855, + c_FRA193PE_Wav_609 = 1856, + c_FRA193PE_Pho_609 = 1857, + c_FRA194PE_Wav_609 = 1858, + c_FRA194PE_Pho_609 = 1859, + c_FRA192PE_Wav_609 = 1860, + c_FRA192PE_Pho_609 = 1861, + c_fra192pe_0_sfx = 1862, + c_fra192pe_1_sfx = 1863, + c_fra192pe_2_sfx = 1864, + c_fra192pe_3_sfx = 1865, + c_fra192pe_4_sfx = 1866, + c_fra192pe_5_sfx = 1867, + c_fra192pe_6_sfx = 1868, + c_fra192pe_7_sfx = 1869, + c_fra192pe_8_sfx = 1870, + c_fra192pe_9_sfx = 1871, + c_fra192pe_10_sfx = 1872, + c_fra192pe_11_sfx = 1873, + c_fra192pe_12_sfx = 1874, + c_fra192pe_13_sfx = 1875, + c_fra192pe_14_sfx = 1876, + c_fra192pe_15_sfx = 1877, + c_fra192pe_16_sfx = 1878, + c_fra192pe_17_sfx = 1879, + c_fra192pe_18_sfx = 1880, + c_fra192pe_19_sfx = 1881, + c_fra192pe_20_sfx = 1882, + c_fra192pe_21_sfx = 1883, + c_fra192pe_22_sfx = 1884, + c_fra192pe_Anim = 1885, + c_FRA164MG_Wav_610 = 1886, + c_FRA164MG_Pho_610 = 1887, + c_FRA165MG_Wav_610 = 1888, + c_FRA165MG_Pho_610 = 1889, + c_FRA163MG_Wav_610 = 1890, + c_FRA163MG_Pho_610 = 1891, + c_fra163mg_0_sfx = 1892, + c_fra163mg_1_sfx = 1893, + c_fra163mg_2_sfx = 1894, + c_fra163mg_3_sfx = 1895, + c_fra163mg_4_sfx = 1896, + c_fra163mg_Anim = 1897, + c_FNS188GD_Wav_611 = 1898, + c_FNS188GD_Pho_611 = 1899, + c_FNS187GD_Wav_611 = 1900, + c_FNS187GD_Pho_611 = 1901, + c_FNS186GD_Wav_611 = 1902, + c_FNS186GD_Pho_611 = 1903, + c_FNS185GD_Wav_611 = 1904, + c_FNS185GD_Pho_611 = 1905, + c_fns185gd_0_sfx = 1906, + c_fns185gd_1_sfx = 1907, + c_fns185gd_2_sfx = 1908, + c_fns185gd_3_sfx = 1909, + c_fns185gd_4_sfx = 1910, + c_fns185gd_5_sfx = 1911, + c_fns185gd_6_sfx = 1912, + c_fns185gd_7_sfx = 1913, + c_fns185gd_8_sfx = 1914, + c_fns185gd_9_sfx = 1915, + c_fns185gd_10_sfx = 1916, + c_fns185gd_11_sfx = 1917, + c_fns185gd_12_sfx = 1918, + c_fns185gd_13_sfx = 1919, + c_fns185gd_14_sfx = 1920, + c_fns185gd_15_sfx = 1921, + c_fns185gd_16_sfx = 1922, + c_fns185gd_Anim = 1923, + c_IRT001IN_Wav_612 = 1924, + c_IRT001IN_Pho_612 = 1925, + c_irt001in_0_sfx = 1926, + c_irt001in_1_sfx = 1927, + c_irt001in_2_sfx = 1928, + c_irt001in_3_sfx = 1929, + c_irt001in_4_sfx = 1930, + c_irt001in_5_sfx = 1931, + c_irt001in_6_sfx = 1932, + c_irt001in_7_sfx = 1933, + c_irt001in_8_sfx = 1934, + c_irt001in_Anim = 1935, + c_IRT006SL_Wav_613 = 1936, + c_IRT006SL_Pho_613 = 1937, + c_IRT005SL_Wav_613 = 1938, + c_IRT005SL_Pho_613 = 1939, + c_IRT004SL_Wav_613 = 1940, + c_IRT004SL_Pho_613 = 1941, + c_IRT003SL_Wav_613 = 1942, + c_IRT003SL_Pho_613 = 1943, + c_irtx01sl_0_sfx = 1944, + c_irtx01sl_1_sfx = 1945, + c_irtx01sl_2_sfx = 1946, + c_irtx01sl_3_sfx = 1947, + c_irtx01sl_4_sfx = 1948, + c_irtx01sl_5_sfx = 1949, + c_irtx01sl_6_sfx = 1950, + c_irtx01sl_7_sfx = 1951, + c_irtx01sl_8_sfx = 1952, + c_irtx01sl_Anim = 1953, + c_FRT135DF_Wav_614 = 1954, + c_FRT135DF_Pho_614 = 1955, + c_FRT136GN_Wav_614 = 1956, + c_FRT136GN_Pho_614 = 1957, + c_frt135df_0_sfx = 1958, + c_frt135df_1_sfx = 1959, + c_frt135df_2_sfx = 1960, + c_frt135df_3_sfx = 1961, + c_frt135df_4_sfx = 1962, + c_frt135df_5_sfx = 1963, + c_frt135df_6_sfx = 1964, + c_frt135df_7_sfx = 1965, + c_frt135df_8_sfx = 1966, + c_frt135df_9_sfx = 1967, + c_frt135df_Anim = 1968, + c_FRt138Gn_Wav_615 = 1969, + c_FRt138Gn_Pho_615 = 1970, + c_FRt137DF_Wav_615 = 1971, + c_FRt137DF_Pho_615 = 1972, + c_frt137df_0_sfx = 1973, + c_frt137df_1_sfx = 1974, + c_frt137df_2_sfx = 1975, + c_frt137df_3_sfx = 1976, + c_frt137df_4_sfx = 1977, + c_frt137df_5_sfx = 1978, + c_frt137df_6_sfx = 1979, + c_frt137df_7_sfx = 1980, + c_frt137df_8_sfx = 1981, + c_frt137df_9_sfx = 1982, + c_frt137df_10_sfx = 1983, + c_frt137df_11_sfx = 1984, + c_frt137df_12_sfx = 1985, + c_frt137df_13_sfx = 1986, + c_frt137df_14_sfx = 1987, + c_frt137df_15_sfx = 1988, + c_frt137df_16_sfx = 1989, + c_frt137df_Anim = 1990, + c_FRt140Gn_Wav_616 = 1991, + c_FRt140Gn_Pho_616 = 1992, + c_FRt139DF_Wav_616 = 1993, + c_FRt139DF_Pho_616 = 1994, + c_frt139df_0_sfx = 1995, + c_frt139df_1_sfx = 1996, + c_frt139df_2_sfx = 1997, + c_frt139df_3_sfx = 1998, + c_frt139df_4_sfx = 1999, + c_frt139df_5_sfx = 2000, + c_frt139df_6_sfx = 2001, + c_frt139df_7_sfx = 2002, + c_frt139df_8_sfx = 2003, + c_frt139df_9_sfx = 2004, + c_frt139df_10_sfx = 2005 +}; + +#ifdef COMPAT_MODE +enum Script2 : int { +#else +enum Script2 { +#endif + c_frt139df_11_sfx = 2006, + c_frt139df_12_sfx = 2007, + c_frt139df_13_sfx = 2008, + c_frt139df_Anim = 2009, + c_FRT031NI_Wav_617 = 2010, + c_FRT031NI_Pho_617 = 2011, + c_FRT029SY_Wav_617 = 2012, + c_FRT029SY_Pho_617 = 2013, + c_FRT030SY_Wav_617 = 2014, + c_FRT030SY_Pho_617 = 2015, + c_FRT028SY_Wav_617 = 2016, + c_FRT028SY_Pho_617 = 2017, + c_FRT027BD_Wav_617 = 2018, + c_FRT027BD_Pho_617 = 2019, + c_FRT026PG_Wav_617 = 2020, + c_FRT026PG_Pho_617 = 2021, + c_FRT025RD_Wav_617 = 2022, + c_FRT025RD_Pho_617 = 2023, + c_frt025rd_0_sfx = 2024, + c_frt025rd_1_sfx = 2025, + c_frt025rd_2_sfx = 2026, + c_frt025rd_3_sfx = 2027, + c_frt025rd_4_sfx = 2028, + c_frt025rd_5_sfx = 2029, + c_frt025rd_6_sfx = 2030, + c_frt025rd_7_sfx = 2031, + c_frt025rd_8_sfx = 2032, + c_frt025rd_9_sfx = 2033, + c_frt025rd_10_sfx = 2034, + c_frt025rd_11_sfx = 2035, + c_frt025rd_12_sfx = 2036, + c_frt025rd_13_sfx = 2037, + c_frt025rd_14_sfx = 2038, + c_frt025rd_15_sfx = 2039, + c_frt025rd_Anim = 2040, + c_FRT134NI_Wav_618 = 2041, + c_FRT134NI_Pho_618 = 2042, + c_FRT133PG_Wav_618 = 2043, + c_FRT133PG_Pho_618 = 2044, + c_FRT132RD_Wav_618 = 2045, + c_FRT132RD_Pho_618 = 2046, + c_frt132rd_0_sfx = 2047, + c_frt132rd_1_sfx = 2048, + c_frt132rd_2_sfx = 2049, + c_frt132rd_3_sfx = 2050, + c_frt132rd_4_sfx = 2051, + c_frt132rd_5_sfx = 2052, + c_frt132rd_6_sfx = 2053, + c_frt132rd_7_sfx = 2054, + c_frt132rd_8_sfx = 2055, + c_frt132rd_9_sfx = 2056, + c_frt132rd_10_sfx = 2057, + c_frt132rd_11_sfx = 2058, + c_frt132rd_12_sfx = 2059, + c_frt132rd_13_sfx = 2060, + c_frt132rd_14_sfx = 2061, + c_frt132rd_Anim = 2062, + c_SRT001RD_Wav_619 = 2063, + c_SRT001RD_Pho_619 = 2064, + c_srt001rd_0_sfx = 2065, + c_srt001rd_1_sfx = 2066, + c_srt001rd_2_sfx = 2067, + c_srt001rd_3_sfx = 2068, + c_srt001rd_4_sfx = 2069, + c_srt001rd_5_sfx = 2070, + c_srt001rd_6_sfx = 2071, + c_srt001rd_7_sfx = 2072, + c_srt001rd_8_sfx = 2073, + c_srt001rd_9_sfx = 2074, + c_srt001rd_10_sfx = 2075, + c_srt001rd_11_sfx = 2076, + c_srt001rd_12_sfx = 2077, + c_srt001rd_13_sfx = 2078, + c_srt001rd_14_sfx = 2079, + c_srt001rd_15_sfx = 2080, + c_srt001rd_Anim = 2081, + c_SRT003BD_Wav_620 = 2082, + c_SRT003BD_Pho_620 = 2083, + c_srt003bd_0_sfx = 2084, + c_srt003bd_1_sfx = 2085, + c_srt003bd_2_sfx = 2086, + c_srt003bd_3_sfx = 2087, + c_srt003bd_4_sfx = 2088, + c_srt003bd_5_sfx = 2089, + c_srt003bd_6_sfx = 2090, + c_srt003bd_Anim = 2091, + c_sst001mg_Wav_621 = 2092, + c_sst001mg_Pho_621 = 2093, + c_sst001mg_0_sfx = 2094, + c_sst001mg_1_sfx = 2095, + c_sst001mg_2_sfx = 2096, + c_sst001mg_Anim = 2097, + c_sns004la_Wav_622 = 2098, + c_sns004la_Pho_622 = 2099, + c_sns004la_Anim = 2100, + c_sns005la_Wav_623 = 2101, + c_sns005la_Pho_623 = 2102, + c_sns005la_0_sfx = 2103, + c_sns005la_1_sfx = 2104, + c_sns005la_Anim = 2105, + c_sns006la_Wav_624 = 2106, + c_sns006la_Pho_624 = 2107, + c_sns006la_0_sfx = 2108, + c_sns006la_1_sfx = 2109, + c_sns006la_Anim = 2110, + c_sps004ni_Wav_625 = 2111, + c_sps004ni_Pho_625 = 2112, + c_sps004ni_0_sfx = 2113, + c_sps004ni_1_sfx = 2114, + c_sps004ni_2_sfx = 2115, + c_sps004ni_Anim = 2116, + c_sps005ni_Wav_626 = 2117, + c_sps005ni_Pho_626 = 2118, + c_sps005ni_0_sfx = 2119, + c_sps005ni_1_sfx = 2120, + c_sps005ni_Anim = 2121, + c_sps006ni_Wav_627 = 2122, + c_sps006ni_Pho_627 = 2123, + c_sps006ni_0_sfx = 2124, + c_sps006ni_Anim = 2125, + c_sns007la_Wav_628 = 2126, + c_sns007la_Pho_628 = 2127, + c_sns007la_0_sfx = 2128, + c_sns007la_1_sfx = 2129, + c_sns007la_2_sfx = 2130, + c_sns007la_Anim = 2131, + c_sns008la_Wav_629 = 2132, + c_sns008la_Pho_629 = 2133, + c_sns008la_0_sfx = 2134, + c_sns008la_1_sfx = 2135, + c_sns008la_2_sfx = 2136, + c_sns008la_3_sfx = 2137, + c_sns008la_Anim = 2138, + c_sns009la_Wav_630 = 2139, + c_sns009la_Pho_630 = 2140, + c_sns009la_0_sfx = 2141, + c_sns009la_1_sfx = 2142, + c_sns009la_Anim = 2143, + c_sns007ni_Wav_631 = 2144, + c_sns007ni_Pho_631 = 2145, + c_sns007ni_0_sfx = 2146, + c_sns007ni_1_sfx = 2147, + c_sns007ni_2_sfx = 2148, + c_sns007ni_Anim = 2149, + c_sns008ni_Wav_632 = 2150, + c_sns008ni_Pho_632 = 2151, + c_sns008ni_0_sfx = 2152, + c_sns008ni_1_sfx = 2153, + c_sns008ni_Anim = 2154, + c_sns009ni_Wav_633 = 2155, + c_sns009ni_Pho_633 = 2156, + c_sns009ni_0_sfx = 2157, + c_sns009ni_1_sfx = 2158, + c_sns009ni_Anim = 2159, + c_pns017ml_Wav_634 = 2160, + c_pns017ml_Pho_634 = 2161, + c_pns017ml_Anim = 2162, + c_sns010la_Wav_635 = 2163, + c_sns010la_Pho_635 = 2164, + c_sns010la_Anim = 2165, + c_sns010pe_Wav_636 = 2166, + c_sns010pe_Pho_636 = 2167, + c_sns010pe_0_sfx = 2168, + c_sns010pe_1_sfx = 2169, + c_sns010pe_2_sfx = 2170, + c_sns010pe_3_sfx = 2171, + c_sns010pe_Anim = 2172, + c_sns011la_Wav_637 = 2173, + c_sns011la_Pho_637 = 2174, + c_sns011la_0_sfx = 2175, + c_sns011la_1_sfx = 2176, + c_sns011la_2_sfx = 2177, + c_sns011la_3_sfx = 2178, + c_sns011la_Anim = 2179, + c_sns012la_Wav_638 = 2180, + c_sns012la_Pho_638 = 2181, + c_sns012la_Anim = 2182, + c_sns007pe_Wav_639 = 2183, + c_sns007pe_Pho_639 = 2184, + c_sns007pe_0_sfx = 2185, + c_sns007pe_1_sfx = 2186, + c_sns007pe_2_sfx = 2187, + c_sns007pe_3_sfx = 2188, + c_sns007pe_Anim = 2189, + c_sns008pe_Wav_640 = 2190, + c_sns008pe_Pho_640 = 2191, + c_sns008pe_0_sfx = 2192, + c_sns008pe_1_sfx = 2193, + c_sns008pe_2_sfx = 2194, + c_sns008pe_Anim = 2195, + c_sns013la_Wav_641 = 2196, + c_sns013la_Pho_641 = 2197, + c_sns013la_0_sfx = 2198, + c_sns013la_1_sfx = 2199, + c_sns013la_Anim = 2200, + c_sns013ni_Wav_642 = 2201, + c_sns013ni_Pho_642 = 2202, + c_sns013ni_Anim = 2203, + c_sns014la_Wav_643 = 2204, + c_sns014la_Pho_643 = 2205, + c_sns014la_0_sfx = 2206, + c_sns014la_Anim = 2207, + c_sns014ni_Wav_644 = 2208, + c_sns014ni_Pho_644 = 2209, + c_sns014ni_0_sfx = 2210, + c_sns014ni_1_sfx = 2211, + c_sns014ni_2_sfx = 2212, + c_sns014ni_3_sfx = 2213, + c_sns014ni_Anim = 2214, + c_sns015la_Wav_645 = 2215, + c_sns015la_Pho_645 = 2216, + c_sns015la_0_sfx = 2217, + c_sns015la_1_sfx = 2218, + c_sns015la_2_sfx = 2219, + c_sns015la_Anim = 2220, + c_sns015ni_Wav_646 = 2221, + c_sns015ni_Pho_646 = 2222, + c_sns015ni_0_sfx = 2223, + c_sns015ni_1_sfx = 2224, + c_sns015ni_Anim = 2225, + c_sns011ni_Wav_647 = 2226, + c_sns011ni_Pho_647 = 2227, + c_sns011ni_0_sfx = 2228, + c_sns011ni_1_sfx = 2229, + c_sns011ni_Anim = 2230, + c_sns012ni_Wav_648 = 2231, + c_sns012ni_Pho_648 = 2232, + c_sns012ni_Anim = 2233, + c_sns014pe_Wav_649 = 2234, + c_sns014pe_Pho_649 = 2235, + c_sns014pe_0_sfx = 2236, + c_sns014pe_1_sfx = 2237, + c_sns014pe_Anim = 2238, + c_sns015pe_Wav_650 = 2239, + c_sns015pe_Pho_650 = 2240, + c_sns015pe_0_sfx = 2241, + c_sns015pe_1_sfx = 2242, + c_sns015pe_2_sfx = 2243, + c_sns015pe_3_sfx = 2244, + c_sns015pe_Anim = 2245, + c_sns003pe_Wav_651 = 2246, + c_sns003pe_Pho_651 = 2247, + c_sns003pe_0_sfx = 2248, + c_sns003pe_1_sfx = 2249, + c_sns003pe_2_sfx = 2250, + c_sns003pe_3_sfx = 2251, + c_sns003pe_Anim = 2252, + c_sns017ni_Wav_652 = 2253, + c_sns017ni_Pho_652 = 2254, + c_sns017ni_0_sfx = 2255, + c_sns017ni_1_sfx = 2256, + c_sns017ni_2_sfx = 2257, + c_sns017ni_3_sfx = 2258, + c_sns017ni_Anim = 2259, + c_sps001ni_Wav_653 = 2260, + c_sps001ni_Pho_653 = 2261, + c_sps001ni_Anim = 2262, + c_sps002ni_Wav_654 = 2263, + c_sps002ni_Pho_654 = 2264, + c_sps002ni_0_sfx = 2265, + c_sps002ni_1_sfx = 2266, + c_sps002ni_2_sfx = 2267, + c_sps002ni_Anim = 2268, + c_sps003ni_Wav_655 = 2269, + c_sps003ni_Pho_655 = 2270, + c_sps003ni_0_sfx = 2271, + c_sps003ni_1_sfx = 2272, + c_sps003ni_Anim = 2273, + c_sns017la_Wav_656 = 2274, + c_sns017la_Pho_656 = 2275, + c_sns017la_0_sfx = 2276, + c_sns017la_1_sfx = 2277, + c_sns017la_Anim = 2278, + c_sps001la_Wav_657 = 2279, + c_sps001la_Pho_657 = 2280, + c_sps001la_0_sfx = 2281, + c_sps001la_Anim = 2282, + c_sps002la_Wav_658 = 2283, + c_sps002la_Pho_658 = 2284, + c_sps002la_Anim = 2285, + c_bns005pg_0_sfx = 2286, + c_bns005pg_1_sfx = 2287, + c_bns005pg_2_sfx = 2288, + c_bns005pg_3_sfx = 2289, + c_bns005pg_Anim = 2290, + c_sns001ml_Wav_660 = 2291, + c_sns001ml_Pho_660 = 2292, + c_sns001ml_0_sfx = 2293, + c_sns001ml_1_sfx = 2294, + c_sns001ml_2_sfx = 2295, + c_sns001ml_Anim = 2296, + c_sns002mg_Wav_661 = 2297, + c_sns002mg_Pho_661 = 2298, + c_sns002mg_0_sfx = 2299, + c_sns002mg_1_sfx = 2300, + c_sns002mg_2_sfx = 2301, + c_sns002mg_3_sfx = 2302, + c_sns002mg_4_sfx = 2303, + c_sns002mg_5_sfx = 2304, + c_sns002mg_6_sfx = 2305, + c_sns002mg_7_sfx = 2306, + c_sns002mg_Anim = 2307, + c_sns002ml_Wav_662 = 2308, + c_sns002ml_Pho_662 = 2309, + c_sns002ml_0_sfx = 2310, + c_sns002ml_1_sfx = 2311, + c_sns002ml_Anim = 2312, + c_sns002pe_Wav_663 = 2313, + c_sns002pe_Pho_663 = 2314, + c_sns002pe_0_sfx = 2315, + c_sns002pe_1_sfx = 2316, + c_sns002pe_Anim = 2317, + c_sns003mg_Wav_664 = 2318, + c_sns003mg_Pho_664 = 2319, + c_sns003mg_0_sfx = 2320, + c_sns003mg_1_sfx = 2321, + c_sns003mg_Anim = 2322, + c_sns004mg_Wav_665 = 2323, + c_sns004mg_Pho_665 = 2324, + c_sns004mg_0_sfx = 2325, + c_sns004mg_1_sfx = 2326, + c_sns004mg_2_sfx = 2327, + c_sns004mg_3_sfx = 2328, + c_sns004mg_Anim = 2329, + c_sns004rd_Wav_666 = 2330, + c_sns004rd_Pho_666 = 2331, + c_sns004rd_0_sfx = 2332, + c_sns004rd_1_sfx = 2333, + c_sns004rd_Anim = 2334, + c_sns006bd_Wav_667 = 2335, + c_sns006bd_Pho_667 = 2336, + c_sns006bd_0_sfx = 2337, + c_sns006bd_1_sfx = 2338, + c_sns006bd_2_sfx = 2339, + c_sns006bd_Anim = 2340, + c_sns006ro_Wav_668 = 2341, + c_sns006ro_Pho_668 = 2342, + c_sns006ro_0_sfx = 2343, + c_sns006ro_1_sfx = 2344, + c_sns006ro_Anim = 2345, + c_sns011in_Wav_669 = 2346, + c_sns011in_Pho_669 = 2347, + c_sns011in_0_sfx = 2348, + c_sns011in_1_sfx = 2349, + c_sns011in_2_sfx = 2350, + c_sns011in_Anim = 2351, + c_sps001ro_Wav_670 = 2352, + c_sps001ro_Pho_670 = 2353, + c_sps001ro_0_sfx = 2354, + c_sps001ro_1_sfx = 2355, + c_sps001ro_2_sfx = 2356, + c_sps001ro_Anim = 2357, + c_sps002ro_Wav_671 = 2358, + c_sps002ro_Pho_671 = 2359, + c_sps002ro_0_sfx = 2360, + c_sps002ro_1_sfx = 2361, + c_sps002ro_Anim = 2362, + c_SPS003RO_Wav_672 = 2363, + c_SPS003RO_Pho_672 = 2364, + c_sps003ro_0_sfx = 2365, + c_sps003ro_1_sfx = 2366, + c_sps003ro_Anim = 2367, + c_SPS004RO_Wav_673 = 2368, + c_SPS004RO_Pho_673 = 2369, + c_sps004ro_Anim = 2370, + c_SRT005PG_Wav_674 = 2371, + c_SRT005PG_Pho_674 = 2372, + c_srt005pg_0_sfx = 2373, + c_srt005pg_Anim = 2374, + c_pns100ml_0_sfx = 2375, + c_pns100ml_1_sfx = 2376, + c_pns100ml_2_sfx = 2377, + c_pns100ml_Anim = 2378, + c_PPZ029RD_Wav_676 = 2379, + c_PPZ029RD_Pho_676 = 2380, + c_ppz029rd_0_sfx = 2381, + c_ppz029rd_1_sfx = 2382, + c_ppz029rd_Anim = 2383, + c_sns007sy_Wav_677 = 2384, + c_sns007sy_Pho_677 = 2385, + c_sns007sy_0_sfx = 2386, + c_sns007sy_Anim = 2387, + c_cnsx12la_Anim = 2388, + c_cnsx12ni_Anim = 2389, + c_IJS006SN_Wav_680 = 2390, + c_IJS006SN_Pho_680 = 2391, + c_ijs006sn_0_sfx = 2392, + c_ijs006sn_1_sfx = 2393, + c_ijs006sn_2_sfx = 2394, + c_ijs006sn_3_sfx = 2395, + c_ijs006sn_4_sfx = 2396, + c_ijs006sn_5_sfx = 2397, + c_ijs006sn_6_sfx = 2398, + c_ijs006sn_7_sfx = 2399, + c_ijs006sn_8_sfx = 2400, + c_ijs006sn_9_sfx = 2401, + c_ijs006sn_Anim = 2402, + c_IGS008NA_Wav_681 = 2403, + c_IGS008NA_Pho_681 = 2404, + c_igs008na_0_sfx = 2405, + c_igs008na_1_sfx = 2406, + c_igs008na_Anim = 2407, + c_irt007in_Wav_682 = 2408, + c_irt007in_Pho_682 = 2409, + c_irt007in_0_sfx = 2410, + c_irt007in_1_sfx = 2411, + c_irt007in_2_sfx = 2412, + c_irt007in_3_sfx = 2413, + c_irt007in_4_sfx = 2414, + c_irt007in_5_sfx = 2415, + c_irt007in_Anim = 2416, + c_IPS002RO_Wav_683 = 2417, + c_IPS002RO_Pho_683 = 2418, + c_ips002ro_0_sfx = 2419, + c_ips002ro_1_sfx = 2420, + c_ips002ro_2_sfx = 2421, + c_ips002ro_3_sfx = 2422, + c_ips002ro_Anim = 2423, + c_hho142cl_Wav_684 = 2424, + c_hho142cl_Pho_684 = 2425, + c_hho141cl_Wav_684 = 2426, + c_hho141cl_Pho_684 = 2427, + c_hho142cl_0_sfx = 2428, + c_hho142cl_1_sfx = 2429, + c_hho142cl_2_sfx = 2430, + c_hho142cl_3_sfx = 2431, + c_hho142cl_4_sfx = 2432, + c_hho142cl_5_sfx = 2433, + c_hho142cl_6_sfx = 2434, + c_hho142cl_7_sfx = 2435, + c_hho142cl_8_sfx = 2436, + c_hho142cl_9_sfx = 2437, + c_hho142cl_10_sfx = 2438, + c_hho142cl_11_sfx = 2439, + c_hho142cl_12_sfx = 2440, + c_hho142cl_13_sfx = 2441, + c_hho142cl_14_sfx = 2442, + c_hho142cl_15_sfx = 2443, + c_hho142cl_Anim = 2444, + c_hho143cl_Wav_685 = 2445, + c_hho143cl_Pho_685 = 2446, + c_hho141cl_Wav_685 = 2447, + c_hho141cl_Pho_685 = 2448, + c_hho143cl_0_sfx = 2449, + c_hho143cl_1_sfx = 2450, + c_hho143cl_2_sfx = 2451, + c_hho143cl_3_sfx = 2452, + c_hho143cl_4_sfx = 2453, + c_hho143cl_5_sfx = 2454, + c_hho143cl_6_sfx = 2455, + c_hho143cl_7_sfx = 2456, + c_hho143cl_8_sfx = 2457, + c_hho143cl_9_sfx = 2458, + c_hho143cl_10_sfx = 2459, + c_hho143cl_11_sfx = 2460, + c_hho143cl_12_sfx = 2461, + c_hho143cl_Anim = 2462, + c_hho144cl_Wav_686 = 2463, + c_hho144cl_Pho_686 = 2464, + c_hho141cl_Wav_686 = 2465, + c_hho141cl_Pho_686 = 2466, + c_hho144cl_0_sfx = 2467, + c_hho144cl_1_sfx = 2468, + c_hho144cl_2_sfx = 2469, + c_hho144cl_3_sfx = 2470, + c_hho144cl_4_sfx = 2471, + c_hho144cl_5_sfx = 2472, + c_hho144cl_6_sfx = 2473, + c_hho144cl_7_sfx = 2474, + c_hho144cl_8_sfx = 2475, + c_hho144cl_9_sfx = 2476, + c_hho144cl_10_sfx = 2477, + c_hho144cl_Anim = 2478, + c_hho032re_Wav_687 = 2479, + c_hho032re_Pho_687 = 2480, + c_hho031en_Wav_687 = 2481, + c_hho031en_Pho_687 = 2482, + c_hho030re_Wav_687 = 2483, + c_hho030re_Pho_687 = 2484, + c_hho029en_Wav_687 = 2485, + c_hho029en_Pho_687 = 2486, + c_hho028re_Wav_687 = 2487, + c_hho028re_Pho_687 = 2488, + c_hho027en_Wav_687 = 2489, + c_hho027en_Pho_687 = 2490, + c_hho027en_0_sfx = 2491, + c_hho027en_1_sfx = 2492, + c_hho027en_2_sfx = 2493, + c_hho027en_3_sfx = 2494, + c_hho027en_4_sfx = 2495, + c_hho027en_5_sfx = 2496, + c_hho027en_6_sfx = 2497, + c_hho027en_7_sfx = 2498, + c_hho027en_8_sfx = 2499, + c_hho027en_9_sfx = 2500, + c_hho027en_10_sfx = 2501, + c_hho027en_11_sfx = 2502, + c_hho027en_12_sfx = 2503, + c_hho027en_13_sfx = 2504, + c_hho027en_14_sfx = 2505, + c_hho027en_15_sfx = 2506, + c_hho027en_16_sfx = 2507, + c_hho027en_17_sfx = 2508, + c_hho027en_18_sfx = 2509, + c_hho027en_19_sfx = 2510, + c_hho027en_20_sfx = 2511, + c_hho027en_21_sfx = 2512, + c_hho027en_22_sfx = 2513, + c_hho027en_23_sfx = 2514, + c_hho027en_24_sfx = 2515, + c_hho027en_Anim = 2516, + c_HPS126EN_Wav_688 = 2517, + c_HPS126EN_Pho_688 = 2518, + c_HPS120BD_Wav_688 = 2519, + c_HPS120BD_Pho_688 = 2520, + c_HPS119BD_Wav_688 = 2521, + c_HPS119BD_Pho_688 = 2522, + c_HPS118BD_Wav_688 = 2523, + c_HPS118BD_Pho_688 = 2524, + c_HPS116JK_Wav_688 = 2525, + c_HPS116JK_Pho_688 = 2526, + c_HPS127RE_Wav_688 = 2527, + c_HPS127RE_Pho_688 = 2528, + c_HPS117BD_Wav_688 = 2529, + c_HPS117BD_Pho_688 = 2530, + c_hps116bd_0_sfx = 2531, + c_hps116bd_1_sfx = 2532, + c_hps116bd_2_sfx = 2533, + c_hps116bd_3_sfx = 2534, + c_hps116bd_4_sfx = 2535, + c_hps116bd_5_sfx = 2536, + c_hps116bd_6_sfx = 2537, + c_hps116bd_7_sfx = 2538, + c_hps116bd_8_sfx = 2539, + c_hps116bd_9_sfx = 2540, + c_hps116bd_Anim = 2541, + c_HPS117BD_Wav_689 = 2542, + c_HPS117BD_Pho_689 = 2543, + c_HPS120BD_Wav_689 = 2544, + c_HPS120BD_Pho_689 = 2545, + c_HPS119BD_Wav_689 = 2546, + c_HPS119BD_Pho_689 = 2547, + c_HPS118BD_Wav_689 = 2548, + c_HPS118BD_Pho_689 = 2549, + c_hps117bd_0_sfx = 2550, + c_hps117bd_1_sfx = 2551, + c_hps117bd_2_sfx = 2552, + c_hps117bd_3_sfx = 2553, + c_hps117bd_4_sfx = 2554, + c_hps117bd_5_sfx = 2555, + c_hps117bd_Anim = 2556, + c_HPS117BD_Wav_690 = 2557, + c_HPS117BD_Pho_690 = 2558, + c_HPS120BD_Wav_690 = 2559, + c_HPS120BD_Pho_690 = 2560, + c_HPS119BD_Wav_690 = 2561, + c_HPS119BD_Pho_690 = 2562, + c_HPS118BD_Wav_690 = 2563, + c_HPS118BD_Pho_690 = 2564, + c_HPS127RE_Wav_690 = 2565, + c_HPS127RE_Pho_690 = 2566, + c_HPS119EN_Wav_690 = 2567, + c_HPS119EN_Pho_690 = 2568, + c_HPS118RE_Wav_690 = 2569, + c_HPS118RE_Pho_690 = 2570, + c_HPS126EN_Wav_690 = 2571, + c_HPS126EN_Pho_690 = 2572, + c_hps118re_0_sfx = 2573, + c_hps118re_1_sfx = 2574, + c_hps118re_2_sfx = 2575, + c_hps118re_3_sfx = 2576, + c_hps118re_4_sfx = 2577, + c_hps118re_5_sfx = 2578, + c_hps118re_6_sfx = 2579, + c_hps118re_7_sfx = 2580, + c_hps118re_8_sfx = 2581, + c_hps118re_Anim = 2582, + c_HPS117BD_Wav_691 = 2583, + c_HPS117BD_Pho_691 = 2584, + c_HPS120BD_Wav_691 = 2585, + c_HPS120BD_Pho_691 = 2586, + c_HPS119BD_Wav_691 = 2587, + c_HPS119BD_Pho_691 = 2588, + c_HPS118BD_Wav_691 = 2589, + c_HPS118BD_Pho_691 = 2590, + c_HPS129RE_Wav_691 = 2591, + c_HPS129RE_Pho_691 = 2592, + c_HPS121RE_Wav_691 = 2593, + c_HPS121RE_Pho_691 = 2594, + c_HPS120EN_Wav_691 = 2595, + c_HPS120EN_Pho_691 = 2596, + c_HPS128EN_Wav_691 = 2597, + c_HPS128EN_Pho_691 = 2598, + c_hps120en_0_sfx = 2599, + c_hps120en_1_sfx = 2600, + c_hps120en_2_sfx = 2601, + c_hps120en_3_sfx = 2602, + c_hps120en_4_sfx = 2603, + c_hps120en_5_sfx = 2604, + c_hps120en_6_sfx = 2605, + c_hps120en_7_sfx = 2606, + c_hps120en_8_sfx = 2607, + c_hps120en_Anim = 2608, + c_HPS133RE_Wav_692 = 2609, + c_HPS133RE_Pho_692 = 2610, + c_HPS132RE_Wav_692 = 2611, + c_HPS132RE_Pho_692 = 2612, + c_HPS125EN_Wav_692 = 2613, + c_HPS125EN_Pho_692 = 2614, + c_HPS124RE_Wav_692 = 2615, + c_HPS124RE_Pho_692 = 2616, + c_HPS124EN_Wav_692 = 2617, + c_HPS124EN_Pho_692 = 2618, + c_HPS117BD_Wav_692 = 2619, + c_HPS117BD_Pho_692 = 2620, + c_HPS120BD_Wav_692 = 2621, + c_HPS120BD_Pho_692 = 2622, + c_HPS119BD_Wav_692 = 2623, + c_HPS119BD_Pho_692 = 2624, + c_HPS118BD_Wav_692 = 2625, + c_HPS118BD_Pho_692 = 2626, + c_HPS131RE_Wav_692 = 2627, + c_HPS131RE_Pho_692 = 2628, + c_HPS123RE_Wav_692 = 2629, + c_HPS123RE_Pho_692 = 2630, + c_HPS122EN_Wav_692 = 2631, + c_HPS122EN_Pho_692 = 2632, + c_HPS130EN_Wav_692 = 2633, + c_HPS130EN_Pho_692 = 2634, + c_hps122en_0_sfx = 2635, + c_hps122en_1_sfx = 2636, + c_hps122en_2_sfx = 2637, + c_hps122en_3_sfx = 2638, + c_hps122en_Anim = 2639, + c_HPZ050BD_Wav_693 = 2640, + c_HPZ050BD_Pho_693 = 2641, + c_HPZ047PE_Wav_693 = 2642, + c_HPZ047PE_Pho_693 = 2643, + c_HPZ051GD_Wav_693 = 2644, + c_HPZ051GD_Pho_693 = 2645, + c_hpz047pe_0_sfx = 2646, + c_hpz047pe_1_sfx = 2647, + c_hpz047pe_2_sfx = 2648, + c_hpz047pe_3_sfx = 2649, + c_hpz047pe_Anim = 2650, + c_HPZ050BD_Wav_694 = 2651, + c_HPZ050BD_Pho_694 = 2652, + c_HPZ048PE_Wav_694 = 2653, + c_HPZ048PE_Pho_694 = 2654, + c_HPZ051GD_Wav_694 = 2655, + c_HPZ051GD_Pho_694 = 2656, + c_hpz048pe_0_sfx = 2657, + c_hpz048pe_1_sfx = 2658, + c_hpz048pe_2_sfx = 2659, + c_hpz048pe_3_sfx = 2660, + c_hpz048pe_Anim = 2661, + c_HPZ050BD_Wav_695 = 2662, + c_HPZ050BD_Pho_695 = 2663, + c_HPZ049BD_Wav_695 = 2664, + c_HPZ049BD_Pho_695 = 2665, + c_HPZ051GD_Wav_695 = 2666, + c_HPZ051GD_Pho_695 = 2667, + c_hpz049bd_0_sfx = 2668, + c_hpz049bd_1_sfx = 2669, + c_hpz049bd_2_sfx = 2670, + c_hpz049bd_3_sfx = 2671, + c_hpz049bd_Anim = 2672, + c_HPZ050BD_Wav_696 = 2673, + c_HPZ050BD_Pho_696 = 2674, + c_HPZ047PE_Wav_696 = 2675, + c_HPZ047PE_Pho_696 = 2676, + c_HPZ051GD_Wav_696 = 2677, + c_HPZ051GD_Pho_696 = 2678, + c_hpz050bd_0_sfx = 2679, + c_hpz050bd_1_sfx = 2680, + c_hpz050bd_2_sfx = 2681, + c_hpz050bd_3_sfx = 2682, + c_hpz050bd_Anim = 2683, + c_HPZ052MA_Wav_697 = 2684, + c_HPZ052MA_Pho_697 = 2685, + c_HPZB51GD_Wav_697 = 2686, + c_HPZB51GD_Pho_697 = 2687, + c_hpz052ma_0_sfx = 2688, + c_hpz052ma_1_sfx = 2689, + c_hpz052ma_Anim = 2690, + c_HPZ053PA_Wav_698 = 2691, + c_HPZ053PA_Pho_698 = 2692, + c_HPZB51GD_Wav_698 = 2693, + c_HPZB51GD_Pho_698 = 2694, + c_hpz053pa_0_sfx = 2695, + c_hpz053pa_1_sfx = 2696, + c_hpz053pa_Anim = 2697, + c_HPZ070EN_Wav_699 = 2698, + c_HPZ070EN_Pho_699 = 2699, + c_HPZ074EN_Wav_699 = 2700, + c_HPZ074EN_Pho_699 = 2701, + c_HPZ072EN_Wav_699 = 2702, + c_HPZ072EN_Pho_699 = 2703, + c_HPZ073RE_Wav_699 = 2704, + c_HPZ073RE_Pho_699 = 2705, + c_HPZ071RE_Wav_699 = 2706, + c_HPZ071RE_Pho_699 = 2707, + c_HPZ069RE_Wav_699 = 2708, + c_HPZ069RE_Pho_699 = 2709, + c_HPZ068EN_Wav_699 = 2710, + c_HPZ068EN_Pho_699 = 2711, + c_HPZC63DL_Wav_699 = 2712, + c_HPZD64CA_Wav_699 = 2713, + c_HPZH60DL_Wav_699 = 2714, + c_HPZF60DL_Wav_699 = 2715, + c_HPZE60DL_Wav_699 = 2716, + c_HPZD60DL_Wav_699 = 2717, + c_HPZB60DL_Wav_699 = 2718, + c_HPZ058PA_Wav_699 = 2719, + c_HPZ058PA_Pho_699 = 2720, + c_HPZ066PA_Wav_699 = 2721, + c_HPZ066PA_Pho_699 = 2722, + c_HPZ059SH_Wav_699 = 2723, + c_HPZ057SH_Wav_699 = 2724, + c_HPZ055PA_Wav_699 = 2725, + c_HPZ055PA_Pho_699 = 2726, + c_HPZ067P1_Wav_699 = 2727, + c_HPZB54GD_Wav_699 = 2728, + c_HPZB54GD_Pho_699 = 2729, + c_HPZC54GD_Wav_699 = 2730, + c_HPZC54GD_Pho_699 = 2731, + c_HPZE54GD_Wav_699 = 2732, + c_HPZE54GD_Pho_699 = 2733, + c_HPZF54GD_Wav_699 = 2734, + c_HPZF54GD_Pho_699 = 2735, + c_HPZA54GD_Wav_699 = 2736, + c_HPZA54GD_Pho_699 = 2737, + c_hpz055pa_0_sfx = 2738, + c_hpz055pa_1_sfx = 2739, + c_hpz055pa_2_sfx = 2740, + c_hpz055pa_3_sfx = 2741, + c_hpz055pa_4_sfx = 2742, + c_hpz055pa_5_sfx = 2743, + c_hpz055pa_6_sfx = 2744, + c_hpz055pa_7_sfx = 2745, + c_hpz055pa_8_sfx = 2746, + c_hpz055pa_9_sfx = 2747, + c_hpz055pa_10_sfx = 2748, + c_hpz055pa_11_sfx = 2749, + c_hpz055pa_12_sfx = 2750, + c_hpz055pa_13_sfx = 2751, + c_hpz055pa_14_sfx = 2752, + c_hpz055pa_15_sfx = 2753, + c_hpz055pa_Anim = 2754, + c_HPZ070EN_Wav_700 = 2755, + c_HPZ070EN_Pho_700 = 2756, + c_HPZ074EN_Wav_700 = 2757, + c_HPZ074EN_Pho_700 = 2758, + c_HPZ072EN_Wav_700 = 2759, + c_HPZ072EN_Pho_700 = 2760, + c_HPZ073RE_Wav_700 = 2761, + c_HPZ073RE_Pho_700 = 2762, + c_HPZ071RE_Wav_700 = 2763, + c_HPZ071RE_Pho_700 = 2764, + c_HPZ069RE_Wav_700 = 2765, + c_HPZ069RE_Pho_700 = 2766, + c_HPZ068EN_Wav_700 = 2767, + c_HPZ068EN_Pho_700 = 2768, + c_HPZC63DL_Wav_700 = 2769, + c_HPZD64CA_Wav_700 = 2770, + c_HPZH60DL_Wav_700 = 2771, + c_HPZF60DL_Wav_700 = 2772, + c_HPZE60DL_Wav_700 = 2773, + c_HPZD60DL_Wav_700 = 2774, + c_HPZB60DL_Wav_700 = 2775, + c_HPZ061MA_Wav_700 = 2776, + c_HPZ061MA_Pho_700 = 2777, + c_HPZ065MA_Wav_700 = 2778, + c_HPZ065MA_Pho_700 = 2779, + c_HPZ059SH_Wav_700 = 2780, + c_HPZ057SH_Wav_700 = 2781, + c_HPZ057MA_Wav_700 = 2782, + c_HPZ057MA_Pho_700 = 2783, + c_HPZ067P1_Wav_700 = 2784, + c_HPZB54GD_Wav_700 = 2785, + c_HPZB54GD_Pho_700 = 2786, + c_HPZC54GD_Wav_700 = 2787, + c_HPZC54GD_Pho_700 = 2788, + c_HPZE54GD_Wav_700 = 2789, + c_HPZE54GD_Pho_700 = 2790, + c_HPZF54GD_Wav_700 = 2791, + c_HPZF54GD_Pho_700 = 2792, + c_HPZA54GD_Wav_700 = 2793, + c_HPZA54GD_Pho_700 = 2794, + c_hpz057ma_0_sfx = 2795, + c_hpz057ma_1_sfx = 2796, + c_hpz057ma_2_sfx = 2797, + c_hpz057ma_3_sfx = 2798, + c_hpz057ma_4_sfx = 2799, + c_hpz057ma_5_sfx = 2800, + c_hpz057ma_6_sfx = 2801, + c_hpz057ma_7_sfx = 2802, + c_hpz057ma_8_sfx = 2803, + c_hpz057ma_9_sfx = 2804, + c_hpz057ma_10_sfx = 2805, + c_hpz057ma_11_sfx = 2806, + c_hpz057ma_12_sfx = 2807, + c_hpz057ma_13_sfx = 2808, + c_hpz057ma_14_sfx = 2809, + c_hpz057ma_15_sfx = 2810, + c_hpz057ma_Anim = 2811, + c_HPZA51GD_Wav_701 = 2812, + c_HPZA51GD_Pho_701 = 2813, + c_hpza51gd_0_sfx = 2814, + c_hpza51gd_1_sfx = 2815, + c_hpza51gd_Anim = 2816, + c_HPZB51GD_Wav_702 = 2817, + c_HPZB51GD_Pho_702 = 2818, + c_hpzb51gd_0_sfx = 2819, + c_hpzb51gd_1_sfx = 2820, + c_hpzb51gd_2_sfx = 2821, + c_hpzb51gd_Anim = 2822, + c_HPZC51GD_Wav_703 = 2823, + c_HPZC51GD_Pho_703 = 2824, + c_hpzc51gd_0_sfx = 2825, + c_hpzc51gd_1_sfx = 2826, + c_hpzc51gd_2_sfx = 2827, + c_hpzc51gd_3_sfx = 2828, + c_hpzc51gd_Anim = 2829, + c_HPZF51GD_Wav_704 = 2830, + c_HPZF51GD_Pho_704 = 2831, + c_hpzf51gd_0_sfx = 2832, + c_hpzf51gd_Anim = 2833, + c_HPZA51GD_Wav_705 = 2834, + c_HPZA51GD_Pho_705 = 2835, + c_hpzw51gd_0_sfx = 2836, + c_hpzw51gd_1_sfx = 2837, + c_hpzw51gd_Anim = 2838, + c_HPZB51GD_Wav_706 = 2839, + c_HPZB51GD_Pho_706 = 2840, + c_hpzx51gd_0_sfx = 2841, + c_hpzx51gd_1_sfx = 2842, + c_hpzx51gd_Anim = 2843, + c_HPZC51GD_Wav_707 = 2844, + c_HPZC51GD_Pho_707 = 2845, + c_hpzy51gd_0_sfx = 2846, + c_hpzy51gd_1_sfx = 2847, + c_hpzy51gd_Anim = 2848, + c_HPZF51GD_Wav_708 = 2849, + c_HPZF51GD_Pho_708 = 2850, + c_hpzz51gd_0_sfx = 2851, + c_hpzz51gd_1_sfx = 2852, + c_hpzz51gd_Anim = 2853, + c_nic002pr_0_sfx = 2854, + c_nic002pr_Anim = 2855, + c_nic003pr_0_sfx = 2856, + c_nic003pr_1_sfx = 2857, + c_nic003pr_Anim = 2858, + c_nic004pr_0_sfx = 2859, + c_nic004pr_1_sfx = 2860, + c_nic004pr_2_sfx = 2861, + c_nic004pr_Anim = 2862, + c_PPS025NI_Wav_712 = 2863, + c_PPS025NI_Pho_712 = 2864, + c_PPS024NI_Wav_712 = 2865, + c_PPS024NI_Pho_712 = 2866, + c_pps025ni_0_sfx = 2867, + c_pps025ni_1_sfx = 2868, + c_pps025ni_Anim = 2869, + c_PPS026NI_Wav_713 = 2870, + c_PPS026NI_Pho_713 = 2871, + c_PPS024NI_Wav_713 = 2872, + c_PPS024NI_Pho_713 = 2873, + c_pps026ni_0_sfx = 2874, + c_pps026ni_Anim = 2875, + c_PPS027NI_Wav_714 = 2876, + c_PPS027NI_Pho_714 = 2877, + c_PPS024NI_Wav_714 = 2878, + c_PPS024NI_Pho_714 = 2879, + c_pps027ni_0_sfx = 2880, + c_pps027ni_Anim = 2881, + c_PPZ005PA_Wav_715 = 2882, + c_PPZ005PA_Pho_715 = 2883, + c_PPZ004PE_Wav_715 = 2884, + c_PPZ004PE_Pho_715 = 2885, + c_PPZ003PA_Wav_715 = 2886, + c_PPZ003PA_Pho_715 = 2887, + c_PPZ002PA_Wav_715 = 2888, + c_PPZ002PA_Pho_715 = 2889, + c_PPZ001PE_Wav_715 = 2890, + c_PPZ001PE_Pho_715 = 2891, + c_ppz001pe_0_sfx = 2892, + c_ppz001pe_1_sfx = 2893, + c_ppz001pe_2_sfx = 2894, + c_ppz001pe_3_sfx = 2895, + c_ppz001pe_4_sfx = 2896, + c_ppz001pe_Anim = 2897, + c_PPZ006PA_Wav_716 = 2898, + c_PPZ006PA_Pho_716 = 2899, + c_ppz006pa_0_sfx = 2900, + c_ppz006pa_1_sfx = 2901, + c_ppz006pa_Anim = 2902, + c_PPZ007PA_Wav_717 = 2903, + c_PPZ007PA_Pho_717 = 2904, + c_ppz007pa_0_sfx = 2905, + c_ppz007pa_Anim = 2906, + c_PPZ014PE_Wav_718 = 2907, + c_PPZ014PE_Pho_718 = 2908, + c_PPZ012PE_Wav_718 = 2909, + c_PPZ012PE_Pho_718 = 2910, + c_PPZ010PA_Wav_718 = 2911, + c_PPZ010PA_Pho_718 = 2912, + c_ppz010pa_0_sfx = 2913, + c_ppz010pa_1_sfx = 2914, + c_ppz010pa_Anim = 2915, + c_PPZ015PE_Wav_719 = 2916, + c_PPZ015PE_Pho_719 = 2917, + c_PPZ012PE_Wav_719 = 2918, + c_PPZ012PE_Pho_719 = 2919, + c_PPZ011PA_Wav_719 = 2920, + c_PPZ011PA_Pho_719 = 2921, + c_ppz011pa_0_sfx = 2922, + c_ppz011pa_1_sfx = 2923, + c_ppz011pa_2_sfx = 2924, + c_ppz011pa_Anim = 2925, + c_PPZ013PA_Wav_720 = 2926, + c_PPZ013PA_Pho_720 = 2927, + c_ppz013pa_0_sfx = 2928, + c_ppz013pa_1_sfx = 2929, + c_ppz013pa_Anim = 2930, + c_PPZ014PE_Wav_721 = 2931, + c_PPZ014PE_Pho_721 = 2932, + c_ppz014pe_0_sfx = 2933, + c_ppz014pe_1_sfx = 2934, + c_ppz014pe_2_sfx = 2935, + c_ppz014pe_3_sfx = 2936, + c_ppz014pe_Anim = 2937, + c_PPZ015PE_Wav_722 = 2938, + c_PPZ015PE_Pho_722 = 2939, + c_ppz015pe_0_sfx = 2940, + c_ppz015pe_1_sfx = 2941, + c_ppz015pe_2_sfx = 2942, + c_ppz015pe_Anim = 2943, + c_PPZ016PE_Wav_723 = 2944, + c_PPZ016PE_Pho_723 = 2945, + c_ppz016pe_0_sfx = 2946, + c_ppz016pe_1_sfx = 2947, + c_ppz016pe_Anim = 2948, + c_PGS050NU_Wav_724 = 2949, + c_PGS050NU_Pho_724 = 2950, + c_PGS049NU_Wav_724 = 2951, + c_PGS049NU_Pho_724 = 2952, + c_pgs050nu_0_sfx = 2953, + c_pgs050nu_Anim = 2954, + c_pgs051nu_Wav_725 = 2955, + c_pgs051nu_Pho_725 = 2956, + c_PGS049NU_Wav_725 = 2957, + c_PGS049NU_Pho_725 = 2958, + c_pgs051nu_0_sfx = 2959, + c_pgs051nu_1_sfx = 2960, + c_pgs051nu_2_sfx = 2961, + c_pgs051nu_Anim = 2962, + c_pgs052nu_Wav_726 = 2963, + c_pgs052nu_Pho_726 = 2964, + c_PGS049NU_Wav_726 = 2965, + c_PGS049NU_Pho_726 = 2966, + c_pgs052nu_0_sfx = 2967, + c_pgs052nu_1_sfx = 2968, + c_pgs052nu_2_sfx = 2969, + c_pgs052nu_3_sfx = 2970, + c_pgs052nu_Anim = 2971, + c_PPZ031MA_Wav_727 = 2972, + c_PPZ031MA_Pho_727 = 2973, + c_PPZ032PA_Wav_727 = 2974, + c_PPZ032PA_Pho_727 = 2975, + c_PPZ033MA_Wav_727 = 2976, + c_PPZ033MA_Pho_727 = 2977, + c_PPZ034PA_Wav_727 = 2978, + c_PPZ034PA_Pho_727 = 2979, + c_ppz031ma_0_sfx = 2980, + c_ppz031ma_1_sfx = 2981, + c_ppz031ma_2_sfx = 2982, + c_ppz031ma_3_sfx = 2983, + c_ppz031ma_Anim = 2984, + c_PPZ035PA_Wav_728 = 2985, + c_PPZ035PA_Pho_728 = 2986, + c_ppz035pa_0_sfx = 2987, + c_ppz035pa_1_sfx = 2988, + c_ppz035pa_2_sfx = 2989, + c_ppz035pa_3_sfx = 2990, + c_ppz035pa_4_sfx = 2991, + c_ppz035pa_5_sfx = 2992, + c_ppz035pa_Anim = 2993, + c_PPZ036pa_Wav_729 = 2994, + c_PPZ036pa_Pho_729 = 2995, + c_ppz036pa_0_sfx = 2996, + c_ppz036pa_1_sfx = 2997, + c_ppz036pa_2_sfx = 2998, + c_ppz036pa_3_sfx = 2999, + c_ppz036pa_Anim = 3000, + c_PPZ037MA_Wav_730 = 3001, + c_PPZ037MA_Pho_730 = 3002, + c_ppz037ma_0_sfx = 3003, + c_ppz037ma_1_sfx = 3004, + c_ppz037ma_Anim = 3005, + c_PPZ038MA_Wav_731 = 3006, + c_PPZ038MA_Pho_731 = 3007, + c_ppz038ma_Anim = 3008, + c_PPZ054MA_Wav_732 = 3009, + c_PPZ054MA_Pho_732 = 3010, + c_ppz054ma_0_sfx = 3011, + c_ppz054ma_1_sfx = 3012, + c_ppz054ma_2_sfx = 3013, + c_ppz054ma_3_sfx = 3014, + c_ppz054ma_4_sfx = 3015, + c_ppz054ma_5_sfx = 3016, + c_ppz054ma_6_sfx = 3017, + c_ppz054ma_Anim = 3018, + c_PPZ055MA_Wav_733 = 3019, + c_PPZ055MA_Pho_733 = 3020, + c_ppz055ma_0_sfx = 3021, + c_ppz055ma_1_sfx = 3022, + c_ppz055ma_2_sfx = 3023, + c_ppz055ma_3_sfx = 3024, + c_ppz055ma_4_sfx = 3025, + c_ppz055ma_5_sfx = 3026, + c_ppz055ma_6_sfx = 3027, + c_ppz055ma_7_sfx = 3028, + c_ppz055ma_8_sfx = 3029, + c_ppz055ma_9_sfx = 3030, + c_ppz055ma_Anim = 3031, + c_PPZ056MA_Wav_734 = 3032, + c_PPZ056MA_Pho_734 = 3033, + c_ppz056ma_0_sfx = 3034, + c_ppz056ma_Anim = 3035, + c_PPZX62MA_Wav_735 = 3036, + c_PPZX62MA_Pho_735 = 3037, + c_PPZ059MA_Wav_735 = 3038, + c_PPZ059MA_Pho_735 = 3039, + c_ppz059ma_0_sfx = 3040, + c_ppz059ma_1_sfx = 3041, + c_ppz059ma_2_sfx = 3042, + c_ppz059ma_Anim = 3043, + c_PPZ063MA_Wav_736 = 3044, + c_PPZ063MA_Pho_736 = 3045, + c_PPZ060MA_Wav_736 = 3046, + c_PPZ060MA_Pho_736 = 3047, + c_ppz060ma_0_sfx = 3048, + c_ppz060ma_1_sfx = 3049, + c_ppz060ma_Anim = 3050, + c_PPZ061MA_Wav_737 = 3051, + c_PPZ061MA_Pho_737 = 3052, + c_ppz061ma_Anim = 3053, + c_PPZ064MA_Wav_738 = 3054, + c_PPZ064MA_Pho_738 = 3055, + c_ppz064ma_0_sfx = 3056, + c_ppz064ma_1_sfx = 3057, + c_ppz064ma_Anim = 3058, + c_PRt072Sl_Wav_739 = 3059, + c_PRt072Sl_Pho_739 = 3060, + c_PRt071Sl_Wav_739 = 3061, + c_PRt071Sl_Pho_739 = 3062, + c_prt072sl_0_sfx = 3063, + c_prt072sl_1_sfx = 3064, + c_prt072sl_2_sfx = 3065, + c_prt072sl_3_sfx = 3066, + c_prt072sl_4_sfx = 3067, + c_prt072sl_5_sfx = 3068, + c_prt072sl_6_sfx = 3069, + c_prt072sl_7_sfx = 3070, + c_prt072sl_8_sfx = 3071, + c_prt072sl_9_sfx = 3072, + c_prt072sl_10_sfx = 3073, + c_prt072sl_11_sfx = 3074, + c_prt072sl_12_sfx = 3075, + c_prt072sl_Anim = 3076, + c_PRt071Sl_Wav_740 = 3077, + c_PRt071Sl_Pho_740 = 3078, + c_PRt073Sl_Wav_740 = 3079, + c_PRt073Sl_Pho_740 = 3080, + c_prt073sl_0_sfx = 3081, + c_prt073sl_1_sfx = 3082, + c_prt073sl_2_sfx = 3083, + c_prt073sl_3_sfx = 3084, + c_prt073sl_4_sfx = 3085, + c_prt073sl_5_sfx = 3086, + c_prt073sl_Anim = 3087, + c_PRt074Sl_Wav_741 = 3088, + c_PRt074Sl_Pho_741 = 3089, + c_PRt071Sl_Wav_741 = 3090, + c_PRt071Sl_Pho_741 = 3091, + c_prt074sl_0_sfx = 3092, + c_prt074sl_1_sfx = 3093, + c_prt074sl_2_sfx = 3094, + c_prt074sl_3_sfx = 3095, + c_prt074sl_4_sfx = 3096, + c_prt074sl_5_sfx = 3097, + c_prt074sl_6_sfx = 3098, + c_prt074sl_7_sfx = 3099, + c_prt074sl_Anim = 3100, + c_PHO103EN_Wav_742 = 3101, + c_PHO103EN_Pho_742 = 3102, + c_PHO104RE_Wav_742 = 3103, + c_PHO104RE_Pho_742 = 3104, + c_pho104re_0_sfx = 3105, + c_pho104re_Anim = 3106, + c_PHO103EN_Wav_743 = 3107, + c_PHO103EN_Pho_743 = 3108, + c_PHO105RE_Wav_743 = 3109, + c_PHO105RE_Pho_743 = 3110, + c_pho105re_0_sfx = 3111, + c_pho105re_Anim = 3112, + c_PHO103EN_Wav_744 = 3113, + c_PHO103EN_Pho_744 = 3114, + c_PHO106RE_Wav_744 = 3115, + c_PHO106RE_Pho_744 = 3116, + c_pho106re_0_sfx = 3117, + c_pho106re_Anim = 3118, + c_PPZ076PE_Wav_745 = 3119, + c_PPZ076PE_Pho_745 = 3120, + c_ppz078pe_Wav_745 = 3121, + c_ppz078pe_Pho_745 = 3122, + c_ppz080ma_Wav_745 = 3123, + c_ppz080ma_Pho_745 = 3124, + c_ppz079pa_Wav_745 = 3125, + c_ppz079pa_Pho_745 = 3126, + c_ppz077pa_Wav_745 = 3127, + c_ppz077pa_Pho_745 = 3128, + c_ppz081pa_Wav_745 = 3129, + c_ppz081pa_Pho_745 = 3130, + c_ppz075pa_0_sfx = 3131, + c_ppz075pa_1_sfx = 3132, + c_ppz075pa_2_sfx = 3133, + c_ppz075pa_3_sfx = 3134, + c_ppz075pa_4_sfx = 3135, + c_ppz075pa_5_sfx = 3136, + c_ppz075pa_6_sfx = 3137, + c_ppz075pa_7_sfx = 3138, + c_ppz075pa_8_sfx = 3139, + c_ppz075pa_9_sfx = 3140, + c_ppz075pa_10_sfx = 3141, + c_ppz075pa_11_sfx = 3142, + c_ppz075pa_12_sfx = 3143, + c_ppz075pa_13_sfx = 3144, + c_ppz075pa_14_sfx = 3145, + c_ppz075pa_15_sfx = 3146, + c_ppz075pa_16_sfx = 3147, + c_ppz075pa_17_sfx = 3148, + c_ppz075pa_18_sfx = 3149, + c_ppz075pa_Anim = 3150, + c_ppz080ma_Wav_746 = 3151, + c_ppz080ma_Pho_746 = 3152, + c_ppz083ma_Wav_746 = 3153, + c_ppz083ma_Pho_746 = 3154, + c_ppz082pa_Wav_746 = 3155, + c_ppz082pa_Pho_746 = 3156, + c_ppz082pa_0_sfx = 3157, + c_ppz082pa_1_sfx = 3158, + c_ppz082pa_2_sfx = 3159, + c_ppz082pa_3_sfx = 3160, + c_ppz082pa_4_sfx = 3161, + c_ppz082pa_5_sfx = 3162, + c_ppz082pa_6_sfx = 3163, + c_ppz082pa_Anim = 3164, + c_ppz084pa_Wav_747 = 3165, + c_ppz084pa_Pho_747 = 3166, + c_ppz084pa_0_sfx = 3167, + c_ppz084pa_Anim = 3168, + c_ppz093pe_Wav_748 = 3169, + c_ppz093pe_Pho_748 = 3170, + c_ppz088ma_Wav_748 = 3171, + c_ppz088ma_Pho_748 = 3172, + c_ppz088ma_Anim = 3173, + c_PPZ094PE_Wav_749 = 3174, + c_PPZ094PE_Pho_749 = 3175, + c_ppz089ma_Wav_749 = 3176, + c_ppz089ma_Pho_749 = 3177, + c_ppz089ma_0_sfx = 3178, + c_ppz089ma_1_sfx = 3179, + c_ppz089ma_2_sfx = 3180, + c_ppz089ma_3_sfx = 3181, + c_ppz089ma_Anim = 3182, + c_ppz090ma_Wav_750 = 3183, + c_ppz090ma_Pho_750 = 3184, + c_ppz091pe_Wav_750 = 3185, + c_ppz091pe_Pho_750 = 3186, + c_ppz092ma_Wav_750 = 3187, + c_ppz092ma_Pho_750 = 3188, + c_ppz090ma_0_sfx = 3189, + c_ppz090ma_1_sfx = 3190, + c_ppz090ma_2_sfx = 3191, + c_ppz090ma_3_sfx = 3192, + c_ppz090ma_Anim = 3193, + c_ppz093pe_Wav_751 = 3194, + c_ppz093pe_Pho_751 = 3195, + c_ppz093pe_0_sfx = 3196, + c_ppz093pe_1_sfx = 3197, + c_ppz093pe_2_sfx = 3198, + c_ppz093pe_3_sfx = 3199, + c_ppz093pe_4_sfx = 3200, + c_ppz093pe_5_sfx = 3201, + c_ppz093pe_Anim = 3202, + c_ppz094pe_Wav_752 = 3203, + c_ppz094pe_Pho_752 = 3204, + c_ppz094pe_0_sfx = 3205, + c_ppz094pe_1_sfx = 3206, + c_ppz094pe_2_sfx = 3207, + c_ppz094pe_3_sfx = 3208, + c_ppz094pe_4_sfx = 3209, + c_ppz094pe_Anim = 3210, + c_ppz095pe_Wav_753 = 3211, + c_ppz095pe_Pho_753 = 3212, + c_ppz095pe_0_sfx = 3213, + c_ppz095pe_1_sfx = 3214, + c_ppz095pe_2_sfx = 3215, + c_ppz095pe_Anim = 3216, + c_prp101pr_Anim = 3217, + c_pja126br_Wav_755 = 3218, + c_pja126br_Pho_755 = 3219, + c_pja126br_0_sfx = 3220, + c_pja126br_Anim = 3221, + c_PJA127BR_Wav_756 = 3222, + c_PJA127BR_Pho_756 = 3223, + c_PJa128Br_Wav_756 = 3224, + c_PJa128Br_Pho_756 = 3225, + c_pja127br_0_sfx = 3226, + c_pja127br_1_sfx = 3227, + c_pja127br_2_sfx = 3228, + c_pja127br_3_sfx = 3229, + c_pja127br_4_sfx = 3230, + c_pja127br_Anim = 3231, + c_PJA129BR_Wav_757 = 3232, + c_PJA129BR_Pho_757 = 3233, + c_pja129br_0_sfx = 3234, + c_pja129br_1_sfx = 3235, + c_pja129br_2_sfx = 3236, + c_pja129br_3_sfx = 3237, + c_pja129br_4_sfx = 3238, + c_pja129br_Anim = 3239, + c_pja130br_Wav_758 = 3240, + c_pja130br_Pho_758 = 3241, + c_pja130br_0_sfx = 3242, + c_pja130br_1_sfx = 3243, + c_pja130br_2_sfx = 3244, + c_pja130br_3_sfx = 3245, + c_pja130br_Anim = 3246, + c_PJA131BR_Wav_759 = 3247, + c_PJA131BR_Pho_759 = 3248, + c_pja131br_0_sfx = 3249, + c_pja131br_1_sfx = 3250, + c_pja131br_2_sfx = 3251, + c_pja131br_Anim = 3252, + c_PJA132BR_Wav_760 = 3253, + c_PJA132BR_Pho_760 = 3254, + c_pja132br_0_sfx = 3255, + c_pja132br_1_sfx = 3256, + c_pja132br_2_sfx = 3257, + c_pja132br_3_sfx = 3258, + c_pja132br_Anim = 3259, + c_PPZ114PA_Wav_761 = 3260, + c_PPZ114PA_Pho_761 = 3261, + c_PPZ113PA_Wav_761 = 3262, + c_PPZ113PA_Pho_761 = 3263, + c_PPZ112MA_Wav_761 = 3264, + c_PPZ112MA_Pho_761 = 3265, + c_PPZ111PA_Wav_761 = 3266, + c_PPZ111PA_Pho_761 = 3267, + c_PPZ110MA_Wav_761 = 3268, + c_PPZ110MA_Pho_761 = 3269, + c_PPZ109PA_Wav_761 = 3270, + c_PPZ109PA_Pho_761 = 3271, + c_PPZ108MA_Wav_761 = 3272, + c_PPZ108MA_Pho_761 = 3273, + c_PPZ107MA_Wav_761 = 3274, + c_PPZ107MA_Pho_761 = 3275, + c_ppz107ma_0_sfx = 3276, + c_ppz107ma_1_sfx = 3277, + c_ppz107ma_2_sfx = 3278, + c_ppz107ma_3_sfx = 3279, + c_ppz107ma_4_sfx = 3280, + c_ppz107ma_5_sfx = 3281, + c_ppz107ma_6_sfx = 3282, + c_ppz107ma_7_sfx = 3283, + c_ppz107ma_8_sfx = 3284, + c_ppz107ma_9_sfx = 3285, + c_ppz107ma_10_sfx = 3286, + c_ppz107ma_11_sfx = 3287, + c_ppz107ma_12_sfx = 3288, + c_ppz107ma_13_sfx = 3289, + c_ppz107ma_14_sfx = 3290, + c_ppz107ma_15_sfx = 3291, + c_ppz107ma_16_sfx = 3292, + c_ppz107ma_17_sfx = 3293, + c_ppz107ma_18_sfx = 3294, + c_ppz107ma_19_sfx = 3295, + c_ppz107ma_20_sfx = 3296, + c_ppz107ma_Anim = 3297, + c_PPZ114PA_Wav_762 = 3298, + c_PPZ114PA_Pho_762 = 3299, + c_ppz114pa_0_sfx = 3300, + c_ppz114pa_1_sfx = 3301, + c_ppz114pa_Anim = 3302, + c_PPZ117MA_Wav_763 = 3303, + c_PPZ117MA_Pho_763 = 3304, + c_ppz117ma_0_sfx = 3305, + c_ppz117ma_1_sfx = 3306, + c_ppz117ma_Anim = 3307, + c_PPZ118MA_Wav_764 = 3308, + c_PPZ118MA_Pho_764 = 3309, + c_ppz118ma_0_sfx = 3310, + c_ppz118ma_1_sfx = 3311, + c_ppz118ma_Anim = 3312, + c_PPZ119MA_Wav_765 = 3313, + c_PPZ119MA_Pho_765 = 3314, + c_ppz119ma_0_sfx = 3315, + c_ppz119ma_1_sfx = 3316, + c_ppz119ma_Anim = 3317, + c_PPZ120PA_Wav_766 = 3318, + c_PPZ120PA_Pho_766 = 3319, + c_ppz120pa_Anim = 3320, + c_wgs084nu_Wav_767 = 3321, + c_wgs084nu_Pho_767 = 3322, + c_wgs083nu_0_sfx = 3323, + c_wgs083nu_1_sfx = 3324, + c_wgs083nu_2_sfx = 3325, + c_wgs083nu_Anim = 3326, + c_wgs085nu_Wav_768 = 3327, + c_wgs085nu_Pho_768 = 3328, + c_wgs085nu_0_sfx = 3329, + c_wgs085nu_Anim = 3330, + c_wgs086nu_Wav_769 = 3331, + c_wgs086nu_Pho_769 = 3332, + c_wgs086nu_Anim = 3333, + c_wgs087nu_Wav_770 = 3334, + c_wgs087nu_Pho_770 = 3335, + c_wgs087nu_0_sfx = 3336, + c_wgs087nu_Anim = 3337, + c_wgs088nu_Wav_771 = 3338, + c_wgs088nu_Pho_771 = 3339, + c_wgs088nu_0_sfx = 3340, + c_wgs088nu_Anim = 3341, + c_wgs089nu_Wav_772 = 3342, + c_wgs089nu_Pho_772 = 3343, + c_wgs089nu_Anim = 3344, + c_wgs090nu_Wav_773 = 3345, + c_wgs090nu_Pho_773 = 3346, + c_wgs090nu_0_sfx = 3347, + c_wgs090nu_1_sfx = 3348, + c_wgs090nu_2_sfx = 3349, + c_wgs090nu_Anim = 3350, + c_wgs091nu_Wav_774 = 3351, + c_wgs091nu_Pho_774 = 3352, + c_wgs091nu_0_sfx = 3353, + c_wgs091nu_1_sfx = 3354, + c_wgs091nu_2_sfx = 3355, + c_wgs091nu_Anim = 3356, + c_wgs092nu_Wav_775 = 3357, + c_wgs092nu_Pho_775 = 3358, + c_wgs092nu_0_sfx = 3359, + c_wgs092nu_1_sfx = 3360, + c_wgs092nu_Anim = 3361, + c_wgs093nu_Wav_776 = 3362, + c_wgs093nu_Pho_776 = 3363, + c_wgs093nu_0_sfx = 3364, + c_wgs093nu_1_sfx = 3365, + c_wgs093nu_Anim = 3366, + c_wgs094nu_Wav_777 = 3367, + c_wgs094nu_Pho_777 = 3368, + c_wgs094nu_0_sfx = 3369, + c_wgs094nu_1_sfx = 3370, + c_wgs094nu_Anim = 3371, + c_wgs095nu_Wav_778 = 3372, + c_wgs095nu_Pho_778 = 3373, + c_wgs095nu_0_sfx = 3374, + c_wgs095nu_1_sfx = 3375, + c_wgs095nu_2_sfx = 3376, + c_wgs095nu_Anim = 3377, + c_wgs096nu_Wav_779 = 3378, + c_wgs096nu_Pho_779 = 3379, + c_wgs096nu_Anim = 3380, + c_wgs097nu_Wav_780 = 3381, + c_wgs097nu_Pho_780 = 3382, + c_wgs097nu_0_sfx = 3383, + c_wgs097nu_1_sfx = 3384, + c_wgs097nu_2_sfx = 3385, + c_wgs097nu_Anim = 3386, + c_wgs098nu_Wav_781 = 3387, + c_wgs098nu_Pho_781 = 3388, + c_wgs098nu_0_sfx = 3389, + c_wgs098nu_1_sfx = 3390, + c_wgs098nu_2_sfx = 3391, + c_wgs098nu_Anim = 3392, + c_wgs099nu_Wav_782 = 3393, + c_wgs099nu_Pho_782 = 3394, + c_wgs099nu_0_sfx = 3395, + c_wgs099nu_1_sfx = 3396, + c_wgs099nu_Anim = 3397, + c_wgs100nu_Wav_783 = 3398, + c_wgs100nu_Pho_783 = 3399, + c_wgs100nu_0_sfx = 3400, + c_wgs100nu_Anim = 3401, + c_wgs101nu_Wav_784 = 3402, + c_wgs101nu_Pho_784 = 3403, + c_wgs101nu_0_sfx = 3404, + c_wgs101nu_Anim = 3405, + c_wgs102nu_Wav_785 = 3406, + c_wgs102nu_Pho_785 = 3407, + c_wgs102nu_Anim = 3408, + c_wgs103nu_Wav_786 = 3409, + c_wgs103nu_Pho_786 = 3410, + c_wgs103nu_0_sfx = 3411, + c_wgs103nu_1_sfx = 3412, + c_wgs103nu_Anim = 3413, + c_WRT064BM_Wav_787 = 3414, + c_WRT064BM_Pho_787 = 3415, + c_WRT066BM_Wav_787 = 3416, + c_WRT066BM_Pho_787 = 3417, + c_WRT068BM_Wav_787 = 3418, + c_WRT068BM_Pho_787 = 3419, + c_WRT070BM_Wav_787 = 3420, + c_WRT070BM_Pho_787 = 3421, + c_WRT065JK_Wav_787 = 3422, + c_WRT065JK_Pho_787 = 3423, + c_WRT067JK_Wav_787 = 3424, + c_WRT067JK_Pho_787 = 3425, + c_WRT069JK_Wav_787 = 3426, + c_WRT069JK_Pho_787 = 3427, + c_WRT071JK_Wav_787 = 3428, + c_WRT071JK_Pho_787 = 3429, + c_wrt060bm_0_sfx = 3430, + c_wrt060bm_1_sfx = 3431, + c_wrt060bm_2_sfx = 3432, + c_wrt060bm_3_sfx = 3433, + c_wrt060bm_4_sfx = 3434, + c_wrt060bm_5_sfx = 3435, + c_wrt060bm_Anim = 3436, + c_WRT074SL_Wav_788 = 3437, + c_WRT074SL_Pho_788 = 3438, + c_WRT081JK_Wav_788 = 3439, + c_WRT081JK_Pho_788 = 3440, + c_WRT080BM_Wav_788 = 3441, + c_WRT080BM_Pho_788 = 3442, + c_wrt074sl_0_sfx = 3443, + c_wrt074sl_1_sfx = 3444, + c_wrt074sl_2_sfx = 3445, + c_wrt074sl_3_sfx = 3446, + c_wrt074sl_Anim = 3447, + c_WRT081JK_Wav_789 = 3448, + c_WRT081JK_Pho_789 = 3449, + c_WRT080BM_Wav_789 = 3450, + c_WRT080BM_Pho_789 = 3451, + c_WRT075RH_Wav_789 = 3452, + c_WRT075RH_Pho_789 = 3453, + c_wrt075rh_0_sfx = 3454, + c_wrt075rh_1_sfx = 3455, + c_wrt075rh_2_sfx = 3456, + c_wrt075rh_3_sfx = 3457, + c_wrt075rh_4_sfx = 3458, + c_wrt075rh_5_sfx = 3459, + c_wrt075rh_Anim = 3460, + c_WRT077GN_Wav_790 = 3461, + c_WRT077GN_Pho_790 = 3462, + c_WRT076DF_Wav_790 = 3463, + c_WRT076DF_Pho_790 = 3464, + c_WRT081JK_Wav_790 = 3465, + c_WRT081JK_Pho_790 = 3466, + c_WRT080BM_Wav_790 = 3467, + c_WRT080BM_Pho_790 = 3468, + c_wrt076df_0_sfx = 3469, + c_wrt076df_1_sfx = 3470, + c_wrt076df_2_sfx = 3471, + c_wrt076df_3_sfx = 3472, + c_wrt076df_4_sfx = 3473, + c_wrt076df_5_sfx = 3474, + c_wrt076df_6_sfx = 3475, + c_wrt076df_Anim = 3476, + c_WRT078NI_Wav_791 = 3477, + c_WRT078NI_Pho_791 = 3478, + c_WRT081JK_Wav_791 = 3479, + c_WRT081JK_Pho_791 = 3480, + c_WRT080BM_Wav_791 = 3481, + c_WRT080BM_Pho_791 = 3482, + c_wrt078ni_0_sfx = 3483, + c_wrt078ni_1_sfx = 3484, + c_wrt078ni_2_sfx = 3485, + c_wrt078ni_3_sfx = 3486, + c_wrt078ni_4_sfx = 3487, + c_wrt078ni_5_sfx = 3488, + c_wrt078ni_Anim = 3489, + c_WRT081JK_Wav_792 = 3490, + c_WRT081JK_Pho_792 = 3491, + c_WRT080BM_Wav_792 = 3492, + c_WRT080BM_Pho_792 = 3493, + c_wrt079bm_0_sfx = 3494, + c_wrt079bm_1_sfx = 3495, + c_wrt079bm_2_sfx = 3496, + c_wrt079bm_3_sfx = 3497, + c_wrt079bm_4_sfx = 3498, + c_wrt079bm_5_sfx = 3499, + c_wrt079bm_Anim = 3500, + c_npz001bd_Anim = 3501, + c_npz002bd_Anim = 3502, + c_npz003bd_Anim = 3503, + c_npz004bd_Anim = 3504, + c_npz005bd_Anim = 3505, + c_npz006bd_Anim = 3506, + c_npz007bd_Anim = 3507, + c_nca001ca_0_sfx = 3508, + c_nca001ca_1_sfx = 3509, + c_nca001ca_2_sfx = 3510, + c_nca001ca_3_sfx = 3511, + c_nca001ca_4_sfx = 3512, + c_nca001ca_Anim = 3513, + c_nca002sk_0_sfx = 3514, + c_nca002sk_1_sfx = 3515, + c_nca002sk_2_sfx = 3516, + c_nca002sk_3_sfx = 3517, + c_nca002sk_4_sfx = 3518, + c_nca002sk_5_sfx = 3519, + c_nca002sk_6_sfx = 3520, + c_nca002sk_7_sfx = 3521, + c_nca002sk_Anim = 3522, + c_nca003gh_0_sfx = 3523, + c_nca003gh_1_sfx = 3524, + c_nca003gh_2_sfx = 3525, + c_nca003gh_3_sfx = 3526, + c_nca003gh_4_sfx = 3527, + c_nca003gh_5_sfx = 3528, + c_nca003gh_Anim = 3529, + c_nla001ha_Anim = 3530, + c_nla002sd_Anim = 3531, + c_npa001ns_Anim = 3532, + c_npa002ns_Anim = 3533, + c_npa003ns_Anim = 3534, + c_npa004ns_Anim = 3535, + c_npa005dl_Anim = 3536, + c_npa007dl_Anim = 3537, + c_npa009dl_Anim = 3538, + c_npa010db_Anim = 3539, + c_npa012db_Anim = 3540, + c_npa014db_Anim = 3541, + c_npa015ca_Anim = 3542, + c_npa017ca_Anim = 3543, + c_npa019ca_Anim = 3544, + c_npa020p1_Anim = 3545, + c_npa022p1_Anim = 3546, + c_npa024p1_Anim = 3547, + c_npa025sh_Anim = 3548, + c_npa027sh_Anim = 3549, + c_npa029sh_Anim = 3550, + c_npa030fl_Anim = 3551, + c_npa031fl_Anim = 3552, + c_npa032fl_Anim = 3553, + c_npa034bh_Anim = 3554, + c_npa035bh_Anim = 3555, + c_npa036bh_Anim = 3556, + c_npa038pn_Anim = 3557, + c_npa039pn_Anim = 3558, + c_npa040pn_Anim = 3559, + c_npa042pm_Anim = 3560, + c_npa043pm_Anim = 3561, + c_npa044pm_Anim = 3562, + c_npa046sr_Anim = 3563, + c_npa047sr_Anim = 3564, + c_npa048sr_Anim = 3565, + c_npa050ba_Anim = 3566, + c_npa051ba_Anim = 3567, + c_npa052ba_Anim = 3568, + c_npa054po_Anim = 3569, + c_npa055po_Anim = 3570, + c_npa056po_Anim = 3571, + c_npa058r1_Anim = 3572, + c_npa059r1_Anim = 3573, + c_npa060r1_Anim = 3574, + c_npa061r3_Anim = 3575, + c_npa062r2_Anim = 3576, + c_npa062r3_Anim = 3577, + c_npa063r2_Anim = 3578, + c_npa063r3_Anim = 3579, + c_npa065r2_Anim = 3580, + c_nja001pr_Anim = 3581, + c_nja002pr_Anim = 3582, + c_sjs007in_Wav_856 = 3583, + c_sjs007in_Pho_856 = 3584, + c_sjs007in_0_sfx = 3585, + c_sjs007in_1_sfx = 3586, + c_sjs007in_Anim = 3587, + c_sns005in_Wav_857 = 3588, + c_sns005in_Pho_857 = 3589, + c_sns005in_0_sfx = 3590, + c_sns005in_1_sfx = 3591, + c_sns005in_Anim = 3592, + c_sns006in_Wav_858 = 3593, + c_sns006in_Pho_858 = 3594, + c_sns006in_0_sfx = 3595, + c_sns006in_1_sfx = 3596, + c_sns006in_2_sfx = 3597, + c_sns006in_3_sfx = 3598, + c_sns006in_Anim = 3599, + c_sns008in_Wav_859 = 3600, + c_sns008in_Pho_859 = 3601, + c_sns008in_0_sfx = 3602, + c_sns008in_1_sfx = 3603, + c_sns008in_2_sfx = 3604, + c_sns008in_3_sfx = 3605, + c_sns008in_Anim = 3606, + c_sjs012in_Wav_860 = 3607, + c_sjs012in_Pho_860 = 3608, + c_sjs012in_0_sfx = 3609, + c_sjs012in_1_sfx = 3610, + c_sjs012in_2_sfx = 3611, + c_sjs012in_3_sfx = 3612, + c_sjs012in_4_sfx = 3613, + c_sjs012in_Anim = 3614, + c_sjs013in_Wav_861 = 3615, + c_sjs013in_Pho_861 = 3616, + c_sjs013in_0_sfx = 3617, + c_sjs013in_1_sfx = 3618, + c_sjs013in_2_sfx = 3619, + c_sjs013in_3_sfx = 3620, + c_sjs013in_Anim = 3621, + c_sjs014in_Wav_862 = 3622, + c_sjs014in_Pho_862 = 3623, + c_sjs014in_0_sfx = 3624, + c_sjs014in_1_sfx = 3625, + c_sjs014in_2_sfx = 3626, + c_sjs014in_3_sfx = 3627, + c_sjs014in_Anim = 3628, + c_sjs015in_Wav_863 = 3629, + c_sjs015in_Pho_863 = 3630, + c_sjs015in_0_sfx = 3631, + c_sjs015in_1_sfx = 3632, + c_sjs015in_2_sfx = 3633, + c_sjs015in_Anim = 3634, + c_srt001in_Wav_864 = 3635, + c_srt001in_Pho_864 = 3636, + c_srt001in_0_sfx = 3637, + c_srt001in_1_sfx = 3638, + c_srt001in_2_sfx = 3639, + c_srt001in_3_sfx = 3640, + c_srt001in_Anim = 3641, + c_srt002in_Wav_865 = 3642, + c_srt002in_Pho_865 = 3643, + c_srt002in_0_sfx = 3644, + c_srt002in_1_sfx = 3645, + c_srt002in_2_sfx = 3646, + c_srt002in_Anim = 3647, + c_srt003in_Wav_866 = 3648, + c_srt003in_Pho_866 = 3649, + c_srt003in_0_sfx = 3650, + c_srt003in_1_sfx = 3651, + c_srt003in_2_sfx = 3652, + c_srt003in_Anim = 3653, + c_srt004in_Wav_867 = 3654, + c_srt004in_Pho_867 = 3655, + c_srt004in_0_sfx = 3656, + c_srt004in_1_sfx = 3657, + c_srt004in_2_sfx = 3658, + c_srt004in_3_sfx = 3659, + c_srt004in_4_sfx = 3660, + c_srt004in_5_sfx = 3661, + c_srt004in_6_sfx = 3662, + c_srt004in_Anim = 3663, + c_IRTX08RA_Wav_868 = 3664, + c_nrtflag0_Anim = 3665, + c_WNS050P1_Wav_3666 = 3666, + c_wns050p1_0_sfx = 3667, + c_wns050p1_1_sfx = 3668, + c_wns050p1_Anim = 3669, + c_wns049p1_Anim = 3670, + c_wns048p1_Anim = 3671, + c_pns123pr_Anim = 3672, + c_wns045di_Anim = 3673, + c_wns053pr_Anim = 3674, + c_wns046mg_Anim = 3675, + c_wns051bd_Anim = 3676, + c_pns122pr_Anim = 3677, + c_WNS050P1_Wav_3678 = 3678, + c_pns050p1_Anim = 3679, + c_pns069pr_Anim = 3680, + c_pns066db_Anim = 3681, + c_pns065rd_Anim = 3682, + c_pns067gd_Wav = 3683, + c_pns067gd_Pho = 3684, + c_pns067gd_0_sfx = 3685, + c_pns067gd_1_sfx = 3686, + c_pns067gd_2_sfx = 3687, + c_pns067gd_3_sfx = 3688, + c_pns067gd_Anim = 3689, + c_pns099pr_Anim = 3690, + c_pns098pr_Anim = 3691, + c_pns097pr_Anim = 3692, + c_pns096pr_Anim = 3693, + c_pns042bm_Anim = 3694, + c_pns048pr_Anim = 3695, + c_PNS043EN_Wav = 3696, + c_PNS043EN_Pho = 3697, + c_PNS044RE_Wav = 3698, + c_PNS044RE_Pho = 3699, + c_PNS046EN_Wav = 3700, + c_PNS046EN_Pho = 3701, + c_PNS047RE_Wav = 3702, + c_PNS047RE_Pho = 3703, + c_pns043en_Anim = 3704, + c_pns018rd_Anim = 3705, + c_pns019pr_Anim = 3706, + c_pns021dl_Anim = 3707 +}; +} // namespace IsleScript + +#endif // ISLE_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/jetrace_actions.h b/LEGO1/lego/legoomni/include/actions/jetrace_actions.h new file mode 100644 index 00000000..82bd9013 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/jetrace_actions.h @@ -0,0 +1,183 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef JETRACE_ACTIONS_H +#define JETRACE_ACTIONS_H + +namespace JetraceScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneJetrace = -1, + + c__JetRace_World = 0, + c_DistanceMeter = 1, + c_Map_Ctl = 2, + + c_Map_Up_Bitmap = 4, + c_Map_Down_Bitmap = 5, + c_JetskiLocator2 = 6, + c_JetskiLocator3 = 7, + c_StartTriggers = 8, + c_HitActorSound = 9, + c_UserJetski_Actor = 10, + c_Snap_Actor = 11, + c_Valerie_Actor = 12, + c_AirHorn_PlayWav = 13, + c_SetHitActorSound = 14, + c_HitWallSound = 15, + c_SetHitWallSound = 16, + c_RacePath = 17, + c_HideAni_Anim = 18, + c_VO1 = 19, + c_VO2 = 20, + c_VO3 = 21, + c_VO4 = 22, + c_VO5 = 23, + c_VO6 = 24, + c_VO7 = 25, + c_Jetski_Sound = 26, + c_BlackJetskiLocator = 27, + c_JsSnap00_Anim = 28, + c_JsSnap99_Anim = 29, + c_BlackJetski_Actor = 30, + c_BlackJetski_Model = 31, + c_Snap_Model = 32, + c_YellowJetskiLocator = 33, + c_JsVal00_Anim = 34, + c_JsVal99_Anim = 35, + c_JsVal04_Anim = 36, + c_YellowJetski_Actor = 37, + c_YellowJetski_Model = 38, + c_JetskiSpeedMeter = 39, + c_JetskiFuelMeter = 40, + c_JetskiDashboard11_Bitmap = 41, + c_JetskiDashboard12_Bitmap = 42, + c_JetskiDashboard13_Bitmap = 43, + c_JetskiDashboard14_Bitmap = 44, + c_JetskiDashboard15_Bitmap = 45, + c_JetskiDashboard16_Bitmap = 46, + c_Valerie_Model = 47, + c_User_Locator = 48, + c_UserJetski_Model = 49, + c_CopBoat_Actor = 50, + c_JetskiDashboard21_Bitmap = 51, + c_JetskiDashboard22_Bitmap = 52, + c_JetskiDashboard23_Bitmap = 53, + c_JetskiDashboard24_Bitmap = 54, + c_JetskiDashboard25_Bitmap = 55, + c_JetskiDashboard26_Bitmap = 56, + c_CopBoat_Model = 57, + c_L1_Actor = 58, + c_L1_Model = 59, + c_CM_Actor = 60, + c_JetskiDashboard31_Bitmap = 61, + c_JetskiDashboard32_Bitmap = 62, + c_JetskiDashboard33_Bitmap = 63, + c_JetskiDashboard34_Bitmap = 64, + c_JetskiDashboard35_Bitmap = 65, + c_JetskiDashboard36_Bitmap = 66, + c_CM_Model = 67, + c_NU_Actor = 68, + c_NU_Model = 69, + c_JK_Actor = 70, + c_JetskiDashboard41_Bitmap = 71, + c_JetskiDashboard42_Bitmap = 72, + c_JetskiDashboard43_Bitmap = 73, + c_JetskiDashboard44_Bitmap = 74, + c_JetskiDashboard45_Bitmap = 75, + c_JetskiDashboard46_Bitmap = 76, + c_JK_Model = 77, + c_BS_Actor = 78, + c_BS_Model = 79, + c_NA_Actor = 80, + c_JetskiDashboard51_Bitmap = 81, + c_JetskiDashboard52_Bitmap = 82, + c_JetskiDashboard53_Bitmap = 83, + c_JetskiDashboard54_Bitmap = 84, + c_JetskiDashboard55_Bitmap = 85, + c_JetskiDashboard56_Bitmap = 86, + c_NA_Model = 87, + c_RD_Actor = 88, + c_RD_Model = 89, + c_Cop01_Actor = 90, + c_JetskiDashboard61_Bitmap = 91, + c_JetskiDashboard62_Bitmap = 92, + c_JetskiDashboard63_Bitmap = 93, + c_JetskiDashboard64_Bitmap = 94, + c_JetskiDashboard65_Bitmap = 95, + c_JetskiDashboard66_Bitmap = 96, + c_JetskiDashboard = 97, + c_JetskiArms_Ctl = 98, + c_JetskiInfo_Ctl = 99, + c_Cop01_Model = 100, + c_Boat_Actor = 101, + c_Boat_Model = 102, + c_Shark_Actor = 103, + c_Shark_Model = 104, + c_LfJacket_Actor = 105, + c_LfJacket_Model = 106, + c_FishRod_Actor = 107, + c_FishRod_Model = 108, + c_Sharkj1_Actor = 109, + c_Sharkj1_Model = 110, + c_Trig01_Actor = 111, + c_Trig01_Model = 112, + c_Trig02_Actor = 113, + c_Trig02_Model = 114, + c_Trig03_Actor = 115, + c_Trig03_Model = 116, + c_Trig04_Actor = 117, + c_Trig04_Model = 118, + c_BouyBump_Actor = 119, + c_BouyBump_Model = 120, + c_Brickster_Actor = 121, + c_Brickster_Model = 122, + c_Yeeheemx_Sound = 123, + c_Bronco_Anim = 124, + c_Cboycycl_Actor = 125, + c_Cboycycl_Model = 126, + c_Shkbrnco_Actor = 127, + c_Shkbrnco_Model = 128, + c_Shrkfast_Anim = 129, + c_Sharkswm_Actor = 130, + c_Sharkswm_Model = 131, + c_Splash1_Sound = 132, + c_Shrkjump_Anim = 133, + c_Shkjmcyc_Actor = 134, + c_Shkjmcyc_Model = 135, + c_JetskiArms_Mask_Bitmap = 136, + c_JetskiInfoUp_Bitmap = 137, + c_JetskiInfoDown_Bitmap = 138, + c_sjs012in_Wav_500 = 139, + c_sjs012in_Pho_500 = 140, + c_sjs012in_0_sfx = 141, + c_sjs012in_1_sfx = 142, + c_sjs012in_2_sfx = 143, + c_sjs012in_3_sfx = 144, + c_sjs012in_4_sfx = 145, + c_sjs012in_Anim = 146, + c_sjs013in_Wav_501 = 147, + c_sjs013in_Pho_501 = 148, + c_sjs013in_0_sfx = 149, + c_sjs013in_1_sfx = 150, + c_sjs013in_2_sfx = 151, + c_sjs013in_3_sfx = 152, + c_sjs013in_Anim = 153, + c_sjs014in_Wav_502 = 154, + c_sjs014in_Pho_502 = 155, + c_sjs014in_0_sfx = 156, + c_sjs014in_1_sfx = 157, + c_sjs014in_2_sfx = 158, + c_sjs014in_3_sfx = 159, + c_sjs014in_Anim = 160, + + c_sjs012in_RunAnim = 500, + c_sjs013in_RunAnim = 501, + c_sjs014in_RunAnim = 502 +}; +} // namespace JetraceScript + +#endif // JETRACE_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/jetracer_actions.h b/LEGO1/lego/legoomni/include/actions/jetracer_actions.h new file mode 100644 index 00000000..01220338 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/jetracer_actions.h @@ -0,0 +1,29 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef JETRACER_ACTIONS_H +#define JETRACER_ACTIONS_H + +namespace JetracerScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneJetracer = -1, + + c_Trigger200_Drown = 200, + c_Trigger201_BtShark = 201, + c_Trigger202_SwimShrk = 202, + c_Trigger203_Hover_Anim = 203, + c_Trigger204_SwimSj01 = 204, + c_Trigger205_BtShark1 = 205, + c_Trigger206_ShrkJum1 = 206, + c_Trigger207_TriSpin = 207, + c_Trigger208_TriSpin01 = 208, + c_Trigger209_SwimBouy = 209, + c_Trigger210_SwimSJ02 = 210 +}; +} // namespace JetracerScript + +#endif // JETRACER_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/jetski_actions.h b/LEGO1/lego/legoomni/include/actions/jetski_actions.h new file mode 100644 index 00000000..9984f7b9 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/jetski_actions.h @@ -0,0 +1,217 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef JETSKI_ACTIONS_H +#define JETSKI_ACTIONS_H + +namespace JetskiScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneJetski = -1, + + c__StartUp = 0, + + c_Jetski_Actor = 3, + + c_Info_Ctl = 5, + c_Exit_Ctl = 6, + c_ShelfUp_Ctl = 7, + c_Platform_Ctl = 8, + + c_Background = 64, + c_ColorBook_Bitmap = 65, + c_ShelfUp_Up_Bitmap = 66, + c_ShelfUp_Down_Bitmap = 67, + c_PlatformUp_Bitmap = 68, + c_PlatformLeft = 69, + c_Rotate_Sound = 70, + c_PlatformLeft_Bitmap = 71, + c_Yellow_Ctl = 72, + c_Yellow_Up_Bitmap = 73, + c_Yellow_Down_Bitmap = 74, + c_Red_Ctl = 75, + c_Red_Up_Bitmap = 76, + c_Red_Down_Bitmap = 77, + c_Blue_Ctl = 78, + c_Blue_Up_Bitmap = 79, + c_Blue_Down_Bitmap = 80, + c_Green_Ctl = 81, + c_Green_Up_Bitmap = 82, + c_Green_Down_Bitmap = 83, + c_Gray_Ctl = 84, + c_Gray_Up_Bitmap = 85, + c_Gray_Down_Bitmap = 86, + c_Black_Ctl = 87, + c_Black_Up_Bitmap = 88, + c_Black_Down_Bitmap = 89, + c_Info_Up_Bitmap = 90, + c_Info_Down_Bitmap = 91, + c_Exit_Up_Bitmap = 92, + c_Exit_Down_Bitmap = 93, + c_Decal_Bitmap = 94, + c_Decals_Ctl = 95, + c_JSFRNT_T1_Up = 96, + c_JSFRNT_T1_Up_Bitmap = 97, + c_JSFRNT_T1_Dn = 98, + c_JSFRNT_T1_Dn_Bitmap = 99, + c_JSFRNT_Texture_1 = 100, + c_Decals_Ctl1 = 101, + c_JSFRNT_T2_Up = 102, + c_JSFRNT_T2_Up_Bitmap = 103, + c_JSFRNT_T2_Dn = 104, + c_JSFRNT_T2_Dn_Bitmap = 105, + c_JSFRNT_Texture_2 = 106, + c_Decals_Ctl2 = 107, + c_JSFRNT_B1_Up = 108, + c_JSFRNT_B1_Up_Bitmap = 109, + c_JSFRNT_B1_Dn = 110, + c_JSFRNT_B1_Dn_Bitmap = 111, + c_JSFRNT_Texture_3 = 112, + c_Decals_Ctl3 = 113, + c_JSFRNT_B2_Up = 114, + c_JSFRNT_B2_Up_Bitmap = 115, + c_JSFRNT_B2_Dn = 116, + c_JSFRNT_B2_Dn_Bitmap = 117, + c_JSFRNT_Texture_4 = 118, + c_Decals_Ctl4 = 119, + c_JSWNSH_T1_Up = 120, + c_JSWNSH_T1_Up_Bitmap = 121, + c_JSWNSH_T1_Dn = 122, + c_JSWNSH_T1_Dn_Bitmap = 123, + c_JSWNSH_Texture_1 = 124, + c_Decals_Ctl5 = 125, + c_JSWNSH_T2_Up = 126, + c_JSWNSH_T2_Up_Bitmap = 127, + c_JSWNSH_T2_Dn = 128, + c_JSWNSH_T2_Dn_Bitmap = 129, + c_JSWNSH_Texture_2 = 130, + c_Decals_Ctl6 = 131, + c_JSWNSH_B1_Up = 132, + c_JSWNSH_B1_Up_Bitmap = 133, + c_JSWNSH_B1_Dn = 134, + c_JSWNSH_B1_Dn_Bitmap = 135, + c_JSWNSH_Texture_3 = 136, + c_Decals_Ctl7 = 137, + c_JSWNSH_B2_Up = 138, + c_JSWNSH_B2_Up_Bitmap = 139, + c_JSWNSH_B2_Dn = 140, + c_JSWNSH_B2_Dn_Bitmap = 141, + c_JSWNSH_Texture_4 = 142, + c_Shelf_Sound = 143, + c_PlaceBrick_Sound = 144, + c_GetBrick_Sound = 145, + c_Paint_Sound = 146, + c_Decal_Sound = 147, + c_Build_Animation = 148, + c_Build_Anim0 = 149, + c_Build_Anim1 = 150, + c_Build_Anim2 = 151, + c_Jsuser_Model = 152, + c_IJS001D4_Wav_500 = 153, + c_IJS001D4_Pho_500 = 154, + c_IJS002D4_Wav_500 = 155, + c_IJS002D4_Pho_500 = 156, + c_ijs001d4_0_sfx = 157, + c_ijs001d4_1_sfx = 158, + c_ijs001d4_2_sfx = 159, + c_ijs001d4_3_sfx = 160, + c_ijs001d4_4_sfx = 161, + c_ijs001d4_5_sfx = 162, + c_ijs001d4_6_sfx = 163, + c_ijs001d4_7_sfx = 164, + c_ijs001d4_8_sfx = 165, + c_ijs001d4_9_sfx = 166, + c_ijs001d4_10_sfx = 167, + c_ijs001d4_11_sfx = 168, + c_ijs001d4_12_sfx = 169, + c_ijs001d4_13_sfx = 170, + c_ijs001d4_14_sfx = 171, + c_ijs001d4_15_sfx = 172, + c_ijs001d4_Anim = 173, + c_IJSxx2D4_Wav_501 = 174, + c_IJSxx2D4_Pho_501 = 175, + c_ijsxx2d4_0_sfx = 176, + c_ijsxx2d4_1_sfx = 177, + c_ijsxx2d4_2_sfx = 178, + c_ijsxx2d4_3_sfx = 179, + c_ijsxx2d4_4_sfx = 180, + c_ijsxx2d4_5_sfx = 181, + c_ijsxx2d4_6_sfx = 182, + c_ijsxx2d4_Anim = 183, + c_IJS003D4_Wav_502 = 184, + c_IJS003D4_Pho_502 = 185, + c_ijs003d4_0_sfx = 186, + c_ijs003d4_1_sfx = 187, + c_ijs003d4_Anim = 188, + c_IJS004D4_Wav_503 = 189, + c_IJS004D4_Pho_503 = 190, + c_ijs004d4_0_sfx = 191, + c_ijs004d4_1_sfx = 192, + c_ijs004d4_2_sfx = 193, + c_ijs004d4_3_sfx = 194, + c_ijs004d4_4_sfx = 195, + c_ijs004d4_5_sfx = 196, + c_ijs004d4_Anim = 197, + c_IJS005D4_Wav_504 = 198, + c_IJS005D4_Pho_504 = 199, + c_ijs005d4_0_sfx = 200, + c_ijs005d4_1_sfx = 201, + c_ijs005d4_2_sfx = 202, + c_ijs005d4_3_sfx = 203, + c_ijs005d4_4_sfx = 204, + c_ijs005d4_5_sfx = 205, + c_ijs005d4_6_sfx = 206, + c_ijs005d4_7_sfx = 207, + c_ijs005d4_8_sfx = 208, + c_ijs005d4_9_sfx = 209, + c_ijs005d4_10_sfx = 210, + c_ijs005d4_11_sfx = 211, + c_ijs005d4_12_sfx = 212, + c_ijs005d4_Anim = 213, + c_IJS006D4_Wav_505 = 214, + c_IJS006D4_Pho_505 = 215, + c_ijs006d4_0_sfx = 216, + c_ijs006d4_1_sfx = 217, + c_ijs006d4_2_sfx = 218, + c_ijs006d4_3_sfx = 219, + c_ijs006d4_4_sfx = 220, + c_ijs006d4_5_sfx = 221, + c_ijs006d4_6_sfx = 222, + c_ijs006d4_7_sfx = 223, + c_ijs006d4_8_sfx = 224, + c_ijs006d4_9_sfx = 225, + c_ijs006d4_10_sfx = 226, + c_ijs006d4_11_sfx = 227, + c_ijs006d4_12_sfx = 228, + c_ijs006d4_13_sfx = 229, + c_ijs006d4_14_sfx = 230, + c_ijs006d4_15_sfx = 231, + c_ijs006d4_16_sfx = 232, + c_ijs006d4_Anim = 233, + c_IJS007D4_Wav_506 = 234, + c_IJS007D4_Pho_506 = 235, + c_ijs007d4_0_sfx = 236, + c_ijs007d4_1_sfx = 237, + c_ijs007d4_2_sfx = 238, + c_ijs007d4_3_sfx = 239, + c_ijs007d4_4_sfx = 240, + c_ijs007d4_5_sfx = 241, + c_ijs007d4_6_sfx = 242, + c_ijs007d4_7_sfx = 243, + c_ijs007d4_8_sfx = 244, + c_ijs007d4_Anim = 245, + + c_ijs001d4_RunAnim = 500, + c_ijsxx2d4_RunAnim = 501, + c_ijs003d4_RunAnim = 502, + c_ijs004d4_RunAnim = 503, + c_ijs005d4_RunAnim = 504, + c_ijs006d4_RunAnim = 505, + c_ijs007d4_RunAnim = 506 +}; +} // namespace JetskiScript + +#endif // JETSKI_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/jukebox_actions.h b/LEGO1/lego/legoomni/include/actions/jukebox_actions.h new file mode 100644 index 00000000..483b5652 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/jukebox_actions.h @@ -0,0 +1,86 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef JUKEBOX_ACTIONS_H +#define JUKEBOX_ACTIONS_H + +namespace JukeboxScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneJukebox = -1, + + c_MusicTheme1 = 0, + c_MusicTheme3 = 1, + c_Act2Cave = 2, + c_BrickstrChase = 3, + c_BrickHunt = 4, + c_ResidentalArea_Music = 5, + c_BeachBlvd_Music = 6, + c_Cave_Music = 7, + c_CentralRoads_Music = 8, + c_Jail_Music = 9, + c_Hospital_Music = 10, + c_InformationCenter_Music = 11, + c_PoliceStation_Music = 12, + c_Park_Music = 13, + c_CentralNorthRoad_Music = 14, + c_GarageArea_Music = 15, + c_RaceTrackRoad_Music = 16, + c_Beach_Music = 17, + c_Quiet_Audio = 18, + c_JetskiRace_Music = 19, + c_Act3Music = 20, + c_sns002ra_Audio = 21, + c_sns001ja_Audio = 22, + c_snsc01js_Audio = 23, + c_snsb01js_Audio = 24, + c_snsa01js_Audio = 25, + c_sns009ra_Audio = 26, + c_ham035ra_Audio = 27, + c_ham039ra_Audio = 28, + c_sns005ra_Audio = 29, + c_sns078pa_Audio = 30, + c_ham036ra_Audio = 31, + c_sns006ra_Audio = 32, + c_sns013ra_Audio = 33, + c_sns004ra_Audio = 34, + c_sns079pa_Audio = 35, + c_sns007ra_Audio = 36, + c_sns008ra_Audio = 37, + c_hpz037ma_Audio = 38, + c_sns003ra_Audio = 39, + c_sns010ra_Audio = 40, + c_Radio1_Music = 41, + c_Radio2_Music = 42, + c_Radio3_Music = 43, + c_Radio4_Music = 44, + c_Radio5_Music = 45, + c_Radio6_Music = 46, + c_HelicopterBuild_Movie = 47, + c_HelicopterBuild_Music = 48, + c_DuneCarBuild_Movie = 49, + c_DuneCarBuild_Music = 50, + c_JetskiBuild_Movie = 51, + c_JetskiBuild_Music = 52, + c_RaceCarBuild_Movie = 53, + c_RaceCarBuild_Music = 54, + c_JBMusic1 = 55, + c_JBMusic2 = 56, + c_JBMusic3 = 57, + c_JBMusic4 = 58, + c_JBMusic5 = 59, + c_JBMusic6 = 60, + c_InfoCenter_3rd_Floor_Music = 61, + c_Elevator_Music = 62, + c_PizzaMission_Music = 63, + c_HelicopterBuild_Flic = 64, + c_DuneCarBuild_Flic = 65, + c_JetskiBuild_Flic = 66, + c_RaceCarBuild_Flic = 67 +}; +} // namespace JukeboxScript + +#endif // JUKEBOX_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/jukeboxw_actions.h b/LEGO1/lego/legoomni/include/actions/jukeboxw_actions.h new file mode 100644 index 00000000..54be7db8 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/jukeboxw_actions.h @@ -0,0 +1,40 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef JUKEBOXW_ACTIONS_H +#define JUKEBOXW_ACTIONS_H + +namespace JukeboxwScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneJukeboxw = -1, + + c__StartUp = 0, + c_Voldown_Ctl = 1, + c_Volup_Ctl = 2, + c_Dback_Ctl = 3, + c_Dfwd_Ctl = 4, + c_Note_Ctl = 5, + c_Background_Bitmap = 6, + c_Right_Bitmap = 7, + c_Decal_Bitmap = 8, + c_Wallis_Bitmap = 9, + c_Nelson_Bitmap = 10, + c_Torpedos_Bitmap = 11, + c_Voldown_Up_Bitmap = 12, + c_Voldown_Down_Bitmap = 13, + c_Volup_Up_Bitmap = 14, + c_Volup_Down_Bitmap = 15, + c_Dback_Up_Bitmap = 16, + c_Dback_Down_Bitmap = 17, + c_Dfwd_Up_Bitmap = 18, + c_Dfwd_Down_Bitmap = 19, + c_Note_Up_Bitmap = 20, + c_Note_Down_Bitmap = 21 +}; +} // namespace JukeboxwScript + +#endif // JUKEBOXW_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/nocd_actions.h b/LEGO1/lego/legoomni/include/actions/nocd_actions.h new file mode 100644 index 00000000..b445e0d7 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/nocd_actions.h @@ -0,0 +1,21 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef NOCD_ACTIONS_H +#define NOCD_ACTIONS_H + +namespace NocdScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneNocd = -1, + + c_NoCD_Movie = 0, + c_CDSpin1_Smk = 1, + c_Iicx62In_Wave = 2 +}; +} // namespace NocdScript + +#endif // NOCD_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/police_actions.h b/LEGO1/lego/legoomni/include/actions/police_actions.h new file mode 100644 index 00000000..a9f6cd99 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/police_actions.h @@ -0,0 +1,55 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef POLICE_ACTIONS_H +#define POLICE_ACTIONS_H + +namespace PoliceScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_nonePolice = -1, + + c__StartUp = 0, + c_LeftArrow_Ctl = 1, + c_RightArrow_Ctl = 2, + c_Info_Ctl = 3, + c_Door_Ctl = 4, + c_Donut_Ctl = 5, + c_Background_Bitmap = 6, + c_LeftArrow_Up_Bitmap = 7, + c_LeftArrow_Down_Bitmap = 8, + c_RightArrow_Up_Bitmap = 9, + c_RightArrow_Down_Bitmap = 10, + c_Info_Up_Bitmap = 11, + c_Info_Down_Bitmap = 12, + c_Door_Mask_Bitmap = 13, + c_Donut_Up_Bitmap = 14, + c_Donut_Down_Bitmap = 15, + c_RadioOff_Bitmap = 16, + c_RadioOn_Bitmap = 17, + c_Radio_Ctl = 18, + c_ConfigAnimation = 19, + c_nps001ni_0_sfx = 20, + c_nps001ni_1_sfx = 21, + c_nps001ni_2_sfx = 22, + c_nps001ni_3_sfx = 23, + c_nps001ni_4_sfx = 24, + c_nps001ni_5_sfx = 25, + c_nps001ni_Anim = 26, + c_nps002la_0_sfx = 27, + c_nps002la_1_sfx = 28, + c_nps002la_2_sfx = 29, + c_nps002la_3_sfx = 30, + c_nps002la_4_sfx = 31, + c_nps002la_5_sfx = 32, + c_nps002la_Anim = 33, + + c_nps001ni_RunAnim = 500, + c_nps002la_RunAnim = 501 +}; +} // namespace PoliceScript + +#endif // POLICE_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/racecar_actions.h b/LEGO1/lego/legoomni/include/actions/racecar_actions.h new file mode 100644 index 00000000..765697aa --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/racecar_actions.h @@ -0,0 +1,179 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef RACECAR_ACTIONS_H +#define RACECAR_ACTIONS_H + +namespace RacecarScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneRacecar = -1, + + c__StartUp = 0, + + c_RaceCar_Actor = 4, + c_Info_Ctl = 5, + c_Exit_Ctl = 6, + c_ShelfUp_Ctl = 7, + c_Platform_Ctl = 8, + + c_Background = 64, + c_ColorBook_Bitmap = 65, + c_ShelfUp_Up_Bitmap = 66, + c_ShelfUp_Down_Bitmap = 67, + c_PlatformUp_Bitmap = 68, + c_PlatformLeft = 69, + c_Rotate_Sound = 70, + c_PlatformLeft_Bitmap = 71, + c_Yellow_Ctl = 72, + c_Yellow_Down_Bitmap = 73, + c_Yellow_Up_Bitmap = 74, + c_Red_Ctl = 75, + c_Red_Down_Bitmap = 76, + c_Red_Up_Bitmap = 77, + c_Blue_Ctl = 78, + c_Blue_Down_Bitmap = 79, + c_Blue_Up_Bitmap = 80, + c_Green_Ctl = 81, + c_Green_Down_Bitmap = 82, + c_Green_Up_Bitmap = 83, + c_Gray_Ctl = 84, + c_Gray_Down_Bitmap = 85, + c_Gray_Up_Bitmap = 86, + c_Black_Ctl = 87, + c_Black_Down_Bitmap = 88, + c_Black_Up_Bitmap = 89, + c_Decals_Ctl = 90, + c_RCFRNT_State_0 = 91, + c_RCFRNT_State_0_Bitmap = 92, + c_RCFRNT_State_1 = 93, + c_RCFRNT_State_1_Bitmap = 94, + c_RCFRNT_Texture_1 = 95, + c_RCFRNT_State_2 = 96, + c_RCFRNT_State_2_Bitmap = 97, + c_RCFRNT_Texture_2 = 98, + c_RCFRNT_State_3 = 99, + c_RCFRNT_State_3_Bitmap = 100, + c_RCFRNT_Texture_3 = 101, + c_RCFRNT_State_4 = 102, + c_RCFRNT_State_4_Bitmap = 103, + c_RCFRNT_Texture_4 = 104, + c_Decals_Ctl1 = 105, + c_RCBACK_State_0 = 106, + c_RCBACK_State_0_Bitmap = 107, + c_RCBACK_State_1 = 108, + c_RCBACK_State_1_Bitmap = 109, + c_RCBACK_Texture_1 = 110, + c_RCBACK_State_2 = 111, + c_RCBACK_State_2_Bitmap = 112, + c_RCBACK_Texture_2 = 113, + c_RCBACK_State_3 = 114, + c_RCBACK_State_3_Bitmap = 115, + c_RCBACK_Texture_3 = 116, + c_RCBACK_State_4 = 117, + c_RCBACK_State_4_Bitmap = 118, + c_RCBACK_Texture_4 = 119, + c_Decals_Ctl2 = 120, + c_RCTAIL_State_0 = 121, + c_RCTAIL_State_0_Bitmap = 122, + c_RCTAIL_State_1 = 123, + c_RCTAIL_State_1_Bitmap = 124, + c_RCTAIL_Texture_1 = 125, + c_RCTAIL_State_2 = 126, + c_RCTAIL_State_2_Bitmap = 127, + c_RCTAIL_Texture_2 = 128, + c_RCTAIL_State_3 = 129, + c_RCTAIL_State_3_Bitmap = 130, + c_RCTAIL_Texture_3 = 131, + c_RCTAIL_State_4 = 132, + c_RCTAIL_State_4_Bitmap = 133, + c_RCTAIL_Texture_4 = 134, + c_Info_Up_Bitmap = 135, + c_Info_Down_Bitmap = 136, + c_Exit_Up_Bitmap = 137, + c_Exit_Down_Bitmap = 138, + c_Shelf_Sound = 139, + c_PlaceBrick_Sound = 140, + c_GetBrick_Sound = 141, + c_Paint_Sound = 142, + c_Decal_Sound = 143, + c_Build_Animation = 144, + c_Build_Anim0 = 145, + c_Build_Anim1 = 146, + c_Build_Anim2 = 147, + c_Rcuser_Model = 148, + c_IRT001D1_Wav_500 = 149, + c_IRT001D1_Pho_500 = 150, + c_irt001d1_0_sfx = 151, + c_irt001d1_1_sfx = 152, + c_irt001d1_2_sfx = 153, + c_irt001d1_3_sfx = 154, + c_irt001d1_4_sfx = 155, + c_irt001d1_5_sfx = 156, + c_irt001d1_Anim = 157, + c_IRT002D1_Wav_501 = 158, + c_IRT002D1_Pho_501 = 159, + c_irt002d1_0_sfx = 160, + c_irt002d1_1_sfx = 161, + c_irt002d1_2_sfx = 162, + c_irt002d1_Anim = 163, + c_IRT003D1_Wav_502 = 164, + c_IRT003D1_Pho_502 = 165, + c_irt003d1_0_sfx = 166, + c_irt003d1_1_sfx = 167, + c_irt003d1_2_sfx = 168, + c_irt003d1_3_sfx = 169, + c_irt003d1_4_sfx = 170, + c_irt003d1_5_sfx = 171, + c_irt003d1_6_sfx = 172, + c_irt003d1_7_sfx = 173, + c_irt003d1_Anim = 174, + c_IRT004D1_Wav_503 = 175, + c_IRT004D1_Pho_503 = 176, + c_irt004d1_0_sfx = 177, + c_irt004d1_1_sfx = 178, + c_irt004d1_2_sfx = 179, + c_irt004d1_3_sfx = 180, + c_irt004d1_4_sfx = 181, + c_irt004d1_Anim = 182, + c_IRTXX4D1_Wav_504 = 183, + c_IRTXX4D1_Pho_504 = 184, + c_irtxx4d1_0_sfx = 185, + c_irtxx4d1_1_sfx = 186, + c_irtxx4d1_2_sfx = 187, + c_irtxx4d1_3_sfx = 188, + c_irtxx4d1_4_sfx = 189, + c_irtxx4d1_5_sfx = 190, + c_irtxx4d1_6_sfx = 191, + c_irtxx4d1_Anim = 192, + c_IRT005D1_Wav_505 = 193, + c_IRT005D1_Pho_505 = 194, + c_irt005d1_0_sfx = 195, + c_irt005d1_1_sfx = 196, + c_irt005d1_2_sfx = 197, + c_irt005d1_3_sfx = 198, + c_irt005d1_4_sfx = 199, + c_irt005d1_5_sfx = 200, + c_irt005d1_6_sfx = 201, + c_irt005d1_7_sfx = 202, + c_irt005d1_8_sfx = 203, + c_irt005d1_9_sfx = 204, + c_irt005d1_10_sfx = 205, + c_irt005d1_11_sfx = 206, + c_irt005d1_12_sfx = 207, + c_irt005d1_13_sfx = 208, + c_irt005d1_Anim = 209, + + c_irt001d1_RunAnim = 500, + c_irt002d1_RunAnim = 501, + c_irt003d1_RunAnim = 502, + c_irt004d1_RunAnim = 503, + c_irtxx4d1_RunAnim = 504, + c_irt005d1_RunAnim = 505 +}; +} // namespace RacecarScript + +#endif // RACECAR_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/regbook_actions.h b/LEGO1/lego/legoomni/include/actions/regbook_actions.h new file mode 100644 index 00000000..6f46e2cf --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/regbook_actions.h @@ -0,0 +1,180 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef REGBOOK_ACTIONS_H +#define REGBOOK_ACTIONS_H + +namespace RegbookScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneRegbook = -1, + + c__StartUp = 0, + c_RB_Helicopter_Actor = 1, + c_RB_DuneBugy_Actor = 2, + c_RB_Jetski_Actor = 3, + c_RB_RaceCar_Actor = 4, + c_Alphabet_Ctl = 5, + c_A_Bitmap = 6, + c_B_Bitmap = 7, + c_C_Bitmap = 8, + c_D_Bitmap = 9, + + c_Infoman_Entity = 12, + c_E_Bitmap = 13, + c_F_Bitmap = 14, + c_G_Bitmap = 15, + c_H_Bitmap = 16, + c_I_Bitmap = 17, + c_J_Bitmap = 18, + c_K_Bitmap = 19, + c_L_Bitmap = 20, + c_M_Bitmap = 21, + c_N_Bitmap = 22, + c_O_Bitmap = 23, + c_P_Bitmap = 24, + c_Q_Bitmap = 25, + c_R_Bitmap = 26, + c_S_Bitmap = 27, + c_T_Bitmap = 28, + c_U_Bitmap = 29, + c_V_Bitmap = 30, + c_W_Bitmap = 31, + c_X_Bitmap = 32, + c_Y_Bitmap = 33, + c_Z_Bitmap = 34, + c_Infoman_Model = 35, + c_Background_Bitmap = 36, + c_CheckHiLite_Bitmap = 37, + c_Alphabet_Mask_Bitmap = 38, + c_A_Down_Bitmap = 39, + c_B_Down_Bitmap = 40, + c_C_Down_Bitmap = 41, + c_D_Down_Bitmap = 42, + c_E_Down_Bitmap = 43, + c_F_Down_Bitmap = 44, + c_G_Down_Bitmap = 45, + c_H_Down_Bitmap = 46, + c_I_Down_Bitmap = 47, + c_J_Down_Bitmap = 48, + c_K_Down_Bitmap = 49, + c_L_Down_Bitmap = 50, + c_M_Down_Bitmap = 51, + c_N_Down_Bitmap = 52, + c_O_Down_Bitmap = 53, + c_P_Down_Bitmap = 54, + c_Textures = 55, + c_Q_Down_Bitmap = 56, + c_R_Down_Bitmap = 57, + c_S_Down_Bitmap = 58, + c_T_Down_Bitmap = 59, + c_U_Down_Bitmap = 60, + c_V_Down_Bitmap = 61, + c_W_Down_Bitmap = 62, + c_X_Down_Bitmap = 63, + c_Y_Down_Bitmap = 64, + c_Z_Down_Bitmap = 65, + c_Back_Down_Bitmap = 66, + c_Info_Down_Bitmap = 67, + c_Check0_Ctl = 68, + c_Check0_Bitmap_69 = 69, + c_Check0_Bitmap_70 = 70, + c_Check1_Ctl = 71, + c_Check1_Bitmap_72 = 72, + c_Check1_Bitmap_73 = 73, + c_Check2_Ctl = 74, + c_Check2_Bitmap_75 = 75, + c_Check2_Bitmap_76 = 76, + c_Check3_Ctl = 77, + c_Check3_Bitmap_78 = 78, + c_Check3_Bitmap_79 = 79, + c_Check4_Ctl = 80, + c_Check4_Bitmap_81 = 81, + c_Check4_Bitmap_82 = 82, + c_Check5_Ctl = 83, + c_Check5_Bitmap_84 = 84, + c_Check5_Bitmap_85 = 85, + c_Check6_Ctl = 86, + c_Check6_Bitmap_87 = 87, + c_Check6_Bitmap_88 = 88, + c_Check7_Ctl = 89, + c_Check7_Bitmap_90 = 90, + c_Check7_Bitmap_91 = 91, + c_Check8_Ctl = 92, + c_Check8_Bitmap_93 = 93, + c_Check8_Bitmap_94 = 94, + c_Check9_Ctl = 95, + c_Check9_Bitmap_96 = 96, + c_Check9_Bitmap_97 = 97, + c_ConfigAnimation = 98, + c_Chptr_Model = 99, + c_DuneBugy_Model = 100, + c_Jsuser_Model = 101, + c_Rcuser_Model = 102, + c_CHWIND_Texture_1 = 103, + c_CHJETL_Texture_1 = 104, + c_CHJETR_Texture_1 = 105, + c_Decal_Texture_1 = 106, + c_JSFRNT_Texture_1 = 107, + c_JSWNSH_Texture_1 = 108, + c_RCFRNT_Texture_1 = 109, + c_RCBACK_Texture_1 = 110, + c_RCTAIL_Texture_1 = 111, + c_iic006in_Wav_500 = 112, + c_iic006in_Pho_500 = 113, + c_iic006in_0_sfx = 114, + c_iic006in_1_sfx = 115, + c_iic006in_2_sfx = 116, + c_iic006in_3_sfx = 117, + c_iic006in_Anim = 118, + c_IIC010IN_Wav_501 = 119, + c_IIC010IN_Pho_501 = 120, + c_iic010in_0_sfx = 121, + c_iic010in_1_sfx = 122, + c_iic010in_2_sfx = 123, + c_iic010in_3_sfx = 124, + c_iic010in_4_sfx = 125, + c_iic010in_5_sfx = 126, + c_iic010in_6_sfx = 127, + c_iic010in_7_sfx = 128, + c_iic010in_8_sfx = 129, + c_iic010in_9_sfx = 130, + c_iic010in_Anim = 131, + c_IIC012IN_Wav_502 = 132, + c_IIC012IN_Pho_502 = 133, + c_iic012in_0_sfx = 134, + c_iic012in_1_sfx = 135, + c_iic012in_2_sfx = 136, + c_iic012in_3_sfx = 137, + c_iic012in_4_sfx = 138, + c_iic012in_5_sfx = 139, + c_iic012in_6_sfx = 140, + c_iic012in_7_sfx = 141, + c_iic012in_Anim = 142, + c_iic014in_Wav_503 = 143, + c_iic014in_Pho_503 = 144, + c_iic014in_0_sfx = 145, + c_iic014in_1_sfx = 146, + c_iic014in_2_sfx = 147, + c_iic014in_3_sfx = 148, + c_iic014in_4_sfx = 149, + c_iic014in_5_sfx = 150, + c_iic014in_6_sfx = 151, + c_iic014in_7_sfx = 152, + c_iic014in_8_sfx = 153, + c_iic014in_Anim = 154, + + c_iic006in_RunAnim = 500, + c_iic010in_RunAnim = 501, + c_iic012in_RunAnim = 502, + c_iic014in_RunAnim = 503, + c_iic009in_PlayWav = 504, + c_iic007in_PlayWav = 505, + c_iic008in_PlayWav = 506 +}; +} // namespace RegbookScript + +#endif // REGBOOK_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/actions/sndanim_actions.h b/LEGO1/lego/legoomni/include/actions/sndanim_actions.h new file mode 100644 index 00000000..e52d8832 --- /dev/null +++ b/LEGO1/lego/legoomni/include/actions/sndanim_actions.h @@ -0,0 +1,83 @@ +// This file was automatically generated by the actionheadergen tool. +// Please do not manually edit this file. +#ifndef SNDANIM_ACTIONS_H +#define SNDANIM_ACTIONS_H + +namespace SndanimScript +{ +#ifdef COMPAT_MODE +enum Script : int { +#else +enum Script { +#endif + c_noneSndanim = -1, + + c_SoundAndAnim_Action = 0, + + c_ThisFilename = 4, + + c_AnimC1 = 10, + c_AnimC2 = 11, + c_AnimC3 = 12, + c_AnimC4 = 13, + + c_AnimF1 = 30, + c_AnimF2 = 31, + c_AnimF3 = 32, + c_AnimT1 = 33, + c_AnimT2 = 34, + c_AnimT3 = 35, + c_AnimB1 = 36, + c_AnimB2 = 37, + c_AnimB3 = 38, + c_AnimP1 = 39, + c_AnimP2 = 40, + c_AnimP3 = 41, + + c_Sound1 = 50, + c_Sound2 = 51, + c_Sound3 = 52, + c_Sound4 = 53, + c_Sound5 = 54, + c_Sound6 = 55, + c_Sound7 = 56, + c_Sound8 = 57, + c_Sound9 = 58, + c_Sound10 = 59, + c_Sound11 = 60, + c_Sound12 = 61, + c_Sound13 = 62, + c_Sound14 = 63, + c_Sound15 = 64, + c_Sound16 = 65, + c_Sound17 = 66, + c_Sound18 = 67, + c_Sound19 = 68, + c_Sound20 = 69, + c_AnimBld1 = 70, + c_AnimBld2 = 71, + c_AnimBld3 = 72, + c_AnimBld4 = 73, + c_AnimBld5 = 74, + c_AnimBld6 = 75, + c_AnimBld7 = 76, + c_AnimBld8 = 77, + c_AnimBld9 = 78, + c_AnimBld10 = 79, + c_AnimBld11 = 80, + c_AnimBld12 = 81, + c_AnimBld13 = 82, + c_AnimBld14 = 83, + c_AnimBld15 = 84, + c_AnimBld16 = 85, + c_AnimBld17 = 86, + c_AnimBld18 = 87, + + c_TRS302_OpenJailDoor = 302, + c_BRS303_CloseJailDoor = 303, + + c_BookWig_Flic = 400 +}; +} // namespace SndanimScript + +#endif // SNDANIM_ACTIONS_H diff --git a/LEGO1/lego/legoomni/include/ambulance.h b/LEGO1/lego/legoomni/include/ambulance.h index 17175b03..ae9bee04 100644 --- a/LEGO1/lego/legoomni/include/ambulance.h +++ b/LEGO1/lego/legoomni/include/ambulance.h @@ -33,6 +33,9 @@ class Ambulance : public IslePathActor { MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc void VTable0xe4() override; // vtable+0xe4 + void FUN_10036e60(); + void FUN_10037060(); + // SYNTHETIC: LEGO1 0x10036130 // Ambulance::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/animstate.h b/LEGO1/lego/legoomni/include/animstate.h index 16c92120..507858be 100644 --- a/LEGO1/lego/legoomni/include/animstate.h +++ b/LEGO1/lego/legoomni/include/animstate.h @@ -3,6 +3,33 @@ #include "legostate.h" +// SIZE 0x30 +struct ModelInfo { + char* m_modelName; // 0x00 + MxU8 m_unk0x04; // 0x04 + float m_location[3]; // 0x08 + float m_direction[3]; // 0x14 + float m_up[3]; // 0x20 + MxU8 m_unk0x2c; // 0x2c +}; + +// SIZE 0x30 +struct AnimInfo { + char* m_animName; // 0x00 + undefined4 m_unk0x04; // 0x04 + MxS16 m_unk0x08; // 0x08 + MxU8 m_unk0x0a; // 0x0a + MxU8 m_unk0x0b; // 0x0b + MxU8 m_unk0x0c; // 0x0c + MxU8 m_unk0x0d; // 0x0d + MxU32 m_unk0x10[4]; // 0x10 + MxU8 m_modelCount; // 0x20 + ModelInfo* m_models; // 0x24 + MxU8 m_unk0x28; // 0x28 + MxU8 m_unk0x29; // 0x29 + MxS8 m_unk0x2a[3]; // 0x2a +}; + // VTABLE: LEGO1 0x100d8d80 // SIZE 0x1c class AnimState : public LegoState { @@ -26,6 +53,9 @@ class AnimState : public LegoState { MxBool SetFlag() override; // vtable+0x18 MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c + void FUN_100651d0(MxU32, AnimInfo*, MxU32&); + void FUN_10065240(MxU32, AnimInfo*, MxU32); + // SYNTHETIC: LEGO1 0x10065130 // AnimState::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/bike.h b/LEGO1/lego/legoomni/include/bike.h index bfc634b4..7355d1a7 100644 --- a/LEGO1/lego/legoomni/include/bike.h +++ b/LEGO1/lego/legoomni/include/bike.h @@ -28,6 +28,8 @@ class Bike : public IslePathActor { MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4 void VTable0xe4() override; // vtable+0xe4 + void FUN_10076b60(); + // SYNTHETIC: LEGO1 0x10076880 // Bike::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/dunebuggy.h b/LEGO1/lego/legoomni/include/dunebuggy.h index 27c0cdb5..c10ea949 100644 --- a/LEGO1/lego/legoomni/include/dunebuggy.h +++ b/LEGO1/lego/legoomni/include/dunebuggy.h @@ -30,6 +30,8 @@ class DuneBuggy : public IslePathActor { MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc void VTable0xe4() override; // vtable+0xe4 + void FUN_10068350(); + // SYNTHETIC: LEGO1 0x10067dc0 // DuneBuggy::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/elevatorbottom.h b/LEGO1/lego/legoomni/include/elevatorbottom.h index bb28d710..38fbc19a 100644 --- a/LEGO1/lego/legoomni/include/elevatorbottom.h +++ b/LEGO1/lego/legoomni/include/elevatorbottom.h @@ -42,7 +42,7 @@ class ElevatorBottom : public LegoWorld { // ElevatorBottom::`scalar deleting destructor' private: - LegoGameState::Area m_unk0xf8; // 0xf8 + LegoGameState::Area m_destLocation; // 0xf8 MxLong HandleClick(LegoControlManagerEvent& p_param); }; diff --git a/LEGO1/lego/legoomni/include/gasstation.h b/LEGO1/lego/legoomni/include/gasstation.h index d2b133b5..d9da404a 100644 --- a/LEGO1/lego/legoomni/include/gasstation.h +++ b/LEGO1/lego/legoomni/include/gasstation.h @@ -45,18 +45,18 @@ class GasStation : public LegoWorld { MxLong HandleKeyPress(MxS8 p_key); MxLong HandleButtonDown(LegoControlManagerEvent& p_param); - undefined2 m_unk0xf8; // 0xf8 - undefined2 m_unk0xfa; // 0xfa - LegoGameState::Area m_transitionDestination; // 0xfc - GasStationState* m_state; // 0x100 - undefined2 m_unk0x104; // 0x104 - undefined2 m_unk0x106; // 0x106 - undefined4 m_unk0x108; // 0x108 - undefined4 m_unk0x10c; // 0x10c - undefined4 m_unk0x110; // 0x110 - undefined m_unk0x114; // 0x114 - undefined m_unk0x115; // 0x115 - Radio m_radio; // 0x118 + undefined2 m_unk0xf8; // 0xf8 + undefined2 m_unk0xfa; // 0xfa + LegoGameState::Area m_destLocation; // 0xfc + GasStationState* m_state; // 0x100 + undefined2 m_unk0x104; // 0x104 + undefined2 m_unk0x106; // 0x106 + undefined4 m_unk0x108; // 0x108 + undefined4 m_unk0x10c; // 0x10c + undefined4 m_unk0x110; // 0x110 + undefined m_unk0x114; // 0x114 + undefined m_unk0x115; // 0x115 + Radio m_radio; // 0x118 }; #endif // GASSTATION_H diff --git a/LEGO1/lego/legoomni/include/gasstationstate.h b/LEGO1/lego/legoomni/include/gasstationstate.h index 70ce41e8..53dbdbae 100644 --- a/LEGO1/lego/legoomni/include/gasstationstate.h +++ b/LEGO1/lego/legoomni/include/gasstationstate.h @@ -9,10 +9,6 @@ class GasStationState : public LegoState { public: // SIZE 0x04 struct Unknown0x14 { - inline void SetUnknown0x00(undefined4 p_unk0x00) { m_unk0x00 = p_unk0x00; } - inline undefined4 GetUnknown0x00() { return m_unk0x00; } - - private: undefined4 m_unk0x00; // 0x00 }; @@ -36,7 +32,7 @@ class GasStationState : public LegoState { // SYNTHETIC: LEGO1 0x10006290 // GasStationState::`scalar deleting destructor' - inline Unknown0x14& GetUnknown0x14() { return m_unk0x14; } + friend class GasStation; private: undefined4 m_unk0x08[3]; // 0x08 diff --git a/LEGO1/lego/legoomni/include/helicopter.h b/LEGO1/lego/legoomni/include/helicopter.h index 6c917aec..3876d9a7 100644 --- a/LEGO1/lego/legoomni/include/helicopter.h +++ b/LEGO1/lego/legoomni/include/helicopter.h @@ -5,18 +5,6 @@ #include "islepathactor.h" #include "realtime/matrix.h" -// SIZE 0x34 -class HelicopterSubclass { -public: - inline HelicopterSubclass() : m_unk0x30(0) {} - MxResult FUN_100040a0(Vector4& p_v, float p_f); - -private: - Mx4DPointFloat m_unk0x00; // 0x00 - Mx4DPointFloat m_unk0x18; // 0x18 - undefined4 m_unk0x30; // 0x30 -}; - // VTABLE: LEGO1 0x100d40f8 // SIZE 0x230 class Helicopter : public IslePathActor { @@ -49,12 +37,12 @@ class Helicopter : public IslePathActor { // Helicopter::`scalar deleting destructor' protected: - MxMatrix m_unk0x160; // 0x160 - MxMatrix m_unk0x1a8; // 0x1a8 - float m_unk0x1f0; // 0x1f0 - HelicopterSubclass m_unk0x1f4; // 0x1f4 - HelicopterState* m_state; // 0x228 - MxAtomId m_script; // 0x22c + MxMatrix m_unk0x160; // 0x160 + MxMatrix m_unk0x1a8; // 0x1a8 + float m_unk0x1f0; // 0x1f0 + UnknownMx4DPointFloat m_unk0x1f4; // 0x1f4 + HelicopterState* m_state; // 0x228 + MxAtomId m_script; // 0x22c private: void GetState(); diff --git a/LEGO1/lego/legoomni/include/historybook.h b/LEGO1/lego/legoomni/include/historybook.h index 4e8c9501..d7a79705 100644 --- a/LEGO1/lego/legoomni/include/historybook.h +++ b/LEGO1/lego/legoomni/include/historybook.h @@ -36,10 +36,10 @@ class HistoryBook : public LegoWorld { // HistoryBook::`scalar deleting destructor' private: - LegoGameState::Area m_transitionDestination; // 0xf8 - MxStillPresenter* m_alphabet[26]; // 0xfc - MxStillPresenter* m_names[20][7]; // 0x164 - MxStillPresenter* m_scores[20]; // 0x394 + LegoGameState::Area m_destLocation; // 0xf8 + MxStillPresenter* m_alphabet[26]; // 0xfc + MxStillPresenter* m_names[20][7]; // 0x164 + MxStillPresenter* m_scores[20]; // 0x394 }; #endif // HISTORYBOOK_H diff --git a/LEGO1/lego/legoomni/include/hospital.h b/LEGO1/lego/legoomni/include/hospital.h index 809e64e2..73585c64 100644 --- a/LEGO1/lego/legoomni/include/hospital.h +++ b/LEGO1/lego/legoomni/include/hospital.h @@ -2,7 +2,20 @@ #define HOSPITAL_H #include "decomp.h" +#include "hospitalstate.h" +#include "legogamestate.h" #include "legoworld.h" +#include "mxstillpresenter.h" +#include "radio.h" + +namespace HospitalScript +{ +#ifdef COMPAT_MODE +enum Script : int; +#else +enum Script; +#endif +} // namespace HospitalScript // VTABLE: LEGO1 0x100d9730 // SIZE 0x12c @@ -33,23 +46,30 @@ class Hospital : public LegoWorld { MxBool VTable0x64() override; // vtable+0x64 void Enable(MxBool p_enable) override; // vtable+0x68 + inline void PlayAction(MxU32 p_objectId); + // SYNTHETIC: LEGO1 0x100747d0 // Hospital::`scalar deleting destructor' private: - undefined2 m_unk0xf8; // 0xf8 - undefined4 m_unk0xfc; // 0xfc - undefined2 m_unk0x100; // 0x100 - undefined4 m_unk0x104; // 0x104 - VTable0x18 suggests this may be pointer to a LegoGameState - undefined2 m_unk0x108; // 0x108 - undefined4 m_unk0x10c; // 0x10c - undefined4 m_unk0x110; // 0x110 - undefined4 m_unk0x114; // 0x114 - undefined m_unk0x118; // 0x118 - undefined4 m_unk0x11c; // 0x11c - undefined4 m_unk0x120; // 0x120 - undefined m_unk0x124[4]; // 0x124 - undefined m_unk0x128; // 0x128 + MxLong HandleKeyPress(MxS8 p_key); + MxLong HandleEndAction(MxEndActionNotificationParam& p_param); + MxLong HandleButtonDown(LegoControlManagerEvent& p_param); + MxBool HandleClick(LegoControlManagerEvent& p_param); + + MxS16 m_currentActorId; // 0xf8 + LegoGameState::Area m_destLocation; // 0xfc + undefined2 m_unk0x100; // 0x100 + HospitalState* m_hospitalState; // 0x104 + undefined2 m_unk0x108; // 0x108 + HospitalScript::Script m_unk0x10c; // 0x10c + MxStillPresenter* m_copLedBitmap; // 0x110 + MxStillPresenter* m_pizzaLedBitmap; // 0x114 + undefined m_unk0x118; // 0x118 + MxLong m_unk0x11c; // 0x11c + MxLong m_unk0x120; // 0x120 + MxLong m_unk0x124; // 0x124 + undefined m_unk0x128; // 0x128 }; #endif // HOSPITAL_H diff --git a/LEGO1/lego/legoomni/include/hospitalstate.h b/LEGO1/lego/legoomni/include/hospitalstate.h index 980007e3..d7e0f7b3 100644 --- a/LEGO1/lego/legoomni/include/hospitalstate.h +++ b/LEGO1/lego/legoomni/include/hospitalstate.h @@ -8,6 +8,11 @@ // SIZE 0x18 class HospitalState : public LegoState { public: + // SIZE 0x04 + struct Unknown0x08 { + undefined4 m_unk0x00; // 0x00 + }; + HospitalState(); ~HospitalState() override {} @@ -29,14 +34,16 @@ class HospitalState : public LegoState { // SYNTHETIC: LEGO1 0x100764c0 // HospitalState::`scalar deleting destructor' + friend class Hospital; + private: - undefined m_unk0x08[4]; // 0x08 - undefined2 m_unk0x0c; // 0x0c - undefined2 m_unk0x0e; // 0x0e - undefined2 m_unk0x10; // 0x10 - undefined2 m_unk0x12; // 0x12 - undefined2 m_unk0x14; // 0x14 - undefined2 m_unk0x16; // 0x16 + Unknown0x08 m_unk0x08; // 0x08 + MxS16 m_unk0x0c; // 0x0c + MxS16 m_unk0x0e; // 0x0e + MxS16 m_unk0x10; // 0x10 + MxS16 m_unk0x12; // 0x12 + MxS16 m_unk0x14; // 0x14 + MxS16 m_unk0x16; // 0x16 }; #endif // HOSPITALSTATE_H diff --git a/LEGO1/lego/legoomni/include/infocenter.h b/LEGO1/lego/legoomni/include/infocenter.h index e22314b2..c2dd079c 100644 --- a/LEGO1/lego/legoomni/include/infocenter.h +++ b/LEGO1/lego/legoomni/include/infocenter.h @@ -10,6 +10,15 @@ class InfocenterState; class MxStillPresenter; class LegoControlManagerEvent; +namespace InfomainScript +{ +#ifdef COMPAT_MODE +enum Script : int; +#else +enum Script; +#endif +} // namespace InfomainScript + // SIZE 0x18 struct InfocenterMapEntry { // FUNCTION: LEGO1 0x1006ec80 @@ -43,138 +52,6 @@ class Infocenter : public LegoWorld { e_laura }; - enum InfomainScript { - c_noInfomain = -1, - - c_leftArrowCtl = 1, - c_rightArrowCtl = 2, - c_infoCtl = 3, - c_doorCtl = 4, - c_boatCtl = 10, - c_raceCtl = 11, - c_pizzaCtl = 12, - c_gasCtl = 13, - c_medCtl = 14, - c_copCtl = 15, - c_bigInfoCtl = 16, - c_bookCtl = 17, - c_radioCtl = 18, - c_mamaCtl = 21, - c_papaCtl = 22, - c_pepperCtl = 23, - c_nickCtl = 24, - c_lauraCtl = 25, - - c_mamaSelected = 30, - c_papaSelected = 31, - c_pepperSelected = 32, - c_nickSelected = 33, - c_lauraSelected = 34, - - c_mamaMovie = 40, - c_papaMovie = 41, - c_pepperMovie = 42, - c_nickMovie = 43, - c_lauraMovie = 44, - - c_goToRegBook = 70, - c_goToRegBookRed = 71, - - c_unk499 = 499, - - c_welcomeDialogue = 500, - c_goodJobDialogue = 501, - - c_clickOnInfomanDialogue = 502, - c_tickleInfomanDialogue = 503, - - c_letsGetStartedDialogue = 504, - - c_clickOnObjectsGuidanceDialogue = 505, - c_arrowNavigationGuidanceDialogue = 506, - c_elevatorGuidanceDialogue = 507, - c_radioGuidanceDialogue = 508, - c_exitGuidanceDialogue1 = 509, - c_exitGuidanceDialogue2 = 510, - c_goOutsideGuidanceDialogue = 511, - c_experimentGuidanceDialogue = 512, - c_returnBackGuidanceDialogue1 = 513, - c_returnBackGuidanceDialogue2 = 514, - c_bricksterWarningDialogue = 515, - c_newGameGuidanceDialogue = 516, - c_returnBackGuidanceDialogue3 = 517, - - c_reenterInfoCenterDialogue1 = 518, - c_reenterInfoCenterDialogue2 = 519, - c_reenterInfoCenterDialogue3 = 520, - c_reenterInfoCenterDialogue4 = 521, - - c_exitConfirmationDialogue = 522, - c_saveGameOptionsDialogueUnused = 523, - c_exitGameDialogue = 524, - - c_bricksterEscapedDialogue1 = 525, - c_bricksterEscapedDialogue2 = 526, - c_bricksterEscapedDialogue3 = 527, - c_bricksterEscapedDialogue4 = 528, - c_bricksterEscapedDialogue5 = 529, - c_bricksterEscapedDialogue6 = 530, - c_bricksterEscapedDialogue7 = 531, - - c_infomanHiccup = 532, - c_infomanWalkOffScreenLeftUnused = 533, - c_infomanSneeze = 534, - c_infomanWalkOffScreenRightUnused = 535, - c_infomanLaughs = 536, - c_infomanLooksBehindAtScreenUnused = 537, - c_infomanReturnsFromScreenUnused = 538, - - c_goodEndingDialogue = 539, - c_badEndingDialogue = 540, - - c_pepperCharacterSelect = 541, - c_mamaCharacterSelect = 542, - c_papaCharacterSelect = 543, - c_nickCharacterSelect = 544, - c_lauraCharacterSelect = 545, - - c_creditsDialogue = 551, - - c_noCDDialogueUnused1 = 552, - c_noCDDialogueUnused2 = 553, - - c_gasCtlDescription = 555, - c_medCtlDescription = 556, - c_infoCtlDescription = 557, - c_boatCtlDescription = 558, - c_copCtlDescription = 559, - c_pizzaCtlDescription = 560, - c_raceCtlDescription = 561, - - c_leaveInfoCenterDialogue1 = 562, - c_leaveInfoCenterDialogue2 = 563, - c_leaveInfoCenterDialogue3 = 564, - c_leaveInfoCenterDialogue4 = 565, - - c_unk566 = 566, - c_unk567 = 567, - c_unk568 = 568, - - c_unk569 = 569, - c_unk570 = 570, - c_unk571 = 571, - c_unk572 = 572, - - c_registerToContinueDialogue = 573, - - c_bricksterDialogue = 574, - c_bricksterLaughs = 575, - }; - - enum SndAmimScript { - c_bookWig = 400 - }; - Infocenter(); ~Infocenter() override; @@ -224,26 +101,26 @@ class Infocenter : public LegoWorld { void StartCredits(); void StopCredits(); - void PlayAction(InfomainScript p_objectId); + void PlayAction(InfomainScript::Script p_script); void StopCurrentAction(); void PlayBookAnimation(); void StopBookAnimation(); - InfomainScript m_currentInfomainScript; // 0xf8 - MxS16 m_selectedCharacter; // 0xfc - InfocenterState* m_infocenterState; // 0x100 - LegoGameState::Area m_transitionDestination; // 0x104 - Cutscene m_currentCutscene; // 0x108 - Radio m_radio; // 0x10c - MxStillPresenter* m_unk0x11c; // 0x11c - InfocenterMapEntry m_mapAreas[7]; // 0x120 - MxS16 m_unk0x1c8; // 0x1c8 - MxStillPresenter* m_frameHotBitmap; // 0x1cc - MxS16 m_infoManDialogueTimer; // 0x1d0 - MxS16 m_bookAnimationTimer; // 0x1d2 - MxU16 m_unk0x1d4; // 0x1d4 - MxS16 m_unk0x1d6; // 0x1d6 + InfomainScript::Script m_currentInfomainScript; // 0xf8 + MxS16 m_selectedCharacter; // 0xfc + InfocenterState* m_infocenterState; // 0x100 + LegoGameState::Area m_destLocation; // 0x104 + Cutscene m_currentCutscene; // 0x108 + Radio m_radio; // 0x10c + MxStillPresenter* m_unk0x11c; // 0x11c + InfocenterMapEntry m_mapAreas[7]; // 0x120 + MxS16 m_unk0x1c8; // 0x1c8 + MxStillPresenter* m_frameHotBitmap; // 0x1cc + MxS16 m_infoManDialogueTimer; // 0x1d0 + MxS16 m_bookAnimationTimer; // 0x1d2 + MxU16 m_unk0x1d4; // 0x1d4 + MxS16 m_unk0x1d6; // 0x1d6 }; #endif // INFOCENTER_H diff --git a/LEGO1/lego/legoomni/include/infocenterdoor.h b/LEGO1/lego/legoomni/include/infocenterdoor.h index eb86cc37..84854072 100644 --- a/LEGO1/lego/legoomni/include/infocenterdoor.h +++ b/LEGO1/lego/legoomni/include/infocenterdoor.h @@ -41,7 +41,7 @@ class InfocenterDoor : public LegoWorld { // InfocenterDoor::`scalar deleting destructor' private: - LegoGameState::Area m_unk0xf8; // 0xf8 + LegoGameState::Area m_destLocation; // 0xf8 MxLong HandleClick(LegoControlManagerEvent& p_param); }; diff --git a/LEGO1/lego/legoomni/include/infocenterstate.h b/LEGO1/lego/legoomni/include/infocenterstate.h index d47f220e..e6505dcb 100644 --- a/LEGO1/lego/legoomni/include/infocenterstate.h +++ b/LEGO1/lego/legoomni/include/infocenterstate.h @@ -31,6 +31,7 @@ class InfocenterState : public LegoState { inline MxS16 GetMaxNameLength() { return _countof(m_letters); } inline MxStillPresenter* GetNameLetter(MxS32 p_index) { return m_letters[p_index]; } + inline void SetNameLetter(MxS32 p_index, MxStillPresenter* p_letter) { m_letters[p_index] = p_letter; } inline MxBool HasRegistered() { return m_letters[0] != NULL; } inline Playlist& GetExitDialogueAct1() { return m_exitDialogueAct1; } inline Playlist& GetExitDialogueAct23() { return m_exitDialogueAct23; } diff --git a/LEGO1/lego/legoomni/include/isle.h b/LEGO1/lego/legoomni/include/isle.h index f94e6832..7ded407f 100644 --- a/LEGO1/lego/legoomni/include/isle.h +++ b/LEGO1/lego/legoomni/include/isle.h @@ -1,6 +1,7 @@ #ifndef ISLE_H #define ISLE_H +#include "legogamestate.h" #include "legoworld.h" #include "radio.h" @@ -18,12 +19,36 @@ class RaceCar; class Jetski; class Act1State; +namespace IsleScript +{ +#ifdef COMPAT_MODE +enum Script : int; +#else +enum Script; +#endif +} // namespace IsleScript + +namespace JukeboxScript +{ +#ifdef COMPAT_MODE +enum Script : int; +#else +enum Script; +#endif +} // namespace JukeboxScript + // VTABLE: LEGO1 0x100d6fb8 // SIZE 0x140 class Isle : public LegoWorld { public: + // For g_unk0x100f1198 + enum { + c_bit7 = 0x40 + }; + Isle(); ~Isle() override; + MxLong Notify(MxParam& p_param) override; // vtable+0x04 // FUNCTION: LEGO1 0x10030910 @@ -42,41 +67,53 @@ class Isle : public LegoWorld { MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 void ReadyWorld() override; // vtable+50 void Add(MxCore* p_object) override; // vtable+58 + // FUNCTION: LEGO1 0x10030900 MxBool VTable0x5c() override { return TRUE; } // vtable+5c + // FUNCTION: LEGO1 0x10033170 - void VTable0x60() override {} // vtable+60 + void VTable0x60() override {} // vtable+60 + MxBool VTable0x64() override; // vtable+64 void Enable(MxBool p_enable) override; // vtable+68 virtual void VTable0x6c(IslePathActor* p_actor); // vtable+6c - inline void SetUnknown13c(MxU32 p_unk0x13c) { m_unk0x13c = p_unk0x13c; } - - MxLong StopAction(MxParam& p_param); - MxLong HandleType17Notification(MxParam& p_param); + MxLong HandleEndAction(MxEndActionNotificationParam& p_param); + MxLong HandleClick(LegoControlManagerEvent& p_param); MxLong HandleType19Notification(MxParam& p_param); MxLong HandleTransitionEnd(); + void HandleElevatorEndAction(); + void FUN_10031590(); void FUN_10032620(); + void FUN_100330e0(); + void FUN_10032d30( + IsleScript::Script p_script, + JukeboxScript::Script p_music, + const char* p_cameraLocation, + MxBool p_und + ); + + inline void SetDestLocation(LegoGameState::Area p_destLocation) { m_destLocation = p_destLocation; } // SYNTHETIC: LEGO1 0x10030a30 // Isle::`scalar deleting destructor' protected: - Act1State* m_act1state; // 0xf8 - Pizza* m_pizza; // 0xfc - Pizzeria* m_pizzeria; // 0x100 - TowTrack* m_towtrack; // 0x104 - Ambulance* m_ambulance; // 0x108 - JukeBoxEntity* m_jukebox; // 0x10c - Helicopter* m_helicopter; // 0x110 - Bike* m_bike; // 0x114 - DuneBuggy* m_dunebuggy; // 0x118 - Motocycle* m_motocycle; // 0x11c - SkateBoard* m_skateboard; // 0x120 - RaceCar* m_racecar; // 0x124 - Jetski* m_jetski; // 0x128 - Radio m_radio; // 0x12c - MxU32 m_unk0x13c; // 0x13c + Act1State* m_act1state; // 0xf8 + Pizza* m_pizza; // 0xfc + Pizzeria* m_pizzeria; // 0x100 + TowTrack* m_towtrack; // 0x104 + Ambulance* m_ambulance; // 0x108 + JukeBoxEntity* m_jukebox; // 0x10c + Helicopter* m_helicopter; // 0x110 + Bike* m_bike; // 0x114 + DuneBuggy* m_dunebuggy; // 0x118 + Motocycle* m_motocycle; // 0x11c + SkateBoard* m_skateboard; // 0x120 + RaceCar* m_racecar; // 0x124 + Jetski* m_jetski; // 0x128 + Radio m_radio; // 0x12c + LegoGameState::Area m_destLocation; // 0x13c }; #endif // ISLE_H diff --git a/LEGO1/lego/legoomni/include/islepathactor.h b/LEGO1/lego/legoomni/include/islepathactor.h index a7fabbfa..c8286903 100644 --- a/LEGO1/lego/legoomni/include/islepathactor.h +++ b/LEGO1/lego/legoomni/include/islepathactor.h @@ -2,6 +2,7 @@ #define ISLEPATHACTOR_H #include "legocontrolmanager.h" +#include "legogamestate.h" #include "legopathactor.h" #include "legoworld.h" #include "mxtype18notificationparam.h" @@ -15,7 +16,7 @@ class IslePathActor : public LegoPathActor { IslePathActor(); // FUNCTION: LEGO1 0x10002e10 - inline ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x00 + inline ~IslePathActor() override { IslePathActor::Destroy(TRUE); } MxLong Notify(MxParam& p_param) override; // vtable+0x04 @@ -34,20 +35,26 @@ class IslePathActor : public LegoPathActor { MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c + // FUNCTION: LEGO1 0x10002e70 virtual MxU32 VTable0xcc() { return 0; } // vtable+0xcc + // FUNCTION: LEGO1 0x10002df0 virtual MxU32 VTable0xd0() { return 0; } // vtable+0xd0 + // FUNCTION: LEGO1 0x10002e80 virtual MxU32 VTable0xd4(LegoControlManagerEvent&) { return 0; } // vtable+0xd4 + // FUNCTION: LEGO1 0x10002e90 virtual MxU32 VTable0xd8(MxType18NotificationParam&) { return 0; } // vtable+0xd8 + // FUNCTION: LEGO1 0x10002e00 virtual MxU32 VTable0xdc(MxType19NotificationParam&) { return 0; } // vtable+0xdc - virtual void VTable0xe0(); // vtable+0xe0 - virtual void VTable0xe4(); // vtable+0xe4 - virtual void VTable0xe8(MxU32, MxBool, MxU8); // vtable+0xe8 - virtual void VTable0xec(); // vtable+0xec + + virtual void VTable0xe0(); // vtable+0xe0 + virtual void VTable0xe4(); // vtable+0xe4 + virtual void VTable0xe8(LegoGameState::Area, MxBool, MxU8); // vtable+0xe8 + virtual void VTable0xec(MxMatrix, MxU32, MxBool); // vtable+0xec // SYNTHETIC: LEGO1 0x10002ff0 // IslePathActor::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/jetski.h b/LEGO1/lego/legoomni/include/jetski.h index b71e43cf..92147be9 100644 --- a/LEGO1/lego/legoomni/include/jetski.h +++ b/LEGO1/lego/legoomni/include/jetski.h @@ -30,12 +30,17 @@ class Jetski : public IslePathActor { MxU32 VTable0xd4(LegoControlManagerEvent&) override; // vtable+0xd4 void VTable0xe4() override; // vtable+0xe4 + void FUN_1007e990(); + + inline MxS16 GetUnknown0x160() { return m_unk0x160; } + // SYNTHETIC: LEGO1 0x1007e5c0 // Jetski::`scalar deleting destructor' private: // TODO: Jetski fields - undefined m_unk0x160[4]; + MxS16 m_unk0x160; // 0x160 + undefined m_unk0x162[2]; // 0x162 }; #endif // JETSKI_H diff --git a/LEGO1/lego/legoomni/include/jukebox.h b/LEGO1/lego/legoomni/include/jukebox.h index c9424051..f5778dda 100644 --- a/LEGO1/lego/legoomni/include/jukebox.h +++ b/LEGO1/lego/legoomni/include/jukebox.h @@ -11,89 +11,6 @@ // SIZE 0x104 class JukeBox : public LegoWorld { public: - // JUKEBOXW.SI - enum JukeBoxWorldScript { - c_volDownCtl = 1, - c_volUpCtl = 2, - c_dBackCtl = 3, - c_dFwdCtl = 4, - c_noteCtl = 5 - }; - - // JUKEBOX.SI (the actual audio) - enum JukeBoxScript { - e_mamaPapaBrickolini, - e_jailUnused, - e_act2Cave, - e_bricksterChase, - e_brickHunt, - e_residentialArea, - e_beachBlvd, - e_cave, - e_centralRoads, - e_jail, - e_hospital, - e_informationCenter, - e_policeStation, - e_park, - e_centralNorthRoad, - e_garageArea, - e_raceTrack, - e_beach, - e_quietChirping, - e_jetskiRace, - e_act3Pursuit, - - e_legoRadioReminder1, - e_legoRadioJingle1, - e_legoRadioJingle2, - e_legoRadioJingle3, - e_legoRadioJingle4, - e_legoRadioReminder2, - - e_legoRadioRacingAd, - e_legoRadioNews1, - e_legoRadioNews2, - e_legoRadioPizzaAd1, - e_legoRadioBricksterPSA, - e_legoRadioSports1, - e_legoRadioIntermission1, - e_legoRadioIntermission2, - e_legoRadioPizzaAd2, - e_legoRadioWeatherReport, - e_legoRadioSports2, - e_legoRadioPizzaAd3, - e_legoRadioIntermission3, - e_legoRadioSuperStoreAd, - - e_legoRadioLuckyYou, - e_legoRadioJazzInterlude, - e_legoRadioPianoInterlude1, - e_legoRadioPoliceStation, - e_legoRadioPianoInterlude2, - e_legoRadioCredits, - - e_helicopterBuild, - e_padding1, - e_duneBuggyBuild, - e_padding2, - e_jetskiBuild, - e_padding3, - e_raceCarBuild, - e_padding4, - - e_jukeBoxMamaPapaBrickolini, - e_jukeBoxBrickByBrick, - e_jukeBoxTheBrickster, - e_jukeBoxBuildMeABridgeToday, - e_jukeBoxBaroqueInBrick, - e_jukeBoxMantaRay, - - e_observationDeck, - e_elevator, - e_pizzaMission, - }; - JukeBox(); ~JukeBox() override; @@ -125,9 +42,9 @@ class JukeBox : public LegoWorld { private: MxBool HandleClick(LegoControlManagerEvent& p_param); - LegoGameState::Area m_transitionDestination; // 0xf8 - JukeBoxState* m_state; // 0xfc - undefined2 m_unk0x100; // 0x100 + LegoGameState::Area m_destLocation; // 0xf8 + JukeBoxState* m_state; // 0xfc + undefined2 m_unk0x100; // 0x100 }; #endif // JUKEBOX_H diff --git a/LEGO1/lego/legoomni/include/jukeboxentity.h b/LEGO1/lego/legoomni/include/jukeboxentity.h index feb02ee3..f992ea37 100644 --- a/LEGO1/lego/legoomni/include/jukeboxentity.h +++ b/LEGO1/lego/legoomni/include/jukeboxentity.h @@ -3,6 +3,15 @@ #include "legoentity.h" +namespace JukeboxScript +{ +#ifdef COMPAT_MODE +enum Script : int; +#else +enum Script; +#endif +} // namespace JukeboxScript + // VTABLE: LEGO1 0x100da8a0 // SIZE 0x6c class JukeBoxEntity : public LegoEntity { @@ -26,7 +35,7 @@ class JukeBoxEntity : public LegoEntity { } void StartAction(); - void StopAction(MxU32 p_state); + void StopAction(JukeboxScript::Script p_script); inline MxBool IsBackgroundAudioEnabled() { return m_audioEnabled; } diff --git a/LEGO1/lego/legoomni/include/legoanimationmanager.h b/LEGO1/lego/legoomni/include/legoanimationmanager.h index 31ee5a37..e46e1f72 100644 --- a/LEGO1/lego/legoomni/include/legoanimationmanager.h +++ b/LEGO1/lego/legoomni/include/legoanimationmanager.h @@ -1,15 +1,33 @@ #ifndef LEGOANIMATIONMANAGER_H #define LEGOANIMATIONMANAGER_H +#include "animstate.h" #include "decomp.h" +#include "legotraninfolist.h" #include "mxcore.h" +// SIZE 0x18 +struct Character { + char* m_name; // 0x00 + undefined m_unk0x04[0x10]; // 0x04 + MxBool m_active; // 0x14 +}; + +namespace IsleScript +{ +#ifdef COMPAT_MODE +enum Script : int; +#else +enum Script; +#endif +} // namespace IsleScript + // VTABLE: LEGO1 0x100d8c18 // SIZE 0x500 class LegoAnimationManager : public MxCore { public: LegoAnimationManager(); - ~LegoAnimationManager() override; // vtable+0x00 + ~LegoAnimationManager() override; MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxResult Tickle() override; // vtable+0x08 @@ -31,9 +49,29 @@ class LegoAnimationManager : public MxCore { void FUN_1005ef10(); void FUN_1005f0b0(); void FUN_1005f6d0(MxBool); - void FUN_1005f720(MxS32 p_scriptIndex); + void FUN_1005f700(MxBool); + MxResult LoadScriptInfo(MxS32 p_scriptIndex); + MxBool FUN_10060140(char* p_name, MxU32& p_index); + MxResult ReadAnimInfo(LegoFile* p_file, AnimInfo* p_info); + MxResult ReadModelInfo(LegoFile* p_file, ModelInfo* p_info); + void FUN_100603c0(); + undefined4 FUN_10060dc0( + IsleScript::Script, + undefined4, + undefined, + undefined, + undefined4, + undefined, + undefined, + undefined, + undefined + ); void FUN_10061010(undefined4); + void FUN_100617c0(MxS32, MxU16&, MxU32&); + MxS8 FUN_10062360(char*); + void FUN_100629b0(MxU32, MxBool); void FUN_10064670(MxBool); + void FUN_10064740(MxBool); static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig); @@ -43,7 +81,34 @@ class LegoAnimationManager : public MxCore { private: void Init(); - undefined m_unk0x08[0x4f8]; // 0x08 + undefined4 m_unk0x08; // 0x08 + MxU16 m_animCount; // 0x0c + MxU16 m_unk0x0e; // 0x0e + MxU32 m_unk0x10; // 0x10 + AnimInfo* m_anims; // 0x14 + undefined m_unk0x018[8]; // 0x18 + LegoTranInfoList* m_tranInfoList; // 0x20 + LegoTranInfoList* m_tranInfoList2; // 0x24 + undefined4 m_unk0x28[2]; // 0x28 + undefined4 m_unk0x30[2]; // 0x30 + undefined m_unk0x38; // 0x38 + undefined m_unk0x39; // 0x39 + undefined m_unk0x3a; // 0x3a + undefined m_unk0x3b[0x3c1]; // 0x3b + undefined4 m_unk0x3fc; // 0x3fc + MxU8 m_unk0x400; // 0x400 + undefined m_unk0x401; // 0x401 + MxU8 m_unk0x402; // 0x402 + undefined m_unk0x403[0x1d]; // 0x403 + AnimState* m_animState; // 0x420 + undefined4 m_unk0x424; // 0x424 + undefined m_unk0x428; // 0x428 + undefined m_unk0x429; // 0x429 + undefined m_unk0x42a; // 0x42a + undefined m_unk0x42b; // 0x42b + undefined4 m_unk0x42c; // 0x42c + undefined m_unk0x430; // 0x430 + undefined m_unk0x431[0xcf]; // 0x431 }; #endif // LEGOANIMATIONMANAGER_H diff --git a/LEGO1/lego/legoomni/include/legobackgroundcolor.h b/LEGO1/lego/legoomni/include/legobackgroundcolor.h index 3a301a39..015d51b5 100644 --- a/LEGO1/lego/legoomni/include/legobackgroundcolor.h +++ b/LEGO1/lego/legoomni/include/legobackgroundcolor.h @@ -8,9 +8,12 @@ class LegoBackgroundColor : public MxVariable { public: LegoBackgroundColor(const char* p_key, const char* p_value); + void SetValue(const char* p_colorString) override; void SetLights(float p_r, float p_g, float p_b); void SetLights(); + void ToggleDayNight(MxBool); + void ToggleSkyColor(); private: float m_h; diff --git a/LEGO1/lego/legoomni/include/legobuildingmanager.h b/LEGO1/lego/legoomni/include/legobuildingmanager.h index d4ab3632..eb242399 100644 --- a/LEGO1/lego/legoomni/include/legobuildingmanager.h +++ b/LEGO1/lego/legoomni/include/legobuildingmanager.h @@ -5,6 +5,7 @@ #include "misc/legostorage.h" #include "mxcore.h" +class LegoEntity; class LegoROI; // VTABLE: LEGO1 0x100d6f50 @@ -31,6 +32,7 @@ class LegoBuildingManager : public MxCore { void FUN_1002fb30(); MxResult Save(LegoStorage* p_storage); MxResult Load(LegoStorage* p_storage); + MxBool FUN_1002fdb0(LegoEntity* p_entity); MxU32 FUN_1002ff40(LegoROI*, MxBool); void FUN_10030590(); diff --git a/LEGO1/lego/legoomni/include/legocharactermanager.h b/LEGO1/lego/legoomni/include/legocharactermanager.h index ec18152a..69fccb21 100644 --- a/LEGO1/lego/legoomni/include/legocharactermanager.h +++ b/LEGO1/lego/legoomni/include/legocharactermanager.h @@ -66,6 +66,7 @@ class LegoCharacterManager { void FUN_100832a0(); void FUN_10083db0(LegoROI* p_roi); void FUN_10083f10(LegoROI* p_roi); + MxBool FUN_10084ec0(LegoROI* p_roi); MxU32 FUN_10085140(LegoROI*, MxBool); LegoROI* FUN_10085210(const LegoChar*, LegoChar*, undefined); LegoROI* FUN_10085a80(LegoChar* p_und1, LegoChar* p_und2, undefined p_und3); diff --git a/LEGO1/lego/legoomni/include/legoentity.h b/LEGO1/lego/legoomni/include/legoentity.h index a3764eb0..5db4180e 100644 --- a/LEGO1/lego/legoomni/include/legoentity.h +++ b/LEGO1/lego/legoomni/include/legoentity.h @@ -66,6 +66,9 @@ class LegoEntity : public MxEntity { void FUN_10010c30(); void FUN_100114e0(MxU8 p_unk0x59); void SetLocation(const Vector3& p_location, const Vector3& p_direction, const Vector3& p_up, MxBool p_und); + Mx3DPointFloat GetWorldDirection(); + Mx3DPointFloat GetWorldUp(); + Mx3DPointFloat GetWorldPosition(); inline LegoROI* GetROI() { return m_roi; } inline MxU8 GetFlags() { return m_flags; } diff --git a/LEGO1/lego/legoomni/include/legogamestate.h b/LEGO1/lego/legoomni/include/legogamestate.h index fcb0be0c..86549a54 100644 --- a/LEGO1/lego/legoomni/include/legogamestate.h +++ b/LEGO1/lego/legoomni/include/legogamestate.h @@ -17,6 +17,15 @@ struct ColorStringStruct { const char* m_colorName; }; +namespace JukeboxScript +{ +#ifdef COMPAT_MODE +enum Script : int; +#else +enum Script; +#endif +} // namespace JukeboxScript + // SIZE 0x430 class LegoGameState { public: @@ -28,7 +37,7 @@ class LegoGameState { }; enum Area { - e_noArea = 0, + e_undefined = 0, e_previousArea = 0, e_isle, e_infomain, @@ -64,30 +73,37 @@ class LegoGameState { e_unk33, e_police, e_polidoor, - e_copter, - e_dunecar, - e_jetski, - e_racecar, + e_copterbuild, + e_dunecarbuild, + e_jetskibuild, + e_racecarbuild, + e_unk40, + e_unk41, + e_unk42, - e_act2main = 46, + e_unk45 = 45, + e_act2main, e_act3script, + e_unk48, + e_unk49, e_jukeboxw = 53, e_unk54, - - e_histbook = 56, - e_unk57, - e_unk58, - e_unk59, - e_unk60, - e_unk61, - - e_unk64 = 64, + e_unk55, + e_histbook, + e_bike, + e_dunecar, + e_motocycle, + e_copter, + e_skateboard, + e_ambulance, + e_towtrack, + e_jetski, e_unk66 = 66 }; - // SIZE 0x0c + // SIZE 0x0e struct Username { Username(); inline Username(Username& p_other) { Set(p_other); } @@ -152,7 +168,7 @@ class LegoGameState { inline Act GetLoadedAct() { return m_loadedAct; } inline Area GetCurrentArea() { return m_currentArea; } inline Area GetPreviousArea() { return m_previousArea; } - inline MxU32 GetUnknown0x41c() { return m_unk0x41c; } + inline JukeboxScript::Script GetUnknown0x41c() { return m_unk0x41c; } inline Area GetUnknown0x42c() { return m_unk0x42c; } inline History* GetHistory() { return &m_history; } @@ -160,8 +176,11 @@ class LegoGameState { inline void SetCurrentArea(Area p_currentArea) { m_currentArea = p_currentArea; } inline void SetPreviousArea(Area p_previousArea) { m_previousArea = p_previousArea; } inline void SetActorId(MxU8 p_actorId) { m_actorId = p_actorId; } - inline void SetUnknown0x41c(undefined4 p_unk0x41c) { m_unk0x41c = p_unk0x41c; } + inline void SetUnknown0x41c(JukeboxScript::Script p_unk0x41c) { m_unk0x41c = p_unk0x41c; } inline void SetUnknown0x42c(Area p_unk0x42c) { m_unk0x42c = p_unk0x42c; } + inline Username* GetPlayersIndex(MxS32 p_index) { return &m_players[p_index]; } + inline MxS16 GetPlayerCount() { return m_playerCount; } + inline LegoBackgroundColor* GetBackgroundColor() { return m_backgroundColor; } void SetCurrentAct(Act p_currentAct); void FindLoadedAct(); @@ -184,15 +203,25 @@ class LegoGameState { LegoBackgroundColor* m_tempBackgroundColor; // 0x1c LegoFullScreenMovie* m_fullScreenMovie; // 0x20 MxU16 m_unk0x24; // 0x24 - MxS16 m_playerCount; // 0x26 - Username m_players[9]; // 0x28 - History m_history; // 0xa6 - undefined2 m_unk0x41a; // 0x41a - undefined4 m_unk0x41c; // 0x41c - MxBool m_isDirty; // 0x420 - Area m_currentArea; // 0x424 - Area m_previousArea; // 0x428 - Area m_unk0x42c; // 0x42c + + // Member visibility needs to be refactored, since most members are accessed directly. + +public: + MxS16 m_playerCount; // 0x26 + Username m_players[9]; // 0x28 + +private: + History m_history; // 0xa6 + undefined2 m_unk0x41a; // 0x41a + JukeboxScript::Script m_unk0x41c; // 0x41c + MxBool m_isDirty; // 0x420 + +public: + Area m_currentArea; // 0x424 + Area m_previousArea; // 0x428 + +private: + Area m_unk0x42c; // 0x42c }; MxBool ROIHandlerFunction(const char* p_input, char* p_output, MxU32 p_copyLen); diff --git a/LEGO1/lego/legoomni/include/legonavcontroller.h b/LEGO1/lego/legoomni/include/legonavcontroller.h index e5c74f35..1621efac 100644 --- a/LEGO1/lego/legoomni/include/legonavcontroller.h +++ b/LEGO1/lego/legoomni/include/legonavcontroller.h @@ -1,43 +1,22 @@ -#ifndef LEGONAVCONTROLLER_H -#define LEGONAVCONTROLLER_H +#ifndef __LEGONAVCONTROLLER_H +#define __LEGONAVCONTROLLER_H +#include "decomp.h" #include "mxcore.h" -#include "mxtimer.h" #include "mxtypes.h" +#include "realtime/vector.h" + +////////////////////////////////////////////////////////////////////////////// +// +// LegoMouseController // VTABLE: LEGO1 0x100d85b8 // SIZE 0x70 class LegoNavController : public MxCore { public: - static void GetDefaults( - int* p_mouseDeadzone, - float* p_movementMaxSpeed, - float* p_turnMaxSpeed, - float* p_movementMaxAccel, - float* p_turnMaxAccel, - float* p_movementDecel, - float* p_turnDecel, - float* p_movementMinAccel, - float* p_turnMinAccel, - float* p_rotationSensitivity, - MxBool* p_turnUseVelocity - ); - static void SetDefaults( - int p_mouseDeadzone, - float p_movementMaxSpeed, - float p_turnMaxSpeed, - float p_movementMaxAccel, - float p_turnMaxAccel, - float p_movementDecel, - float p_turnDecel, - float p_movementMinAccel, - float p_turnMinAccel, - float p_rotationSensitivity, - MxBool p_turnUseVelocity - ); - LegoNavController(); - ~LegoNavController() override; // vtable+0x00 + ~LegoNavController() override; + MxLong Notify(MxParam& p_param) override; // vtable+0x04 // FUNCTION: LEGO1 0x10054b80 @@ -53,48 +32,98 @@ class LegoNavController : public MxCore { return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name); } - void SetControlMax(int p_hMax, int p_vMax); - void ResetToDefault(); void SetTargets(int p_hPos, int p_vPos, MxBool p_accel); - static void SetLocation(MxU32 p_location); - float CalculateNewTargetSpeed(int p_pos, int p_center, float p_maxSpeed); - float CalculateNewAccel(int p_pos, int p_center, float p_maxAccel, int p_minAccel); - float CalculateNewVel(float p_targetVel, float p_currentVel, float p_accel, float p_time); + void SetControlMax(int p_hMax, int p_vMax); + void SetTrackDefaultParams(MxBool p_state) { m_trackDefault = p_state; } + void SetToDefaultParams(); + MxBool CalculateNewPosDir( + const Vector3& p_curPos, + const Vector3& p_curDir, + Vector3& p_newPos, + Vector3& p_newDir, + const Vector3* p_und + ); - inline void SetTrackDefaultParams(MxBool p_trackDefault) { m_trackDefault = p_trackDefault; } + static void GetDefaults( + int* p_dz, + float* p_lv, + float* p_rv, + float* p_la, + float* p_ra, + float* p_ld, + float* p_rd, + float* p_lmina, + float* p_rmina, + float* p_rs, + MxBool* p_urs + ); + static void SetDefaults( + int p_dz, + float p_lv, + float p_rv, + float p_la, + float p_ra, + float p_ld, + float p_rd, + float p_lmina, + float p_rmina, + float p_rs, + MxBool p_urs + ); + static void SetLocation(MxU32 p_location); // SYNTHETIC: LEGO1 0x10054c10 // LegoNavController::`scalar deleting destructor' -private: - int m_hMax; - int m_vMax; - int m_mouseDeadzone; - float m_zeroThreshold; - float m_unk0x18; - float m_unk0x1c; - float m_targetMovementSpeed; - float m_targetTurnSpeed; - float m_movementMaxSpeed; - float m_turnMaxSpeed; - float m_movementAccel; - float m_turnAccel; - float m_movementMaxAccel; - float m_turnMaxAccel; - float m_movementMinAccel; - float m_turnMinAccel; - float m_movementDecel; - float m_turnDecel; - float m_turnSensitivity; - MxBool m_turnUseVelocity; - int m_time; - MxBool m_trackDefault; - MxBool m_unk0x5d; - char m_unk0x5e[2]; - int m_unk0x60; - int m_unk0x64; - int m_unk0x68; - MxBool m_unk0x6c; +protected: + float CalculateNewVel(float p_targetVel, float p_currentVel, float p_accel, float p_time); + float CalculateNewTargetVel(int p_pos, int p_center, float p_max); + float CalculateNewAccel(int p_pos, int p_center, float p_max, int p_min); + + int FUN_10055750(MxBool& p_und); + int FUN_100558b0(); + + int m_hMax; // 0x08 + int m_vMax; // 0x0c + int m_deadZone; // 0x10 + float m_zeroThreshold; // 0x14 + float m_linearVel; // 0x18 + float m_rotationalVel; // 0x1c + float m_targetLinearVel; // 0x20 + float m_targetRotationalVel; // 0x24 + float m_maxLinearVel; // 0x28 + float m_maxRotationalVel; // 0x2c + float m_linearAccel; // 0x30 + float m_rotationalAccel; // 0x34 + float m_maxLinearAccel; // 0x38 + float m_maxRotationalAccel; // 0x3c + float m_minLinearAccel; // 0x40 + float m_minRotationalAccel; // 0x44 + float m_maxLinearDeccel; // 0x48 + float m_maxRotationalDeccel; // 0x4c + float m_rotSensitivity; // 0x50 + MxBool m_useRotationalVel; // 0x54 + MxTime m_lastTime; // 0x58 + MxBool m_trackDefault; // 0x5c + MxBool m_unk0x5d; // 0x5d + float m_unk0x60; // 0x60 + float m_unk0x64; // 0x64 + float m_unk0x68; // 0x68 + MxBool m_unk0x6c; // 0x6c + + // one copy of defaults (these can be set by App.) + static int g_defdeadZone; + static float g_defzeroThreshold; + static float g_defmaxLinearVel; + static float g_defmaxRotationalVel; + static float g_defmaxLinearAccel; + static float g_defmaxRotationalAccel; + static float g_defminLinearAccel; + static float g_defminRotationalAccel; + static float g_defmaxLinearDeccel; + static float g_defmaxRotationalDeccel; + static float g_defrotSensitivity; + static MxBool g_defuseRotationalVel; }; -#endif // LEGONAVCONTROLLER_H +#endif // __LEGOPOVCONTROLLER_H diff --git a/LEGO1/lego/legoomni/include/legoomni.h b/LEGO1/lego/legoomni/include/legoomni.h index 5d1df4fa..a8fb5191 100644 --- a/LEGO1/lego/legoomni/include/legoomni.h +++ b/LEGO1/lego/legoomni/include/legoomni.h @@ -98,7 +98,6 @@ class LegoOmni : public MxOmni { inline MxS32 GetIndex() { return m_index; } inline const char* GetKey() { return m_key; } - private: MxS32 m_index; // 0x00 char m_key[20]; // 0x04 MxAtomId* m_script; // 0x18 @@ -203,6 +202,7 @@ class LegoOmni : public MxOmni { MxS32 GetScriptIndex(const char* p_key); static MxS32 GetCurrPathInfo(LegoPathBoundary**, MxS32&); + const char* FindScript(MxU32 p_id); static void CreateInstance(); static LegoOmni* GetInstance(); diff --git a/LEGO1/lego/legoomni/include/legopathactor.h b/LEGO1/lego/legoomni/include/legopathactor.h index 15cbce4c..01bb91e0 100644 --- a/LEGO1/lego/legoomni/include/legopathactor.h +++ b/LEGO1/lego/legoomni/include/legopathactor.h @@ -30,38 +30,54 @@ class LegoPathActor : public LegoActor { virtual void VTable0x6c(); // vtable+0x6c virtual void VTable0x70(float p_float); // vtable+0x70 virtual void VTable0x74(Matrix4& p_transform); // vtable+0x74 + // FUNCTION: LEGO1 0x10002d20 virtual void VTable0x78(MxU8 p_unk0xea) { m_unk0xea = p_unk0xea; } // vtable+0x78 + // FUNCTION: LEGO1 0x10002d30 virtual MxU8 VTable0x7c() { return m_unk0xea; } // vtable+0x7c - virtual void VTable0x80(); // vtable+0x80 - virtual void VTable0x84(); // vtable+0x84 - virtual void VTable0x88(); // vtable+0x88 - virtual void VTable0x8c(); // vtable+0x8c + + virtual void VTable0x80(); // vtable+0x80 + virtual void VTable0x84(); // vtable+0x84 + virtual void VTable0x88(); // vtable+0x88 + virtual void VTable0x8c(); // vtable+0x8c + // FUNCTION: LEGO1 0x10002d40 virtual MxS32 VTable0x90() { return 0; } // vtable+0x90 + // FUNCTION: LEGO1 0x10002d50 virtual MxS32 VTable0x94() { return 0; } // vtable+0x94 - virtual void VTable0x98(); // vtable+0x98 - virtual void VTable0x9c(); // vtable+0x9c + + virtual void VTable0x98(); // vtable+0x98 + virtual void VTable0x9c(); // vtable+0x9c + // FUNCTION: LEGO1 0x10002d60 virtual MxS32 VTable0xa0() { return 0; } // vtable+0xa0 - virtual void VTable0xa4(); // vtable+0xa4 - virtual void VTable0xa8(); // vtable+0xa8 + + virtual void VTable0xa4(); // vtable+0xa4 + virtual void VTable0xa8(); // vtable+0xa8 + // FUNCTION: LEGO1 0x10002d70 virtual void VTable0xac(MxFloat p_unk0x13c) { m_unk0x13c = p_unk0x13c; } // vtable+0xac + // FUNCTION: LEGO1 0x10002d80 virtual MxFloat VTable0xb0() { return m_unk0x13c; } // vtable+0xb0 + // FUNCTION: LEGO1 0x10002d90 virtual MxFloat VTable0xb4() { return m_unk0x140; } // vtable+0xb4 + // FUNCTION: LEGO1 0x10002da0 virtual MxFloat VTable0xb8() { return m_unk0x144; } // vtable+0xb8 + // FUNCTION: LEGO1 0x10002db0 virtual void VTable0xbc(MxFloat p_unk0x140) { m_unk0x140 = p_unk0x140; } // vtable+0xbc + // FUNCTION: LEGO1 0x10002dc0 virtual void VTable0xc0(MxFloat p_unk0x144) { m_unk0x144 = p_unk0x144; } // vtable+0xc0 + // FUNCTION: LEGO1 0x10002dd0 virtual void VTable0xc4() {} // vtable+0xc4 + // FUNCTION: LEGO1 0x10002de0 virtual void VTable0xc8(MxU8 p_unk0x148) { m_unk0x148 = p_unk0x148; } // vtable+0xc8 diff --git a/LEGO1/lego/legoomni/include/legoplantmanager.h b/LEGO1/lego/legoomni/include/legoplantmanager.h index b5ac4e7b..1dcedd40 100644 --- a/LEGO1/lego/legoomni/include/legoplantmanager.h +++ b/LEGO1/lego/legoomni/include/legoplantmanager.h @@ -5,6 +5,7 @@ #include "misc/legostorage.h" #include "mxcore.h" +class LegoEntity; class LegoROI; // VTABLE: LEGO1 0x100d6758 @@ -28,6 +29,7 @@ class LegoPlantManager : public MxCore { void FUN_100263a0(undefined4 p_und); void Save(LegoStorage* p_storage); MxResult Load(LegoStorage* p_storage); + MxBool FUN_100269e0(LegoEntity* p_entity); MxU32 FUN_10026ba0(LegoROI*, MxBool); void FUN_10027120(); diff --git a/LEGO1/lego/legoomni/include/legopointofviewcontroller.h b/LEGO1/lego/legoomni/include/legopointofviewcontroller.h index b6db3014..89a9e5e5 100644 --- a/LEGO1/lego/legoomni/include/legopointofviewcontroller.h +++ b/LEGO1/lego/legoomni/include/legopointofviewcontroller.h @@ -29,6 +29,10 @@ class LegoMouseController : public MxCore { virtual void RightDrag(int, int); // vtable+0x24 virtual void RightUp(int, int); // vtable+0x28 + BOOL GetIsButtonDown() { return m_isButtonDown; } + MxDouble GetButtonX() { return m_buttonX; } + MxDouble GetButtonY() { return m_buttonY; } + private: BOOL m_isButtonDown; // 0x08 undefined4 m_unk0x0c; // 0x0c diff --git a/LEGO1/lego/legoomni/include/legosoundmanager.h b/LEGO1/lego/legoomni/include/legosoundmanager.h index 89e51165..93e2b7f9 100644 --- a/LEGO1/lego/legoomni/include/legosoundmanager.h +++ b/LEGO1/lego/legoomni/include/legosoundmanager.h @@ -11,13 +11,15 @@ class LegoSoundManager : public MxSoundManager { LegoSoundManager(); ~LegoSoundManager() override; - MxResult Tickle() override; // vtable+08 - void Destroy() override; // vtable+18 + MxResult Tickle() override; // vtable+0x08 + void Destroy() override; // vtable+0x18 MxResult Create(MxU32 p_frequencyMS, MxBool p_createThread) override; // vtable+0x30 // SYNTHETIC: LEGO1 0x10029920 // LegoSoundManager::`scalar deleting destructor' + void FUN_1002a410(const float* p_pos, const float* p_dir, const float* p_up, const float* p_vel); + inline LegoUnknown100d6b4c* GetUnknown0x40() { return m_unk0x40; } private: diff --git a/LEGO1/lego/legoomni/include/legotraninfo.h b/LEGO1/lego/legoomni/include/legotraninfo.h new file mode 100644 index 00000000..ee29fc58 --- /dev/null +++ b/LEGO1/lego/legoomni/include/legotraninfo.h @@ -0,0 +1,11 @@ +#ifndef LEGOTRANINFO_H +#define LEGOTRANINFO_H + +#include "decomp.h" + +// SIZE 0x78 +struct LegoTranInfo { // See FUN_100609f0 for construction + undefined m_unk0x00[0x78]; // 0x00 +}; + +#endif // LEGOTRANINFO_H diff --git a/LEGO1/lego/legoomni/include/legotraninfolist.h b/LEGO1/lego/legoomni/include/legotraninfolist.h new file mode 100644 index 00000000..96c46535 --- /dev/null +++ b/LEGO1/lego/legoomni/include/legotraninfolist.h @@ -0,0 +1,51 @@ +#ifndef LEGOTRANINFOLIST_H +#define LEGOTRANINFOLIST_H + +#include "legotraninfo.h" +#include "mxlist.h" +#include "mxtypes.h" + +// VTABLE: LEGO1 0x100d8ca8 +// class MxCollection + +// VTABLE: LEGO1 0x100d8cc0 +// class MxList + +// VTABLE: LEGO1 0x100d8cd8 +// class MxPtrList + +// VTABLE: LEGO1 0x100d8c90 +// SIZE 0x18 +class LegoTranInfoList : public MxPtrList { +public: + LegoTranInfoList() : MxPtrList(FALSE) {} +}; + +// TEMPLATE: LEGO1 0x1005fdf0 +// MxCollection::Compare + +// TEMPLATE: LEGO1 0x1005fe00 +// MxCollection::~MxCollection + +// TEMPLATE: LEGO1 0x1005fe50 +// MxCollection::Destroy + +// TEMPLATE: LEGO1 0x1005fe60 +// MxList::~MxList + +// SYNTHETIC: LEGO1 0x1005fef0 +// LegoTranInfoList::`scalar deleting destructor' + +// TEMPLATE: LEGO1 0x1005ff60 +// MxPtrList::~MxPtrList + +// SYNTHETIC: LEGO1 0x1005ffb0 +// MxCollection::`scalar deleting destructor' + +// SYNTHETIC: LEGO1 0x10060020 +// MxList::`scalar deleting destructor' + +// SYNTHETIC: LEGO1 0x100600d0 +// MxPtrList::`scalar deleting destructor' + +#endif // LEGOTRANINFOLIST_H diff --git a/LEGO1/lego/legoomni/include/legoutils.h b/LEGO1/lego/legoomni/include/legoutils.h index d2c90bfb..66d2a319 100644 --- a/LEGO1/lego/legoomni/include/legoutils.h +++ b/LEGO1/lego/legoomni/include/legoutils.h @@ -17,7 +17,7 @@ class LegoNamedTexture; void FUN_1003e050(LegoAnimPresenter* p_presenter); Extra::ActionType MatchActionString(const char*); -void InvokeAction(Extra::ActionType p_actionId, MxAtomId& p_pAtom, int p_targetEntityId, LegoEntity* p_sender); +void InvokeAction(Extra::ActionType p_actionId, MxAtomId& p_pAtom, MxS32 p_targetEntityId, LegoEntity* p_sender); void SetCameraControllerFromIsle(); void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bOut, float* p_gOut); MxBool FUN_1003ee00(MxAtomId& p_atomId, MxS32 p_id); @@ -25,6 +25,7 @@ void FUN_1003ef00(MxBool); void SetAppCursor(WPARAM p_wparam); MxBool FUN_1003ef60(); MxBool RemoveFromWorld(MxAtomId& p_atomId1, MxS32 p_id1, MxAtomId& p_atomId2, MxS32 p_id2); +MxS32 FUN_1003f050(MxS32); void SetLightPosition(MxU32); LegoNamedTexture* ReadNamedTexture(LegoFile* p_file); void FUN_1003f540(LegoFile* p_file, const char* p_filename); diff --git a/LEGO1/lego/legoomni/include/legovideomanager.h b/LEGO1/lego/legoomni/include/legovideomanager.h index 0cde06b6..3af2ff80 100644 --- a/LEGO1/lego/legoomni/include/legovideomanager.h +++ b/LEGO1/lego/legoomni/include/legovideomanager.h @@ -37,6 +37,7 @@ class LegoVideoManager : public MxVideoManager { void SetSkyColor(float p_red, float p_green, float p_blue); void OverrideSkyColor(MxBool p_shouldOverride); + MxResult ResetPalette(MxBool p_ignoreSkyColor); void FUN_1007c520(); inline Tgl::Renderer* GetRenderer() { return this->m_renderer; } diff --git a/LEGO1/lego/legoomni/include/legoworld.h b/LEGO1/lego/legoomni/include/legoworld.h index 526a28d3..801b4e7a 100644 --- a/LEGO1/lego/legoomni/include/legoworld.h +++ b/LEGO1/lego/legoomni/include/legoworld.h @@ -64,6 +64,14 @@ class LegoWorld : public LegoEntity { virtual MxBool VTable0x64(); // vtable+0x64 virtual void Enable(MxBool p_enable); // vtable+0x68 + MxBool PresentersPending(); + void Remove(MxCore* p_object); + undefined4 FUN_1001fa70(IslePathActor* p_actor); + void FUN_1001fc80(IslePathActor* p_actor); + MxResult GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value); + MxCore* Find(const char* p_class, const char* p_name); + MxCore* Find(const MxAtomId& p_atom, MxS32 p_entityId); + inline LegoCameraController* GetCamera() { return m_cameraController; } inline MxS32 GetScriptIndex() { return m_scriptIndex; } inline MxCoreSet& GetUnknown0xd0() { return m_set0xd0; } @@ -71,13 +79,6 @@ class LegoWorld : public LegoEntity { inline void SetScriptIndex(MxS32 p_scriptIndex) { m_scriptIndex = p_scriptIndex; } - MxBool PresentersPending(); - void Remove(MxCore* p_object); - void FUN_1001fc80(IslePathActor* p_actor); - MxResult GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value); - MxCore* Find(const char* p_class, const char* p_name); - MxCore* Find(const MxAtomId& p_atom, MxS32 p_entityId); - // SYNTHETIC: LEGO1 0x1001dee0 // LegoWorld::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/misc.h b/LEGO1/lego/legoomni/include/misc.h index aa86432f..7ff00f83 100644 --- a/LEGO1/lego/legoomni/include/misc.h +++ b/LEGO1/lego/legoomni/include/misc.h @@ -1,6 +1,7 @@ #ifndef MISC_H #define MISC_H +#include "compat.h" #include "decomp.h" #include "mxtypes.h" @@ -26,6 +27,17 @@ class MxTransitionManager; class ViewLODListManager; class ViewManager; +namespace JukeboxScript +{ +#ifdef COMPAT_MODE +enum Script : int; +#else +enum Script; +#endif +} // namespace JukeboxScript + +extern MxBool g_isWorldActive; + LegoOmni* Lego(); LegoInputManager* InputManager(); LegoSoundManager* SoundManager(); @@ -47,7 +59,7 @@ ViewLODListManager* GetViewLODListManager(); LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid); LegoROI* FindROI(const char* p_name); MxDSAction& GetCurrentAction(); -void PlayMusic(MxU32 p_index); +void PlayMusic(JukeboxScript::Script p_script); void SetIsWorldActive(MxBool p_isWorldActive); void DeleteObjects(MxAtomId* p_id, MxS32 p_first, MxS32 p_last); void SetCurrentWorld(LegoWorld* p_world); diff --git a/LEGO1/lego/legoomni/include/motocycle.h b/LEGO1/lego/legoomni/include/motocycle.h index cf3f376f..638018f0 100644 --- a/LEGO1/lego/legoomni/include/motocycle.h +++ b/LEGO1/lego/legoomni/include/motocycle.h @@ -30,6 +30,8 @@ class Motocycle : public IslePathActor { MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc void VTable0xe4() override; // vtable+0xe4 + void FUN_10035e10(); + // SYNTHETIC: LEGO1 0x100359d0 // Motocycle::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/mxtransitionmanager.h b/LEGO1/lego/legoomni/include/mxtransitionmanager.h index 31fcdb7e..5fd23356 100644 --- a/LEGO1/lego/legoomni/include/mxtransitionmanager.h +++ b/LEGO1/lego/legoomni/include/mxtransitionmanager.h @@ -37,8 +37,8 @@ class MxTransitionManager : public MxCore { e_notTransitioning = 0, e_noAnimation, e_dissolve, - e_pixelation, - e_screenWipe, + e_mosaic, + e_wipeDown, e_windows, e_broken // Unknown what this is supposed to be, it locks the game up }; @@ -52,12 +52,12 @@ class MxTransitionManager : public MxCore { private: void EndTransition(MxBool p_notifyWorld); - void TransitionNone(); - void TransitionDissolve(); - void TransitionPixelation(); - void TransitionWipe(); - void TransitionWindows(); - void TransitionBroken(); + void NoTransition(); + void DissolveTransition(); + void MosaicTransition(); + void WipeDownTransition(); + void WindowsTransition(); + void BrokenTransition(); void SubmitCopyRect(LPDDSURFACEDESC p_ddsc); void SetupCopyRect(LPDDSURFACEDESC p_ddsc); diff --git a/LEGO1/lego/legoomni/include/police.h b/LEGO1/lego/legoomni/include/police.h index d0bf5fa5..721ec7cb 100644 --- a/LEGO1/lego/legoomni/include/police.h +++ b/LEGO1/lego/legoomni/include/police.h @@ -15,17 +15,6 @@ class PoliceState; // Radio at 0xf8 class Police : public LegoWorld { public: - enum PoliceScript { - c_leftArrowCtl = 1, - c_rightArrowCtl = 2, - c_infoCtl = 3, - c_doorCtl = 4, - c_donutCtl = 5, - - c_nickAnim = 500, - c_lauraAnim = 501, - }; - Police(); ~Police() override; // vtable+0x00 @@ -58,9 +47,9 @@ class Police : public LegoWorld { MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleKeyPress(LegoEventNotificationParam& p_param); - Radio m_radio; // 0xf8 - PoliceState* m_policeState; // 0x108 - LegoGameState::Area m_transitionDestination; // 0x10c + Radio m_radio; // 0xf8 + PoliceState* m_policeState; // 0x108 + LegoGameState::Area m_destLocation; // 0x10c }; #endif // POLICE_H diff --git a/LEGO1/lego/legoomni/include/policestate.h b/LEGO1/lego/legoomni/include/policestate.h index b5f8c055..3deaff35 100644 --- a/LEGO1/lego/legoomni/include/policestate.h +++ b/LEGO1/lego/legoomni/include/policestate.h @@ -5,6 +5,15 @@ #include "legostate.h" #include "police.h" +namespace PoliceScript +{ +#ifdef COMPAT_MODE +enum Script : int; +#else +enum Script; +#endif +} // namespace PoliceScript + // VTABLE: LEGO1 0x100d8af0 // SIZE 0x10 class PoliceState : public LegoState { @@ -36,7 +45,7 @@ class PoliceState : public LegoState { void FUN_1005ea40(); private: - Police::PoliceScript m_policeScript; // 0x08 + PoliceScript::Script m_policeScript; // 0x08 undefined4 m_unk0x0c; // 0x0c }; diff --git a/LEGO1/lego/legoomni/include/racestate.h b/LEGO1/lego/legoomni/include/racestate.h index b8daa738..beed0dd7 100644 --- a/LEGO1/lego/legoomni/include/racestate.h +++ b/LEGO1/lego/legoomni/include/racestate.h @@ -3,12 +3,15 @@ #include "legostate.h" +// SIZE 0x06 struct RaceStateEntry { public: - MxU8 m_id; - undefined m_unk0x01[1]; - MxU16 m_unk0x02; - MxU16 m_color; + inline MxS16 GetUnknown0x02() { return m_unk0x02; } + + // TODO: Possibly private + MxU8 m_id; // 0x00 + MxS16 m_unk0x02; // 0x02 + MxU16 m_color; // 0x04 }; // VTABLE: LEGO1 0x100d5e30 @@ -32,7 +35,10 @@ class RaceState : public LegoState { MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c + RaceStateEntry* GetState(MxU8 p_id); + inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; } + inline undefined4 GetUnknown0x28() { return m_unk0x28; } // SYNTHETIC: LEGO1 0x1000f6f0 // RaceState::~RaceState @@ -40,12 +46,8 @@ class RaceState : public LegoState { // SYNTHETIC: LEGO1 0x100160d0 // RaceState::`scalar deleting destructor' -private: - RaceStateEntry* GetState(MxU8 p_id); - protected: RaceStateEntry m_state[5]; // 0x08 - undefined2 m_unk0x26[2]; // 0x26 undefined4 m_unk0x28; // 0x28 }; diff --git a/LEGO1/lego/legoomni/include/registrationbook.h b/LEGO1/lego/legoomni/include/registrationbook.h index a28ffe5e..41fadc0f 100644 --- a/LEGO1/lego/legoomni/include/registrationbook.h +++ b/LEGO1/lego/legoomni/include/registrationbook.h @@ -1,7 +1,11 @@ #ifndef REGISTRATIONBOOK_H #define REGISTRATIONBOOK_H +#include "jukebox.h" +#include "legogamestate.h" #include "legoworld.h" +#include "mxcontrolpresenter.h" +#include "mxstillpresenter.h" class InfocenterState; class MxEndActionNotificationParam; @@ -11,23 +15,6 @@ class LegoControlManagerEvent; // SIZE 0x2d0 class RegistrationBook : public LegoWorld { public: - enum RegistrationBookScript { - c_alphabetCtl = 5, - c_aBitmap = 6, - c_backgroundBitmap = 36, - c_checkHiLiteBitmap = 37, - c_check0ctl = 68, - c_check1ctl = 71, - c_check2ctl = 74, - c_check3ctl = 77, - c_check4ctl = 80, - c_check5ctl = 83, - c_check6ctl = 86, - c_check7ctl = 89, - c_check8ctl = 92, - c_check9ctl = 95, - }; - RegistrationBook(); ~RegistrationBook() override; // vtable+0x00 @@ -52,34 +39,38 @@ class RegistrationBook : public LegoWorld { MxBool VTable0x64() override; // vtable+0x64 void Enable(MxBool p_enable) override; // vtable+0x68 + inline void PlayAction(MxU32 p_objectId); + // SYNTHETIC: LEGO1 0x10076f30 // RegistrationBook::`scalar deleting destructor' private: - undefined4 m_unk0xf8; // 0xf8 - undefined m_unk0xfc; // 0xfc - undefined m_unk0xfd[3]; // 0xfd - undefined m_unk0x100[0x68]; // 0x100 - undefined m_unk0x168[0x118]; // 0x168 + undefined4 m_unk0xf8; // 0xf8 + undefined m_unk0xfc; // 0xfc + undefined m_unk0xfd[3]; // 0xfd + MxStillPresenter* m_alphabet[26]; // 0x100 + MxStillPresenter* m_name[10][7]; // 0x168 struct { - undefined4 m_unk0x00[3]; // 0x00 - undefined2 m_unk0x0c; // 0x0c - undefined2 m_unk0x0e; // 0x0e - } m_unk0x280; // 0x280 - undefined m_unk0x290[0x28]; // 0x290 - undefined2 m_unk0x2b8; // 0x2b8 - InfocenterState* m_infocenterState; // 0x2bc - undefined m_unk0x2c0; // 0x2c0 - undefined m_unk0x2c1; // 0x2c1 - undefined m_unk0x2c2[0x02]; // 0x2c2 - undefined4 m_unk0x2c4; // 0x2c4 - undefined4 m_unk0x2c8; // 0x2c8 - undefined4 m_unk0x2cc; // 0x2cc + MxS16 m_letters[7]; // 0x00 + undefined2 m_unk0x0e; // 0x0e + } m_unk0x280; // 0x280 + MxControlPresenter* m_checkmark[10]; // 0x290 + undefined2 m_unk0x2b8; // 0x2b8 + InfocenterState* m_infocenterState; // 0x2bc + undefined m_unk0x2c0; // 0x2c0 + undefined m_unk0x2c1; // 0x2c1 + undefined m_unk0x2c2[0x02]; // 0x2c2 + undefined4 m_unk0x2c4; // 0x2c4 + undefined4 m_unk0x2c8; // 0x2c8 + LPDIRECTDRAWSURFACE m_unk0x2cc; // 0x2cc MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleKeyPress(MxS8 p_key); MxLong HandleClick(LegoControlManagerEvent& p_param); MxLong HandleNotification19(MxParam& p_param); + void FUN_100775c0(MxS16 p_playerIndex); + void WriteInfocenterLetters(MxS16); + void FUN_100778c0(); }; #endif // REGISTRATIONBOOK_H diff --git a/LEGO1/lego/legoomni/include/score.h b/LEGO1/lego/legoomni/include/score.h index 290e6ff4..2244523c 100644 --- a/LEGO1/lego/legoomni/include/score.h +++ b/LEGO1/lego/legoomni/include/score.h @@ -44,7 +44,7 @@ class Score : public LegoWorld { void FillArea(MxU32 p_x, MxU32 p_y, MxS16 p_color); protected: - LegoGameState::Area m_unk0xf8; + LegoGameState::Area m_destLocation; ScoreState* m_state; MxU8* m_surface; diff --git a/LEGO1/lego/legoomni/include/skateboard.h b/LEGO1/lego/legoomni/include/skateboard.h index 628e26f5..b5d4fbf1 100644 --- a/LEGO1/lego/legoomni/include/skateboard.h +++ b/LEGO1/lego/legoomni/include/skateboard.h @@ -29,6 +29,8 @@ class SkateBoard : public IslePathActor { MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4 void VTable0xe4() override; // vtable+0xe4 + void FUN_10010510(); + // SYNTHETIC: LEGO1 0x1000ff60 // SkateBoard::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/towtrack.h b/LEGO1/lego/legoomni/include/towtrack.h index 85e54e6b..2d1146ef 100644 --- a/LEGO1/lego/legoomni/include/towtrack.h +++ b/LEGO1/lego/legoomni/include/towtrack.h @@ -32,6 +32,9 @@ class TowTrack : public IslePathActor { MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc void VTable0xe4() override; // vtable+0xe4 + void FUN_1004dab0(); + void FUN_1004dad0(); + // SYNTHETIC: LEGO1 0x1004c950 // TowTrack::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/src/act1/act1state.cpp b/LEGO1/lego/legoomni/src/act1/act1state.cpp index 4d422619..71bd7039 100644 --- a/LEGO1/lego/legoomni/src/act1/act1state.cpp +++ b/LEGO1/lego/legoomni/src/act1/act1state.cpp @@ -12,15 +12,17 @@ MxS32 g_unk0x100f37f0[] = { Act1State::e_unk955, }; +extern MxAtomId* g_isleScript; + // STUB: LEGO1 0x100334b0 Act1State::Act1State() : m_unk0x00c(0), m_unk0x00e(0), m_unk0x008(NULL), m_unk0x010(0) { - m_unk0x01e = 0; + m_unk0x01e = FALSE; m_unk0x018 = 1; m_unk0x010 = 0; - m_unk0x020 = 0; + m_planeActive = FALSE; m_unk0x00e = 0; - m_unk0x01f = 0; + m_unk0x01f = FALSE; m_unk0x008 = g_unk0x100f37f0; m_unk0x014 = -1; m_unk0x022 = 0; @@ -30,7 +32,7 @@ Act1State::Act1State() : m_unk0x00c(0), m_unk0x00e(0), m_unk0x008(NULL), m_unk0x m_unk0x160 = NULL; m_unk0x1b0 = NULL; m_unk0x021 = 1; - m_unk0x01c = 1; + m_elevFloor = Act1State::c_floor1; m_unk0x00c = _countof(g_unk0x100f37f0); m_unk0x1b4 = NULL; m_unk0x1b8 = NULL; @@ -184,6 +186,21 @@ MxResult Act1State::VTable0x1c(LegoFile* p_legoFile) return SUCCESS; } +// STUB: LEGO1 0x10034660 +void Act1State::FUN_10034660() +{ + // TODO +} + +// FUNCTION: LEGO1 0x100346a0 +void Act1State::FUN_100346a0() +{ + if (m_unk0x014 != -1) { + InvokeAction(Extra::e_stop, *g_isleScript, m_unk0x014, NULL); + m_unk0x014 = -1; + } +} + // FUNCTION: LEGO1 0x100346d0 MxBool Act1State::SetFlag() { @@ -267,6 +284,12 @@ MxBool Act1State::SetFlag() return TRUE; } +// STUB: LEGO1 0x10034b60 +void Act1State::FUN_10034b60() +{ + // TODO +} + // STUB: LEGO1 0x10034d00 void Act1State::FUN_10034d00() { diff --git a/LEGO1/lego/legoomni/src/actors/ambulance.cpp b/LEGO1/lego/legoomni/src/actors/ambulance.cpp index aad42ca4..298b1fb4 100644 --- a/LEGO1/lego/legoomni/src/actors/ambulance.cpp +++ b/LEGO1/lego/legoomni/src/actors/ambulance.cpp @@ -60,6 +60,12 @@ MxU32 Ambulance::VTable0xcc() return 0; } +// STUB: LEGO1 0x10036e60 +void Ambulance::FUN_10036e60() +{ + // TODO +} + // STUB: LEGO1 0x10036e90 void Ambulance::VTable0xe4() { @@ -73,6 +79,12 @@ MxU32 Ambulance::VTable0xd4(LegoControlManagerEvent& p_param) return 0; } +// STUB: LEGO1 0x10037060 +void Ambulance::FUN_10037060() +{ + // TODO +} + // STUB: LEGO1 0x10037160 MxResult Ambulance::Tickle() { diff --git a/LEGO1/lego/legoomni/src/actors/bike.cpp b/LEGO1/lego/legoomni/src/actors/bike.cpp index f9921309..b0dcab1f 100644 --- a/LEGO1/lego/legoomni/src/actors/bike.cpp +++ b/LEGO1/lego/legoomni/src/actors/bike.cpp @@ -34,7 +34,7 @@ MxResult Bike::Create(MxDSAction& p_dsAction) void Bike::VTable0xe4() { IslePathActor::VTable0xe4(); - GameState()->SetCurrentArea(LegoGameState::Area::e_unk57); + GameState()->SetCurrentArea(LegoGameState::Area::e_bike); FUN_1003ee00(*g_isleScript, 11); FUN_1003ee00(*g_isleScript, 12); FUN_1003ee00(*g_isleScript, 15); @@ -56,3 +56,9 @@ MxU32 Bike::VTable0xd4(LegoControlManagerEvent& p_param) // TODO return 0; } + +// STUB: LEGO1 0x10076b60 +void Bike::FUN_10076b60() +{ + // TODO +} diff --git a/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp b/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp index 66fa23d2..70a19138 100644 --- a/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp +++ b/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp @@ -50,3 +50,9 @@ MxU32 DuneBuggy::VTable0xdc(MxType19NotificationParam& p_param) // TODO return 0; } + +// STUB: LEGO1 0x10068350 +void DuneBuggy::FUN_10068350() +{ + // TODO +} diff --git a/LEGO1/lego/legoomni/src/actors/helicopter.cpp b/LEGO1/lego/legoomni/src/actors/helicopter.cpp index 00ac8649..0b3a0878 100644 --- a/LEGO1/lego/legoomni/src/actors/helicopter.cpp +++ b/LEGO1/lego/legoomni/src/actors/helicopter.cpp @@ -2,8 +2,11 @@ #include "act1state.h" #include "act3.h" +#include "act3_actions.h" #include "isle.h" +#include "isle_actions.h" #include "jukebox.h" +#include "jukebox_actions.h" #include "legoanimationmanager.h" #include "legocontrolmanager.h" #include "legogamestate.h" @@ -61,16 +64,16 @@ void Helicopter::GetState() void Helicopter::VTable0xe4() { if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { - VTable0xe8(0x28, TRUE, 7); + VTable0xe8(LegoGameState::e_unk40, TRUE, 7); } IslePathActor::VTable0xe4(); if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { - GameState()->SetCurrentArea(LegoGameState::e_unk60); + GameState()->SetCurrentArea(LegoGameState::e_copter); if (CurrentActor()) { if (CurrentActor()->IsA("IslePathActor")) { - ((IslePathActor*) CurrentActor())->VTable0xe8(0x37, TRUE, 7); + ((IslePathActor*) CurrentActor())->VTable0xe8(LegoGameState::e_unk55, TRUE, 7); } } } @@ -113,12 +116,12 @@ MxU32 Helicopter::VTable0xcc() case LegoGameState::e_act1: m_script = *g_isleScript; AnimationManager()->FUN_10064670(FALSE); - VTable0xe8(0x29, TRUE, 7); - ((Isle*) CurrentWorld())->SetUnknown13c(0x3c); + VTable0xe8(LegoGameState::e_unk41, TRUE, 7); + ((Isle*) CurrentWorld())->SetDestLocation(LegoGameState::e_copter); FUN_10015820(TRUE, 0); - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, TRUE); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, TRUE); SetUnknownDC(4); - PlayMusic(JukeBox::e_jail); + PlayMusic(JukeboxScript::c_Jail_Music); break; case LegoGameState::e_act2: m_script = *g_act2mainScript; @@ -155,10 +158,10 @@ MxU32 Helicopter::VTable0xd4(LegoControlManagerEvent& p_param) if (p_param.GetUnknown0x28() == 1) { switch (p_param.GetClickedObjectId()) { - case 0x17: + case IsleScript::c_HelicopterArms_Ctl: if (*g_act3Script == script) { ((Act3*) CurrentWorld())->SetUnkown4270(2); - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); } else if (m_state->GetUnkown8() != 0) { break; @@ -167,7 +170,7 @@ MxU32 Helicopter::VTable0xd4(LegoControlManagerEvent& p_param) GameState()->SetCurrentArea(LegoGameState::e_unk66); ret = 1; break; - case 0x18: { + case IsleScript::c_Helicopter_TakeOff_Ctl: { if (*g_act3Script == script) { break; } @@ -182,7 +185,7 @@ MxU32 Helicopter::VTable0xd4(LegoControlManagerEvent& p_param) ret = 1; break; } - case 0x19: + case IsleScript::c_Helicopter_Land_Ctl: if (*g_act3Script == script) { break; } @@ -194,13 +197,13 @@ MxU32 Helicopter::VTable0xd4(LegoControlManagerEvent& p_param) } ret = 1; break; - case 0x1a: + case Act3Script::c_Helicopter_Pizza_Ctl: if (*g_act3Script != script) { break; } ret = 1; /* fall through */ - case 0x1b: + case Act3Script::c_Helicopter_Donut_Ctl: if (*g_act3Script != script) { break; } @@ -227,10 +230,11 @@ MxU32 Helicopter::VTable0xd4(LegoControlManagerEvent& p_param) } ret = 1; break; - case 0x1c: + /* case Act3Script::c_Helicopter_Info_Ctl: */ + case IsleScript::c_Helicopter_Info_Ctl: if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { - ((Isle*) CurrentWorld())->SetUnknown13c(2); - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + ((Isle*) CurrentWorld())->SetDestLocation(LegoGameState::e_infomain); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); VTable0xe4(); } ret = 1; @@ -252,10 +256,10 @@ MxU32 Helicopter::VTable0xd8(MxType18NotificationParam& p_param) case 1: { if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { ((Act1State*) GameState()->GetState("Act1State"))->SetUnknown18(4); - VTable0xe8(0x2a, TRUE, 7); + VTable0xe8(LegoGameState::e_unk42, TRUE, 7); } else { - VTable0xe8(0x31, TRUE, 7); + VTable0xe8(LegoGameState::e_unk49, TRUE, 7); } m_state->SetUnknown8(2); @@ -289,10 +293,10 @@ MxU32 Helicopter::VTable0xd8(MxType18NotificationParam& p_param) if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { ((Act1State*) GameState()->GetState("Act1State"))->SetUnknown18(0); - VTable0xe8(0x29, TRUE, 7); + VTable0xe8(LegoGameState::e_unk41, TRUE, 7); } else { - VTable0xe8(0x30, TRUE, 7); + VTable0xe8(LegoGameState::e_unk48, TRUE, 7); } m_state->SetUnknown8(0); @@ -366,51 +370,3 @@ void Helicopter::VTable0x70(float p_float) } } } - -// FUNCTION: LEGO1 0x100040a0 -MxResult HelicopterSubclass::FUN_100040a0(Vector4& p_v, float p_f) -{ - MxU32 state = m_unk0x30; - if (state == 1) { - p_v.EqualsImpl(m_unk0x00.GetData()); - p_v[3] = acos(p_v[3]) * (1 - p_f) * 2.0; - return p_v.NormalizeQuaternion(); - } - else if (state == 2) { - p_v.EqualsImpl(m_unk0x18.GetData()); - p_v[3] = acos(p_v[3]) * p_f * 2.0; - return p_v.NormalizeQuaternion(); - } - else if (state == 3) { - double d1 = p_v.Dot(&m_unk0x00, &m_unk0x18), d2; - if (d1 + 1 > 0.00001) { - if (1 - d1 > 0.00001) { - double d = acos(d1); - sin(d); - d1 = sin((1 - p_f) * d) / sin(d); - d2 = sin(p_f * d) / sin(d); - } - else { - d1 = 1 - p_f; - d2 = p_f; - } - for (MxS32 i = 0; i < 4; i++) { - p_v[i] = m_unk0x18[i] * d2 + m_unk0x00[i] * d1; - } - return SUCCESS; - } - p_v[0] = -m_unk0x00[1]; - p_v[1] = m_unk0x00[1]; - p_v[2] = -m_unk0x00[3]; - p_v[3] = m_unk0x00[2]; - d1 = sin((1 - p_f) * 1.570796326794895); - d2 = sin(p_f * 1.570796326794895); - for (MxS32 i = 0; i < 3; i++) { - p_v[i] = m_unk0x00[i] * d1 + p_v[i] * d2; - } - return SUCCESS; - } - else { - return FAILURE; - } -} diff --git a/LEGO1/lego/legoomni/src/actors/islepathactor.cpp b/LEGO1/lego/legoomni/src/actors/islepathactor.cpp index 55ef5b71..6bcb2956 100644 --- a/LEGO1/lego/legoomni/src/actors/islepathactor.cpp +++ b/LEGO1/lego/legoomni/src/actors/islepathactor.cpp @@ -45,13 +45,13 @@ void IslePathActor::VTable0xe4() } // STUB: LEGO1 0x1001b2a0 -void IslePathActor::VTable0xe8(MxU32, MxBool, MxU8) +void IslePathActor::VTable0xe8(LegoGameState::Area, MxBool, MxU8) { // TODO } // STUB: LEGO1 0x1001b5b0 -void IslePathActor::VTable0xec() +void IslePathActor::VTable0xec(MxMatrix, MxU32, MxBool) { // TODO } diff --git a/LEGO1/lego/legoomni/src/actors/jetski.cpp b/LEGO1/lego/legoomni/src/actors/jetski.cpp index 7a5a3dcd..b68e6b5e 100644 --- a/LEGO1/lego/legoomni/src/actors/jetski.cpp +++ b/LEGO1/lego/legoomni/src/actors/jetski.cpp @@ -42,3 +42,9 @@ MxU32 Jetski::VTable0xd4(LegoControlManagerEvent& p_param) // TODO return 0; } + +// STUB: LEGO1 0x1007e990 +void Jetski::FUN_1007e990() +{ + // TODO +} diff --git a/LEGO1/lego/legoomni/src/actors/jukeboxentity.cpp b/LEGO1/lego/legoomni/src/actors/jukeboxentity.cpp index f7d4ab21..7e7a708b 100644 --- a/LEGO1/lego/legoomni/src/actors/jukeboxentity.cpp +++ b/LEGO1/lego/legoomni/src/actors/jukeboxentity.cpp @@ -1,7 +1,9 @@ #include "jukeboxentity.h" #include "isle.h" +#include "isle_actions.h" #include "islepathactor.h" +#include "jukebox_actions.h" #include "jukeboxstate.h" #include "legogamestate.h" #include "legoomni.h" @@ -36,8 +38,8 @@ MxLong JukeBoxEntity::Notify(MxParam& p_param) CurrentActor()->VTable0xe4(); } - ((Isle*) FindWorld(*g_isleScript, 0))->SetUnknown13c(0x35); - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + ((Isle*) FindWorld(*g_isleScript, 0))->SetDestLocation(LegoGameState::e_jukeboxw); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); return 1; } @@ -54,28 +56,28 @@ void JukeBoxEntity::StartAction() switch (state->GetState()) { case 0: - InvokeAction(Extra::e_start, *g_isleScript, 0x319, NULL); - GameState()->SetUnknown0x41c(0x37); + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_npz001bd_RunAnim, NULL); + GameState()->SetUnknown0x41c(JukeboxScript::c_JBMusic1); break; case 1: - InvokeAction(Extra::e_start, *g_isleScript, 0x31e, NULL); - GameState()->SetUnknown0x41c(0x38); + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_npz006bd_RunAnim, NULL); + GameState()->SetUnknown0x41c(JukeboxScript::c_JBMusic2); break; case 2: - InvokeAction(Extra::e_start, *g_isleScript, 0x31b, NULL); - GameState()->SetUnknown0x41c(0x39); + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_npz003bd_RunAnim, NULL); + GameState()->SetUnknown0x41c(JukeboxScript::c_JBMusic3); break; case 3: - InvokeAction(Extra::e_start, *g_isleScript, 0x31a, NULL); - GameState()->SetUnknown0x41c(0x3a); + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_npz002bd_RunAnim, NULL); + GameState()->SetUnknown0x41c(JukeboxScript::c_JBMusic4); break; case 4: - InvokeAction(Extra::e_start, *g_isleScript, 0x31f, NULL); - GameState()->SetUnknown0x41c(0x3b); + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_npz007bd_RunAnim, NULL); + GameState()->SetUnknown0x41c(JukeboxScript::c_JBMusic5); break; case 5: - InvokeAction(Extra::e_start, *g_isleScript, 0x31c, NULL); - GameState()->SetUnknown0x41c(0x3c); + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_npz004bd_RunAnim, NULL); + GameState()->SetUnknown0x41c(JukeboxScript::c_JBMusic6); break; } @@ -91,35 +93,35 @@ void JukeBoxEntity::StartAction() } // FUNCTION: LEGO1 0x100860f0 -void JukeBoxEntity::StopAction(MxU32 p_state) +void JukeBoxEntity::StopAction(JukeboxScript::Script p_script) { JukeBoxState* state = (JukeBoxState*) GameState()->GetState("JukeBoxState"); if (state && state->IsActive()) { - switch (p_state) { - case 0x37: + switch (p_script) { + case JukeboxScript::c_JBMusic1: state->SetActive(FALSE); - InvokeAction(Extra::e_stop, *g_isleScript, 0x319, NULL); + InvokeAction(Extra::e_stop, *g_isleScript, IsleScript::c_npz001bd_RunAnim, NULL); break; - case 0x38: + case JukeboxScript::c_JBMusic2: state->SetActive(FALSE); - InvokeAction(Extra::e_stop, *g_isleScript, 0x31e, NULL); + InvokeAction(Extra::e_stop, *g_isleScript, IsleScript::c_npz006bd_RunAnim, NULL); break; - case 0x39: + case JukeboxScript::c_JBMusic3: state->SetActive(FALSE); - InvokeAction(Extra::e_stop, *g_isleScript, 0x31b, NULL); + InvokeAction(Extra::e_stop, *g_isleScript, IsleScript::c_npz003bd_RunAnim, NULL); break; - case 0x3a: + case JukeboxScript::c_JBMusic4: state->SetActive(FALSE); - InvokeAction(Extra::e_stop, *g_isleScript, 0x31a, NULL); + InvokeAction(Extra::e_stop, *g_isleScript, IsleScript::c_npz002bd_RunAnim, NULL); break; - case 0x3b: + case JukeboxScript::c_JBMusic5: state->SetActive(FALSE); - InvokeAction(Extra::e_stop, *g_isleScript, 0x31f, NULL); + InvokeAction(Extra::e_stop, *g_isleScript, IsleScript::c_npz007bd_RunAnim, NULL); break; - case 0x3c: + case JukeboxScript::c_JBMusic6: state->SetActive(FALSE); - InvokeAction(Extra::e_stop, *g_isleScript, 0x31c, NULL); + InvokeAction(Extra::e_stop, *g_isleScript, IsleScript::c_npz004bd_RunAnim, NULL); break; } diff --git a/LEGO1/lego/legoomni/src/actors/motorcycle.cpp b/LEGO1/lego/legoomni/src/actors/motorcycle.cpp index 0f4424f9..61e8eb3c 100644 --- a/LEGO1/lego/legoomni/src/actors/motorcycle.cpp +++ b/LEGO1/lego/legoomni/src/actors/motorcycle.cpp @@ -50,3 +50,9 @@ MxU32 Motocycle::VTable0xdc(MxType19NotificationParam& p_param) // TODO return 0; } + +// STUB: LEGO1 0x10035e10 +void Motocycle::FUN_10035e10() +{ + // TODO +} diff --git a/LEGO1/lego/legoomni/src/actors/radio.cpp b/LEGO1/lego/legoomni/src/actors/radio.cpp index 96d91b33..13c973ed 100644 --- a/LEGO1/lego/legoomni/src/actors/radio.cpp +++ b/LEGO1/lego/legoomni/src/actors/radio.cpp @@ -1,5 +1,6 @@ #include "radio.h" +#include "isle_actions.h" #include "legocontrolmanager.h" #include "legogamestate.h" #include "legoomni.h" @@ -97,7 +98,7 @@ MxLong Radio::HandleClick(LegoControlManagerEvent& p_param) MxDSAction action; // Unused MxS32 objectId = p_param.GetClickedObjectId(); - if (objectId == 18) { + if (objectId == IsleScript::c_Radio_Ctl) { if (m_state->IsActive()) { Stop(); } diff --git a/LEGO1/lego/legoomni/src/actors/skateboard.cpp b/LEGO1/lego/legoomni/src/actors/skateboard.cpp index 759ce4b6..5024c51d 100644 --- a/LEGO1/lego/legoomni/src/actors/skateboard.cpp +++ b/LEGO1/lego/legoomni/src/actors/skateboard.cpp @@ -50,3 +50,9 @@ MxU32 SkateBoard::VTable0xd0() // TODO return 0; } + +// STUB: LEGO1 0x10010510 +void SkateBoard::FUN_10010510() +{ + // TODO +} diff --git a/LEGO1/lego/legoomni/src/actors/towtrack.cpp b/LEGO1/lego/legoomni/src/actors/towtrack.cpp index ebfd3ee7..673efddc 100644 --- a/LEGO1/lego/legoomni/src/actors/towtrack.cpp +++ b/LEGO1/lego/legoomni/src/actors/towtrack.cpp @@ -69,3 +69,15 @@ MxU32 TowTrack::VTable0xd4(LegoControlManagerEvent& p_param) // TODO return 0; } + +// STUB: LEGO1 0x1004dab0 +void TowTrack::FUN_1004dab0() +{ + // TODO +} + +// STUB: LEGO1 0x1004dad0 +void TowTrack::FUN_1004dad0() +{ + // TODO +} diff --git a/LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp b/LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp index 8f88ddc9..b0d56025 100644 --- a/LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp +++ b/LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp @@ -1,6 +1,8 @@ #include "legoloadcachesoundpresenter.h" #include "legocachsound.h" +#include "legosoundmanager.h" +#include "misc.h" #include "mxstreamchunk.h" #include "mxwavepresenter.h" @@ -69,9 +71,16 @@ void LegoLoadCacheSoundPresenter::DoneTickle() } } -// STUB: LEGO1 0x10018700 +// FUNCTION: LEGO1 0x10018700 MxResult LegoLoadCacheSoundPresenter::PutData() { - // TODO + m_criticalSection.Enter(); + + if (m_currentTickleState == e_done) { + m_cacheSound = SoundManager()->GetUnknown0x40()->FUN_1003d290(m_cacheSound); + m_unk0x7c = 1; + } + + m_criticalSection.Leave(); return SUCCESS; } diff --git a/LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp b/LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp index e4fee977..27baac13 100644 --- a/LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp +++ b/LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp @@ -1,6 +1,6 @@ #include "legosoundmanager.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxomni.h" // FUNCTION: LEGO1 0x100298a0 @@ -90,6 +90,12 @@ MxResult LegoSoundManager::Tickle() { MxSoundManager::Tickle(); - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); return m_unk0x40->Tickle(); } + +// STUB: LEGO1 0x1002a410 +void LegoSoundManager::FUN_1002a410(const float* p_pos, const float* p_dir, const float* p_up, const float* p_vel) +{ + // TODO +} diff --git a/LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp b/LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp index a5acbc8d..4a3a0eda 100644 --- a/LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp +++ b/LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp @@ -232,7 +232,7 @@ void MxBackgroundAudioManager::StopAction(MxParam& p_param) m_action2.SetObjectId(-1); } - Lego()->HandleActionEnd(p_param); + Lego()->HandleEndAction(p_param); } // FUNCTION: LEGO1 0x1007f2f0 diff --git a/LEGO1/lego/legoomni/src/build/legobuildingmanager.cpp b/LEGO1/lego/legoomni/src/build/legobuildingmanager.cpp index 613ccca1..a97409d7 100644 --- a/LEGO1/lego/legoomni/src/build/legobuildingmanager.cpp +++ b/LEGO1/lego/legoomni/src/build/legobuildingmanager.cpp @@ -56,6 +56,13 @@ MxResult LegoBuildingManager::Load(LegoStorage* p_storage) return SUCCESS; } +// STUB: LEGO1 0x1002fdb0 +MxBool LegoBuildingManager::FUN_1002fdb0(LegoEntity* p_entity) +{ + // TODO + return FALSE; +} + // STUB: LEGO1 0x1002ff40 MxU32 LegoBuildingManager::FUN_1002ff40(LegoROI*, MxBool) { diff --git a/LEGO1/lego/legoomni/src/common/animstate.cpp b/LEGO1/lego/legoomni/src/common/animstate.cpp index c7665237..4a4aa53f 100644 --- a/LEGO1/lego/legoomni/src/common/animstate.cpp +++ b/LEGO1/lego/legoomni/src/common/animstate.cpp @@ -1,6 +1,8 @@ #include "animstate.h" -DECOMP_SIZE_ASSERT(AnimState, 0x1c); +DECOMP_SIZE_ASSERT(AnimState, 0x1c) +DECOMP_SIZE_ASSERT(ModelInfo, 0x30) +DECOMP_SIZE_ASSERT(AnimInfo, 0x30) // FUNCTION: LEGO1 0x10064ff0 AnimState::AnimState() @@ -17,6 +19,18 @@ AnimState::~AnimState() // TODO } +// STUB: LEGO1 0x100651d0 +void AnimState::FUN_100651d0(MxU32, AnimInfo*, MxU32&) +{ + // TODO +} + +// STUB: LEGO1 0x10065240 +void AnimState::FUN_10065240(MxU32, AnimInfo*, MxU32) +{ + // TODO +} + // STUB: LEGO1 0x100652d0 MxResult AnimState::VTable0x1c(LegoFile* p_legoFile) { diff --git a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp index bdf3eb98..5cf614bf 100644 --- a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp @@ -1,9 +1,19 @@ #include "legoanimationmanager.h" +#include "legogamestate.h" +#include "legoomni.h" +#include "misc.h" +#include "mxutilities.h" + +#include + DECOMP_SIZE_ASSERT(LegoAnimationManager, 0x500) +// GLOBAL: LEGO1 0x100f7048 +Character g_characters[47]; // TODO: Initialize this + // GLOBAL: LEGO1 0x100f74f8 -int g_legoAnimationManagerConfig = 1; +MxS32 g_legoAnimationManagerConfig = 1; // FUNCTION: LEGO1 0x1005eb50 void LegoAnimationManager::configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig) @@ -53,23 +63,320 @@ void LegoAnimationManager::FUN_1005f6d0(MxBool) // TODO } -// STUB: LEGO1 0x1005f720 -void LegoAnimationManager::FUN_1005f720(MxS32 p_scriptIndex) +// STUB: LEGO1 0x1005f700 +void LegoAnimationManager::FUN_1005f700(MxBool) { // TODO } +// FUNCTION: LEGO1 0x1005f720 +MxResult LegoAnimationManager::LoadScriptInfo(MxS32 p_scriptIndex) +{ + MxResult result = FAILURE; + MxS32 i, j, k; + + if (m_unk0x08 != p_scriptIndex) { + if (m_tranInfoList != NULL) { + delete m_tranInfoList; + m_tranInfoList = NULL; + } + + if (m_tranInfoList2 != NULL) { + delete m_tranInfoList2; + m_tranInfoList2 = NULL; + } + + for (i = 0; i < (MxS32) _countof(m_unk0x28); i++) { + m_unk0x28[i] = 0; + m_unk0x30[i] = 0; + } + + m_unk0x38 = 0; + m_unk0x39 = 0; + m_unk0x430 = 0; + m_unk0x42c = 0; + + for (j = 0; j < (MxS32) _countof(g_characters); j++) { + g_characters[j].m_active = FALSE; + } + + m_animState = (AnimState*) GameState()->GetState("AnimState"); + if (m_animState == NULL) { + m_animState = (AnimState*) GameState()->CreateState("AnimState"); + } + + if (m_unk0x08 == 0) { + m_animState->FUN_10065240(m_animCount, m_anims, m_unk0x3fc); + } + + FUN_100603c0(); + + LegoFile file; + + if (p_scriptIndex == -1) { + result = SUCCESS; + goto done; + } + + char filename[128]; + char path[1024]; + sprintf(filename, "lego\\data\\%sinf.dta", Lego()->FindScript(p_scriptIndex)); + sprintf(path, "%s", MxOmni::GetHD()); + + if (path[strlen(path) - 1] != '\\') { + strcat(path, "\\"); + } + + strcat(path, filename); + + if (_access(path, 4)) { + sprintf(path, "%s", MxOmni::GetCD()); + + if (path[strlen(path) - 1] != '\\') { + strcat(path, "\\"); + } + + strcat(path, filename); + + if (_access(path, 4)) { + goto done; + } + } + + if (file.Open(path, LegoFile::c_read) == FAILURE) { + goto done; + } + + MxU32 version; + if (file.Read(&version, sizeof(version)) == FAILURE) { + goto done; + } + + if (version != 3) { + OmniError("World animation version mismatch", 0); + goto done; + } + + if (file.Read(&m_animCount, sizeof(m_animCount)) == FAILURE) { + goto done; + } + + m_anims = new AnimInfo[m_animCount]; + memset(m_anims, 0, m_animCount * sizeof(*m_anims)); + + for (j = 0; j < m_animCount; j++) { + if (ReadAnimInfo(&file, &m_anims[j]) == FAILURE) { + goto done; + } + + m_anims[j].m_unk0x28 = FUN_10062360(m_anims[j].m_animName + strlen(m_anims[j].m_animName) - 2); + m_anims[j].m_unk0x29 = 0; + + for (k = 0; k < 3; k++) { + m_anims[j].m_unk0x2a[k] = -1; + } + + if (m_anims[j].m_unk0x08 == -1) { + for (MxS32 l = 0; l < m_anims[j].m_modelCount; l++) { + MxS32 index = FUN_10062360(m_anims[j].m_models[l].m_modelName); + + if (index >= 0) { + g_characters[index].m_active = TRUE; + } + } + } + + MxS32 count = 0; + for (MxS32 m = 0; m < m_anims[j].m_modelCount; m++) { + MxU32 n; + + if (FUN_10060140(m_anims[j].m_models[m].m_modelName, n) && m_anims[j].m_models[m].m_unk0x2c) { + m_anims[j].m_unk0x2a[count++] = n; + if (count > 3) { + break; + } + } + } + } + + m_unk0x08 = p_scriptIndex; + m_tranInfoList = new LegoTranInfoList(); + m_tranInfoList2 = new LegoTranInfoList(); + + FUN_100617c0(-1, m_unk0x0e, m_unk0x10); + + result = SUCCESS; + m_unk0x402 = 1; + + if (m_unk0x42b) { + m_unk0x428 = m_unk0x3a; + m_unk0x429 = m_unk0x400; + m_unk0x42a = 1; + m_unk0x3a = 0; + m_unk0x400 = 0; + m_unk0x402 = 0; + } + + if (p_scriptIndex == 0) { + m_animState->FUN_100651d0(m_animCount, m_anims, m_unk0x3fc); + } + } + +done: + if (result == FAILURE) { + FUN_100603c0(); + } + + return result; +} + +// STUB: LEGO1 0x10060140 +MxBool LegoAnimationManager::FUN_10060140(char* p_name, MxU32& p_index) +{ + // TODO + return FALSE; +} + +// FUNCTION: LEGO1 0x10060180 +MxResult LegoAnimationManager::ReadAnimInfo(LegoFile* p_file, AnimInfo* p_info) +{ + MxResult result = FAILURE; + MxU8 length; + MxS32 i, j; + + if (p_file->Read(&length, sizeof(length)) == FAILURE) { + goto done; + } + + p_info->m_animName = new char[length + 1]; + if (p_file->Read(p_info->m_animName, length) == FAILURE) { + goto done; + } + + p_info->m_animName[length] = 0; + if (p_file->Read(&p_info->m_unk0x04, sizeof(p_info->m_unk0x04)) == FAILURE) { + goto done; + } + + if (p_file->Read(&p_info->m_unk0x08, sizeof(p_info->m_unk0x08)) == FAILURE) { + goto done; + } + if (p_file->Read(&p_info->m_unk0x0a, sizeof(p_info->m_unk0x0a)) == FAILURE) { + goto done; + } + if (p_file->Read(&p_info->m_unk0x0b, sizeof(p_info->m_unk0x0b)) == FAILURE) { + goto done; + } + if (p_file->Read(&p_info->m_unk0x0c, sizeof(p_info->m_unk0x0c)) == FAILURE) { + goto done; + } + if (p_file->Read(&p_info->m_unk0x0d, sizeof(p_info->m_unk0x0d)) == FAILURE) { + goto done; + } + + for (i = 0; i < (MxS32) _countof(p_info->m_unk0x10); i++) { + if (p_file->Read(&p_info->m_unk0x10[i], sizeof(*p_info->m_unk0x10)) != SUCCESS) { + goto done; + } + } + + if (p_file->Read(&p_info->m_modelCount, sizeof(p_info->m_modelCount)) == FAILURE) { + goto done; + } + + p_info->m_models = new ModelInfo[p_info->m_modelCount]; + memset(p_info->m_models, 0, p_info->m_modelCount * sizeof(*p_info->m_models)); + + for (j = 0; j < p_info->m_modelCount; j++) { + if (ReadModelInfo(p_file, &p_info->m_models[j]) == FAILURE) { + goto done; + } + } + + result = SUCCESS; + +done: + return result; +} + +// FUNCTION: LEGO1 0x10060310 +MxResult LegoAnimationManager::ReadModelInfo(LegoFile* p_file, ModelInfo* p_info) +{ + MxResult result = FAILURE; + MxU8 length; + + if (p_file->Read(&length, 1) == FAILURE) { + goto done; + } + + p_info->m_modelName = new char[length + 1]; + if (p_file->Read(p_info->m_modelName, length) == FAILURE) { + goto done; + } + + p_info->m_modelName[length] = 0; + if (p_file->Read(&p_info->m_unk0x04, sizeof(p_info->m_unk0x04)) == FAILURE) { + goto done; + } + + if (p_file->Read(p_info->m_location, sizeof(p_info->m_location)) != SUCCESS) { + goto done; + } + if (p_file->Read(p_info->m_direction, sizeof(p_info->m_direction)) != SUCCESS) { + goto done; + } + if (p_file->Read(p_info->m_up, sizeof(p_info->m_up)) != SUCCESS) { + goto done; + } + if (p_file->Read(&p_info->m_unk0x2c, sizeof(p_info->m_unk0x2c)) == FAILURE) { + goto done; + } + + result = SUCCESS; + +done: + return result; +} + +// STUB: LEGO1 0x100603c0 +void LegoAnimationManager::FUN_100603c0() +{ + // TODO +} + +// STUB: LEGO1 0x10060dc0 +undefined4 LegoAnimationManager::FUN_10060dc0( + IsleScript::Script, + undefined4, + undefined, + undefined, + undefined4, + undefined, + undefined, + undefined, + undefined +) +{ + // TODO + return 0; +} + // STUB: LEGO1 0x10061010 void LegoAnimationManager::FUN_10061010(undefined4) { // TODO } +// STUB: LEGO1 0x100617c0 +void LegoAnimationManager::FUN_100617c0(MxS32, MxU16&, MxU32&) +{ + // TODO +} + // STUB: LEGO1 0x100619f0 MxLong LegoAnimationManager::Notify(MxParam& p_param) { // TODO - return 0; } @@ -77,11 +384,30 @@ MxLong LegoAnimationManager::Notify(MxParam& p_param) MxResult LegoAnimationManager::Tickle() { // TODO - return SUCCESS; } +// STUB: LEGO1 0x10062360 +MxS8 LegoAnimationManager::FUN_10062360(char*) +{ + // TODO + return 0; +} + +// STUB: LEGO1 0x100629b0 +void LegoAnimationManager::FUN_100629b0(MxU32, MxBool) +{ + // TODO +} + // STUB: LEGO1 0x10064670 void LegoAnimationManager::FUN_10064670(MxBool) { + // TODO +} + +// STUB: LEGO1 0x10064740 +void LegoAnimationManager::FUN_10064740(MxBool) +{ + // TODO } diff --git a/LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp b/LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp index 2bc721a3..5cf43c65 100644 --- a/LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp +++ b/LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp @@ -67,6 +67,52 @@ void LegoBackgroundColor::SetValue(const char* p_colorString) delete[] colorStringCopy; } +// FUNCTION: LEGO1 0x1003c230 +void LegoBackgroundColor::ToggleDayNight(MxBool p_sun) +{ + char buffer[30]; + + if (p_sun) { + m_s += 0.1; + if (m_s > 0.9) { + m_s = 1.0; + } + } + else { + m_s -= 0.1; + if (m_s < 0.1) { + m_s = 0.1; + } + } + + sprintf(buffer, "set %d %d %d", (MxU32) (m_h * 100.0f), (MxU32) (m_s * 100.0f), (MxU32) (m_v * 100.0f)); + m_value = buffer; + + float convertedR, convertedG, convertedB; + ConvertHSVToRGB(m_h, m_s, m_v, &convertedR, &convertedG, &convertedB); + VideoManager()->SetSkyColor(convertedR, convertedG, convertedB); + SetLights(convertedR, convertedG, convertedB); +} + +// FUNCTION: LEGO1 0x1003c330 +void LegoBackgroundColor::ToggleSkyColor() +{ + char buffer[30]; + + m_h += 0.05; + if (m_h > 1.0) { + m_h -= 1.0; + } + + sprintf(buffer, "set %d %d %d", (MxU32) (m_h * 100.0f), (MxU32) (m_s * 100.0f), (MxU32) (m_v * 100.0f)); + m_value = buffer; + + float convertedR, convertedG, convertedB; + ConvertHSVToRGB(m_h, m_s, m_v, &convertedR, &convertedG, &convertedB); + VideoManager()->SetSkyColor(convertedR, convertedG, convertedB); + SetLights(convertedR, convertedG, convertedB); +} + // STUB: LEGO1 0x1003c400 void LegoBackgroundColor::SetLights(float p_r, float p_g, float p_b) { diff --git a/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp b/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp index 2cc1baaa..47d9a1b8 100644 --- a/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp @@ -123,6 +123,13 @@ MxBool LegoCharacterManager::FUN_10084c00(const LegoChar*) return FALSE; } +// STUB: LEGO1 0x10084ec0 +MxBool LegoCharacterManager::FUN_10084ec0(LegoROI* p_roi) +{ + // TODO + return FALSE; +} + // STUB: LEGO1 0x10085140 MxU32 LegoCharacterManager::FUN_10085140(LegoROI*, MxBool) { diff --git a/LEGO1/lego/legoomni/src/common/legogamestate.cpp b/LEGO1/lego/legoomni/src/common/legogamestate.cpp index 6f2b43b7..628fcfbf 100644 --- a/LEGO1/lego/legoomni/src/common/legogamestate.cpp +++ b/LEGO1/lego/legoomni/src/common/legogamestate.cpp @@ -8,6 +8,7 @@ #include "isle.h" #include "islepathactor.h" #include "jetski.h" +#include "jukebox_actions.h" #include "legoanimationmanager.h" #include "legobuildingmanager.h" #include "legocharactermanager.h" @@ -29,7 +30,7 @@ #include -DECOMP_SIZE_ASSERT(LegoGameState::Username, 0xe) +DECOMP_SIZE_ASSERT(LegoGameState::Username, 0x0e) DECOMP_SIZE_ASSERT(LegoGameState::ScoreItem, 0x2c) DECOMP_SIZE_ASSERT(LegoGameState::History, 0x374) DECOMP_SIZE_ASSERT(LegoGameState, 0x430) @@ -93,10 +94,10 @@ LegoGameState::LegoGameState() m_actorId = 0; m_savePath = NULL; m_stateArray = NULL; - m_unk0x41c = -1; - m_currentArea = e_noArea; - m_previousArea = e_noArea; - m_unk0x42c = e_noArea; + m_unk0x41c = JukeboxScript::c_noneJukebox; + m_currentArea = e_undefined; + m_previousArea = e_undefined; + m_unk0x42c = e_undefined; m_playerCount = 0; m_isDirty = FALSE; m_loadedAct = e_actNotFound; @@ -372,7 +373,7 @@ MxResult LegoGameState::Load(MxULong p_slot) Read(&fileStorage, &area); if (m_currentAct == 0) { - m_unk0x42c = e_noArea; + m_unk0x42c = e_undefined; } else { m_unk0x42c = (Area) area; @@ -702,22 +703,22 @@ void LegoGameState::StopArea(Area p_area) RemoveFromWorld(*g_isleScript, 0x481, *g_isleScript, 0); RemoveFromWorld(*g_isleScript, 0x482, *g_isleScript, 0); break; - case e_copter: + case e_copterbuild: InvokeAction(Extra::e_stop, *g_jukeboxScript, 0x2f, NULL); InvokeAction(Extra::e_stop, *g_copterScript, 0, NULL); InvokeAction(Extra::e_close, *g_copterScript, 0, NULL); break; - case e_dunecar: + case e_dunecarbuild: InvokeAction(Extra::e_stop, *g_jukeboxScript, 0x31, NULL); InvokeAction(Extra::e_stop, *g_dunecarScript, 0, NULL); InvokeAction(Extra::e_close, *g_dunecarScript, 0, NULL); break; - case e_jetski: + case e_jetskibuild: InvokeAction(Extra::e_stop, *g_jukeboxScript, 0x33, NULL); InvokeAction(Extra::e_stop, *g_jetskiScript, 0, NULL); InvokeAction(Extra::e_close, *g_jetskiScript, 0, NULL); break; - case e_racecar: + case e_racecarbuild: InvokeAction(Extra::e_stop, *g_jukeboxScript, 0x35, NULL); InvokeAction(Extra::e_stop, *g_racecarScript, 0, NULL); InvokeAction(Extra::e_close, *g_racecarScript, 0, NULL); @@ -801,12 +802,12 @@ void LegoGameState::SwitchArea(Area p_area) case e_hospitalExterior: case e_unk31: case e_policeExterior: - case e_unk57: - case e_unk58: - case e_unk59: - case e_unk60: - case e_unk61: - case e_unk64: + case e_bike: + case e_dunecar: + case e_motocycle: + case e_copter: + case e_skateboard: + case e_jetski: case e_unk66: LoadIsle(); break; @@ -872,6 +873,7 @@ void LegoGameState::SwitchArea(Area p_area) case e_unk28: { Act1State* state = (Act1State*) GameState()->GetState("Act1State"); LoadIsle(); + if (state->GetUnknown18() == 7) { VideoManager()->Get3DManager()->SetFrustrum(90, 0.1f, 250.0f); } @@ -880,6 +882,7 @@ void LegoGameState::SwitchArea(Area p_area) CurrentActor()->ResetWorldTransform(TRUE); AnimationManager()->FUN_1005f0b0(); } + CurrentActor()->VTable0xe8(p_area, TRUE, 7); break; } @@ -902,40 +905,44 @@ void LegoGameState::SwitchArea(Area p_area) LoadIsle(); InvokeAction(Extra::ActionType::e_start, *g_isleScript, 1150, NULL); break; - case e_copter: + case e_copterbuild: VideoManager()->SetUnk0x554(TRUE); InvokeAction(Extra::ActionType::e_opendisk, *g_copterScript, 0, NULL); break; - case e_dunecar: + case e_dunecarbuild: VideoManager()->SetUnk0x554(TRUE); InvokeAction(Extra::ActionType::e_opendisk, *g_dunecarScript, 0, NULL); break; - case e_jetski: + case e_jetskibuild: VideoManager()->SetUnk0x554(TRUE); InvokeAction(Extra::ActionType::e_opendisk, *g_jetskiScript, 0, NULL); break; - case e_racecar: + case e_racecarbuild: VideoManager()->SetUnk0x554(TRUE); InvokeAction(Extra::ActionType::e_opendisk, *g_racecarScript, 0, NULL); break; case e_act2main: { LegoWorld* act2main = FindWorld(*g_act2mainScript, 0); + if (act2main == NULL) { InvokeAction(Extra::ActionType::e_opendisk, *g_act2mainScript, 0, NULL); } else { act2main->Enable(TRUE); } + break; } case e_act3script: { LegoWorld* act3 = FindWorld(*g_act3Script, 0); + if (act3 == NULL) { InvokeAction(Extra::ActionType::e_opendisk, *g_act3Script, 0, NULL); } else { act3->Enable(TRUE); } + break; } case e_jukeboxw: @@ -1091,7 +1098,7 @@ void LegoGameState::Init() } } - m_unk0x42c = e_noArea; + m_unk0x42c = e_undefined; } // FUNCTION: LEGO1 0x1003c670 diff --git a/LEGO1/lego/legoomni/src/common/legoplantmanager.cpp b/LEGO1/lego/legoomni/src/common/legoplantmanager.cpp index f4d18d3a..cc09b332 100644 --- a/LEGO1/lego/legoomni/src/common/legoplantmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legoplantmanager.cpp @@ -1,5 +1,7 @@ #include "legoplantmanager.h" +#include "legoentity.h" + DECOMP_SIZE_ASSERT(LegoPlantManager, 0x2c) // GLOBAL: LEGO1 0x100f3188 @@ -47,6 +49,13 @@ MxResult LegoPlantManager::Load(LegoStorage* p_storage) return SUCCESS; } +// STUB: LEGO1 0x100269e0 +MxBool LegoPlantManager::FUN_100269e0(LegoEntity* p_entity) +{ + // TODO + return FALSE; +} + // STUB: LEGO1 0x10026ba0 MxU32 LegoPlantManager::FUN_10026ba0(LegoROI*, MxBool) { diff --git a/LEGO1/lego/legoomni/src/common/legoutils.cpp b/LEGO1/lego/legoomni/src/common/legoutils.cpp index b6c9be17..5aa9d663 100644 --- a/LEGO1/lego/legoomni/src/common/legoutils.cpp +++ b/LEGO1/lego/legoomni/src/common/legoutils.cpp @@ -64,7 +64,7 @@ MxBool CheckIfEntityExists(MxBool p_enable, const char* p_filename, MxS32 p_enti void NotifyEntity(const char* p_filename, MxS32 p_entityId, LegoEntity* p_sender); // FUNCTION: LEGO1 0x1003e430 -void InvokeAction(Extra::ActionType p_actionId, MxAtomId& p_pAtom, int p_targetEntityId, LegoEntity* p_sender) +void InvokeAction(Extra::ActionType p_actionId, MxAtomId& p_pAtom, MxS32 p_targetEntityId, LegoEntity* p_sender) { MxDSAction action; action.SetAtomId(p_pAtom); @@ -291,6 +291,13 @@ MxBool FUN_1003ef60() return TRUE; } +// STUB: LEGO1 0x1003f050 +MxS32 FUN_1003f050(MxS32) +{ + // TODO + return 0; +} + // STUB: LEGO1 0x1003f0d0 void SetLightPosition(MxU32) { diff --git a/LEGO1/lego/legoomni/src/common/misc.cpp b/LEGO1/lego/legoomni/src/common/misc.cpp index 0ac953b1..cf917a62 100644 --- a/LEGO1/lego/legoomni/src/common/misc.cpp +++ b/LEGO1/lego/legoomni/src/common/misc.cpp @@ -164,12 +164,11 @@ MxTransitionManager* TransitionManager() } // FUNCTION: LEGO1 0x10015910 -void PlayMusic(MxU32 p_index) +void PlayMusic(JukeboxScript::Script p_script) { - // index is the entityid of the music in jukebox.si MxDSAction action; action.SetAtomId(*g_jukeboxScript); - action.SetObjectId(p_index); + action.SetObjectId(p_script); LegoOmni::GetInstance()->GetBackgroundAudioManager()->PlayMusic(action, 5, 4); } diff --git a/LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp b/LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp index 3f92a8ce..8f074ffa 100644 --- a/LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp +++ b/LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp @@ -3,7 +3,7 @@ #include "legosoundmanager.h" #include "legovideomanager.h" #include "misc.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdsmultiaction.h" #include "mxmediapresenter.h" #include "mxmisc.h" @@ -29,7 +29,7 @@ MxCompositeMediaPresenter::~MxCompositeMediaPresenter() // FUNCTION: LEGO1 0x10074090 MxResult MxCompositeMediaPresenter::StartAction(MxStreamController* p_controller, MxDSAction* p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxResult result = FAILURE; MxDSActionList* actions = ((MxDSMultiAction*) p_action)->GetActionList(); @@ -96,7 +96,7 @@ MxResult MxCompositeMediaPresenter::StartAction(MxStreamController* p_controller // FUNCTION: LEGO1 0x100742e0 void MxCompositeMediaPresenter::StartingTickle() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (!m_unk0x4e) { for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) { @@ -142,7 +142,7 @@ void MxCompositeMediaPresenter::StartingTickle() // FUNCTION: LEGO1 0x10074470 MxResult MxCompositeMediaPresenter::Tickle() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); switch (m_currentTickleState) { case e_ready: @@ -169,7 +169,7 @@ MxResult MxCompositeMediaPresenter::Tickle() // FUNCTION: LEGO1 0x10074540 MxResult MxCompositeMediaPresenter::PutData() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (m_currentTickleState >= e_streaming && m_currentTickleState <= e_done) { for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) { diff --git a/LEGO1/lego/legoomni/src/common/mxtransitionmanager.cpp b/LEGO1/lego/legoomni/src/common/mxtransitionmanager.cpp index 158568c1..e37a738b 100644 --- a/LEGO1/lego/legoomni/src/common/mxtransitionmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/mxtransitionmanager.cpp @@ -61,22 +61,22 @@ MxResult MxTransitionManager::Tickle() switch (this->m_transitionType) { case e_noAnimation: - TransitionNone(); + NoTransition(); break; case e_dissolve: - TransitionDissolve(); + DissolveTransition(); break; - case e_pixelation: - TransitionPixelation(); + case e_mosaic: + MosaicTransition(); break; - case e_screenWipe: - TransitionWipe(); + case e_wipeDown: + WipeDownTransition(); break; case e_windows: - TransitionWindows(); + WindowsTransition(); break; case e_broken: - TransitionBroken(); + BrokenTransition(); break; } return SUCCESS; @@ -157,7 +157,7 @@ void MxTransitionManager::EndTransition(MxBool p_notifyWorld) } // FUNCTION: LEGO1 0x1004bcf0 -void MxTransitionManager::TransitionNone() +void MxTransitionManager::NoTransition() { LegoVideoManager* videoManager = VideoManager(); videoManager->GetDisplaySurface()->ClearScreen(); @@ -165,7 +165,7 @@ void MxTransitionManager::TransitionNone() } // FUNCTION: LEGO1 0x1004bd10 -void MxTransitionManager::TransitionDissolve() +void MxTransitionManager::DissolveTransition() { // If the animation is finished if (m_animationTimer == 40) { @@ -251,111 +251,111 @@ void MxTransitionManager::TransitionDissolve() } // FUNCTION: LEGO1 0x1004bed0 -void MxTransitionManager::TransitionPixelation() +void MxTransitionManager::MosaicTransition() { if (m_animationTimer == 16) { m_animationTimer = 0; EndTransition(TRUE); return; } + else { + if (m_animationTimer == 0) { - if (m_animationTimer == 0) { - // Same init/shuffle steps as the dissolve transition, except that - // we are using big blocky pixels and only need 64 columns. - MxS32 i; - for (i = 0; i < 64; i++) { - m_columnOrder[i] = i; - } - - for (i = 0; i < 64; i++) { - MxS32 swap = rand() % 64; - MxU16 t = m_columnOrder[i]; - m_columnOrder[i] = m_columnOrder[swap]; - m_columnOrder[swap] = t; - } - - // The same is true here. We only need 48 rows. - for (i = 0; i < 48; i++) { - m_randomShift[i] = rand() % 64; - } - } - - // Run one tick of the animation - DDSURFACEDESC ddsd; - memset(&ddsd, 0, sizeof(ddsd)); - ddsd.dwSize = sizeof(ddsd); - - HRESULT res = m_ddSurface->Lock(NULL, &ddsd, 1, NULL); - if (res == DDERR_SURFACELOST) { - m_ddSurface->Restore(); - res = m_ddSurface->Lock(NULL, &ddsd, 1, NULL); - } - - if (res == DD_OK) { - SubmitCopyRect(&ddsd); - - for (MxS32 col = 0; col < 64; col++) { - // Select 4 columns on each tick - if (m_animationTimer * 4 > m_columnOrder[col]) { - continue; + // Same init/shuffle steps as the dissolve transition, except that + // we are using big blocky pixels and only need 64 columns. + MxS32 i; + for (i = 0; i < 64; i++) { + m_columnOrder[i] = i; } - if (m_animationTimer * 4 + 3 < m_columnOrder[col]) { - continue; + for (i = 0; i < 64; i++) { + MxS32 swap = rand() % 64; + MxU16 t = m_columnOrder[i]; + m_columnOrder[i] = m_columnOrder[swap]; + m_columnOrder[swap] = t; } - for (MxS32 row = 0; row < 48; row++) { - // To do the pixelation, we subdivide the 640x480 surface into - // 10x10 pixel blocks. At the chosen block, we sample the top-leftmost - // color and set the other 99 pixels to that value. + // The same is true here. We only need 48 rows. + for (i = 0; i < 48; i++) { + m_randomShift[i] = rand() % 64; + } + } - // First, get the offset of the 10x10 block that we will sample for this row. - MxS32 xShift = 10 * ((m_randomShift[row] + col) % 64); + // Run one tick of the animation + DDSURFACEDESC ddsd; + memset(&ddsd, 0, sizeof(ddsd)); + ddsd.dwSize = sizeof(ddsd); - // Combine xShift with this value to target the correct location in the buffer. - MxS32 bytesPerPixel = ddsd.ddpfPixelFormat.dwRGBBitCount / 8; + HRESULT res = m_ddSurface->Lock(NULL, &ddsd, 1, NULL); + if (res == DDERR_SURFACELOST) { + m_ddSurface->Restore(); + res = m_ddSurface->Lock(NULL, &ddsd, 1, NULL); + } - // Seek to the sample position. - MxU8* source = (MxU8*) ddsd.lpSurface + 10 * row * ddsd.lPitch + bytesPerPixel * xShift; + if (res == DD_OK) { + SubmitCopyRect(&ddsd); - // Sample byte or word depending on display mode. - MxU32 sample = bytesPerPixel == 1 ? *source : *(MxU16*) source; + for (MxS32 col = 0; col < 64; col++) { + // Select 4 columns on each tick + if (m_animationTimer * 4 > m_columnOrder[col]) { + continue; + } - // For each of the 10 rows in the 10x10 square: - for (MxS32 k = 10 * row; k < 10 * row + 10; k++) { - if (ddsd.ddpfPixelFormat.dwRGBBitCount == 8) { - MxU8* pos = (MxU8*) ddsd.lpSurface + k * ddsd.lPitch + xShift; + if (m_animationTimer * 4 + 3 < m_columnOrder[col]) { + continue; + } - for (MxS32 tt = 0; tt < 10; tt++) { - pos[tt] = sample; + for (MxS32 row = 0; row < 48; row++) { + // To do the mosaic effect, we subdivide the 640x480 surface into + // 10x10 pixel blocks. At the chosen block, we sample the top-leftmost + // color and set the other 99 pixels to that value. + + // First, get the offset of the 10x10 block that we will sample for this row. + MxS32 xShift = 10 * ((m_randomShift[row] + col) % 64); + + // Combine xShift with this value to target the correct location in the buffer. + MxS32 bytesPerPixel = ddsd.ddpfPixelFormat.dwRGBBitCount / 8; + + // Seek to the sample position. + MxU8* source = (MxU8*) ddsd.lpSurface + 10 * row * ddsd.lPitch + bytesPerPixel * xShift; + + // Sample byte or word depending on display mode. + MxU32 sample = bytesPerPixel == 1 ? *source : *(MxU16*) source; + + // For each of the 10 rows in the 10x10 square: + for (MxS32 k = 10 * row; k < 10 * row + 10; k++) { + if (ddsd.ddpfPixelFormat.dwRGBBitCount == 8) { + // Optimization: If the pixel is only one byte, we can use memset + MxU8* pos = ((MxU8*) ddsd.lpSurface + k * ddsd.lPitch + xShift); + memset(pos, sample, 10); } - } - else { - // Need to double xShift because it measures pixels not bytes - MxU16* pos = (MxU16*) ((MxU8*) ddsd.lpSurface + k * ddsd.lPitch + 2 * xShift); + else { + // Need to double xShift because it measures pixels not bytes + MxU16* pos = (MxU16*) ((MxU8*) ddsd.lpSurface + k * ddsd.lPitch + 2 * xShift); - for (MxS32 tt = 0; tt < 10; tt++) { - pos[tt] = sample; + for (MxS32 tt = 0; tt < 10; tt++) { + pos[tt] = sample; + } } } } } + + SetupCopyRect(&ddsd); + m_ddSurface->Unlock(ddsd.lpSurface); + + if (VideoManager()->GetVideoParam().Flags().GetFlipSurfaces()) { + LPDIRECTDRAWSURFACE surf = VideoManager()->GetDisplaySurface()->GetDirectDrawSurface1(); + surf->BltFast(0, 0, m_ddSurface, &g_fullScreenRect, DDBLTFAST_WAIT); + } + + m_animationTimer++; } - - SetupCopyRect(&ddsd); - m_ddSurface->Unlock(ddsd.lpSurface); - - if (VideoManager()->GetVideoParam().Flags().GetFlipSurfaces()) { - LPDIRECTDRAWSURFACE surf = VideoManager()->GetDisplaySurface()->GetDirectDrawSurface1(); - surf->BltFast(0, 0, m_ddSurface, &g_fullScreenRect, DDBLTFAST_WAIT); - } - - m_animationTimer++; } } // FUNCTION: LEGO1 0x1004c170 -void MxTransitionManager::TransitionWipe() +void MxTransitionManager::WipeDownTransition() { // If the animation is finished if (m_animationTimer == 240) { @@ -394,7 +394,7 @@ void MxTransitionManager::TransitionWipe() } // FUNCTION: LEGO1 0x1004c270 -void MxTransitionManager::TransitionWindows() +void MxTransitionManager::WindowsTransition() { if (m_animationTimer == 240) { m_animationTimer = 0; @@ -440,7 +440,7 @@ void MxTransitionManager::TransitionWindows() } // FUNCTION: LEGO1 0x1004c3e0 -void MxTransitionManager::TransitionBroken() +void MxTransitionManager::BrokenTransition() { // This function has no actual animation logic. // It also never calls EndTransition to diff --git a/LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp b/LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp index 1ccb98ea..a007193e 100644 --- a/LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp +++ b/LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp @@ -90,7 +90,7 @@ Mx3DPointFloat LegoCameraController::GetWorldUp() { if (m_lego3DView && m_lego3DView->GetPointOfView()) { Mx3DPointFloat vec; - vec = m_lego3DView->GetPointOfView()->GetWorldUp(); + vec = Vector3(m_lego3DView->GetPointOfView()->GetWorldUp()); return Mx3DPointFloat(vec[0], vec[1], vec[2]); } else { @@ -103,7 +103,7 @@ Mx3DPointFloat LegoCameraController::GetWorldLocation() { if (m_lego3DView && m_lego3DView->GetPointOfView()) { Mx3DPointFloat vec; - vec = m_lego3DView->GetPointOfView()->GetWorldPosition(); + vec = Vector3(m_lego3DView->GetPointOfView()->GetWorldPosition()); return Mx3DPointFloat(vec[0], vec[1] - m_entityOffsetUp, vec[2]); } else { @@ -116,7 +116,7 @@ Mx3DPointFloat LegoCameraController::GetWorldDirection() { if (m_lego3DView && m_lego3DView->GetPointOfView()) { Mx3DPointFloat vec; - vec = m_lego3DView->GetPointOfView()->GetWorldDirection(); + vec = Vector3(m_lego3DView->GetPointOfView()->GetWorldDirection()); return Mx3DPointFloat(vec[0], vec[1], vec[2]); } else { diff --git a/LEGO1/lego/legoomni/src/entity/legoentity.cpp b/LEGO1/lego/legoomni/src/entity/legoentity.cpp index 5b8aff77..506854e2 100644 --- a/LEGO1/lego/legoomni/src/entity/legoentity.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoentity.cpp @@ -184,6 +184,38 @@ void LegoEntity::FUN_10010c30() } } +// FUNCTION: LEGO1 0x10010c60 +Mx3DPointFloat LegoEntity::GetWorldDirection() +{ + if (m_roi != NULL) { + m_worldDirection = + Mx3DPointFloat(m_roi->GetWorldDirection()[0], m_roi->GetWorldDirection()[1], m_roi->GetWorldDirection()[2]); + } + + return m_worldDirection; +} + +// FUNCTION: LEGO1 0x10010cf0 +Mx3DPointFloat LegoEntity::GetWorldUp() +{ + if (m_roi != NULL) { + m_worldUp = Mx3DPointFloat(m_roi->GetWorldUp()[0], m_roi->GetWorldUp()[1], m_roi->GetWorldUp()[2]); + } + + return m_worldUp; +} + +// FUNCTION: LEGO1 0x10010d80 +Mx3DPointFloat LegoEntity::GetWorldPosition() +{ + if (m_roi != NULL) { + m_worldLocation = + Mx3DPointFloat(m_roi->GetWorldPosition()[0], m_roi->GetWorldPosition()[1], m_roi->GetWorldPosition()[2]); + } + + return m_worldLocation; +} + // FUNCTION: LEGO1 0x10010e10 void LegoEntity::ParseAction(char* p_extra) { @@ -244,10 +276,23 @@ void LegoEntity::VTable0x38() // TODO } -// STUB: LEGO1 0x10011300 +// FUNCTION: LEGO1 0x10011300 void LegoEntity::VTable0x3c() { - // TODO + switch (m_unk0x59) { + case 0: + CharacterManager()->FUN_10084ec0(m_roi); + break; + case 2: + PlantManager()->FUN_100269e0(this); + break; + case 3: + BuildingManager()->FUN_1002fdb0(this); + break; + } + + VTable0x34(FALSE); + VTable0x38(); } // STUB: LEGO1 0x10011360 diff --git a/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp b/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp index 93d513db..7a6ad696 100644 --- a/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp +++ b/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp @@ -5,63 +5,79 @@ #include "legovideomanager.h" #include "misc.h" #include "mxmisc.h" +#include "mxtimer.h" + +#include + +DECOMP_SIZE_ASSERT(LegoNavController, 0x70) + +////////////////////////////////////////////////////////////////////// + +#ifndef M_PI +#define M_PI 3.1416 +#endif +#ifdef DTOR +#undef DTOR +#endif +#define DTOR(angle) ((angle) * M_PI / 180.) + +////////////////////////////////////////////////////////////////////// // GLOBAL: LEGO1 0x100f4c28 -int g_mouseDeadzone = 40; +int LegoNavController::g_defdeadZone = 40; // GLOBAL: LEGO1 0x100f4c2c -float g_zeroThreshold = 0.001f; +float LegoNavController::g_defzeroThreshold = 0.001f; // GLOBAL: LEGO1 0x100f4c30 -float g_movementMaxSpeed = 40.0f; +float LegoNavController::g_defmaxLinearVel = 40.0f; // GLOBAL: LEGO1 0x100f4c34 -float g_turnMaxSpeed = 20.0f; +float LegoNavController::g_defmaxRotationalVel = 20.0f; // GLOBAL: LEGO1 0x100f4c38 -float g_movementMaxAccel = 15.0f; +float LegoNavController::g_defmaxLinearAccel = 15.0f; // GLOBAL: LEGO1 0x100f4c3c -float g_turnMaxAccel = 30.0f; +float LegoNavController::g_defmaxRotationalAccel = 30.0f; // GLOBAL: LEGO1 0x100f4c40 -float g_movementMinAccel = 4.0f; +float LegoNavController::g_defminLinearAccel = 4.0f; // GLOBAL: LEGO1 0x100f4c44 -float g_turnMinAccel = 15.0f; +float LegoNavController::g_defminRotationalAccel = 15.0f; // GLOBAL: LEGO1 0x100f4c48 -float g_movementDecel = 50.0f; +float LegoNavController::g_defmaxLinearDeccel = 50.0f; // GLOBAL: LEGO1 0x100f4c4c -float g_turnDecel = 50.0f; +float LegoNavController::g_defmaxRotationalDeccel = 50.0f; // GLOBAL: LEGO1 0x100f4c50 -float g_turnSensitivity = 0.4f; +float LegoNavController::g_defrotSensitivity = 0.4f; // GLOBAL: LEGO1 0x100f4c54 -MxBool g_turnUseVelocity = FALSE; +MxBool LegoNavController::g_defuseRotationalVel = FALSE; // FUNCTION: LEGO1 0x10054ac0 LegoNavController::LegoNavController() { - ResetToDefault(); + SetToDefaultParams(); - this->m_unk0x18 = 0.0f; - this->m_unk0x1c = 0.0f; - this->m_targetMovementSpeed = 0.0f; - this->m_targetTurnSpeed = 0.0f; - this->m_movementAccel = 0.0f; - this->m_turnAccel = 0.0f; - this->m_trackDefault = FALSE; - this->m_unk0x5d = FALSE; - this->m_unk0x6c = FALSE; - this->m_unk0x64 = 0; - this->m_unk0x68 = 0; - this->m_unk0x60 = 0; + m_linearVel = 0.0f; + m_rotationalVel = 0.0f; + m_targetLinearVel = 0.0f; + m_targetRotationalVel = 0.0f; + m_linearAccel = 0.0f; + m_rotationalAccel = 0.0f; + m_trackDefault = FALSE; + m_unk0x5d = FALSE; + m_unk0x6c = FALSE; + m_unk0x64 = 0.0f; + m_unk0x68 = 0.0f; + m_unk0x60 = 0.0f; - MxTimer* timer = Timer(); - this->m_time = timer->GetTime(); + m_lastTime = Timer()->GetTime(); InputManager()->Register(this); } @@ -75,148 +91,141 @@ LegoNavController::~LegoNavController() // FUNCTION: LEGO1 0x10054ca0 void LegoNavController::SetControlMax(int p_hMax, int p_vMax) { - this->m_hMax = p_hMax; - this->m_vMax = p_vMax; + m_hMax = p_hMax; + m_vMax = p_vMax; if (VideoManager()->GetVideoParam().Flags().GetFullScreen()) { - this->m_hMax = 640; - this->m_vMax = 480; + m_hMax = 640; + m_vMax = 480; } } // FUNCTION: LEGO1 0x10054cd0 -void LegoNavController::ResetToDefault() +void LegoNavController::SetToDefaultParams() { - this->m_mouseDeadzone = g_mouseDeadzone; - this->m_zeroThreshold = g_zeroThreshold; - this->m_turnMaxAccel = g_turnMaxAccel; - this->m_movementMaxAccel = g_movementMaxAccel; - this->m_turnMinAccel = g_turnMinAccel; - this->m_movementMinAccel = g_movementMinAccel; - this->m_turnDecel = g_turnDecel; - this->m_movementDecel = g_movementDecel; - this->m_turnMaxSpeed = g_turnMaxSpeed; - this->m_movementMaxSpeed = g_movementMaxSpeed; - this->m_turnUseVelocity = g_turnUseVelocity; - this->m_turnSensitivity = g_turnSensitivity; + m_deadZone = g_defdeadZone; + m_zeroThreshold = g_defzeroThreshold; + m_maxRotationalAccel = g_defmaxRotationalAccel; + m_maxLinearAccel = g_defmaxLinearAccel; + m_minRotationalAccel = g_defminRotationalAccel; + m_minLinearAccel = g_defminLinearAccel; + m_maxRotationalDeccel = g_defmaxRotationalDeccel; + m_maxLinearDeccel = g_defmaxLinearDeccel; + m_maxRotationalVel = g_defmaxRotationalVel; + m_maxLinearVel = g_defmaxLinearVel; + m_useRotationalVel = g_defuseRotationalVel; + m_rotSensitivity = g_defrotSensitivity; } // FUNCTION: LEGO1 0x10054d40 void LegoNavController::GetDefaults( - int* p_mouseDeadzone, - float* p_movementMaxSpeed, - float* p_turnMaxSpeed, - float* p_movementMaxAccel, - float* p_turnMaxAccel, - float* p_movementDecel, - float* p_turnDecel, - float* p_movementMinAccel, - float* p_turnMinAccel, - float* p_turnSensitivity, - MxBool* p_turnUseVelocity + int* p_dz, + float* p_lv, + float* p_rv, + float* p_la, + float* p_ra, + float* p_ld, + float* p_rd, + float* p_lmina, + float* p_rmina, + float* p_rs, + MxBool* p_urs ) { - *p_mouseDeadzone = g_mouseDeadzone; - *p_movementMaxSpeed = g_movementMaxSpeed; - *p_turnMaxSpeed = g_turnMaxSpeed; - *p_movementMaxAccel = g_movementMaxAccel; - *p_turnMaxAccel = g_turnMaxAccel; - *p_movementDecel = g_movementDecel; - *p_turnDecel = g_turnDecel; - *p_movementMinAccel = g_movementMinAccel; - *p_turnMinAccel = g_turnMinAccel; - *p_turnSensitivity = g_turnSensitivity; - *p_turnUseVelocity = g_turnUseVelocity; + *p_dz = g_defdeadZone; + *p_lv = g_defmaxLinearVel; + *p_rv = g_defmaxRotationalVel; + *p_la = g_defmaxLinearAccel; + *p_ra = g_defmaxRotationalAccel; + *p_ld = g_defmaxLinearDeccel; + *p_rd = g_defmaxRotationalDeccel; + *p_lmina = g_defminLinearAccel; + *p_rmina = g_defminRotationalAccel; + *p_rs = g_defrotSensitivity; + *p_urs = g_defuseRotationalVel; } // FUNCTION: LEGO1 0x10054dd0 void LegoNavController::SetDefaults( - int p_mouseDeadzone, - float p_movementMaxSpeed, - float p_turnMaxSpeed, - float p_movementMaxAccel, - float p_turnMaxAccel, - float p_movementDecel, - float p_turnDecel, - float p_movementMinAccel, - float p_turnMinAccel, - float p_turnSensitivity, - MxBool p_turnUseVelocity + int p_dz, + float p_lv, + float p_rv, + float p_la, + float p_ra, + float p_ld, + float p_rd, + float p_lmina, + float p_rmina, + float p_rs, + MxBool p_urs ) { - g_mouseDeadzone = p_mouseDeadzone; - g_movementMaxSpeed = p_movementMaxSpeed; - g_turnMaxSpeed = p_turnMaxSpeed; - g_movementMaxAccel = p_movementMaxAccel; - g_turnMaxAccel = p_turnMaxAccel; - g_movementDecel = p_movementDecel; - g_turnDecel = p_turnDecel; - g_movementMinAccel = p_movementMinAccel; - g_turnMinAccel = p_turnMinAccel; - g_turnSensitivity = p_turnSensitivity; - g_turnUseVelocity = p_turnUseVelocity; + g_defdeadZone = p_dz; + g_defmaxLinearVel = p_lv; + g_defmaxRotationalVel = p_rv; + g_defmaxLinearAccel = p_la; + g_defmaxRotationalAccel = p_ra; + g_defmaxLinearDeccel = p_ld; + g_defmaxRotationalDeccel = p_rd; + g_defminLinearAccel = p_lmina; + g_defminRotationalAccel = p_rmina; + g_defrotSensitivity = p_rs; + g_defuseRotationalVel = p_urs; } // FUNCTION: LEGO1 0x10054e40 void LegoNavController::SetTargets(int p_hPos, int p_vPos, MxBool p_accel) { - if (this->m_trackDefault != FALSE) { - ResetToDefault(); + if (m_trackDefault != FALSE) { + SetToDefaultParams(); } if (p_accel != FALSE) { - this->m_targetTurnSpeed = CalculateNewTargetSpeed(p_hPos, this->m_hMax / 2, this->m_turnMaxSpeed); - this->m_targetMovementSpeed = - CalculateNewTargetSpeed(this->m_vMax - p_vPos, this->m_vMax / 2, this->m_movementMaxSpeed); - this->m_turnAccel = - CalculateNewAccel(p_hPos, this->m_hMax / 2, this->m_turnMaxAccel, (int) this->m_turnMinAccel); - this->m_movementAccel = CalculateNewAccel( - this->m_vMax - p_vPos, - this->m_vMax / 2, - this->m_movementMaxAccel, - (int) this->m_movementMinAccel - ); + m_targetRotationalVel = CalculateNewTargetVel(p_hPos, m_hMax / 2, m_maxRotationalVel); + m_targetLinearVel = CalculateNewTargetVel(m_vMax - p_vPos, m_vMax / 2, m_maxLinearVel); + m_rotationalAccel = CalculateNewAccel(p_hPos, m_hMax / 2, m_maxRotationalAccel, (int) m_minRotationalAccel); + m_linearAccel = CalculateNewAccel(m_vMax - p_vPos, m_vMax / 2, m_maxLinearAccel, (int) m_minLinearAccel); } else { - this->m_targetTurnSpeed = 0.0f; - this->m_targetMovementSpeed = 0.0f; - this->m_movementAccel = this->m_movementDecel; - this->m_turnAccel = this->m_turnDecel; + m_targetRotationalVel = 0; + m_targetLinearVel = 0; + m_linearAccel = m_maxLinearDeccel; + m_rotationalAccel = m_maxRotationalDeccel; } } // FUNCTION: LEGO1 0x10054f10 -float LegoNavController::CalculateNewTargetSpeed(int p_pos, int p_center, float p_maxSpeed) +float LegoNavController::CalculateNewTargetVel(int p_pos, int p_center, float p_max) { - float result; + float newVel; int diff = p_pos - p_center; - if (diff > this->m_mouseDeadzone) { - result = (diff - m_mouseDeadzone) * p_maxSpeed / (p_center - m_mouseDeadzone); + if (diff > m_deadZone) { + newVel = (diff - m_deadZone) * p_max / (p_center - m_deadZone); } - else if (diff < -m_mouseDeadzone) { - result = (diff + m_mouseDeadzone) * p_maxSpeed / (p_center - m_mouseDeadzone); + else if (diff < -m_deadZone) { + newVel = (diff + m_deadZone) * p_max / (p_center - m_deadZone); } else { - result = 0.0f; + newVel = 0.0; } - return result; + return newVel; } // FUNCTION: LEGO1 0x10054f90 -float LegoNavController::CalculateNewAccel(int p_pos, int p_center, float p_maxAccel, int p_minAccel) +float LegoNavController::CalculateNewAccel(int p_pos, int p_center, float p_max, int p_min) { - float result; + float newAccel; int diff = p_pos - p_center; - result = Abs(diff) * p_maxAccel / p_center; + newAccel = Abs(diff) * p_max / p_center; - if (result < p_minAccel) { - result = (float) p_minAccel; + if (newAccel < p_min) { + newAccel = (float) p_min; } - return result; + return newAccel; } // FUNCTION: LEGO1 0x10054fe0 @@ -227,7 +236,7 @@ float LegoNavController::CalculateNewVel(float p_targetVel, float p_currentVel, float velDiff = p_targetVel - p_currentVel; int vSign = velDiff > 0 ? 1 : -1; - if (Abs(velDiff) > this->m_zeroThreshold) { + if (Abs(velDiff) > m_zeroThreshold) { float deltaVel = p_accel * p_time; newVel = p_currentVel + (deltaVel * vSign); @@ -242,9 +251,134 @@ float LegoNavController::CalculateNewVel(float p_targetVel, float p_currentVel, return newVel; } +// FUNCTION: LEGO1 0x10055080 +MxBool LegoNavController::CalculateNewPosDir( + const Vector3& p_curPos, + const Vector3& p_curDir, + Vector3& p_newPos, + Vector3& p_newDir, + const Vector3* p_und +) +{ + if (!g_isWorldActive) { + return FALSE; + } + + MxBool changed = FALSE; + MxBool und = FALSE; + + MxTime currentTime = Timer()->GetTime(); + float deltaTime = (currentTime - m_lastTime) / 1000.0; + m_lastTime = currentTime; + + if (FUN_100558b0() == -1) { + FUN_10055750(und); + } + + if (m_useRotationalVel) { + m_rotationalVel = CalculateNewVel(m_targetRotationalVel, m_rotationalVel, m_rotationalAccel * 40.0f, deltaTime); + } + else { + m_rotationalVel = m_targetRotationalVel; + } + + m_linearVel = CalculateNewVel(m_targetLinearVel, m_linearVel, m_linearAccel, deltaTime); + + if (und || (Abs(m_rotationalVel) > m_zeroThreshold) || (Abs(m_linearVel) > m_zeroThreshold)) { + float rot_mat[3][3]; + Mx3DPointFloat delta_pos, new_dir, new_pos; + + if (m_linearVel < -(m_maxLinearVel * 0.4f)) { + m_linearVel = -(m_maxLinearVel * 0.4f); + } + + VXS3(delta_pos, p_curDir, m_linearVel * deltaTime); + VPV3(p_newPos, p_curPos, delta_pos); + + float delta_rad; + if (m_useRotationalVel) { + delta_rad = DTOR(m_rotationalVel * deltaTime); + } + else { + delta_rad = DTOR(m_rotationalVel * m_rotSensitivity); + } + + if (p_und != NULL && (*p_und)[1] < 0.0f) { + delta_rad = -delta_rad; + } + + IDENTMAT3(rot_mat); + rot_mat[0][0] = rot_mat[2][2] = cos(delta_rad); + rot_mat[0][2] = rot_mat[2][0] = sin(delta_rad); + rot_mat[0][2] *= -1.0f; + VXM3(p_newDir, p_curDir, rot_mat); + + changed = TRUE; + } + + if (m_unk0x5d) { + float rot_mat[3][3]; + Mx3DPointFloat delta_pos, new_pos, new_dir; + + if (changed) { + SET3(new_pos, p_newPos); + SET3(new_dir, p_newDir); + } + else { + SET3(new_pos, p_curPos); + SET3(new_dir, p_curDir); + } + + if (m_unk0x64 != 0.0f) { + delta_pos[0] = new_dir[0] * m_unk0x64; + delta_pos[1] = new_dir[1] * m_unk0x64; + delta_pos[2] = new_dir[2] * m_unk0x64; + } + else { + FILLVEC3(delta_pos, 0.0f); + } + + delta_pos[1] += m_unk0x60; + VPV3(p_newPos, new_pos, delta_pos); + + if (m_unk0x68 != 0.0f) { + float delta_rad = DTOR(m_unk0x68); + IDENTMAT3(rot_mat); + rot_mat[0][0] = rot_mat[2][2] = cos(delta_rad); + rot_mat[0][2] = rot_mat[2][0] = sin(delta_rad); + rot_mat[0][2] *= -1.0f; + VXM3(p_newDir, new_dir, rot_mat); + } + else { + SET3(p_newDir, new_dir); + } + + m_unk0x60 = m_unk0x64 = m_unk0x68 = 0.0f; + m_unk0x5d = FALSE; + changed = TRUE; + } + + return changed; +} + // STUB: LEGO1 0x10055620 void LegoNavController::SetLocation(MxU32 p_location) { + // TODO +} + +// STUB: LEGO1 0x10055750 +int LegoNavController::FUN_10055750(MxBool& p_und) +{ + // TODO + return -1; +} + +// STUB: LEGO1 0x100558b0 +int LegoNavController::FUN_100558b0() +{ + // TODO + return -1; } // STUB: LEGO1 0x10055a60 diff --git a/LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp b/LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp index 0f218c43..fe2ee2d0 100644 --- a/LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp +++ b/LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp @@ -1,12 +1,22 @@ +#include "3dmanager/lego3dview.h" +#include "legoentity.h" #include "legonavcontroller.h" #include "legoomni.h" #include "legopointofviewcontroller.h" +#include "legosoundmanager.h" +#include "misc.h" #include "mxmisc.h" #include "mxticklemanager.h" +#include "mxtimer.h" +#include "realtime/realtime.h" +#include "roi/legoroi.h" DECOMP_SIZE_ASSERT(LegoMouseController, 0x20); DECOMP_SIZE_ASSERT(LegoPointOfViewController, 0x38); +// GLOBAL: LEGO1 0x100f75ac +MxBool g_unk0x100f75ac = FALSE; + ////////////////////////////////////////////////////////////////////// // FUNCTION: LEGO1 0x10065550 @@ -121,21 +131,87 @@ void LegoPointOfViewController::LeftDrag(int p_x, int p_y) AffectPointOfView(); } -// STUB: LEGO1 0x10065900 +// FUNCTION: LEGO1 0x10065900 void LegoPointOfViewController::AffectPointOfView() { - // TODO + m_nav->SetTargets(GetButtonX(), GetButtonY(), GetIsButtonDown()); } -// STUB: LEGO1 0x10065930 +// FUNCTION: LEGO1 0x10065930 MxResult LegoPointOfViewController::Tickle() { - // TODO + ViewROI* pov = m_lego3DView->GetPointOfView(); + + if (pov != NULL && m_nav != NULL && m_entity == NULL) { + Mx3DPointFloat newDir, newPos; + + Vector3 pos(pov->GetWorldPosition()); + Vector3 dir(pov->GetWorldDirection()); + + if (m_nav->CalculateNewPosDir(pos, dir, newDir, newPos, NULL)) { + MxMatrix mat; + + CalcLocalTransform(newPos, newDir, pov->GetWorldUp(), mat); + ((TimeROI*) pov)->FUN_100a9b40(mat, Timer()->GetTime()); + pov->WrappedSetLocalTransform(mat); + m_lego3DView->Moved(*pov); + + SoundManager()->FUN_1002a410( + pov->GetWorldPosition(), + pov->GetWorldDirection(), + pov->GetWorldUp(), + pov->GetWorldVelocity() + ); + + g_unk0x100f75ac = FALSE; + } + else { + if (g_unk0x100f75ac == FALSE) { + Mx3DPointFloat vel; + + vel.Clear(); + pov->FUN_100a5a30(vel); + + SoundManager()->FUN_1002a410( + pov->GetWorldPosition(), + pov->GetWorldDirection(), + pov->GetWorldUp(), + pov->GetWorldVelocity() + ); + + g_unk0x100f75ac = TRUE; + } + } + } + return SUCCESS; } -// STUB: LEGO1 0x10065ae0 +// FUNCTION: LEGO1 0x10065ae0 void LegoPointOfViewController::SetEntity(LegoEntity* p_entity) { - // TODO + TickleManager()->UnregisterClient(this); + m_entity = p_entity; + + ViewROI* pov = m_lego3DView->GetPointOfView(); + + if (m_entity != NULL && pov != NULL) { + MxMatrix mat; + + CalcLocalTransform( + Mx3DPointFloat( + m_entity->GetWorldPosition()[0], + m_entity->GetWorldPosition()[1] + m_entityOffsetUp, + m_entity->GetWorldPosition()[2] + ), + m_entity->GetWorldDirection(), + m_entity->GetWorldUp(), + mat + ); + + pov->WrappedSetLocalTransform(mat); + } + else { + TickleManager()->RegisterClient(this, 10); + } } diff --git a/LEGO1/lego/legoomni/src/entity/legoworld.cpp b/LEGO1/lego/legoomni/src/entity/legoworld.cpp index fc31b459..c29d8220 100644 --- a/LEGO1/lego/legoomni/src/entity/legoworld.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoworld.cpp @@ -266,6 +266,13 @@ LegoCameraController* LegoWorld::VTable0x54() return m_cameraController; } +// STUB: LEGO1 0x1001fa70 +undefined4 LegoWorld::FUN_1001fa70(IslePathActor* p_actor) +{ + // TODO + return 0; +} + // FUNCTION: LEGO1 0x1001fc80 void LegoWorld::FUN_1001fc80(IslePathActor* p_actor) { @@ -577,7 +584,7 @@ void LegoWorld::Enable(MxBool p_enable) if (m_scriptIndex != -1) { PlantManager()->FUN_10026360(m_scriptIndex); - AnimationManager()->FUN_1005f720(m_scriptIndex); + AnimationManager()->LoadScriptInfo(m_scriptIndex); BuildingManager()->FUN_1002fa00(); AnimationManager()->FUN_1005f0b0(); } diff --git a/LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp b/LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp index 756e32f9..e3d93ba8 100644 --- a/LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp @@ -15,7 +15,7 @@ #include "misc.h" #include "modeldb/modeldb.h" #include "mxactionnotificationparam.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdsactionlist.h" #include "mxdschunk.h" #include "mxdsmediaaction.h" @@ -54,7 +54,7 @@ LegoWorldPresenter::~LegoWorldPresenter() if (m_entity) { MxS32 scriptIndex = ((LegoWorld*) m_entity)->GetScriptIndex(); PlantManager()->FUN_10026360(scriptIndex); - AnimationManager()->FUN_1005f720(scriptIndex); + AnimationManager()->LoadScriptInfo(scriptIndex); BuildingManager()->FUN_1002fa00(); result = ((LegoWorld*) m_entity)->VTable0x5c(); } @@ -78,7 +78,7 @@ LegoWorldPresenter::~LegoWorldPresenter() // FUNCTION: LEGO1 0x10066870 MxResult LegoWorldPresenter::StartAction(MxStreamController* p_controller, MxDSAction* p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxResult result = FAILURE; MxDSActionList* actions = ((MxDSMultiAction*) p_action)->GetActionList(); diff --git a/LEGO1/lego/legoomni/src/infocenter/infocenterstate.cpp b/LEGO1/lego/legoomni/src/infocenter/infocenterstate.cpp index 0394d710..8efa9807 100644 --- a/LEGO1/lego/legoomni/src/infocenter/infocenterstate.cpp +++ b/LEGO1/lego/legoomni/src/infocenter/infocenterstate.cpp @@ -1,85 +1,93 @@ #include "infocenterstate.h" #include "infocenter.h" +#include "infomain_actions.h" DECOMP_SIZE_ASSERT(InfocenterState, 0x94); // GLOBAL: LEGO1 0x100f76a8 -Infocenter::InfomainScript g_exitDialogueAct1[14] = { - Infocenter::c_clickOnObjectsGuidanceDialogue, - Infocenter::c_arrowNavigationGuidanceDialogue, - Infocenter::c_elevatorGuidanceDialogue, - Infocenter::c_radioGuidanceDialogue, - Infocenter::c_exitGuidanceDialogue1, - Infocenter::c_goOutsideGuidanceDialogue, - Infocenter::c_experimentGuidanceDialogue, - Infocenter::c_returnBackGuidanceDialogue1, - Infocenter::c_bricksterWarningDialogue, - Infocenter::c_infomanHiccup, - Infocenter::c_infomanSneeze, - Infocenter::c_infomanLaughs, - Infocenter::c_newGameGuidanceDialogue, - Infocenter::c_returnBackGuidanceDialogue3 +InfomainScript::Script g_exitDialogueAct1[14] = { + InfomainScript::c_iic019in_RunAnim, + InfomainScript::c_iic020in_RunAnim, + InfomainScript::c_iic021in_RunAnim, + InfomainScript::c_iic022in_RunAnim, + InfomainScript::c_iic023in_RunAnim, + InfomainScript::c_iic024in_RunAnim, + InfomainScript::c_iic025in_RunAnim, + InfomainScript::c_iic026in_RunAnim, + InfomainScript::c_iic027in_RunAnim, + InfomainScript::c_iica28in_RunAnim, + InfomainScript::c_iicb28in_RunAnim, + InfomainScript::c_iicc28in_RunAnim, + InfomainScript::c_iic029in_RunAnim, + InfomainScript::c_iic032in_RunAnim }; // GLOBAL: LEGO1 0x100f76e0 -Infocenter::InfomainScript g_exitDialogueAct23[6] = { - Infocenter::c_bricksterWarningDialogue, - Infocenter::c_newGameGuidanceDialogue, - Infocenter::c_bricksterEscapedDialogue1, - Infocenter::c_bricksterEscapedDialogue5, - Infocenter::c_exitGuidanceDialogue2 +InfomainScript::Script g_exitDialogueAct23[6] = { + InfomainScript::c_iic027in_RunAnim, + InfomainScript::c_iic029in_RunAnim, + InfomainScript::c_iic048in_RunAnim, + InfomainScript::c_iic056in_RunAnim, + InfomainScript::c_iicx23in_RunAnim // Zero-terminated }; // GLOBAL: LEGO1 0x100f76f8 -Infocenter::InfomainScript g_returnDialogueAct1[6] = { - Infocenter::c_returnBackGuidanceDialogue2, - Infocenter::c_reenterInfoCenterDialogue1, - Infocenter::c_reenterInfoCenterDialogue2, - Infocenter::c_reenterInfoCenterDialogue3, - Infocenter::c_reenterInfoCenterDialogue4 +InfomainScript::Script g_returnDialogueAct1[6] = { + InfomainScript::c_iicx26in_RunAnim, + InfomainScript::c_iic033in_RunAnim, + InfomainScript::c_iic034in_RunAnim, + InfomainScript::c_iic035in_RunAnim, + InfomainScript::c_iic036in_RunAnim // Zero-terminated }; // GLOBAL: LEGO1 0x100f7710 -Infocenter::InfomainScript g_returnDialogueAct2[4] = { - Infocenter::c_bricksterEscapedDialogue1, - Infocenter::c_bricksterEscapedDialogue2, - Infocenter::c_bricksterEscapedDialogue3, +InfomainScript::Script g_returnDialogueAct2[4] = { + InfomainScript::c_iic048in_RunAnim, + InfomainScript::c_iic049in_RunAnim, + InfomainScript::c_iic050in_RunAnim, // Zero-terminated }; // GLOBAL: LEGO1 0x100f7720 -Infocenter::InfomainScript g_returnDialogueAct3[4] = { - Infocenter::c_bricksterEscapedDialogue4, - Infocenter::c_bricksterEscapedDialogue5, - Infocenter::c_bricksterEscapedDialogue6, - Infocenter::c_bricksterEscapedDialogue7 +InfomainScript::Script g_returnDialogueAct3[4] = { + InfomainScript::c_iic055in_RunAnim, + InfomainScript::c_iic056in_RunAnim, + InfomainScript::c_iic057in_RunAnim, + InfomainScript::c_iic058in_RunAnim }; // GLOBAL: LEGO1 0x100f7730 -Infocenter::InfomainScript g_leaveDialogueAct1[4] = { - Infocenter::c_leaveInfoCenterDialogue1, - Infocenter::c_leaveInfoCenterDialogue2, - Infocenter::c_leaveInfoCenterDialogue3, - Infocenter::c_leaveInfoCenterDialogue4 +InfomainScript::Script g_leaveDialogueAct1[4] = { + InfomainScript::c_iic039in_PlayWav, + InfomainScript::c_iic040in_PlayWav, + InfomainScript::c_iic041in_PlayWav, + InfomainScript::c_iic042in_PlayWav }; // GLOBAL: LEGO1 0x100f7740 -Infocenter::InfomainScript g_leaveDialogueAct2[4] = - {Infocenter::c_unk569, Infocenter::c_unk570, Infocenter::c_unk571, Infocenter::c_unk572}; +InfomainScript::Script g_leaveDialogueAct2[4] = { + InfomainScript::c_iic051in_PlayWav, + InfomainScript::c_iic052in_PlayWav, + InfomainScript::c_iic053in_PlayWav, + InfomainScript::c_iic054in_PlayWav +}; // GLOBAL: LEGO1 0x100f7750 -Infocenter::InfomainScript g_leaveDialogueAct3[4] = { - Infocenter::c_unk566, - Infocenter::c_unk567, - Infocenter::c_unk568, +InfomainScript::Script g_leaveDialogueAct3[4] = { + InfomainScript::c_iic059in_PlayWav, + InfomainScript::c_iic060in_PlayWav, + InfomainScript::c_iic061in_PlayWav, // Zero-terminated }; // GLOBAL: LEGO1 0x100f7760 -Infocenter::InfomainScript g_bricksterDialogue[2] = {Infocenter::c_bricksterDialogue, Infocenter::c_bricksterLaughs}; +InfomainScript::Script g_bricksterDialogue[2] = { + InfomainScript::c_sbleh2br_PlayWav, + InfomainScript::c_snshahbr_PlayWav +}; // FUNCTION: LEGO1 0x10071600 InfocenterState::InfocenterState() diff --git a/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp b/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp index 950a19f9..61f6c815 100644 --- a/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp +++ b/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp @@ -4,7 +4,7 @@ #include "legoomni.h" #include "legovideomanager.h" #include "misc.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "roi/legoroi.h" DECOMP_SIZE_ASSERT(LegoInputManager, 0x338) @@ -224,7 +224,7 @@ MxResult LegoInputManager::GetJoystickState( // FUNCTION: LEGO1 0x1005c470 void LegoInputManager::Register(MxCore* p_notify) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); LegoNotifyListCursor cursor(m_keyboardNotifyList); if (!cursor.Find(p_notify)) { @@ -235,7 +235,7 @@ void LegoInputManager::Register(MxCore* p_notify) // FUNCTION: LEGO1 0x1005c5c0 void LegoInputManager::UnRegister(MxCore* p_notify) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); LegoNotifyListCursor cursor(m_keyboardNotifyList); if (cursor.Find(p_notify)) { @@ -281,7 +281,7 @@ void LegoInputManager::QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p // FUNCTION: LEGO1 0x1005c820 void LegoInputManager::ProcessEvents() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); LegoEventNotificationParam event; while (m_eventQueue->Dequeue(event)) { diff --git a/LEGO1/lego/legoomni/src/isle/radiostate.cpp b/LEGO1/lego/legoomni/src/isle/radiostate.cpp index faae33c7..03334f2d 100644 --- a/LEGO1/lego/legoomni/src/isle/radiostate.cpp +++ b/LEGO1/lego/legoomni/src/isle/radiostate.cpp @@ -1,49 +1,50 @@ #include "radiostate.h" #include "jukebox.h" +#include "jukebox_actions.h" #include "legoomni.h" #include "mxmisc.h" #include "mxtimer.h" // GLOBAL: LEGO1 0x100f3218 -JukeBox::JukeBoxScript g_unk0x100f3218[6] = { - JukeBox::e_legoRadioReminder1, - JukeBox::e_legoRadioJingle1, - JukeBox::e_legoRadioJingle2, - JukeBox::e_legoRadioJingle3, - JukeBox::e_legoRadioJingle4, - JukeBox::e_legoRadioReminder2 +JukeboxScript::Script g_unk0x100f3218[6] = { + JukeboxScript::c_sns002ra_Audio, + JukeboxScript::c_sns001ja_Audio, + JukeboxScript::c_snsc01js_Audio, + JukeboxScript::c_snsb01js_Audio, + JukeboxScript::c_snsa01js_Audio, + JukeboxScript::c_sns009ra_Audio }; // GLOBAL: LEGO1 0x100f3230 -JukeBox::JukeBoxScript g_unk0x100f3230[14] = { - JukeBox::e_legoRadioRacingAd, - JukeBox::e_legoRadioNews1, - JukeBox::e_legoRadioNews2, - JukeBox::e_legoRadioPizzaAd1, - JukeBox::e_legoRadioBricksterPSA, - JukeBox::e_legoRadioSports1, - JukeBox::e_legoRadioIntermission1, - JukeBox::e_legoRadioIntermission2, - JukeBox::e_legoRadioPizzaAd2, - JukeBox::e_legoRadioWeatherReport, - JukeBox::e_legoRadioSports2, - JukeBox::e_legoRadioPizzaAd3, - JukeBox::e_legoRadioIntermission3, - JukeBox::e_legoRadioSuperStoreAd, +JukeboxScript::Script g_unk0x100f3230[14] = { + JukeboxScript::c_ham035ra_Audio, + JukeboxScript::c_ham039ra_Audio, + JukeboxScript::c_sns005ra_Audio, + JukeboxScript::c_sns078pa_Audio, + JukeboxScript::c_ham036ra_Audio, + JukeboxScript::c_sns006ra_Audio, + JukeboxScript::c_sns013ra_Audio, + JukeboxScript::c_sns004ra_Audio, + JukeboxScript::c_sns079pa_Audio, + JukeboxScript::c_sns007ra_Audio, + JukeboxScript::c_sns008ra_Audio, + JukeboxScript::c_hpz037ma_Audio, + JukeboxScript::c_sns003ra_Audio, + JukeboxScript::c_sns010ra_Audio, }; // GLOBAL: LEGO1 0x100f3268 -JukeBox::JukeBoxScript g_unk0x100f3268[9] = { - JukeBox::e_centralRoads, - JukeBox::e_beachBlvd, - JukeBox::e_residentialArea, - JukeBox::e_legoRadioLuckyYou, - JukeBox::e_legoRadioJazzInterlude, - JukeBox::e_legoRadioPianoInterlude1, - JukeBox::e_legoRadioPoliceStation, - JukeBox::e_legoRadioPianoInterlude2, - JukeBox::e_legoRadioCredits, +JukeboxScript::Script g_unk0x100f3268[9] = { + JukeboxScript::c_CentralRoads_Music, + JukeboxScript::c_BeachBlvd_Music, + JukeboxScript::c_ResidentalArea_Music, + JukeboxScript::c_Radio1_Music, + JukeboxScript::c_Radio2_Music, + JukeboxScript::c_Radio3_Music, + JukeboxScript::c_Radio4_Music, + JukeboxScript::c_Radio5_Music, + JukeboxScript::c_Radio6_Music, }; // FUNCTION: LEGO1 0x1002ce10 diff --git a/LEGO1/lego/legoomni/src/main/legoomni.cpp b/LEGO1/lego/legoomni/src/main/legoomni.cpp index cb1f5b05..827d3341 100644 --- a/LEGO1/lego/legoomni/src/main/legoomni.cpp +++ b/LEGO1/lego/legoomni/src/main/legoomni.cpp @@ -16,7 +16,7 @@ #include "misc.h" #include "misc/legocontainer.h" #include "mxactionnotificationparam.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxbackgroundaudiomanager.h" #include "mxdsfile.h" #include "mxmisc.h" @@ -309,7 +309,7 @@ void LegoOmni::Init() // FUNCTION: LEGO1 0x10058c30 void LegoOmni::Destroy() { - MxAutoLocker lock(&this->m_criticalsection); + AUTOLOCK(m_criticalSection); m_notificationManager->Unregister(this); @@ -389,7 +389,7 @@ void LegoOmni::Destroy() MxResult LegoOmni::Create(MxOmniCreateParam& p_param) { MxResult result = FAILURE; - MxAutoLocker lock(&this->m_criticalsection); + AUTOLOCK(m_criticalSection); p_param.CreateFlags().CreateObjectFactory(FALSE); p_param.CreateFlags().CreateVideoManager(FALSE); @@ -706,6 +706,18 @@ MxS32 LegoOmni::GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value) return ::CurrentWorld()->GetCurrPathInfo(p_path, p_value); } +// FUNCTION: LEGO1 0x1005b430 +const char* LegoOmni::FindScript(MxU32 p_index) +{ + for (MxS32 i = 0; i < 19; i++) { + if (m_scripts[i].m_index == p_index) { + return m_scripts[i].m_key; + } + } + + return NULL; +} + // FUNCTION: LEGO1 0x1005b490 MxS32 LegoOmni::GetScriptIndex(const char* p_key) { diff --git a/LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp b/LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp index 25390c48..db02e525 100644 --- a/LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp +++ b/LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp @@ -2,7 +2,7 @@ #include "legovideomanager.h" #include "misc.h" -#include "mxautolocker.h" +#include "mxautolock.h" DECOMP_SIZE_ASSERT(LegoPathPresenter, 0x54); @@ -44,7 +44,7 @@ void LegoPathPresenter::Destroy(MxBool p_fromDestructor) } { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); Init(); } diff --git a/LEGO1/lego/legoomni/src/police/policestate.cpp b/LEGO1/lego/legoomni/src/police/policestate.cpp index 85365f0e..994445c6 100644 --- a/LEGO1/lego/legoomni/src/police/policestate.cpp +++ b/LEGO1/lego/legoomni/src/police/policestate.cpp @@ -6,6 +6,7 @@ #include "mxdsaction.h" #include "mxmisc.h" #include "police.h" +#include "police_actions.h" #include @@ -15,7 +16,7 @@ DECOMP_SIZE_ASSERT(PoliceState, 0x10) PoliceState::PoliceState() { m_unk0x0c = 0; - m_policeScript = (rand() % 2 == 0) ? Police::PoliceScript::c_lauraAnim : Police::PoliceScript::c_nickAnim; + m_policeScript = (rand() % 2 == 0) ? PoliceScript::c_nps002la_RunAnim : PoliceScript::c_nps001ni_RunAnim; } // FUNCTION: LEGO1 0x1005e990 @@ -29,7 +30,7 @@ MxResult PoliceState::VTable0x1c(LegoFile* p_legoFile) p_legoFile->Read(&m_policeScript, sizeof(m_policeScript)); } else { - Police::PoliceScript policeScript = m_policeScript; + PoliceScript::Script policeScript = m_policeScript; p_legoFile->Write(&policeScript, sizeof(m_policeScript)); } @@ -39,7 +40,7 @@ MxResult PoliceState::VTable0x1c(LegoFile* p_legoFile) // FUNCTION: LEGO1 0x1005ea40 void PoliceState::FUN_1005ea40() { - Police::PoliceScript policeScript; + PoliceScript::Script policeScript; if (m_unk0x0c == 1) { return; @@ -47,17 +48,17 @@ void PoliceState::FUN_1005ea40() switch (CurrentActor()->GetActorId()) { case 4: - policeScript = Police::PoliceScript::c_lauraAnim; + policeScript = PoliceScript::c_nps002la_RunAnim; m_policeScript = policeScript; break; case 5: - policeScript = Police::PoliceScript::c_nickAnim; + policeScript = PoliceScript::c_nps001ni_RunAnim; m_policeScript = policeScript; break; default: policeScript = m_policeScript; - m_policeScript = policeScript == Police::PoliceScript::c_lauraAnim ? Police::PoliceScript::c_nickAnim - : Police::PoliceScript::c_lauraAnim; + m_policeScript = policeScript == PoliceScript::c_nps002la_RunAnim ? PoliceScript::c_nps001ni_RunAnim + : PoliceScript::c_nps002la_RunAnim; } { diff --git a/LEGO1/lego/legoomni/src/video/legopartpresenter.cpp b/LEGO1/lego/legoomni/src/video/legopartpresenter.cpp index 8351cdaa..7aead0ed 100644 --- a/LEGO1/lego/legoomni/src/video/legopartpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legopartpresenter.cpp @@ -37,10 +37,22 @@ MxResult LegoPartPresenter::AddToManager() return SUCCESS; } -// STUB: LEGO1 0x1007c9d0 +// FUNCTION: LEGO1 0x1007c9d0 void LegoPartPresenter::Destroy(MxBool p_fromDestructor) { - // TODO + m_criticalSection.Enter(); + VideoManager()->UnregisterPresenter(*this); + + if (m_parts) { + delete m_parts; + m_parts = NULL; + } + m_parts = NULL; + + m_criticalSection.Leave(); + if (!p_fromDestructor) { + MxMediaPresenter::Destroy(FALSE); + } } // FUNCTION: LEGO1 0x1007ca30 diff --git a/LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp b/LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp index 02464323..e2d5211b 100644 --- a/LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp @@ -114,11 +114,24 @@ MxResult LegoTexturePresenter::Store() return SUCCESS; } -// STUB: LEGO1 0x1004fc60 +// FUNCTION: LEGO1 0x1004fc60 MxResult LegoTexturePresenter::PutData() { - // TODO - return FAILURE; + MxResult result = SUCCESS; + + if (MxPresenter::IsEnabled() && m_currentChunk != NULL) { + result = Read(*m_currentChunk); + if (result == SUCCESS) { + Store(); + } + + if (m_currentTickleState == e_streaming) { + m_subscriber->FreeDataChunk(m_currentChunk); + } + m_currentChunk = NULL; + } + + return result; } // FUNCTION: LEGO1 0x1004fcb0 diff --git a/LEGO1/lego/legoomni/src/video/legovideomanager.cpp b/LEGO1/lego/legoomni/src/video/legovideomanager.cpp index ac8446da..5b967b29 100644 --- a/LEGO1/lego/legoomni/src/video/legovideomanager.cpp +++ b/LEGO1/lego/legoomni/src/video/legovideomanager.cpp @@ -383,6 +383,20 @@ MxResult LegoVideoManager::RealizePalette(MxPalette* p_pallete) return SUCCESS; } +// FUNCTION: LEGO1 0x1007c2d0 +MxResult LegoVideoManager::ResetPalette(MxBool p_ignoreSkyColor) +{ + MxResult result = FAILURE; + + if (m_videoParam.GetPalette() != NULL) { + m_videoParam.GetPalette()->Reset(p_ignoreSkyColor); + m_displaySurface->SetPalette(m_videoParam.GetPalette()); + result = SUCCESS; + } + + return result; +} + // FUNCTION: LEGO1 0x1007c300 void LegoVideoManager::EnableFullScreenMovie(MxBool p_enable) { diff --git a/LEGO1/lego/legoomni/src/worlds/elevatorbottom.cpp b/LEGO1/lego/legoomni/src/worlds/elevatorbottom.cpp index 3c5c7e27..0222bd83 100644 --- a/LEGO1/lego/legoomni/src/worlds/elevatorbottom.cpp +++ b/LEGO1/lego/legoomni/src/worlds/elevatorbottom.cpp @@ -1,7 +1,9 @@ #include "elevatorbottom.h" #include "act1state.h" +#include "elevbott_actions.h" #include "jukebox.h" +#include "jukebox_actions.h" #include "legocontrolmanager.h" #include "legogamestate.h" #include "legoinputmanager.h" @@ -18,7 +20,7 @@ DECOMP_SIZE_ASSERT(ElevatorBottom, 0xfc) ElevatorBottom::ElevatorBottom() { NotificationManager()->Register(this); - this->m_unk0xf8 = LegoGameState::e_noArea; + m_destLocation = LegoGameState::e_undefined; } // FUNCTION: LEGO1 0x10018060 @@ -60,7 +62,7 @@ MxLong ElevatorBottom::Notify(MxParam& p_param) ret = HandleClick((LegoControlManagerEvent&) p_param); break; case c_notificationTransitioned: - GameState()->SwitchArea(m_unk0xf8); + GameState()->SwitchArea(m_destLocation); break; } } @@ -72,7 +74,7 @@ MxLong ElevatorBottom::Notify(MxParam& p_param) void ElevatorBottom::ReadyWorld() { LegoWorld::ReadyWorld(); - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); } @@ -83,17 +85,17 @@ MxLong ElevatorBottom::HandleClick(LegoControlManagerEvent& p_param) if (p_param.GetUnknown0x28() == 1) { switch (p_param.GetClickedObjectId()) { - case 1: - m_unk0xf8 = LegoGameState::e_infodoor; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + case ElevbottScript::c_LeftArrow_Ctl: + m_destLocation = LegoGameState::e_infodoor; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); result = 1; break; - case 2: - m_unk0xf8 = LegoGameState::e_infomain; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + case ElevbottScript::c_RightArrow_Ctl: + m_destLocation = LegoGameState::e_infomain; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); result = 1; break; - case 3: + case ElevbottScript::c_ElevBott_Elevator_Ctl: LegoGameState* gs = GameState(); Act1State* state = (Act1State*) gs->GetState("Act1State"); @@ -101,9 +103,9 @@ MxLong ElevatorBottom::HandleClick(LegoControlManagerEvent& p_param) state = (Act1State*) gs->CreateState("Act1State"); } - state->SetUnknown1c(1); - m_unk0xf8 = LegoGameState::e_elevride; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + state->SetElevatorFloor(Act1State::c_floor1); + m_destLocation = LegoGameState::e_elevride; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); VariableTable()->SetVariable(g_varCAMERALOCATION, "LCAMZI1,90"); result = 1; break; @@ -133,6 +135,6 @@ void ElevatorBottom::Enable(MxBool p_enable) MxBool ElevatorBottom::VTable0x64() { DeleteObjects(&m_atom, 500, 999); - m_unk0xf8 = LegoGameState::e_infomain; + m_destLocation = LegoGameState::e_infomain; return TRUE; } diff --git a/LEGO1/lego/legoomni/src/worlds/gasstation.cpp b/LEGO1/lego/legoomni/src/worlds/gasstation.cpp index 46f9393c..056863a4 100644 --- a/LEGO1/lego/legoomni/src/worlds/gasstation.cpp +++ b/LEGO1/lego/legoomni/src/worlds/gasstation.cpp @@ -16,7 +16,7 @@ GasStation::GasStation() { m_unk0xf8 = 0; m_state = NULL; - m_transitionDestination = LegoGameState::e_noArea; + m_destLocation = LegoGameState::e_undefined; m_unk0x108 = 0; m_unk0x104 = 0; m_unk0x114 = 0; @@ -62,16 +62,13 @@ MxResult GasStation::Create(MxDSAction& p_dsAction) m_state = (GasStationState*) GameState()->GetState("GasStationState"); if (!m_state) { m_state = (GasStationState*) GameState()->CreateState("GasStationState"); - m_state->GetUnknown0x14().SetUnknown0x00(1); + m_state->m_unk0x14.m_unk0x00 = 1; + } + else if (m_state->m_unk0x14.m_unk0x00 == 4) { + m_state->m_unk0x14.m_unk0x00 = 4; } else { - GasStationState::Unknown0x14& unk0x14 = m_state->GetUnknown0x14(); - if (unk0x14.GetUnknown0x00() == 4) { - unk0x14.SetUnknown0x00(4); - } - else { - unk0x14.SetUnknown0x00(3); - } + m_state->m_unk0x14.m_unk0x00 = 3; } GameState()->SetCurrentArea(LegoGameState::e_garage); @@ -103,7 +100,7 @@ MxLong GasStation::Notify(MxParam& p_param) result = HandleClick((LegoControlManagerEvent&) p_param); break; case c_notificationTransitioned: - GameState()->SwitchArea(m_transitionDestination); + GameState()->SwitchArea(m_destLocation); break; } } diff --git a/LEGO1/lego/legoomni/src/worlds/historybook.cpp b/LEGO1/lego/legoomni/src/worlds/historybook.cpp index 954df038..9f99002b 100644 --- a/LEGO1/lego/legoomni/src/worlds/historybook.cpp +++ b/LEGO1/lego/legoomni/src/worlds/historybook.cpp @@ -1,6 +1,7 @@ #include "historybook.h" #include "jukebox.h" +#include "jukebox_actions.h" #include "legocontrolmanager.h" #include "legoinputmanager.h" #include "misc.h" @@ -50,11 +51,11 @@ MxLong HistoryBook::Notify(MxParam& p_param) if (m_worldStarted) { switch (((MxNotificationParam&) p_param).GetNotification()) { case c_notificationButtonUp: - m_transitionDestination = LegoGameState::Area::e_infoscor; - TransitionManager()->StartTransition(MxTransitionManager::TransitionType::e_pixelation, 50, FALSE, FALSE); + m_destLocation = LegoGameState::Area::e_infoscor; + TransitionManager()->StartTransition(MxTransitionManager::TransitionType::e_mosaic, 50, FALSE, FALSE); break; case c_notificationTransitioned: - GameState()->SwitchArea(m_transitionDestination); + GameState()->SwitchArea(m_destLocation); break; } } @@ -143,12 +144,12 @@ void HistoryBook::ReadyWorld() scoreY += 0x1b; } - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); } // FUNCTION: LEGO1 0x10082a10 MxBool HistoryBook::VTable0x64() { - m_transitionDestination = LegoGameState::Area::e_infomain; + m_destLocation = LegoGameState::Area::e_infomain; return TRUE; } diff --git a/LEGO1/lego/legoomni/src/worlds/hospital.cpp b/LEGO1/lego/legoomni/src/worlds/hospital.cpp index 6dfee325..98b73d74 100644 --- a/LEGO1/lego/legoomni/src/worlds/hospital.cpp +++ b/LEGO1/lego/legoomni/src/worlds/hospital.cpp @@ -1,25 +1,46 @@ #include "hospital.h" +#include "hospital_actions.h" +#include "islepathactor.h" +#include "jukebox.h" +#include "jukebox_actions.h" +#include "legocontrolmanager.h" +#include "legoinputmanager.h" +#include "legoomni.h" +#include "legoutils.h" +#include "misc.h" +#include "mxbackgroundaudiomanager.h" #include "mxmisc.h" #include "mxnotificationmanager.h" +#include "mxticklemanager.h" +#include "mxtimer.h" DECOMP_SIZE_ASSERT(Hospital, 0x12c) +// GLOBAL: LEGO1 0x100f7918 +undefined4 g_unk0x100f7918 = 3; + +// GLOBAL: LEGO1 0x100f791c +undefined g_unk0x100f791c = 0; + +// GLOBAL: LEGO1 0x100f7920 +undefined g_unk0x100f7920 = 0; + // FUNCTION: LEGO1 0x100745e0 Hospital::Hospital() { - this->m_unk0xf8 = 0; - this->m_unk0x100 = 0; - this->m_unk0x104 = 0; - this->m_unk0x108 = 0; - this->m_unk0xfc = 0; - this->m_unk0x10c = 0; - this->m_unk0x110 = 0; - this->m_unk0x114 = 0; - this->m_unk0x118 = 0; - this->m_unk0x11c = 0; - this->m_unk0x120 = 0; - this->m_unk0x128 = 0; + m_currentActorId = 0; + m_unk0x100 = 0; + m_hospitalState = NULL; + m_unk0x108 = 0; + m_destLocation = LegoGameState::e_undefined; + m_unk0x10c = HospitalScript::c__StartUp; + m_copLedBitmap = NULL; + m_pizzaLedBitmap = NULL; + m_unk0x118 = 0; + m_unk0x11c = 0; + m_unk0x120 = 0; + m_unk0x128 = 0; NotificationManager()->Register(this); } @@ -29,49 +50,269 @@ MxBool Hospital::VTable0x5c() return TRUE; } -// STUB: LEGO1 0x100747f0 +// FUNCTION: LEGO1 0x100747f0 Hospital::~Hospital() { - // TODO + InputManager()->UnRegister(this); + if (InputManager()->GetWorld() == this) { + InputManager()->ClearWorld(); + } + + ControlManager()->Unregister(this); + TickleManager()->UnregisterClient(this); + + m_hospitalState->m_unk0x08.m_unk0x00 = 3; + + NotificationManager()->Unregister(this); + g_unk0x100f7918 = 3; } -// STUB: LEGO1 0x100748c0 +// FUNCTION: LEGO1 0x100748c0 MxResult Hospital::Create(MxDSAction& p_dsAction) { - // TODO - return SUCCESS; + MxResult result = LegoWorld::Create(p_dsAction); + if (result == SUCCESS) { + InputManager()->SetWorld(this); + ControlManager()->Register(this); + } + + SetIsWorldActive(FALSE); + + m_hospitalState = (HospitalState*) GameState()->GetState("HospitalState"); + if (!m_hospitalState) { + m_hospitalState = (HospitalState*) GameState()->CreateState("HospitalState"); + m_hospitalState->m_unk0x08.m_unk0x00 = 1; + } + else if (m_hospitalState->m_unk0x08.m_unk0x00 == 4) { + m_hospitalState->m_unk0x08.m_unk0x00 = 4; + } + else { + m_hospitalState->m_unk0x08.m_unk0x00 = 3; + } + + GameState()->SetCurrentArea(LegoGameState::e_hospital); + GameState()->StopArea(LegoGameState::e_previousArea); + + InputManager()->Register(this); + FUN_1003ef00(FALSE); + + return result; } -// STUB: LEGO1 0x10074990 +// FUNCTION: LEGO1 0x10074990 MxLong Hospital::Notify(MxParam& p_param) { - // TODO + MxLong result = 0; + LegoWorld::Notify(p_param); + if (m_worldStarted) { + switch (((MxNotificationParam&) p_param).GetNotification()) { + case c_notificationEndAction: + result = HandleEndAction((MxEndActionNotificationParam&) p_param); + break; + case c_notificationKeyPress: + result = HandleKeyPress((((LegoEventNotificationParam&) p_param)).GetKey()); + break; + case c_notificationButtonDown: + result = HandleButtonDown(((LegoControlManagerEvent&) p_param)); + break; + case c_notificationClick: + result = HandleClick((LegoControlManagerEvent&) p_param); + break; + case c_notificationTransitioned: + if (m_destLocation != LegoGameState::e_undefined) { + GameState()->SwitchArea(m_destLocation); + } + break; + } + } + + return result; +} + +// FUNCTION: LEGO1 0x10074a60 +void Hospital::ReadyWorld() +{ + PlayMusic(JukeboxScript::c_Hospital_Music); + + m_copLedBitmap = (MxStillPresenter*) Find("MxStillPresenter", "CopLed_Bitmap"); + m_pizzaLedBitmap = (MxStillPresenter*) Find("MxStillPresenter", "PizzaLed_Bitmap"); + + if (CurrentActor() == NULL) { + m_currentActorId = 5; + } + else { + m_currentActorId = CurrentActor()->GetActorId(); + } + + switch (m_currentActorId) { + case 1: + m_hospitalState->m_unk0x0c = m_hospitalState->m_unk0x0e; + + if (m_hospitalState->m_unk0x0e < 5) { + m_hospitalState->m_unk0x0e += 1; + } + + break; + case 2: + m_hospitalState->m_unk0x0c = m_hospitalState->m_unk0x10; + + if (m_hospitalState->m_unk0x10 < 5) { + m_hospitalState->m_unk0x10 += 1; + } + + break; + case 3: + m_hospitalState->m_unk0x0c = m_hospitalState->m_unk0x12; + + if (m_hospitalState->m_unk0x12 < 5) { + m_hospitalState->m_unk0x12 += 1; + } + + break; + case 4: + m_hospitalState->m_unk0x0c = m_hospitalState->m_unk0x14; + + if (m_hospitalState->m_unk0x14 < 5) { + m_hospitalState->m_unk0x14 += 1; + } + + break; + case 5: + m_hospitalState->m_unk0x0c = m_hospitalState->m_unk0x16; + + if (m_hospitalState->m_unk0x16 < 5) { + m_hospitalState->m_unk0x16 += 1; + } + + break; + } + + if (m_hospitalState->m_unk0x0c < 3) { + HospitalScript::Script hospitalScript[] = { + HospitalScript::c_hho002cl_RunAnim, + HospitalScript::c_hho004jk_RunAnim, + HospitalScript::c_hho007p1_RunAnim + }; + + m_hospitalState->m_unk0x08.m_unk0x00 = 5; + + PlayAction(hospitalScript[m_hospitalState->m_unk0x0c]); + m_unk0x10c = hospitalScript[m_hospitalState->m_unk0x0c]; + } + else { + m_unk0x100 = 1; + m_unk0x124 = Timer()->GetTime(); + + m_hospitalState->m_unk0x08.m_unk0x00 = 6; + + PlayAction(HospitalScript::c_hho003cl_RunAnim); + m_unk0x10c = HospitalScript::c_hho003cl_RunAnim; + } + + m_unk0x108 = 1; + + FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); +} + +// FUNCTION: LEGO1 0x10074dd0 +MxLong Hospital::HandleKeyPress(MxS8 p_key) +{ + MxLong result = 0; + + if (p_key == ' ' && g_unk0x100f7918 == 0) { + DeleteObjects(&m_atom, HospitalScript::c_hho002cl_RunAnim, HospitalScript::c_hho006cl_RunAnim); + result = 1; + } + + return result; +} + +// STUB: LEGO1 0x10074e00 +MxLong Hospital::HandleEndAction(MxEndActionNotificationParam& p_param) +{ + // TODO return 0; } -// STUB: LEGO1 0x10074a60 -void Hospital::ReadyWorld() +// STUB: LEGO1 0x10075710 +MxLong Hospital::HandleButtonDown(LegoControlManagerEvent& p_param) { // TODO + return 0; } -// STUB: LEGO1 0x10076220 +// STUB: LEGO1 0x10075f90 +MxBool Hospital::HandleClick(LegoControlManagerEvent& p_param) +{ + // TODO + return 0; +} + +// FUNCTION: LEGO1 0x10076220 void Hospital::Enable(MxBool p_enable) { - // TODO + LegoWorld::Enable(p_enable); + + if (p_enable) { + InputManager()->SetWorld(this); + SetIsWorldActive(FALSE); + } + else { + if (InputManager()->GetWorld() == this) { + InputManager()->ClearWorld(); + } + } } -// STUB: LEGO1 0x10076270 +inline void Hospital::PlayAction(MxU32 p_objectId) +{ + MxDSAction action; + action.SetAtomId(*g_hospitalScript); + action.SetObjectId(p_objectId); + + BackgroundAudioManager()->LowerVolume(); + Start(&action); +} + +// FUNCTION: LEGO1 0x10076270 MxResult Hospital::Tickle() { - // TODO + if (!m_worldStarted) { + LegoWorld::Tickle(); + return SUCCESS; + } + + if (g_unk0x100f7918 != 0) { + g_unk0x100f7918 -= 1; + } + + MxLong time = Timer()->GetTime(); + + if (m_unk0x118 != 0) { + if (time - m_unk0x11c > 300) { + m_unk0x11c = time; + g_unk0x100f791c = !g_unk0x100f791c; + m_copLedBitmap->Enable(g_unk0x100f791c); + } + + if (time - m_unk0x120 > 200) { + m_unk0x120 = time; + g_unk0x100f7920 = !g_unk0x100f7920; + m_pizzaLedBitmap->Enable(g_unk0x100f7920); + } + } + return SUCCESS; } -// STUB: LEGO1 0x10076330 +// FUNCTION: LEGO1 0x10076330 MxBool Hospital::VTable0x64() { - // TODO - return FALSE; + DeleteObjects(&m_atom, HospitalScript::c_hho002cl_RunAnim, 999); + m_hospitalState->m_unk0x08.m_unk0x00 = 0; + + m_destLocation = LegoGameState::e_infomain; + + return TRUE; } diff --git a/LEGO1/lego/legoomni/src/worlds/infocenter.cpp b/LEGO1/lego/legoomni/src/worlds/infocenter.cpp index eda820b5..bdea2fd2 100644 --- a/LEGO1/lego/legoomni/src/worlds/infocenter.cpp +++ b/LEGO1/lego/legoomni/src/worlds/infocenter.cpp @@ -1,9 +1,12 @@ #include "infocenter.h" #include "act3state.h" +#include "credits_actions.h" #include "helicopterstate.h" #include "infocenterstate.h" +#include "infomain_actions.h" #include "jukebox.h" +#include "jukebox_actions.h" #include "legoact2state.h" #include "legoanimationmanager.h" #include "legobuildingmanager.h" @@ -24,6 +27,7 @@ #include "mxstillpresenter.h" #include "mxticklemanager.h" #include "mxtransitionmanager.h" +#include "sndanim_actions.h" DECOMP_SIZE_ASSERT(Infocenter, 0x1d8) DECOMP_SIZE_ASSERT(InfocenterMapEntry, 0x18) @@ -41,8 +45,8 @@ Infocenter::Infocenter() m_unk0x11c = NULL; m_infocenterState = NULL; m_frameHotBitmap = NULL; - m_transitionDestination = LegoGameState::e_noArea; - m_currentInfomainScript = c_noInfomain; + m_destLocation = LegoGameState::e_undefined; + m_currentInfomainScript = InfomainScript::c_noneInfomain; m_currentCutscene = e_noIntro; memset(&m_mapAreas, 0, sizeof(m_mapAreas)); @@ -172,10 +176,10 @@ MxLong Infocenter::Notify(MxParam& p_param) StartCredits(); m_infocenterState->SetUnknown0x74(0xd); } - else if (m_transitionDestination != 0) { + else if (m_destLocation != 0) { BackgroundAudioManager()->RaiseVolume(); - GameState()->SwitchArea(m_transitionDestination); - m_transitionDestination = LegoGameState::e_noArea; + GameState()->SwitchArea(m_destLocation); + m_destLocation = LegoGameState::e_undefined; } break; } @@ -188,38 +192,39 @@ MxLong Infocenter::Notify(MxParam& p_param) MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) { MxDSAction* action = p_param.GetAction(); - if (action->GetAtomId() == *g_creditsScript && action->GetObjectId() == c_unk499) { + if (action->GetAtomId() == *g_creditsScript && action->GetObjectId() == CreditsScript::c_LegoCredits) { Lego()->CloseMainWindow(); return 1; } - if (action->GetAtomId() == m_atom && - (action->GetObjectId() == c_mamaMovie || action->GetObjectId() == c_papaMovie || - action->GetObjectId() == c_pepperMovie || action->GetObjectId() == c_nickMovie || - action->GetObjectId() == c_lauraMovie)) { + if (action->GetAtomId() == m_atom && (action->GetObjectId() == InfomainScript::c_Mama_All_Movie || + action->GetObjectId() == InfomainScript::c_Papa_All_Movie || + action->GetObjectId() == InfomainScript::c_Pepper_All_Movie || + action->GetObjectId() == InfomainScript::c_Nick_All_Movie || + action->GetObjectId() == InfomainScript::c_Laura_All_Movie)) { if (m_unk0x1d4) { m_unk0x1d4--; } if (!m_unk0x1d4) { - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); GameState()->SetActor(m_selectedCharacter); switch (m_selectedCharacter) { case e_pepper: - PlayAction(c_pepperCharacterSelect); + PlayAction(InfomainScript::c_avo901in_RunAnim); break; case e_mama: - PlayAction(c_mamaCharacterSelect); + PlayAction(InfomainScript::c_avo902in_RunAnim); break; case e_papa: - PlayAction(c_papaCharacterSelect); + PlayAction(InfomainScript::c_avo903in_RunAnim); break; case e_nick: - PlayAction(c_nickCharacterSelect); + PlayAction(InfomainScript::c_avo904in_RunAnim); break; case e_laura: - PlayAction(c_lauraCharacterSelect); + PlayAction(InfomainScript::c_avo905in_RunAnim); break; default: break; @@ -235,7 +240,7 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) return result; } - if (action->GetObjectId() == c_returnBackGuidanceDialogue2) { + if (action->GetObjectId() == InfomainScript::c_iicx26in_RunAnim) { ControlManager()->FUN_100293c0(0x10, action->GetAtomId().GetInternal(), 0); m_unk0x1d6 = 0; } @@ -252,13 +257,13 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) case e_badEndMovie: StopCutscene(); m_infocenterState->SetUnknown0x74(11); - PlayAction(c_badEndingDialogue); + PlayAction(InfomainScript::c_tic092in_RunAnim); m_currentCutscene = e_noIntro; return 1; case e_goodEndMovie: StopCutscene(); m_infocenterState->SetUnknown0x74(11); - PlayAction(c_goodEndingDialogue); + PlayAction(InfomainScript::c_tic089in_RunAnim); m_currentCutscene = e_noIntro; return 1; } @@ -266,7 +271,7 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) // default / 2nd case probably? StopCutscene(); m_infocenterState->SetUnknown0x74(11); - PlayAction(c_welcomeDialogue); + PlayAction(InfomainScript::c_iic001in_RunAnim); m_currentCutscene = e_noIntro; if (!m_infocenterState->HasRegistered()) { @@ -279,13 +284,13 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) switch (m_currentCutscene) { case e_badEndMovie: - PlayAction(c_badEndingDialogue); + PlayAction(InfomainScript::c_tic092in_RunAnim); break; case e_goodEndMovie: - PlayAction(c_goodEndingDialogue); + PlayAction(InfomainScript::c_tic089in_RunAnim); break; default: - PlayAction(c_welcomeDialogue); + PlayAction(InfomainScript::c_iic001in_RunAnim); } m_currentCutscene = e_noIntro; @@ -296,8 +301,9 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) BackgroundAudioManager()->RaiseVolume(); return 1; case 4: - if (action->GetObjectId() == c_goToRegBook || action->GetObjectId() == c_goToRegBookRed) { - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + if (action->GetObjectId() == InfomainScript::c_GoTo_RegBook || + action->GetObjectId() == InfomainScript::c_GoTo_RegBook_Red) { + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); m_infocenterState->SetUnknown0x74(14); return 1; } @@ -307,17 +313,19 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) if (GameState()->GetCurrentAct() != LegoGameState::e_act3 && m_selectedCharacter != e_noCharacter) { GameState()->SetActor(m_selectedCharacter); } - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); m_infocenterState->SetUnknown0x74(14); return 1; } break; case 11: - if (!m_infocenterState->HasRegistered() && m_currentInfomainScript != c_mamaMovie && - m_currentInfomainScript != c_papaMovie && m_currentInfomainScript != c_pepperMovie && - m_currentInfomainScript != c_nickMovie && m_currentInfomainScript != c_lauraMovie) { + if (!m_infocenterState->HasRegistered() && m_currentInfomainScript != InfomainScript::c_Mama_All_Movie && + m_currentInfomainScript != InfomainScript::c_Papa_All_Movie && + m_currentInfomainScript != InfomainScript::c_Pepper_All_Movie && + m_currentInfomainScript != InfomainScript::c_Nick_All_Movie && + m_currentInfomainScript != InfomainScript::c_Laura_All_Movie) { m_infoManDialogueTimer = 1; - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); } m_infocenterState->SetUnknown0x74(2); @@ -325,7 +333,7 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param) return 1; case 12: if (action->GetObjectId() == m_currentInfomainScript) { - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); } } @@ -361,19 +369,19 @@ void Infocenter::ReadyWorld() m_bookAnimationTimer = 1; } - PlayAction(c_letsGetStartedDialogue); - PlayMusic(JukeBox::e_informationCenter); + PlayAction(InfomainScript::c_iicx18in_RunAnim); + PlayMusic(JukeboxScript::c_InformationCenter_Music); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); break; case 5: default: { - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); - InfomainScript script = - (InfomainScript) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); + InfomainScript::Script script = + (InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); PlayAction(script); - if (script == c_returnBackGuidanceDialogue2) { + if (script == InfomainScript::c_iicx26in_RunAnim) { m_unk0x1d6 = 1; } @@ -388,8 +396,8 @@ void Infocenter::ReadyWorld() break; } case 8: - PlayMusic(JukeBox::e_informationCenter); - PlayAction(c_exitConfirmationDialogue); + PlayMusic(JukeboxScript::c_InformationCenter_Music); + PlayAction(InfomainScript::c_iic043in_RunAnim); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); break; case 0xf: @@ -398,17 +406,17 @@ void Infocenter::ReadyWorld() m_bookAnimationTimer = 1; } - PlayAction(c_clickOnInfomanDialogue); - PlayMusic(JukeBox::e_informationCenter); + PlayAction(InfomainScript::c_iicx17in_RunAnim); + PlayMusic(JukeboxScript::c_InformationCenter_Music); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); break; } return; case LegoGameState::e_act2: { if (m_infocenterState->GetUnknown0x74() == 8) { - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); bgRed->Enable(TRUE); - PlayAction(c_exitConfirmationDialogue); + PlayAction(InfomainScript::c_iic043in_RunAnim); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); return; } @@ -433,10 +441,10 @@ void Infocenter::ReadyWorld() } m_infocenterState->SetUnknown0x74(5); - m_transitionDestination = LegoGameState::e_act2main; + m_destLocation = LegoGameState::e_act2main; - InfomainScript script = - (InfomainScript) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); + InfomainScript::Script script = + (InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); PlayAction(script); InputManager()->DisableInputProcessing(); @@ -444,18 +452,18 @@ void Infocenter::ReadyWorld() return; } - PlayMusic(JukeBox::e_informationCenter); - InfomainScript script = - (InfomainScript) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); + PlayMusic(JukeboxScript::c_InformationCenter_Music); + InfomainScript::Script script = + (InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); PlayAction(script); bgRed->Enable(TRUE); break; } case LegoGameState::e_act3: { if (m_infocenterState->GetUnknown0x74() == 8) { - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); bgRed->Enable(TRUE); - PlayAction(c_exitConfirmationDialogue); + PlayAction(InfomainScript::c_iic043in_RunAnim); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); return; } @@ -489,10 +497,10 @@ void Infocenter::ReadyWorld() } m_infocenterState->SetUnknown0x74(5); - m_transitionDestination = LegoGameState::e_act3script; + m_destLocation = LegoGameState::e_act3script; - InfomainScript script = - (InfomainScript) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); + InfomainScript::Script script = + (InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); PlayAction(script); InputManager()->DisableInputProcessing(); @@ -500,9 +508,9 @@ void Infocenter::ReadyWorld() return; } - PlayMusic(JukeBox::e_informationCenter); - InfomainScript script = - (InfomainScript) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); + PlayMusic(JukeboxScript::c_InformationCenter_Music); + InfomainScript::Script script = + (InfomainScript::Script) m_infocenterState->GetReturnDialogue(GameState()->GetCurrentAct()).Next(); PlayAction(script); bgRed->Enable(TRUE); break; @@ -518,21 +526,21 @@ void Infocenter::InitializeBitmaps() { m_radio.Initialize(TRUE); - ((MxPresenter*) Find(m_atom, c_leftArrowCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_rightArrowCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_infoCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_boatCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_raceCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_pizzaCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_gasCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_medCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_copCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_mamaCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_papaCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_pepperCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_nickCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_lauraCtl))->Enable(TRUE); - ((MxPresenter*) Find(m_atom, c_radioCtl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_LeftArrow_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_RightArrow_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Info_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Boat_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Race_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Pizza_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Gas_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Med_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Cop_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Mama_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Papa_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Pepper_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Nick_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Laura_Ctl))->Enable(TRUE); + ((MxPresenter*) Find(m_atom, InfomainScript::c_Radio_Ctl))->Enable(TRUE); m_mapAreas[0].m_presenter = (MxStillPresenter*) Find("MxStillPresenter", "Info_A_Bitmap"); m_mapAreas[0].m_area.SetLeft(391); @@ -633,7 +641,7 @@ MxLong Infocenter::HandleKeyPress(MxS8 p_key) case 4: break; default: { - InfomainScript script = m_currentInfomainScript; + InfomainScript::Script script = m_currentInfomainScript; StopCurrentAction(); switch (m_infocenterState->GetUnknown0x74()) { @@ -667,19 +675,19 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y) MxControlPresenter* control = InputManager()->GetControlManager()->FUN_100294e0(p_x - 1, p_y - 1); switch (m_unk0x11c->GetAction()->GetObjectId()) { - case c_pepperSelected: + case InfomainScript::c_PepperHot_Bitmap: m_selectedCharacter = e_pepper; break; - case c_mamaSelected: + case InfomainScript::c_MamaHot_Bitmap: m_selectedCharacter = e_mama; break; - case c_papaSelected: + case InfomainScript::c_PapaHot_Bitmap: m_selectedCharacter = e_papa; break; - case c_nickSelected: + case InfomainScript::c_NickHot_Bitmap: m_selectedCharacter = e_nick; break; - case c_lauraSelected: + case InfomainScript::c_LauraHot_Bitmap: m_selectedCharacter = e_laura; break; } @@ -688,43 +696,43 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y) m_infoManDialogueTimer = 0; switch (control->GetAction()->GetObjectId()) { - case c_pepperCtl: + case InfomainScript::c_Pepper_Ctl: if (m_selectedCharacter == e_pepper) { m_radio.Stop(); BackgroundAudioManager()->Stop(); - PlayAction(c_pepperMovie); + PlayAction(InfomainScript::c_Pepper_All_Movie); m_unk0x1d4++; } break; - case c_mamaCtl: + case InfomainScript::c_Mama_Ctl: if (m_selectedCharacter == e_mama) { m_radio.Stop(); BackgroundAudioManager()->Stop(); - PlayAction(c_mamaMovie); + PlayAction(InfomainScript::c_Mama_All_Movie); m_unk0x1d4++; } break; - case c_papaCtl: + case InfomainScript::c_Papa_Ctl: if (m_selectedCharacter == e_papa) { m_radio.Stop(); BackgroundAudioManager()->Stop(); - PlayAction(c_papaMovie); + PlayAction(InfomainScript::c_Papa_All_Movie); m_unk0x1d4++; } break; - case c_nickCtl: + case InfomainScript::c_Nick_Ctl: if (m_selectedCharacter == e_nick) { m_radio.Stop(); BackgroundAudioManager()->Stop(); - PlayAction(c_nickMovie); + PlayAction(InfomainScript::c_Nick_All_Movie); m_unk0x1d4++; } break; - case c_lauraCtl: + case InfomainScript::c_Laura_Ctl: if (m_selectedCharacter == e_laura) { m_radio.Stop(); BackgroundAudioManager()->Stop(); - PlayAction(c_lauraMovie); + PlayAction(InfomainScript::c_Laura_All_Movie); m_unk0x1d4++; } break; @@ -740,55 +748,55 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y) switch (m_selectedCharacter) { case e_pepper: - PlayAction(c_pepperCharacterSelect); + PlayAction(InfomainScript::c_avo901in_RunAnim); break; case e_mama: - PlayAction(c_mamaCharacterSelect); + PlayAction(InfomainScript::c_avo902in_RunAnim); break; case e_papa: - PlayAction(c_papaCharacterSelect); + PlayAction(InfomainScript::c_avo903in_RunAnim); break; case e_nick: - PlayAction(c_nickCharacterSelect); + PlayAction(InfomainScript::c_avo904in_RunAnim); break; case e_laura: - PlayAction(c_lauraCharacterSelect); + PlayAction(InfomainScript::c_avo905in_RunAnim); break; } break; case 10: if (m_selectedCharacter) { - m_transitionDestination = LegoGameState::e_jetraceExterior; + m_destLocation = LegoGameState::e_jetraceExterior; m_infocenterState->SetUnknown0x74(5); } break; case 11: if (m_selectedCharacter) { - m_transitionDestination = LegoGameState::e_carraceExterior; + m_destLocation = LegoGameState::e_carraceExterior; m_infocenterState->SetUnknown0x74(5); } break; case 12: if (m_selectedCharacter) { - m_transitionDestination = LegoGameState::e_pizzeriaExterior; + m_destLocation = LegoGameState::e_pizzeriaExterior; m_infocenterState->SetUnknown0x74(5); } break; case 13: if (m_selectedCharacter) { - m_transitionDestination = LegoGameState::e_garageExterior; + m_destLocation = LegoGameState::e_garageExterior; m_infocenterState->SetUnknown0x74(5); } break; case 14: if (m_selectedCharacter) { - m_transitionDestination = LegoGameState::e_hospitalExterior; + m_destLocation = LegoGameState::e_hospitalExterior; m_infocenterState->SetUnknown0x74(5); } break; case 15: if (m_selectedCharacter) { - m_transitionDestination = LegoGameState::e_policeExterior; + m_destLocation = LegoGameState::e_policeExterior; m_infocenterState->SetUnknown0x74(5); } break; @@ -800,39 +808,40 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y) m_unk0x11c = NULL; if (m_infocenterState->GetUnknown0x74() == 5) { - InfomainScript dialogueToPlay; + InfomainScript::Script dialogueToPlay; if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { if (!m_infocenterState->HasRegistered()) { m_infocenterState->SetUnknown0x74(2); - m_transitionDestination = LegoGameState::e_noArea; - dialogueToPlay = c_registerToContinueDialogue; + m_destLocation = LegoGameState::e_undefined; + dialogueToPlay = InfomainScript::c_iic007in_PlayWav; } else { switch (m_selectedCharacter) { case e_pepper: - dialogueToPlay = c_pepperCharacterSelect; + dialogueToPlay = InfomainScript::c_avo901in_RunAnim; GameState()->SetActorId(m_selectedCharacter); break; case e_mama: - dialogueToPlay = c_mamaCharacterSelect; + dialogueToPlay = InfomainScript::c_avo902in_RunAnim; GameState()->SetActorId(m_selectedCharacter); break; case e_papa: - dialogueToPlay = c_papaCharacterSelect; + dialogueToPlay = InfomainScript::c_avo903in_RunAnim; GameState()->SetActorId(m_selectedCharacter); break; case e_nick: - dialogueToPlay = c_nickCharacterSelect; + dialogueToPlay = InfomainScript::c_avo904in_RunAnim; GameState()->SetActorId(m_selectedCharacter); break; case e_laura: - dialogueToPlay = c_lauraCharacterSelect; + dialogueToPlay = InfomainScript::c_avo905in_RunAnim; GameState()->SetActorId(m_selectedCharacter); break; default: dialogueToPlay = - (InfomainScript) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()).Next(); + (InfomainScript::Script) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()) + .Next(); break; } @@ -842,7 +851,7 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y) } else { dialogueToPlay = - (InfomainScript) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()).Next(); + (InfomainScript::Script) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()).Next(); } PlayAction(dialogueToPlay); @@ -861,80 +870,80 @@ MxU8 Infocenter::HandleClick(LegoControlManagerEvent& p_param) if (p_param.GetUnknown0x28() == 1) { m_infoManDialogueTimer = 0; - InfomainScript actionToPlay = c_noInfomain; + InfomainScript::Script actionToPlay = InfomainScript::c_noneInfomain; StopCurrentAction(); - InfomainScript characterBitmap = c_noInfomain; + InfomainScript::Script characterBitmap = InfomainScript::c_noneInfomain; LegoGameState* state = GameState(); switch (p_param.GetClickedObjectId()) { - case c_leftArrowCtl: + case InfomainScript::c_LeftArrow_Ctl: m_infocenterState->SetUnknown0x74(14); StopCurrentAction(); if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { m_radio.Stop(); - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); - m_transitionDestination = LegoGameState::e_elevbott; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + m_destLocation = LegoGameState::e_elevbott; } else { MxU32 objectId = m_infocenterState->GetBricksterDialogue().Next(); - PlayAction((InfomainScript) objectId); + PlayAction((InfomainScript::Script) objectId); } break; - case c_rightArrowCtl: + case InfomainScript::c_RightArrow_Ctl: m_infocenterState->SetUnknown0x74(14); StopCurrentAction(); if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { m_radio.Stop(); - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); - m_transitionDestination = LegoGameState::e_infoscor; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + m_destLocation = LegoGameState::e_infoscor; } else { MxU32 objectId = m_infocenterState->GetBricksterDialogue().Next(); - PlayAction((InfomainScript) objectId); + PlayAction((InfomainScript::Script) objectId); } break; - case c_infoCtl: - actionToPlay = c_infoCtlDescription; + case InfomainScript::c_Info_Ctl: + actionToPlay = InfomainScript::c_iic007ra_PlayWav; m_radio.Stop(); break; - case c_doorCtl: + case InfomainScript::c_Door_Ctl: if (m_infocenterState->GetUnknown0x74() != 8) { - actionToPlay = c_exitConfirmationDialogue; + actionToPlay = InfomainScript::c_iic043in_RunAnim; m_radio.Stop(); m_infocenterState->SetUnknown0x74(8); } break; - case c_boatCtl: - actionToPlay = c_boatCtlDescription; + case InfomainScript::c_Boat_Ctl: + actionToPlay = InfomainScript::c_ijs002ra_PlayWav; m_radio.Stop(); break; - case c_raceCtl: - actionToPlay = c_raceCtlDescription; + case InfomainScript::c_Race_Ctl: + actionToPlay = InfomainScript::c_irt001ra_PlayWav; m_radio.Stop(); break; - case c_pizzaCtl: - actionToPlay = c_pizzaCtlDescription; + case InfomainScript::c_Pizza_Ctl: + actionToPlay = InfomainScript::c_ipz006ra_PlayWav; m_radio.Stop(); break; - case c_gasCtl: - actionToPlay = c_gasCtlDescription; + case InfomainScript::c_Gas_Ctl: + actionToPlay = InfomainScript::c_igs004ra_PlayWav; m_radio.Stop(); break; - case c_medCtl: - actionToPlay = c_medCtlDescription; + case InfomainScript::c_Med_Ctl: + actionToPlay = InfomainScript::c_iho003ra_PlayWav; m_radio.Stop(); break; - case c_copCtl: - actionToPlay = c_copCtlDescription; + case InfomainScript::c_Cop_Ctl: + actionToPlay = InfomainScript::c_ips005ra_PlayWav; m_radio.Stop(); break; - case c_bigInfoCtl: + case InfomainScript::c_BigInfo_Ctl: switch (state->GetCurrentAct()) { case LegoGameState::e_act1: switch (state->GetPreviousArea()) { @@ -942,9 +951,10 @@ MxU8 Infocenter::HandleClick(LegoControlManagerEvent& p_param) case LegoGameState::e_regbook: case LegoGameState::e_infoscor: m_infocenterState->SetUnknown0x74(5); - m_transitionDestination = state->GetPreviousArea(); + m_destLocation = state->GetPreviousArea(); actionToPlay = - (InfomainScript) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()).Next(); + (InfomainScript::Script) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()) + .Next(); m_radio.Stop(); InputManager()->DisableInputProcessing(); InputManager()->SetUnknown336(TRUE); @@ -953,16 +963,16 @@ MxU8 Infocenter::HandleClick(LegoControlManagerEvent& p_param) if (state->GetActorId()) { if (m_infocenterState->HasRegistered()) { m_infocenterState->SetUnknown0x74(5); - m_transitionDestination = state->GetPreviousArea(); - actionToPlay = - (InfomainScript) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()) - .Next(); + m_destLocation = state->GetPreviousArea(); + actionToPlay = (InfomainScript::Script) m_infocenterState + ->GetLeaveDialogue(GameState()->GetCurrentAct()) + .Next(); m_radio.Stop(); InputManager()->DisableInputProcessing(); InputManager()->SetUnknown336(TRUE); } else { - PlayAction(c_registerToContinueDialogue); + PlayAction(InfomainScript::c_iic007in_PlayWav); m_infocenterState->SetUnknown0x74(2); } } @@ -971,57 +981,58 @@ MxU8 Infocenter::HandleClick(LegoControlManagerEvent& p_param) break; case LegoGameState::e_act2: m_infocenterState->SetUnknown0x74(5); - m_transitionDestination = LegoGameState::e_act2main; + m_destLocation = LegoGameState::e_act2main; actionToPlay = - (InfomainScript) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()).Next(); + (InfomainScript::Script) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()).Next(); InputManager()->DisableInputProcessing(); InputManager()->SetUnknown336(TRUE); break; case LegoGameState::e_act3: m_infocenterState->SetUnknown0x74(5); - m_transitionDestination = LegoGameState::e_act3script; + m_destLocation = LegoGameState::e_act3script; actionToPlay = - (InfomainScript) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()).Next(); + (InfomainScript::Script) m_infocenterState->GetLeaveDialogue(GameState()->GetCurrentAct()).Next(); InputManager()->DisableInputProcessing(); InputManager()->SetUnknown336(TRUE); break; } break; - case c_bookCtl: - m_transitionDestination = LegoGameState::e_regbook; + case InfomainScript::c_Book_Ctl: + m_destLocation = LegoGameState::e_regbook; m_infocenterState->SetUnknown0x74(4); - actionToPlay = GameState()->GetCurrentAct() != LegoGameState::e_act1 ? c_goToRegBookRed : c_goToRegBook; + actionToPlay = GameState()->GetCurrentAct() != LegoGameState::e_act1 ? InfomainScript::c_GoTo_RegBook_Red + : InfomainScript::c_GoTo_RegBook; m_radio.Stop(); GameState()->SetUnknown0x42c(GameState()->GetPreviousArea()); InputManager()->DisableInputProcessing(); break; - case c_mamaCtl: - characterBitmap = c_mamaSelected; + case InfomainScript::c_Mama_Ctl: + characterBitmap = InfomainScript::c_MamaHot_Bitmap; UpdateFrameHot(FALSE); break; - case c_papaCtl: - characterBitmap = c_papaSelected; + case InfomainScript::c_Papa_Ctl: + characterBitmap = InfomainScript::c_PapaHot_Bitmap; UpdateFrameHot(FALSE); break; - case c_pepperCtl: - characterBitmap = c_pepperSelected; + case InfomainScript::c_Pepper_Ctl: + characterBitmap = InfomainScript::c_PepperHot_Bitmap; UpdateFrameHot(FALSE); break; - case c_nickCtl: - characterBitmap = c_nickSelected; + case InfomainScript::c_Nick_Ctl: + characterBitmap = InfomainScript::c_NickHot_Bitmap; UpdateFrameHot(FALSE); break; - case c_lauraCtl: - characterBitmap = c_lauraSelected; + case InfomainScript::c_Laura_Ctl: + characterBitmap = InfomainScript::c_LauraHot_Bitmap; UpdateFrameHot(FALSE); break; } - if (actionToPlay != c_noInfomain) { + if (actionToPlay != InfomainScript::c_noneInfomain) { PlayAction(actionToPlay); } - if (characterBitmap != c_noInfomain) { + if (characterBitmap != InfomainScript::c_noneInfomain) { m_unk0x11c = (MxStillPresenter*) Find(m_atom, characterBitmap); } } @@ -1039,7 +1050,7 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param) if (m_infocenterState->GetUnknown0x74() == 8) { m_infoManDialogueTimer = 0; StopCutscene(); - PlayAction(c_exitConfirmationDialogue); + PlayAction(InfomainScript::c_iic043in_RunAnim); } } else if (sender->IsA("MxEntity") && m_infocenterState->GetUnknown0x74() != 5 && m_infocenterState->GetUnknown0x74() != 12) { @@ -1047,12 +1058,12 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param) case 5: { m_infoManDialogueTimer = 0; - InfomainScript objectId; + InfomainScript::Script objectId; if (GameState()->GetCurrentAct() != LegoGameState::e_act1) { - objectId = (InfomainScript) m_infocenterState->GetExitDialogueAct23().Next(); + objectId = (InfomainScript::Script) m_infocenterState->GetExitDialogueAct23().Next(); } else { - objectId = (InfomainScript) m_infocenterState->GetExitDialogueAct1().Next(); + objectId = (InfomainScript::Script) m_infocenterState->GetExitDialogueAct1().Next(); } PlayAction(objectId); @@ -1066,7 +1077,7 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param) SetROIUnknown0x0c(g_object2x4red, 0); SetROIUnknown0x0c(g_object2x4grn, 0); m_infocenterState->SetUnknown0x74(2); - PlayAction(c_infomanSneeze); + PlayAction(InfomainScript::c_iicb28in_RunAnim); return 1; } case 7: @@ -1076,7 +1087,7 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param) } m_infocenterState->SetUnknown0x74(12); - PlayAction(c_exitGameDialogue); + PlayAction(InfomainScript::c_iic046in_RunAnim); InputManager()->DisableInputProcessing(); InputManager()->SetUnknown336(TRUE); return 1; @@ -1085,12 +1096,18 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param) } else { if (sender->IsA("Radio") && m_radio.GetState()->IsActive()) { - if (m_currentInfomainScript == c_mamaMovie || m_currentInfomainScript == c_papaMovie || - m_currentInfomainScript == c_pepperMovie || m_currentInfomainScript == c_nickMovie || - m_currentInfomainScript == c_lauraMovie || m_currentInfomainScript == c_infoCtlDescription || - m_currentInfomainScript == c_boatCtlDescription || m_currentInfomainScript == c_raceCtlDescription || - m_currentInfomainScript == c_pizzaCtlDescription || m_currentInfomainScript == c_gasCtlDescription || - m_currentInfomainScript == c_medCtlDescription || m_currentInfomainScript == c_copCtlDescription) { + if (m_currentInfomainScript == InfomainScript::c_Mama_All_Movie || + m_currentInfomainScript == InfomainScript::c_Papa_All_Movie || + m_currentInfomainScript == InfomainScript::c_Pepper_All_Movie || + m_currentInfomainScript == InfomainScript::c_Nick_All_Movie || + m_currentInfomainScript == InfomainScript::c_Laura_All_Movie || + m_currentInfomainScript == InfomainScript::c_iic007ra_PlayWav || + m_currentInfomainScript == InfomainScript::c_ijs002ra_PlayWav || + m_currentInfomainScript == InfomainScript::c_irt001ra_PlayWav || + m_currentInfomainScript == InfomainScript::c_ipz006ra_PlayWav || + m_currentInfomainScript == InfomainScript::c_igs004ra_PlayWav || + m_currentInfomainScript == InfomainScript::c_iho003ra_PlayWav || + m_currentInfomainScript == InfomainScript::c_ips005ra_PlayWav) { StopCurrentAction(); } } @@ -1124,7 +1141,7 @@ MxResult Infocenter::Tickle() } if (m_infoManDialogueTimer != 0 && (m_infoManDialogueTimer += 100) > 25000) { - PlayAction(c_clickOnInfomanDialogue); + PlayAction(InfomainScript::c_iicx17in_RunAnim); m_infoManDialogueTimer = 0; } @@ -1288,8 +1305,8 @@ void Infocenter::Reset() AnimationManager()->FUN_1005ee80(FALSE); CharacterManager()->FUN_100832a0(); GameState()->SetCurrentAct(LegoGameState::e_act1); - GameState()->SetPreviousArea(LegoGameState::e_noArea); - GameState()->SetUnknown0x42c(LegoGameState::e_noArea); + GameState()->SetPreviousArea(LegoGameState::e_undefined); + GameState()->SetUnknown0x42c(LegoGameState::e_undefined); InitializeBitmaps(); m_selectedCharacter = e_pepper; @@ -1382,7 +1399,7 @@ void Infocenter::StartCredits() VideoManager()->FUN_1007c520(); GetViewManager()->RemoveAll(NULL); - InvokeAction(Extra::e_opendisk, *g_creditsScript, c_unk499, NULL); + InvokeAction(Extra::e_opendisk, *g_creditsScript, CreditsScript::c_LegoCredits, NULL); SetAppCursor(0); } @@ -1390,21 +1407,21 @@ void Infocenter::StartCredits() void Infocenter::StopCredits() { MxDSAction action; - action.SetObjectId(499); + action.SetObjectId(CreditsScript::c_LegoCredits); action.SetAtomId(*g_creditsScript); action.SetUnknown24(-2); DeleteObject(action); } // FUNCTION: LEGO1 0x10071300 -void Infocenter::PlayAction(InfomainScript p_objectId) +void Infocenter::PlayAction(InfomainScript::Script p_script) { MxDSAction action; - action.SetObjectId(p_objectId); + action.SetObjectId(p_script); action.SetAtomId(*g_infomainScript); StopCurrentAction(); - m_currentInfomainScript = p_objectId; + m_currentInfomainScript = p_script; BackgroundAudioManager()->LowerVolume(); Start(&action); } @@ -1412,13 +1429,13 @@ void Infocenter::PlayAction(InfomainScript p_objectId) // FUNCTION: LEGO1 0x100713d0 void Infocenter::StopCurrentAction() { - if (m_currentInfomainScript != c_noInfomain) { + if (m_currentInfomainScript != InfomainScript::c_noneInfomain) { MxDSAction action; action.SetObjectId(m_currentInfomainScript); action.SetAtomId(*g_infomainScript); action.SetUnknown24(-2); DeleteObject(action); - m_currentInfomainScript = c_noInfomain; + m_currentInfomainScript = InfomainScript::c_noneInfomain; } } @@ -1426,7 +1443,7 @@ void Infocenter::StopCurrentAction() void Infocenter::PlayBookAnimation() { MxDSAction action; - action.SetObjectId(c_bookWig); + action.SetObjectId(SndanimScript::c_BookWig_Flic); action.SetAtomId(*g_sndAnimScript); Start(&action); } @@ -1435,7 +1452,7 @@ void Infocenter::PlayBookAnimation() void Infocenter::StopBookAnimation() { MxDSAction action; - action.SetObjectId(c_bookWig); + action.SetObjectId(SndanimScript::c_BookWig_Flic); action.SetAtomId(*g_sndAnimScript); action.SetUnknown24(-2); DeleteObject(action); diff --git a/LEGO1/lego/legoomni/src/worlds/infocenterdoor.cpp b/LEGO1/lego/legoomni/src/worlds/infocenterdoor.cpp index 5654fd34..a94d5f27 100644 --- a/LEGO1/lego/legoomni/src/worlds/infocenterdoor.cpp +++ b/LEGO1/lego/legoomni/src/worlds/infocenterdoor.cpp @@ -1,7 +1,9 @@ #include "infocenterdoor.h" #include "infocenterstate.h" +#include "infodoor_actions.h" #include "jukebox.h" +#include "jukebox_actions.h" #include "legocontrolmanager.h" #include "legogamestate.h" #include "legoinputmanager.h" @@ -18,7 +20,7 @@ DECOMP_SIZE_ASSERT(InfocenterDoor, 0xfc) // FUNCTION: LEGO1 0x10037730 InfocenterDoor::InfocenterDoor() { - m_unk0xf8 = LegoGameState::e_noArea; + m_destLocation = LegoGameState::e_undefined; NotificationManager()->Register(this); } @@ -69,7 +71,7 @@ MxLong InfocenterDoor::Notify(MxParam& p_param) result = HandleClick((LegoControlManagerEvent&) p_param); break; case c_notificationTransitioned: - GameState()->SwitchArea(m_unk0xf8); + GameState()->SwitchArea(m_destLocation); result = 1; break; } @@ -82,7 +84,7 @@ MxLong InfocenterDoor::Notify(MxParam& p_param) void InfocenterDoor::ReadyWorld() { LegoWorld::ReadyWorld(); - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); } @@ -95,26 +97,26 @@ MxLong InfocenterDoor::HandleClick(LegoControlManagerEvent& p_param) DeleteObjects(&m_atom, 500, 510); switch (p_param.GetClickedObjectId()) { - case 1: - m_unk0xf8 = LegoGameState::e_infoscor; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + case InfodoorScript::c_LeftArrow_Ctl: + m_destLocation = LegoGameState::e_infoscor; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); result = 1; break; - case 2: - m_unk0xf8 = LegoGameState::e_elevbott; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + case InfodoorScript::c_RightArrow_Ctl: + m_destLocation = LegoGameState::e_elevbott; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); result = 1; break; - case 3: - m_unk0xf8 = LegoGameState::e_infomain; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + case InfodoorScript::c_Info_Ctl: + m_destLocation = LegoGameState::e_infomain; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); result = 1; break; - case 4: + case InfodoorScript::c_Door_Ctl: if (GameState()->GetActorId()) { InfocenterState* state = (InfocenterState*) GameState()->GetState("InfocenterState"); if (state->HasRegistered()) { - m_unk0xf8 = LegoGameState::e_unk4; + m_destLocation = LegoGameState::e_unk4; } else { MxDSAction action; @@ -134,7 +136,7 @@ MxLong InfocenterDoor::HandleClick(LegoControlManagerEvent& p_param) goto done; } - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); done: result = 1; @@ -165,6 +167,6 @@ void InfocenterDoor::Enable(MxBool p_enable) MxBool InfocenterDoor::VTable0x64() { DeleteObjects(&m_atom, 500, 510); - m_unk0xf8 = LegoGameState::e_infomain; + m_destLocation = LegoGameState::e_infomain; return TRUE; } diff --git a/LEGO1/lego/legoomni/src/worlds/isle.cpp b/LEGO1/lego/legoomni/src/worlds/isle.cpp index 3572c3ee..85d87809 100644 --- a/LEGO1/lego/legoomni/src/worlds/isle.cpp +++ b/LEGO1/lego/legoomni/src/worlds/isle.cpp @@ -2,21 +2,41 @@ #include "act1state.h" #include "ambulance.h" +#include "bike.h" +#include "carracestate.h" +#include "dunebuggy.h" +#include "helicopter.h" +#include "isle_actions.h" #include "islepathactor.h" +#include "jetski.h" +#include "jetskiracestate.h" +#include "jukebox_actions.h" +#include "jukeboxentity.h" +#include "legoanimationmanager.h" #include "legocontrolmanager.h" -#include "legogamestate.h" #include "legoinputmanager.h" #include "legoomni.h" #include "legoutils.h" +#include "legovariables.h" +#include "legovideomanager.h" #include "misc.h" +#include "motocycle.h" +#include "mxbackgroundaudiomanager.h" #include "mxmisc.h" #include "mxnotificationmanager.h" +#include "mxstillpresenter.h" #include "mxtransitionmanager.h" #include "pizza.h" +#include "skateboard.h" #include "towtrack.h" +#include + DECOMP_SIZE_ASSERT(Isle, 0x140); +// GLOBAL: LEGO1 0x100f1198 +undefined4 g_unk0x100f1198 = 0x7f; + // FUNCTION: LEGO1 0x10030820 Isle::Isle() { @@ -32,8 +52,8 @@ Isle::Isle() m_skateboard = NULL; m_racecar = NULL; m_jetski = NULL; - m_act1state = 0; - m_unk0x13c = 0; + m_act1state = NULL; + m_destLocation = LegoGameState::e_undefined; NotificationManager()->Register(this); } @@ -59,8 +79,8 @@ Isle::~Isle() MxResult Isle::Create(MxDSAction& p_dsAction) { GameState()->FindLoadedAct(); - MxResult result = LegoWorld::Create(p_dsAction); + if (result == SUCCESS) { ControlManager()->Register(this); InputManager()->SetWorld(this); @@ -74,19 +94,19 @@ MxResult Isle::Create(MxDSAction& p_dsAction) GameState()->StopArea(LegoGameState::e_act2main); // Looks like a bug break; case LegoGameState::e_actNotFound: - m_unk0x13c = 2; + m_destLocation = LegoGameState::e_infomain; } if (GameState()->GetCurrentArea() == LegoGameState::e_isle) { - GameState()->SetCurrentArea(LegoGameState::e_noArea); + GameState()->SetCurrentArea(LegoGameState::e_undefined); } LegoGameState* gameState = GameState(); - Act1State* state = (Act1State*) gameState->GetState("Act1State"); - if (state == NULL) { - state = (Act1State*) gameState->CreateState("Act1State"); + Act1State* act1state = (Act1State*) gameState->GetState("Act1State"); + if (act1state == NULL) { + act1state = (Act1State*) gameState->CreateState("Act1State"); } - m_act1state = state; + m_act1state = act1state; FUN_1003ef00(TRUE); GameState()->SetDirty(TRUE); @@ -104,11 +124,11 @@ MxLong Isle::Notify(MxParam& p_param) if (m_worldStarted) { switch (((MxNotificationParam&) p_param).GetNotification()) { case c_notificationEndAction: - result = StopAction(p_param); + result = HandleEndAction((MxEndActionNotificationParam&) p_param); break; case c_notificationButtonUp: case c_notificationButtonDown: - switch (m_act1state->GetUnknown18()) { + switch (m_act1state->m_unk0x018) { case 3: result = m_pizza->Notify(p_param); break; @@ -118,10 +138,10 @@ MxLong Isle::Notify(MxParam& p_param) } break; case c_notificationClick: - result = HandleType17Notification(p_param); + result = HandleClick((LegoControlManagerEvent&) p_param); break; case c_notificationType18: - switch (m_act1state->GetUnknown18()) { + switch (m_act1state->m_unk0x018) { case 4: result = CurrentActor()->Notify(p_param); break; @@ -148,10 +168,90 @@ MxLong Isle::Notify(MxParam& p_param) return result; } -// STUB: LEGO1 0x10030d90 -MxLong Isle::StopAction(MxParam& p_param) +// FUNCTION: LEGO1 0x10030d90 +MxLong Isle::HandleEndAction(MxEndActionNotificationParam& p_param) { - return 0; + MxLong result; + + switch (m_act1state->m_unk0x018) { + case 2: + HandleElevatorEndAction(); + result = 1; + break; + case 3: + result = m_pizza->Notify(p_param); + break; + case 8: + result = m_towtrack->Notify(p_param); + break; + case 10: + result = m_ambulance->Notify(p_param); + break; + default: + result = m_radio.Notify(p_param); + + if (result == 0) { + MxDSAction* action = p_param.GetAction(); + + // TODO: Should be signed, but worsens match + MxU32 script; + + if (action->GetAtomId() == *g_jukeboxScript) { + script = action->GetObjectId(); + + if (script >= JukeboxScript::c_JBMusic1 && script <= JukeboxScript::c_JBMusic6) { + m_jukebox->StopAction((JukeboxScript::Script) script); + result = 1; + } + } + else if (m_act1state->m_planeActive) { + script = action->GetObjectId(); + + if (script >= IsleScript::c_nic002pr_RunAnim && script <= IsleScript::c_nic004pr_RunAnim) { + m_act1state->m_planeActive = FALSE; + } + } + else { + script = action->GetObjectId(); + + if (script == IsleScript::c_Avo917In_PlayWav || + (script >= IsleScript::c_Avo900Ps_PlayWav && script <= IsleScript::c_Avo907Ps_PlayWav)) { + BackgroundAudioManager()->RaiseVolume(); + } + } + } + } + + return result; +} + +// FUNCTION: LEGO1 0x10030ef0 +void Isle::HandleElevatorEndAction() +{ + switch (m_act1state->m_elevFloor) { + case Act1State::c_floor1: + m_destLocation = LegoGameState::e_infomain; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + m_act1state->m_unk0x018 = 0; + break; + case Act1State::c_floor2: + if (m_act1state->m_unk0x01e) { + m_act1state->m_unk0x01e = FALSE; + m_act1state->m_unk0x018 = 0; + InputManager()->EnableInputProcessing(); + } + else { + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_Floor2, NULL); + InputManager()->EnableInputProcessing(); + m_act1state->m_unk0x01e = TRUE; + } + break; + case Act1State::c_floor3: + m_destLocation = LegoGameState::e_elevopen; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + m_act1state->m_unk0x018 = 0; + break; + } } // FUNCTION: LEGO1 0x10030fc0 @@ -164,7 +264,7 @@ void Isle::ReadyWorld() m_act1state->SetUnknown18(0); m_act1state->SetUnknown21(0); } - else if (GameState()->GetLoadedAct()) { + else if (GameState()->GetLoadedAct() != LegoGameState::e_act1) { FUN_1003ef00(TRUE); FUN_10032620(); m_act1state->FUN_10034d00(); @@ -172,19 +272,187 @@ void Isle::ReadyWorld() } } -// STUB: LGEO1 0x10031030 -MxLong Isle::HandleType17Notification(MxParam& p_param) +// FUNCTION: LEGO1 0x10031030 +MxLong Isle::HandleClick(LegoControlManagerEvent& p_param) { + if (p_param.GetUnknown0x28() == 1) { + MxDSAction action; + + switch (p_param.GetClickedObjectId()) { + case IsleScript::c_ElevRide_Info_Ctl: + m_act1state->m_unk0x018 = 2; + + switch (m_act1state->m_elevFloor) { + case Act1State::c_floor1: + m_destLocation = LegoGameState::e_infomain; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + case Act1State::c_floor2: + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_Elev2_1_Ride, NULL); + InputManager()->DisableInputProcessing(); + break; + case Act1State::c_floor3: + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_Elev3_1_Ride, NULL); + InputManager()->DisableInputProcessing(); + break; + } + + m_act1state->m_elevFloor = Act1State::c_floor1; + break; + case IsleScript::c_ElevRide_Two_Ctl: + m_act1state->m_unk0x018 = 2; + + switch (m_act1state->m_elevFloor) { + case Act1State::c_floor1: + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_Elev1_2_Ride, NULL); + InputManager()->DisableInputProcessing(); + break; + case Act1State::c_floor2: + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_Floor2, NULL); + m_act1state->m_unk0x01e = TRUE; + break; + case Act1State::c_floor3: + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_Elev3_2_Ride, NULL); + InputManager()->DisableInputProcessing(); + break; + } + + m_act1state->m_elevFloor = Act1State::c_floor2; + break; + case IsleScript::c_ElevRide_Three_Ctl: + m_act1state->m_unk0x018 = 2; + + switch (m_act1state->m_elevFloor) { + case Act1State::c_floor1: + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_Elev1_3_Ride, NULL); + InputManager()->DisableInputProcessing(); + break; + case Act1State::c_floor2: + InputManager()->DisableInputProcessing(); + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_Elev2_3_Ride, NULL); + break; + case Act1State::c_floor3: + m_destLocation = LegoGameState::e_elevopen; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + } + + m_act1state->m_elevFloor = Act1State::c_floor3; + break; + case IsleScript::c_ElevOpen_LeftArrow_Ctl: + case IsleScript::c_ElevDown_RightArrow_Ctl: + m_destLocation = LegoGameState::e_seaview; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + case IsleScript::c_ElevOpen_RightArrow_Ctl: + case IsleScript::c_ElevDown_LeftArrow_Ctl: + m_destLocation = LegoGameState::e_observe; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + case IsleScript::c_Observe_LeftArrow_Ctl: + m_act1state->FUN_100346a0(); + m_radio.Stop(); + case IsleScript::c_SeaView_RightArrow_Ctl: + m_destLocation = LegoGameState::e_elevopen; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + case IsleScript::c_Observe_RightArrow_Ctl: + m_act1state->FUN_100346a0(); + m_radio.Stop(); + case IsleScript::c_SeaView_LeftArrow_Ctl: + m_destLocation = LegoGameState::e_elevdown; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + case IsleScript::c_Observe_Plane_Ctl: + if (!m_act1state->m_planeActive) { + switch (rand() % 3) { + case 0: + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_nic002pr_RunAnim, NULL); + break; + case 1: + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_nic003pr_RunAnim, NULL); + break; + case 2: + InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_nic004pr_RunAnim, NULL); + break; + } + + m_act1state->m_planeActive = TRUE; + } + break; + case IsleScript::c_Observe_Sun_Ctl: + GameState()->GetBackgroundColor()->ToggleDayNight(TRUE); + break; + case IsleScript::c_Observe_Moon_Ctl: + GameState()->GetBackgroundColor()->ToggleDayNight(FALSE); + break; + case IsleScript::c_Observe_SkyColor_Ctl: + GameState()->GetBackgroundColor()->ToggleSkyColor(); + break; + case IsleScript::c_Observe_LCab_Ctl: + action.SetAtomId(*g_isleScript); + action.SetObjectId(IsleScript::c_Observe_Monkey_Flc); + action.SetUnknown24(0); + Start(&action); + break; + case IsleScript::c_Observe_RCab_Ctl: + FUN_10031590(); + break; + case IsleScript::c_Observe_GlobeLArrow_Ctl: + FUN_1003f050(-1); + FUN_10031590(); + break; + case IsleScript::c_Observe_GlobeRArrow_Ctl: + FUN_1003f050(1); + FUN_10031590(); + break; + case IsleScript::c_Observe_Draw1_Ctl: + case IsleScript::c_Observe_Draw2_Ctl: + m_act1state->FUN_10034660(); + break; + case IsleScript::c_ElevDown_Elevator_Ctl: + m_destLocation = LegoGameState::e_elevride2; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + case IsleScript::c_PoliDoor_LeftArrow_Ctl: + case IsleScript::c_PoliDoor_RightArrow_Ctl: + m_destLocation = LegoGameState::e_police; + VariableTable()->SetVariable("VISIBILITY", "Show Policsta"); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + case IsleScript::c_PoliDoor_Door_Ctl: + m_destLocation = LegoGameState::e_unk33; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + case IsleScript::c_GaraDoor_LeftArrow_Ctl: + case IsleScript::c_GaraDoor_RightArrow_Ctl: + m_destLocation = LegoGameState::e_garage; + VariableTable()->SetVariable("VISIBILITY", "Show Gas"); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + case IsleScript::c_GaraDoor_Door_Ctl: + m_destLocation = LegoGameState::e_unk28; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + break; + } + } + return 0; } +// STUB: LEGO1 0x10031590 +void Isle::FUN_10031590() +{ + // TODO +} + // STUB: LEGO1 0x100315f0 MxLong Isle::HandleType19Notification(MxParam& p_param) { return 0; } -// STUB: LEGO1 0x10031820 +// FUNCTION: LEGO1 0x10031820 void Isle::Enable(MxBool p_enable) { if (m_set0xd0.empty() == p_enable) { @@ -195,25 +463,582 @@ void Isle::Enable(MxBool p_enable) m_radio.Initialize(p_enable); if (p_enable) { - // TODO + FUN_100330e0(); + + VideoManager()->ResetPalette(FALSE); + m_act1state->FUN_10034d00(); + + if (CurrentActor() != NULL && CurrentActor()->GetActorId() != 0) { + // TODO: Match, most likely an inline function + MxS32 targetEntityId = (CurrentActor()->GetActorId() == 1) + 250; + + if (targetEntityId != -1) { + InvokeAction(Extra::e_start, *g_isleScript, targetEntityId, NULL); + } + } + + InputManager()->SetWorld(this); + GameState()->StopArea(LegoGameState::e_previousArea); + GameState()->m_previousArea = GameState()->m_currentArea; + + FUN_1003ef00(TRUE); + + if (m_act1state->m_unk0x018 == 0) { + MxU32 und[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + for (MxU32 i = 0; i < 5; i++) { + MxS32 und2 = rand() % 5; + + for (MxU32 j = 0; j < _countof(und); j++) { + if (und[j] != 0 && und2-- == 0) { + AnimationManager()->FUN_100629b0(und[j], TRUE); + und[j] = 0; + break; + } + } + } + } + + if (CurrentActor() != NULL && CurrentActor()->IsA("Jetski")) { + IslePathActor* actor = CurrentActor(); + actor->VTable0xe8(LegoGameState::e_unk45, FALSE, 7); + actor->SetUnknownDC(0); + } + else { + FUN_10032620(); + } + + switch (GameState()->m_currentArea) { + case LegoGameState::e_elevride: + m_destLocation = LegoGameState::e_elevride; + +#ifdef COMPAT_MODE + { + MxNotificationParam param(c_notificationTransitioned, NULL); + NotificationManager()->Send(this, ¶m); + } +#else + NotificationManager()->Send(this, &MxNotificationParam(c_notificationTransitioned, NULL)); +#endif + + SetIsWorldActive(FALSE); + break; + case LegoGameState::e_jetrace2: + if (((JetskiRaceState*) GameState()->GetState("JetskiRaceState"))->GetUnknown0x28() == 2) { + m_act1state->m_unk0x018 = 5; + } + + FUN_1001fa70(CurrentActor()); + SetIsWorldActive(TRUE); + +#ifdef COMPAT_MODE + { + LegoEventNotificationParam param(c_notificationType11, NULL, 0, 0, 0, 0); + m_jetski->Notify(param); + } +#else + m_jetski->Notify(LegoEventNotificationParam(c_notificationType11, NULL, 0, 0, 0, 0)); +#endif + break; + case LegoGameState::e_garadoor: + m_destLocation = LegoGameState::e_garadoor; + +#ifdef COMPAT_MODE + { + MxNotificationParam param(c_notificationTransitioned, NULL); + NotificationManager()->Send(this, ¶m); + } +#else + NotificationManager()->Send(this, &MxNotificationParam(c_notificationTransitioned, NULL)); +#endif + + SetIsWorldActive(FALSE); + break; + case LegoGameState::e_polidoor: + m_destLocation = LegoGameState::e_polidoor; + +#ifdef COMPAT_MODE + { + MxNotificationParam param(c_notificationTransitioned, NULL); + NotificationManager()->Send(this, ¶m); + } +#else + NotificationManager()->Send(this, &MxNotificationParam(c_notificationTransitioned, NULL)); +#endif + + SetIsWorldActive(FALSE); + break; + case LegoGameState::e_bike: + FUN_1001fa70(CurrentActor()); + SetIsWorldActive(TRUE); + +#ifdef COMPAT_MODE + { + LegoEventNotificationParam param(c_notificationType11, NULL, 0, 0, 0, 0); + m_bike->Notify(param); + } +#else + m_bike->Notify(LegoEventNotificationParam(c_notificationType11, NULL, 0, 0, 0, 0)); +#endif + break; + case LegoGameState::e_dunecar: + FUN_1001fa70(CurrentActor()); + SetIsWorldActive(TRUE); + +#ifdef COMPAT_MODE + { + LegoEventNotificationParam param(c_notificationType11, NULL, 0, 0, 0, 0); + m_dunebuggy->Notify(param); + } +#else + m_dunebuggy->Notify(LegoEventNotificationParam(c_notificationType11, NULL, 0, 0, 0, 0)); +#endif + break; + case LegoGameState::e_motocycle: + FUN_1001fa70(CurrentActor()); + SetIsWorldActive(TRUE); + +#ifdef COMPAT_MODE + { + LegoEventNotificationParam param(c_notificationType11, NULL, 0, 0, 0, 0); + m_motocycle->Notify(param); + } +#else + m_motocycle->Notify(LegoEventNotificationParam(c_notificationType11, NULL, 0, 0, 0, 0)); +#endif + break; + case LegoGameState::e_copter: + FUN_1001fa70(CurrentActor()); + SetIsWorldActive(TRUE); + +#ifdef COMPAT_MODE + { + LegoEventNotificationParam param(c_notificationType11, NULL, 0, 0, 0, 0); + m_helicopter->Notify(param); + } +#else + m_helicopter->Notify(LegoEventNotificationParam(c_notificationType11, NULL, 0, 0, 0, 0)); +#endif + break; + case LegoGameState::e_skateboard: + FUN_1001fa70(CurrentActor()); + SetIsWorldActive(TRUE); + +#ifdef COMPAT_MODE + { + LegoEventNotificationParam param(c_notificationType11, NULL, 0, 0, 0, 0); + m_skateboard->Notify(param); + } +#else + m_skateboard->Notify(LegoEventNotificationParam(c_notificationType11, NULL, 0, 0, 0, 0)); +#endif + break; + case LegoGameState::e_jetski: + FUN_1001fa70(CurrentActor()); + SetIsWorldActive(TRUE); + +#ifdef COMPAT_MODE + { + LegoEventNotificationParam param(c_notificationType11, NULL, 0, 0, 0, 0); + m_jetski->Notify(param); + } +#else + m_jetski->Notify(LegoEventNotificationParam(c_notificationType11, NULL, 0, 0, 0, 0)); +#endif + break; + default: + InputManager()->SetCamera(m_cameraController); + SetIsWorldActive(TRUE); + break; + } + + switch (m_act1state->m_unk0x018) { + case 0: + case 1: + m_act1state->m_unk0x018 = 0; + + if (GameState()->m_currentArea == LegoGameState::e_pizzeriaExterior) { + AnimationManager()->FUN_10064740(FALSE); + } + else if (GameState()->m_currentArea == LegoGameState::e_unk66) { + Mx3DPointFloat position(CurrentActor()->GetROI()->GetWorldPosition()); + + Mx3DPointFloat sub(-21.375f, 0.0f, -41.75f); + sub.Sub(&position); + if (NORMSQRD3(sub) < 1024.0f) { + AnimationManager()->FUN_10064740(FALSE); + } + + Mx3DPointFloat sub2(98.874992f, 0.0f, -46.156292f); + sub2.Sub(&position); + if (NORMSQRD3(sub2) < 1024.0f) { + AnimationManager()->FUN_10064670(FALSE); + } + } + break; + case 5: { + CurrentActor()->VTable0xe8(LegoGameState::e_jetrace2, FALSE, 7); + JetskiRaceState* raceState = (JetskiRaceState*) GameState()->GetState("JetskiRaceState"); + + if (raceState->GetUnknown0x28() == 2) { + IsleScript::Script script = IsleScript::c_noneIsle; + + switch (raceState->GetState(GameState()->GetActorId())->GetUnknown0x02()) { + case 1: + script = IsleScript::c_sjs014in_RunAnim; + break; + case 2: + script = IsleScript::c_sjs013in_RunAnim; + break; + case 3: + script = IsleScript::c_sjs012in_RunAnim; + break; + } + + AnimationManager()->FUN_10060dc0(script, 0, 1, 1, 0, 0, 0, 1, 0); + } + + m_act1state->m_unk0x018 = 0; + FUN_1003ef00(FALSE); + AnimationManager()->FUN_10064670(FALSE); + break; + } + case 6: { + GameState()->m_currentArea = LegoGameState::e_carraceExterior; + CurrentActor()->VTable0xe8(LegoGameState::e_unk21, FALSE, 7); + CarRaceState* raceState = (CarRaceState*) GameState()->GetState("CarRaceState"); + + if (raceState->GetUnknown0x28() == 2) { + IsleScript::Script script = IsleScript::c_noneIsle; + + switch (raceState->GetState(GameState()->GetActorId())->GetUnknown0x02()) { + case 1: + script = IsleScript::c_srt003in_RunAnim; + break; + case 2: + script = IsleScript::c_srt002in_RunAnim; + break; + case 3: + script = IsleScript::c_srt001in_RunAnim; + break; + } + + AnimationManager()->FUN_10060dc0(script, 0, 1, 1, 0, 0, 0, 1, 0); + } + + m_act1state->m_unk0x018 = 0; + FUN_1003ef00(TRUE); + break; + } + case 7: + m_act1state->m_unk0x018 = 8; + + AnimationManager()->FUN_1005f6d0(FALSE); + AnimationManager()->FUN_1005f700(FALSE); + + g_unk0x100f1198 &= ~c_bit7; + m_towtrack->FUN_1004dab0(); + break; + case 9: + m_act1state->m_unk0x018 = 10; + + AnimationManager()->FUN_1005f6d0(FALSE); + AnimationManager()->FUN_1005f700(FALSE); + + g_unk0x100f1198 &= ~c_bit7; + m_ambulance->FUN_10036e60(); + break; + case 11: + m_act1state->m_unk0x018 = 0; + CurrentActor()->VTable0xe8(LegoGameState::e_unk54, TRUE, 7); + GameState()->m_currentArea = LegoGameState::e_unk66; + FUN_1003ef00(TRUE); + m_jukebox->StartAction(); + break; + } + + SetAppCursor(0); + + if (m_act1state->m_unk0x018 != 8 && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_elevride) && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_polidoor) && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_garadoor) && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_bike) && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_dunecar) && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_motocycle) && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_copter) && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_jetski) && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_skateboard) && + (m_act1state->m_unk0x018 != 0 || GameState()->m_currentArea != LegoGameState::e_jetrace2)) { + FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); + } + + SetROIUnknown0x0c("stretch", 0); + SetROIUnknown0x0c("bird", 0); + SetROIUnknown0x0c("rcred", 0); + SetROIUnknown0x0c("towtk", 0); + SetROIUnknown0x0c("pizpie", 0); } else { if (InputManager()->GetWorld() == this) { InputManager()->ClearWorld(); } + + m_act1state->FUN_10034b60(); } } -// STUB: LEGO1 0x10032620 +// FUNCTION: LEGO1 0x10032620 void Isle::FUN_10032620() { - // TODO + VideoManager()->Get3DManager()->SetFrustrum(90.0, 0.1, 250.0); + + switch (GameState()->m_currentArea) { + case LegoGameState::e_unk66: { + MxMatrix mat(CurrentActor()->GetROI()->GetLocal2World()); + MxU32 unk0x88 = CurrentActor()->GetUnknown88(); + CurrentActor()->VTable0xec(mat, unk0x88, TRUE); + break; + } + case LegoGameState::e_unk4: + case LegoGameState::e_jetraceExterior: + case LegoGameState::e_unk17: + case LegoGameState::e_carraceExterior: + case LegoGameState::e_unk20: + case LegoGameState::e_pizzeriaExterior: + case LegoGameState::e_garageExterior: + case LegoGameState::e_hospitalExterior: + case LegoGameState::e_unk31: + case LegoGameState::e_policeExterior: + CurrentActor()->VTable0xe8(GameState()->m_currentArea, TRUE, 7); + GameState()->m_currentArea = LegoGameState::e_unk66; + break; + } } -// STUB: LEGO1 0x100327a0 +// FUNCTION: LEGO1 0x100327a0 MxLong Isle::HandleTransitionEnd() { - return 0; + InvokeAction(Extra::e_stop, *g_isleScript, IsleScript::c_Avo917In_PlayWav, NULL); + DeleteObjects(&m_atom, IsleScript::c_Avo900Ps_PlayWav, IsleScript::c_Avo907Ps_PlayWav); + + if (m_destLocation != LegoGameState::e_skateboard) { + m_act1state->m_unk0x018 = 0; + } + + switch (m_destLocation) { + case LegoGameState::e_infomain: + ((LegoEntity*) Find(*g_isleScript, IsleScript::c_InfoCenter_Entity))->GetROI()->SetUnknown0x0c(1); + GameState()->SwitchArea(m_destLocation); + m_destLocation = LegoGameState::e_undefined; + break; + case LegoGameState::e_elevride: + m_act1state->m_unk0x01f = TRUE; + VariableTable()->SetVariable("VISIBILITY", "Hide infocen"); + FUN_10032d30(IsleScript::c_ElevRide_Background_Bitmap, JukeboxScript::c_Elevator_Music, "LCAMZI1,90", FALSE); + break; + case LegoGameState::e_elevride2: + FUN_10032d30(IsleScript::c_ElevRide_Background_Bitmap, JukeboxScript::c_Elevator_Music, "LCAMZI2,90", FALSE); + + if (m_destLocation == LegoGameState::e_undefined) { + ((MxStillPresenter*) Find(m_atom, IsleScript::c_Meter3_Bitmap))->Enable(TRUE); + } + break; + case LegoGameState::e_elevopen: + FUN_10032d30( + IsleScript::c_ElevOpen_Background_Bitmap, + JukeboxScript::c_InfoCenter_3rd_Floor_Music, + "LCAMZIS,90", + FALSE + ); + break; + case LegoGameState::e_seaview: + FUN_10032d30( + IsleScript::c_SeaView_Background_Bitmap, + JukeboxScript::c_InfoCenter_3rd_Floor_Music, + "LCAMZIE,90", + FALSE + ); + break; + case LegoGameState::e_observe: + FUN_10032d30( + IsleScript::c_Observe_Background_Bitmap, + JukeboxScript::c_InfoCenter_3rd_Floor_Music, + "LCAMZIW,90", + FALSE + ); + break; + case LegoGameState::e_elevdown: + FUN_10032d30( + IsleScript::c_ElevDown_Background_Bitmap, + JukeboxScript::c_InfoCenter_3rd_Floor_Music, + "LCAMZIN,90", + FALSE + ); + break; + case LegoGameState::e_garadoor: + m_act1state->m_unk0x01f = TRUE; + VariableTable()->SetVariable("VISIBILITY", "Hide Gas"); + FUN_10032d30(IsleScript::c_GaraDoor_Background_Bitmap, JukeboxScript::c_JBMusic2, "LCAMZG1,90", FALSE); + break; + case LegoGameState::e_unk28: + GameState()->SwitchArea(m_destLocation); + GameState()->StopArea(LegoGameState::e_previousArea); + m_destLocation = LegoGameState::e_undefined; + VariableTable()->SetVariable("VISIBILITY", "Show Gas"); + AnimationManager()->FUN_1005f0b0(); + FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); + SetAppCursor(0); + SetIsWorldActive(TRUE); + break; + case LegoGameState::e_unk33: + GameState()->SwitchArea(m_destLocation); + GameState()->StopArea(LegoGameState::e_previousArea); + m_destLocation = LegoGameState::e_undefined; + VariableTable()->SetVariable("VISIBILITY", "Show Policsta"); + AnimationManager()->FUN_1005f0b0(); + FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); + SetAppCursor(0); + SetIsWorldActive(TRUE); + break; + case LegoGameState::e_polidoor: + m_act1state->m_unk0x01f = TRUE; + VariableTable()->SetVariable("VISIBILITY", "Hide Policsta"); + FUN_10032d30( + IsleScript::c_PoliDoor_Background_Bitmap, + JukeboxScript::c_PoliceStation_Music, + "LCAMZP1,90", + FALSE + ); + break; + case LegoGameState::e_bike: + m_act1state->m_unk0x01f = TRUE; + FUN_10032d30(IsleScript::c_BikeDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE); + + if (!m_act1state->m_unk0x01f) { + m_bike->FUN_10076b60(); + } + break; + case LegoGameState::e_dunecar: + m_act1state->m_unk0x01f = TRUE; + FUN_10032d30(IsleScript::c_DuneCarFuelMeter, JukeboxScript::c_MusicTheme1, NULL, TRUE); + + if (!m_act1state->m_unk0x01f) { + m_dunebuggy->FUN_10068350(); + } + break; + case LegoGameState::e_motocycle: + m_act1state->m_unk0x01f = TRUE; + FUN_10032d30(IsleScript::c_MotoBikeDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE); + + if (!m_act1state->m_unk0x01f) { + m_motocycle->FUN_10035e10(); + } + break; + case LegoGameState::e_copter: + m_act1state->m_unk0x01f = TRUE; + FUN_10032d30(IsleScript::c_HelicopterDashboard_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE); + break; + case LegoGameState::e_skateboard: + m_act1state->m_unk0x01f = TRUE; + FUN_10032d30(IsleScript::c_SkatePizza_Bitmap, JukeboxScript::c_MusicTheme1, NULL, TRUE); + + if (!m_act1state->m_unk0x01f) { + m_skateboard->FUN_10010510(); + } + break; + case LegoGameState::e_ambulance: + m_act1state->m_unk0x01f = TRUE; + m_act1state->m_unk0x018 = 10; + FUN_10032d30(IsleScript::c_AmbulanceFuelMeter, JukeboxScript::c_MusicTheme1, NULL, TRUE); + + if (!m_act1state->m_unk0x01f) { + m_ambulance->FUN_10037060(); + } + break; + case LegoGameState::e_towtrack: + m_act1state->m_unk0x01f = TRUE; + m_act1state->m_unk0x018 = 8; + FUN_10032d30(IsleScript::c_TowFuelMeter, JukeboxScript::c_MusicTheme1, NULL, TRUE); + + if (!m_act1state->m_unk0x01f) { + m_towtrack->FUN_1004dad0(); + } + break; + case LegoGameState::e_jetski: + m_act1state->m_unk0x01f = TRUE; + FUN_10032d30((IsleScript::Script) m_jetski->GetUnknown0x160(), JukeboxScript::c_MusicTheme1, NULL, TRUE); + + if (!m_act1state->m_unk0x01f) { + m_jetski->FUN_1007e990(); + } + break; + default: + GameState()->SwitchArea(m_destLocation); + m_destLocation = LegoGameState::e_undefined; + } + + return 1; +} + +// FUNCTION: LEGO1 0x10032d30 +void Isle::FUN_10032d30( + IsleScript::Script p_script, + JukeboxScript::Script p_music, + const char* p_cameraLocation, + MxBool p_und +) +{ + if (m_act1state->m_unk0x01f) { + MxPresenter* presenter = (MxPresenter*) Find(m_atom, p_script); + + if (presenter != NULL && presenter->GetCurrentTickleState() == MxPresenter::e_repeating) { + if (p_music != JukeboxScript::c_MusicTheme1) { + PlayMusic(p_music); + } + + if (p_und) { + InputManager()->SetCamera(m_cameraController); + } + else { + InputManager()->SetCamera(NULL); + } + + if (p_cameraLocation != NULL) { + VariableTable()->SetVariable(g_varCAMERALOCATION, p_cameraLocation); + } + + FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); + SetAppCursor(0); + m_destLocation = LegoGameState::e_undefined; + m_act1state->m_unk0x01f = FALSE; + } + else { +#ifdef COMPAT_MODE + { + MxNotificationParam param(c_notificationTransitioned, NULL); + NotificationManager()->Send(this, ¶m); + } +#else + NotificationManager()->Send(this, &MxNotificationParam(c_notificationTransitioned, NULL)); +#endif + } + } + else { + GameState()->SwitchArea(m_destLocation); + GameState()->StopArea(LegoGameState::e_previousArea); + +#ifdef COMPAT_MODE + { + MxNotificationParam param(c_notificationTransitioned, NULL); + NotificationManager()->Send(this, ¶m); + } +#else + NotificationManager()->Send(this, &MxNotificationParam(c_notificationTransitioned, NULL)); +#endif + + m_act1state->m_unk0x01f = TRUE; + } } // FUNCTION: LEGO1 0x10032f10 @@ -278,6 +1103,12 @@ void Isle::VTable0x6c(IslePathActor* p_actor) } } +// STUB: LEGO1 0x100330e0 +void Isle::FUN_100330e0() +{ + // TODO +} + // STUB: LEGO1 0x10033180 MxBool Isle::VTable0x64() { diff --git a/LEGO1/lego/legoomni/src/worlds/jukebox.cpp b/LEGO1/lego/legoomni/src/worlds/jukebox.cpp index 63011a31..84483153 100644 --- a/LEGO1/lego/legoomni/src/worlds/jukebox.cpp +++ b/LEGO1/lego/legoomni/src/worlds/jukebox.cpp @@ -1,7 +1,9 @@ #include "jukebox.h" #include "act1state.h" +#include "jukebox_actions.h" #include "jukeboxstate.h" +#include "jukeboxw_actions.h" #include "legocontrolmanager.h" #include "legogamestate.h" #include "legoinputmanager.h" @@ -77,7 +79,7 @@ MxLong JukeBox::Notify(MxParam& p_param) result = HandleClick((LegoControlManagerEvent&) p_param); break; case c_notificationTransitioned: - GameState()->SwitchArea(m_transitionDestination); + GameState()->SwitchArea(m_destLocation); result = 1; break; } @@ -123,41 +125,41 @@ MxBool JukeBox::HandleClick(LegoControlManagerEvent& p_param) if (p_param.GetUnknown0x28() == 1) { switch (p_param.GetClickedObjectId()) { - case c_dBackCtl: + case JukeboxwScript::c_Dback_Ctl: switch (m_state->GetState()) { - case JukeBoxScript::e_mamaPapaBrickolini: - m_state->SetState(JukeBoxScript::e_residentialArea); + case JukeboxScript::c_MusicTheme1: + m_state->SetState(JukeboxScript::c_ResidentalArea_Music); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Torpedos_Bitmap"); presenter->Enable(TRUE); break; - case JukeBoxScript::e_jailUnused: - m_state->SetState(JukeBoxScript::e_mamaPapaBrickolini); + case JukeboxScript::c_MusicTheme3: + m_state->SetState(JukeboxScript::c_MusicTheme1); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Right_Bitmap"); presenter->Enable(FALSE); break; - case JukeBoxScript::e_act2Cave: - m_state->SetState(JukeBoxScript::e_jailUnused); + case JukeboxScript::c_Act2Cave: + m_state->SetState(JukeboxScript::c_MusicTheme3); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Decal_Bitmap"); presenter->Enable(FALSE); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Right_Bitmap"); presenter->Enable(TRUE); break; - case JukeBoxScript::e_bricksterChase: - m_state->SetState(JukeBoxScript::e_act2Cave); + case JukeboxScript::c_BrickstrChase: + m_state->SetState(JukeboxScript::c_Act2Cave); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Wallis_Bitmap"); presenter->Enable(FALSE); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Decal_Bitmap"); presenter->Enable(TRUE); break; - case JukeBoxScript::e_brickHunt: - m_state->SetState(JukeBoxScript::e_bricksterChase); + case JukeboxScript::c_BrickHunt: + m_state->SetState(JukeboxScript::c_BrickstrChase); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Nelson_Bitmap"); presenter->Enable(FALSE); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Wallis_Bitmap"); presenter->Enable(TRUE); break; - case JukeBoxScript::e_residentialArea: - m_state->SetState(JukeBoxScript::e_brickHunt); + case JukeboxScript::c_ResidentalArea_Music: + m_state->SetState(JukeboxScript::c_BrickHunt); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Torpedos_Bitmap"); presenter->Enable(FALSE); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Nelson_Bitmap"); @@ -165,54 +167,54 @@ MxBool JukeBox::HandleClick(LegoControlManagerEvent& p_param) break; } break; - case JukeBoxWorldScript::c_dFwdCtl: + case JukeboxwScript::c_Dfwd_Ctl: switch (m_state->GetState()) { - case JukeBoxScript::e_mamaPapaBrickolini: - m_state->SetState(JukeBoxScript::e_jailUnused); + case JukeboxScript::c_MusicTheme1: + m_state->SetState(JukeboxScript::c_MusicTheme3); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Right_Bitmap"); presenter->Enable(TRUE); break; - case JukeBoxScript::e_jailUnused: - m_state->SetState(JukeBoxScript::e_act2Cave); + case JukeboxScript::c_MusicTheme3: + m_state->SetState(JukeboxScript::c_Act2Cave); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Right_Bitmap"); presenter->Enable(FALSE); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Decal_Bitmap"); presenter->Enable(TRUE); break; - case JukeBoxScript::e_act2Cave: - m_state->SetState(JukeBoxScript::e_bricksterChase); + case JukeboxScript::c_Act2Cave: + m_state->SetState(JukeboxScript::c_BrickstrChase); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Decal_Bitmap"); presenter->Enable(FALSE); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Wallis_Bitmap"); presenter->Enable(TRUE); break; - case JukeBoxScript::e_bricksterChase: - m_state->SetState(JukeBoxScript::e_brickHunt); + case JukeboxScript::c_BrickstrChase: + m_state->SetState(JukeboxScript::c_BrickHunt); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Wallis_Bitmap"); presenter->Enable(FALSE); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Nelson_Bitmap"); presenter->Enable(TRUE); break; - case JukeBoxScript::e_brickHunt: - m_state->SetState(JukeBoxScript::e_residentialArea); + case JukeboxScript::c_BrickHunt: + m_state->SetState(JukeboxScript::c_ResidentalArea_Music); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Nelson_Bitmap"); presenter->Enable(FALSE); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Torpedos_Bitmap"); presenter->Enable(TRUE); break; - case JukeBoxScript::e_residentialArea: - m_state->SetState(JukeBoxScript::e_mamaPapaBrickolini); + case JukeboxScript::c_ResidentalArea_Music: + m_state->SetState(JukeboxScript::c_MusicTheme1); presenter = (MxStillPresenter*) Find("MxStillPresenter", "Torpedos_Bitmap"); presenter->Enable(FALSE); break; } break; - case JukeBoxWorldScript::c_noteCtl: + case JukeboxwScript::c_Note_Ctl: LegoGameState* gameState = GameState(); Act1State* act1State = (Act1State*) gameState->GetState("Act1State"); act1State->SetUnknown18(11); - m_transitionDestination = LegoGameState::Area::e_unk54; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, 0, FALSE); + m_destLocation = LegoGameState::Area::e_unk54; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, 0, FALSE); break; } } @@ -255,6 +257,6 @@ MxResult JukeBox::Tickle() // FUNCTION: LEGO1 0x1005de70 MxBool JukeBox::VTable0x64() { - m_transitionDestination = LegoGameState::e_infomain; + m_destLocation = LegoGameState::e_infomain; return TRUE; } diff --git a/LEGO1/lego/legoomni/src/worlds/police.cpp b/LEGO1/lego/legoomni/src/worlds/police.cpp index 59d89120..e73c1384 100644 --- a/LEGO1/lego/legoomni/src/worlds/police.cpp +++ b/LEGO1/lego/legoomni/src/worlds/police.cpp @@ -1,6 +1,7 @@ #include "police.h" #include "jukebox.h" +#include "jukebox_actions.h" #include "legocontrolmanager.h" #include "legogamestate.h" #include "legoinputmanager.h" @@ -10,6 +11,7 @@ #include "mxmisc.h" #include "mxnotificationmanager.h" #include "mxtransitionmanager.h" +#include "police_actions.h" #include "policestate.h" DECOMP_SIZE_ASSERT(Police, 0x110) @@ -18,7 +20,7 @@ DECOMP_SIZE_ASSERT(Police, 0x110) Police::Police() { m_policeState = NULL; - m_transitionDestination = LegoGameState::e_noArea; + m_destLocation = LegoGameState::e_undefined; NotificationManager()->Register(this); } @@ -82,7 +84,7 @@ MxLong Police::Notify(MxParam& p_param) result = HandleClick((LegoControlManagerEvent&) p_param); break; case c_notificationTransitioned: - GameState()->SwitchArea(m_transitionDestination); + GameState()->SwitchArea(m_destLocation); break; } } @@ -94,7 +96,7 @@ MxLong Police::Notify(MxParam& p_param) void Police::ReadyWorld() { LegoWorld::ReadyWorld(); - PlayMusic(JukeBox::e_policeStation); + PlayMusic(JukeboxScript::c_PoliceStation_Music); FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); } @@ -103,35 +105,35 @@ MxLong Police::HandleClick(LegoControlManagerEvent& p_param) { if (p_param.GetUnknown0x28() == 1) { switch (p_param.GetClickedObjectId()) { - case c_leftArrowCtl: - case c_rightArrowCtl: + case PoliceScript::c_LeftArrow_Ctl: + case PoliceScript::c_RightArrow_Ctl: if (m_policeState->GetUnknown0x0c() == 1) { - DeleteObjects(&m_atom, c_nickAnim, c_lauraAnim); + DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, PoliceScript::c_nps002la_RunAnim); } BackgroundAudioManager()->Stop(); - m_transitionDestination = LegoGameState::Area::e_polidoor; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + m_destLocation = LegoGameState::Area::e_polidoor; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); break; - case c_infoCtl: + case PoliceScript::c_Info_Ctl: if (m_policeState->GetUnknown0x0c() == 1) { - DeleteObjects(&m_atom, c_nickAnim, c_lauraAnim); + DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, PoliceScript::c_nps002la_RunAnim); } BackgroundAudioManager()->Stop(); - m_transitionDestination = LegoGameState::Area::e_infomain; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + m_destLocation = LegoGameState::Area::e_infomain; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); break; - case c_doorCtl: + case PoliceScript::c_Door_Ctl: if (m_policeState->GetUnknown0x0c() == 1) { - DeleteObjects(&m_atom, c_nickAnim, c_lauraAnim); + DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, PoliceScript::c_nps002la_RunAnim); } BackgroundAudioManager()->Stop(); - m_transitionDestination = LegoGameState::Area::e_copter; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); + m_destLocation = LegoGameState::Area::e_copterbuild; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); break; - case c_donutCtl: + case PoliceScript::c_Donut_Ctl: m_policeState->FUN_1005ea40(); } } @@ -162,7 +164,7 @@ MxLong Police::HandleKeyPress(LegoEventNotificationParam& p_param) MxLong result = 0; if (p_param.GetKey() == ' ' && m_policeState->GetUnknown0x0c() == 1) { - DeleteObjects(&m_atom, c_nickAnim, c_lauraAnim); + DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, PoliceScript::c_nps002la_RunAnim); m_policeState->SetUnknown0x0c(0); return 1; } @@ -189,7 +191,7 @@ void Police::Enable(MxBool p_enable) // FUNCTION: LEGO1 0x1005e790 MxBool Police::VTable0x64() { - DeleteObjects(&m_atom, c_nickAnim, 510); - m_transitionDestination = LegoGameState::e_infomain; + DeleteObjects(&m_atom, PoliceScript::c_nps001ni_RunAnim, 510); + m_destLocation = LegoGameState::e_infomain; return TRUE; } diff --git a/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp b/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp index 35bfb3dc..1f9fb1e1 100644 --- a/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp +++ b/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp @@ -1,27 +1,33 @@ #include "registrationbook.h" #include "infocenterstate.h" +#include "jukebox_actions.h" #include "legocontrolmanager.h" #include "legogamestate.h" #include "legoinputmanager.h" +#include "legoomni.h" #include "misc.h" #include "mxactionnotificationparam.h" +#include "mxbackgroundaudiomanager.h" #include "mxmisc.h" #include "mxnotificationmanager.h" #include "mxtimer.h" +#include "mxtransitionmanager.h" +#include "regbook_actions.h" DECOMP_SIZE_ASSERT(RegistrationBook, 0x2d0) +// GLOBAL: LEGO1 0x100d9924 +const char* g_infoman = "infoman"; + // FUNCTION: LEGO1 0x10076d20 RegistrationBook::RegistrationBook() : m_unk0xf8(0x80000000), m_unk0xfc(1) { - memset(m_unk0x100, 0, sizeof(m_unk0x100)); - memset(m_unk0x168, 0, sizeof(m_unk0x168)); - - // Maybe not be part of the struct, but then it would need packing + memset(m_alphabet, 0, sizeof(m_alphabet)); + memset(m_name, 0, sizeof(m_name)); m_unk0x280.m_unk0x0e = 0; - memset(m_unk0x290, 0, sizeof(m_unk0x290)); + memset(m_checkmark, 0, sizeof(m_checkmark)); memset(&m_unk0x280, -1, sizeof(m_unk0x280) - 2); m_unk0x2b8 = 0; @@ -35,16 +41,37 @@ RegistrationBook::RegistrationBook() : m_unk0xf8(0x80000000), m_unk0xfc(1) m_unk0x2cc = 0; } -// STUB: LEGO1 0x10076f50 +// FUNCTION: LEGO1 0x10076f50 RegistrationBook::~RegistrationBook() { - // TODO + for (MxS16 i = 0; i < 10; i++) { + for (MxS16 j = 0; j < 7; j++) { + if (m_name[i][j] != NULL) { + delete m_name[i][j]->GetAction(); + delete m_name[i][j]; + m_name[i][j] = NULL; + } + } + } + + InputManager()->UnRegister(this); + if (InputManager()->GetWorld() == this) { + InputManager()->ClearWorld(); + } + + ControlManager()->Unregister(this); + NotificationManager()->Unregister(this); + + if (m_unk0x2cc) { + m_unk0x2cc->Release(); + } } // FUNCTION: LEGO1 0x10077060 MxResult RegistrationBook::Create(MxDSAction& p_dsAction) { MxResult result = LegoWorld::Create(p_dsAction); + if (result == SUCCESS) { InputManager()->SetWorld(this); ControlManager()->Register(this); @@ -56,6 +83,7 @@ MxResult RegistrationBook::Create(MxDSAction& p_dsAction) m_infocenterState = (InfocenterState*) GameState()->GetState("InfocenterState"); } + return result; } @@ -92,10 +120,30 @@ MxLong RegistrationBook::Notify(MxParam& p_param) return result; } -// STUB: LEGO1 0x10077210 +// FUNCTION: LEGO1 0x10077210 MxLong RegistrationBook::HandleEndAction(MxEndActionNotificationParam& p_param) { - return 0; + if (p_param.GetAction()->GetAtomId() != m_atom) { + return 0; + } + + switch ((MxS32) p_param.GetAction()->GetObjectId()) { + case RegbookScript::c_Textures: + m_unk0x2c1 = 0; + + if (m_unk0x2b8 == 0) { + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + } + break; + case RegbookScript::c_iic006in_RunAnim: + case RegbookScript::c_iic007in_PlayWav: + case RegbookScript::c_iic008in_PlayWav: + BackgroundAudioManager()->RaiseVolume(); + m_unk0xf8 = Timer()->GetTime(); + break; + } + + return 1; } // STUB: LEGO1 0x100772d0 @@ -104,18 +152,196 @@ MxLong RegistrationBook::HandleKeyPress(MxS8 p_key) return 0; } -// STUB: LEGO1 0x100774a0 +// FUNCTION: LEGO1 0x100774a0 MxLong RegistrationBook::HandleClick(LegoControlManagerEvent& p_param) { - return 0; + MxS16 unk0x28 = p_param.GetUnknown0x28(); + + if (unk0x28 >= 1 && unk0x28 <= 28) { + if (p_param.GetClickedObjectId() == RegbookScript::c_Alphabet_Ctl) { + if (unk0x28 == 28) { + DeleteObjects(&m_atom, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav); + + if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { + m_infocenterState->SetUnknown0x74(15); + } + else { + m_infocenterState->SetUnknown0x74(2); + } + + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + } + else { + if (unk0x28 > 28) { + return 1; + } + + HandleKeyPress(unk0x28 < 27 ? unk0x28 + 64 : 8); + } + } + else { + InputManager()->DisableInputProcessing(); + DeleteObjects(&m_atom, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav); + + MxS16 i; + for (i = 0; i < 10; i++) { + if (m_checkmark[i]->GetAction()->GetObjectId() == p_param.GetClickedObjectId()) { + break; + } + } + + FUN_100775c0(i); + } + } + + return 1; } -// STUB: LEGO1 0x10077cc0 -void RegistrationBook::ReadyWorld() +// FUNCTION: LEGO1 0x100775c0 +void RegistrationBook::FUN_100775c0(MxS16 p_playerIndex) +{ + if (m_infocenterState->HasRegistered()) { + GameState()->Save(0); + } + + // TODO: structure incorrect + MxS16 player = p_playerIndex == 0 ? GameState()->FindPlayer(*(LegoGameState::Username*) &m_unk0x280.m_letters) + : p_playerIndex - 1; + + switch (player) { + case 0: + if (!m_infocenterState->HasRegistered()) { + GameState()->SwitchPlayer(0); + WriteInfocenterLetters(1); + FUN_100778c0(); + } + break; + case -1: + GameState()->Init(); + + PlayAction(RegbookScript::c_Textures); + + m_unk0x2c1 = 1; + + // TOOD: structure incorrect + GameState()->AddPlayer(*(LegoGameState::Username*) &m_unk0x280.m_letters); + GameState()->Save(0); + + WriteInfocenterLetters(0); + GameState()->SerializePlayersInfo(2); + FUN_100778c0(); + break; + default: + GameState()->Init(); + + PlayAction(RegbookScript::c_Textures); + + m_unk0x2c1 = 1; + + GameState()->SwitchPlayer(player); + + WriteInfocenterLetters(player + 1); + GameState()->SerializePlayersInfo(2); + FUN_100778c0(); + break; + } + + m_infocenterState->SetUnknown0x74(4); + if (m_unk0x2b8 == 0 && m_unk0x2c1 == 0) { + DeleteObjects(&m_atom, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 50, FALSE, FALSE); + } +} + +// FUNCTION: LEGO1 0x10077860 +void RegistrationBook::WriteInfocenterLetters(MxS16 p_user) +{ + for (MxS16 i = 0; i < 7; i++) { + delete m_infocenterState->GetNameLetter(i); + m_infocenterState->SetNameLetter(i, m_name[p_user][i]); + m_name[p_user][i] = NULL; + } +} + +// STUB: LEGO1 0x100778c0 +void RegistrationBook::FUN_100778c0() { // TODO } +// FUNCTION: LEGO1 0x10077cc0 +void RegistrationBook::ReadyWorld() +{ + LegoGameState* gameState = GameState(); + gameState->GetHistory()->WriteScoreHistory(); + MxS16 i; + + PlayMusic(JukeboxScript::c_InformationCenter_Music); + + char letterBuffer[] = "A_Bitmap"; + for (i = 0; i < 26; i++) { + m_alphabet[i] = (MxStillPresenter*) Find("MxStillPresenter", letterBuffer); + + // We need to loop through the entire alphabet, + // so increment the first char of the bitmap name + letterBuffer[0]++; + } + + // Now we have to do the checkmarks + char checkmarkBuffer[] = "Check0_Ctl"; + for (i = 0; i < 10; i++) { + m_checkmark[i] = (MxControlPresenter*) Find("MxControlPresenter", checkmarkBuffer); + + // Just like in the prior letter loop, + // we need to increment the fifth char + // to get the next checkmark bitmap + checkmarkBuffer[5]++; + } + + LegoGameState::Username* players = GameState()->m_players; + + for (i = 1; i <= GameState()->m_playerCount; i++) { + for (MxS16 j = 0; j < 7; j++) { + if (players[i - 1].m_letters[j] != -1) { + if (j == 0) { + m_checkmark[i]->Enable(TRUE); + } + + // Start building the player names using a two-dimensional array + m_name[i][j] = m_alphabet[players[i - 1].m_letters[j]]->Clone(); + + // Enable the presenter to actually show the letter in the grid + m_name[i][j]->Enable(TRUE); + + m_name[i][j]->SetTickleState(MxPresenter::e_repeating); + m_name[i][j]->SetPosition(23 * j + 343, 27 * i + 121); + } + } + } + + if (m_infocenterState->HasRegistered()) { + PlayAction(RegbookScript::c_iic008in_PlayWav); + + LegoROI* infoman = FindROI(g_infoman); + if (infoman != NULL) { + infoman->SetUnknown0x0c(0); + } + } + else { + PlayAction(RegbookScript::c_iic006in_RunAnim); + } +} + +inline void RegistrationBook::PlayAction(MxU32 p_objectId) +{ + MxDSAction action; + action.SetAtomId(*g_regbookScript); + action.SetObjectId(p_objectId); + + BackgroundAudioManager()->LowerVolume(); + Start(&action); +} + // STUB: LEGO1 0x10077fd0 MxResult RegistrationBook::Tickle() { @@ -154,6 +380,6 @@ MxLong RegistrationBook::HandleNotification19(MxParam& p_param) // FUNCTION: LEGO1 0x100783e0 MxBool RegistrationBook::VTable0x64() { - DeleteObjects(&m_atom, 500, 506); + DeleteObjects(&m_atom, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav); return TRUE; } diff --git a/LEGO1/lego/legoomni/src/worlds/score.cpp b/LEGO1/lego/legoomni/src/worlds/score.cpp index 187c9918..c4716660 100644 --- a/LEGO1/lego/legoomni/src/worlds/score.cpp +++ b/LEGO1/lego/legoomni/src/worlds/score.cpp @@ -1,7 +1,9 @@ #include "score.h" #include "ambulancemissionstate.h" +#include "infoscor_actions.h" #include "jukebox.h" +#include "jukebox_actions.h" #include "legocontrolmanager.h" #include "legogamestate.h" #include "legoinputmanager.h" @@ -21,7 +23,7 @@ DECOMP_SIZE_ASSERT(Score, 0x104) // FUNCTION: LEGO1 0x10001000 Score::Score() { - m_unk0xf8 = LegoGameState::e_noArea; + m_destLocation = LegoGameState::e_undefined; NotificationManager()->Register(this); } @@ -100,8 +102,8 @@ MxLong Score::Notify(MxParam& p_param) break; case c_notificationTransitioned: DeleteObjects(g_infoscorScript, 7, 9); - if (m_unk0xf8) { - GameState()->SwitchArea(m_unk0xf8); + if (m_destLocation) { + GameState()->SwitchArea(m_destLocation); } ret = 1; break; @@ -121,11 +123,11 @@ MxLong Score::FUN_10001510(MxEndActionNotificationParam& p_param) MxU32 id = action->GetObjectId(); switch (action->GetObjectId()) { case 10: - m_unk0xf8 = LegoGameState::e_histbook; - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 0x32, 0, 0); + m_destLocation = LegoGameState::e_histbook; + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 0x32, 0, 0); break; case 0x1f5: - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); m_state->SetTutorialFlag(FALSE); } } @@ -151,7 +153,7 @@ void Score::ReadyWorld() Start(&action); } else { - PlayMusic(JukeBox::e_informationCenter); + PlayMusic(JukeboxScript::c_InformationCenter_Music); } FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); @@ -164,17 +166,17 @@ MxLong Score::FUN_100016d0(LegoControlManagerEvent& p_param) if (l == 1 || p_param.GetClickedObjectId() == 4) { switch (p_param.GetClickedObjectId()) { - case 1: - m_unk0xf8 = LegoGameState::e_infomain; + case InfoscorScript::c_LeftArrow_Ctl: + m_destLocation = LegoGameState::e_infomain; DeleteScript(); - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 0x32, 0, 0); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 0x32, 0, 0); break; - case 2: - m_unk0xf8 = LegoGameState::e_infodoor; + case InfoscorScript::c_RightArrow_Ctl: + m_destLocation = LegoGameState::e_infodoor; DeleteScript(); - TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 0x32, 0, 0); + TransitionManager()->StartTransition(MxTransitionManager::e_mosaic, 0x32, 0, 0); break; - case 3: { + case InfoscorScript::c_Book_Ctl: { LegoInputManager* im = InputManager(); im->SetUnknown88(TRUE); im->SetUnknown336(FALSE); @@ -186,7 +188,7 @@ MxLong Score::FUN_100016d0(LegoControlManagerEvent& p_param) Start(&action); break; } - case 4: { + case InfoscorScript::c_LegoBox_Ctl: { switch (l) { case 1: { MxDSAction action; @@ -332,6 +334,6 @@ void Score::FillArea(MxU32 p_x, MxU32 p_y, MxS16 p_color) MxBool Score::VTable0x64() { DeleteScript(); - m_unk0xf8 = LegoGameState::e_infomain; + m_destLocation = LegoGameState::e_infomain; return TRUE; } diff --git a/LEGO1/lego/sources/anim/legoanim.cpp b/LEGO1/lego/sources/anim/legoanim.cpp index 83c7ffb5..d11efc4d 100644 --- a/LEGO1/lego/sources/anim/legoanim.cpp +++ b/LEGO1/lego/sources/anim/legoanim.cpp @@ -1,5 +1,9 @@ #include "legoanim.h" +#include "mxgeometry/mxmatrix.h" + +#include + DECOMP_SIZE_ASSERT(LegoAnimKey, 0x08) DECOMP_SIZE_ASSERT(LegoTranslationKey, 0x14) DECOMP_SIZE_ASSERT(LegoRotationKey, 0x18) @@ -135,8 +139,8 @@ LegoResult LegoAnimScene::Read(LegoStorage* p_storage) // FUNCTION: LEGO1 0x1009f900 LegoAnimKey::LegoAnimKey() { - m_unk0x00 = 0; - m_unk0x04 = 0; + m_flags = 0; + m_time = 0; } // FUNCTION: LEGO1 0x1009f910 @@ -149,8 +153,8 @@ LegoResult LegoAnimKey::Read(LegoStorage* p_storage) return result; } - m_unk0x00 = (LegoU32) und >> 24; - m_unk0x04 = und & 0xffffff; + m_flags = (LegoU32) und >> 24; + m_time = und & 0xffffff; return SUCCESS; } @@ -184,7 +188,7 @@ LegoResult LegoTranslationKey::Read(LegoStorage* p_storage) } if (m_x > 1e-05F || m_x < -1e-05F || m_y > 1e-05F || m_y < -1e-05F || m_z > 1e-05F || m_z < -1e-05F) { - m_unk0x00 |= c_bit1; + m_flags |= c_bit1; } return SUCCESS; @@ -225,7 +229,7 @@ LegoResult LegoRotationKey::Read(LegoStorage* p_storage) } if (m_angle != 1.0F) { - m_unk0x00 |= c_bit1; + m_flags |= c_bit1; } return SUCCESS; @@ -261,7 +265,7 @@ LegoResult LegoScaleKey::Read(LegoStorage* p_storage) } if (m_x > 1.00001 || m_x < 0.99999 || m_y > 1.00001 || m_y < 0.99999 || m_z > 1.00001 || m_z < 0.99999) { - m_unk0x00 |= c_bit1; + m_flags |= c_bit1; } return SUCCESS; @@ -282,10 +286,10 @@ LegoAnimNodeData::LegoAnimNodeData() m_unk0x22 = 0; m_scaleKeys = NULL; m_morphKeys = NULL; - m_unk0x24 = 0; - m_unk0x28 = 0; - m_unk0x2c = 0; - m_unk0x30 = 0; + m_translationIndex = 0; + m_rotationIndex = 0; + m_scaleIndex = 0; + m_morphIndex = 0; } // FUNCTION: LEGO1 0x1009fda0 @@ -406,18 +410,248 @@ LegoResult LegoAnimNodeData::Write(LegoStorage* p_storage) return SUCCESS; } -// STUB: LEGO1 0x100a03c0 -LegoResult LegoAnimNodeData::FUN_100a03c0(LegoFloat p_time, Matrix4& p_matrix) +// FUNCTION: LEGO1 0x100a03c0 +LegoResult LegoAnimNodeData::CreateLocalTransform(LegoFloat p_time, Matrix4& p_matrix) { - // TODO + LegoU32 index; + + if (m_scaleKeys != NULL) { + index = GetScaleIndex(); + GetScale(m_numScaleKeys, m_scaleKeys, p_time, p_matrix, index); + SetScaleIndex(index); + + if (m_rotationKeys != NULL) { + MxMatrix a, b; + a.SetIdentity(); + + index = GetRotationIndex(); + GetRotation(m_numRotationKeys, m_rotationKeys, p_time, a, index); + SetRotationIndex(index); + + b = p_matrix; + p_matrix.Product(b, a); + } + } + else if (m_rotationKeys != NULL) { + index = GetRotationIndex(); + GetRotation(m_numRotationKeys, m_rotationKeys, p_time, p_matrix, index); + SetRotationIndex(index); + } + + if (m_translationKeys != NULL) { + index = GetTranslationIndex(); + GetTranslation(m_numTranslationKeys, m_translationKeys, p_time, p_matrix, index); + SetTranslationIndex(index); + } + return SUCCESS; } -// STUB: LEGO1 0x100a0990 +// FUNCTION: LEGO1 0x100a0600 +inline void LegoAnimNodeData::GetTranslation( + LegoU16 p_numTranslationKeys, + LegoTranslationKey* p_translationKeys, + LegoFloat p_time, + Matrix4& p_matrix, + LegoU32& p_old_index +) +{ + LegoU32 i, n; + LegoFloat x, y, z; + n = FindKeys( + p_time, + p_numTranslationKeys & USHRT_MAX, + p_translationKeys, + sizeof(*p_translationKeys), + i, + p_old_index + ); + + switch (n) { + case 0: + return; + case 1: + if (!p_translationKeys[i].TestBit1()) { + return; + } + + x = p_translationKeys[i].GetX(); + y = p_translationKeys[i].GetY(); + z = p_translationKeys[i].GetZ(); + break; + case 2: + if (!p_translationKeys[i].TestBit1() && !p_translationKeys[i + 1].TestBit1()) { + return; + } + + x = Interpolate( + p_time, + p_translationKeys[i], + p_translationKeys[i].GetX(), + p_translationKeys[i + 1], + p_translationKeys[i + 1].GetX() + ); + y = Interpolate( + p_time, + p_translationKeys[i], + p_translationKeys[i].GetY(), + p_translationKeys[i + 1], + p_translationKeys[i + 1].GetY() + ); + z = Interpolate( + p_time, + p_translationKeys[i], + p_translationKeys[i].GetZ(), + p_translationKeys[i + 1], + p_translationKeys[i + 1].GetZ() + ); + break; + } + + p_matrix.TranslateBy(&x, &y, &z); +} + +// FUNCTION: LEGO1 0x100a06f0 +/*inline*/ void LegoAnimNodeData::GetRotation( + LegoU16 p_numRotationKeys, + LegoRotationKey* p_rotationKeys, + LegoFloat p_time, + Matrix4& p_matrix, + LegoU32& p_old_index +) +{ + LegoU32 i, n; + n = FindKeys(p_time, p_numRotationKeys & USHRT_MAX, p_rotationKeys, sizeof(*p_rotationKeys), i, p_old_index); + + switch (n) { + case 0: + return; + case 1: + if (p_rotationKeys[i].TestBit1()) { + p_matrix.FromQuaternion(Mx4DPointFloat( + p_rotationKeys[i].GetX(), + p_rotationKeys[i].GetY(), + p_rotationKeys[i].GetZ(), + p_rotationKeys[i].GetAngle() + )); + } + break; + case 2: + Mx4DPointFloat a; + UnknownMx4DPointFloat b; + + if (p_rotationKeys[i].TestBit1() || p_rotationKeys[i + 1].TestBit1()) { + a[0] = p_rotationKeys[i].GetX(); + a[1] = p_rotationKeys[i].GetY(); + a[2] = p_rotationKeys[i].GetZ(); + a[3] = p_rotationKeys[i].GetAngle(); + + if (p_rotationKeys[i + 1].TestBit3()) { + p_matrix.FromQuaternion(a); + return; + } + + Mx4DPointFloat c; + if (p_rotationKeys[i + 1].TestBit2()) { + c[0] = -p_rotationKeys[i + 1].GetX(); + c[1] = -p_rotationKeys[i + 1].GetY(); + c[2] = -p_rotationKeys[i + 1].GetZ(); + c[3] = -p_rotationKeys[i + 1].GetAngle(); + } + else { + c[0] = p_rotationKeys[i + 1].GetX(); + c[1] = p_rotationKeys[i + 1].GetY(); + c[2] = p_rotationKeys[i + 1].GetZ(); + c[3] = p_rotationKeys[i + 1].GetAngle(); + } + + b.Unknown1(a); + b.Unknown2(c); + b.Unknown_100040a0( + p_matrix, + (p_time - p_rotationKeys[i].GetTime()) / (p_rotationKeys[i + 1].GetTime() - p_rotationKeys[i].GetTime()) + ); + } + } +} + +inline void LegoAnimNodeData::GetScale( + LegoU16 p_numScaleKeys, + LegoScaleKey* p_scaleKeys, + LegoFloat p_time, + Matrix4& p_matrix, + LegoU32& p_old_index +) +{ + LegoU32 i, n; + LegoFloat x, y, z; + n = FindKeys(p_time, p_numScaleKeys & USHRT_MAX, p_scaleKeys, sizeof(*p_scaleKeys), i, p_old_index); + + switch (n) { + case 0: + return; + case 1: + x = p_scaleKeys[i].GetX(); + y = p_scaleKeys[i].GetY(); + z = p_scaleKeys[i].GetZ(); + break; + case 2: + x = Interpolate(p_time, p_scaleKeys[i], p_scaleKeys[i].GetX(), p_scaleKeys[i + 1], p_scaleKeys[i + 1].GetX()); + y = Interpolate(p_time, p_scaleKeys[i], p_scaleKeys[i].GetY(), p_scaleKeys[i + 1], p_scaleKeys[i + 1].GetY()); + z = Interpolate(p_time, p_scaleKeys[i], p_scaleKeys[i].GetZ(), p_scaleKeys[i + 1], p_scaleKeys[i + 1].GetZ()); + break; + } + + p_matrix.Scale(x, y, z); +} + +// FUNCTION: LEGO1 0x100a0990 LegoBool LegoAnimNodeData::FUN_100a0990(LegoFloat p_time) +{ + LegoU32 i, n; + LegoU32 index = GetMorphIndex(); + LegoBool result; + + n = FindKeys(p_time, m_numMorphKeys, m_morphKeys, sizeof(*m_morphKeys), i, index); + SetMorphIndex(index); + + switch (n) { + case 0: + result = TRUE; + break; + case 1: + case 2: + result = m_morphKeys[i].GetUnknown0x08(); + break; + } + + return result; +} + +// STUB: LEGO1 0x100a0a00 +LegoU32 LegoAnimNodeData::FindKeys( + LegoFloat p_time, + LegoU32 p_numKeys, + LegoAnimKey* p_keys, + LegoU32 p_size, + LegoU32& p_new_index, + LegoU32& p_old_index +) { // TODO - return TRUE; + return 0; +} + +// FUNCTION: LEGO1 0x100a0b00 +inline LegoFloat LegoAnimNodeData::Interpolate( + LegoFloat p_time, + LegoAnimKey& p_key1, + LegoFloat p_value1, + LegoAnimKey& p_key2, + LegoFloat p_value2 +) +{ + return p_value1 + (p_value2 - p_value1) * (p_time - p_key1.GetTime()) / (p_key2.GetTime() - p_key1.GetTime()); } // FUNCTION: LEGO1 0x100a0b30 diff --git a/LEGO1/lego/sources/anim/legoanim.h b/LEGO1/lego/sources/anim/legoanim.h index e2a1b5c7..960d7c90 100644 --- a/LEGO1/lego/sources/anim/legoanim.h +++ b/LEGO1/lego/sources/anim/legoanim.h @@ -10,15 +10,22 @@ class LegoAnimKey { public: enum Flags { - c_bit1 = 0x01 + c_bit1 = 0x01, + c_bit2 = 0x02, + c_bit3 = 0x04 }; LegoAnimKey(); LegoResult Read(LegoStorage* p_storage); + LegoFloat GetTime() { return m_time; } + void SetTime(LegoFloat p_time) { m_time = p_time; } + LegoU32 TestBit1() { return m_flags & c_bit1; } + LegoU32 TestBit2() { return m_flags & c_bit2; } + LegoU32 TestBit3() { return m_flags & c_bit3; } protected: - undefined m_unk0x00; // 0x00 - float m_unk0x04; // 0x04 + LegoU8 m_flags; // 0x00 + LegoFloat m_time; // 0x04 }; // SIZE 0x14 @@ -26,6 +33,12 @@ class LegoTranslationKey : public LegoAnimKey { public: LegoTranslationKey(); LegoResult Read(LegoStorage* p_storage); + LegoFloat GetX() { return m_x; } + void SetX(LegoFloat p_x) { m_x = p_x; } + LegoFloat GetY() { return m_y; } + void SetY(LegoFloat p_y) { m_y = p_y; } + LegoFloat GetZ() { return m_z; } + void SetZ(LegoFloat p_z) { m_z = p_z; } protected: LegoFloat m_x; // 0x08 @@ -38,6 +51,14 @@ class LegoRotationKey : public LegoAnimKey { public: LegoRotationKey(); LegoResult Read(LegoStorage* p_storage); + LegoFloat GetAngle() { return m_angle; } + void SetAngle(LegoFloat p_angle) { m_angle = p_angle; } + LegoFloat GetX() { return m_x; } + void SetX(LegoFloat p_x) { m_x = p_x; } + LegoFloat GetY() { return m_y; } + void SetY(LegoFloat p_y) { m_y = p_y; } + LegoFloat GetZ() { return m_z; } + void SetZ(LegoFloat p_z) { m_z = p_z; } protected: LegoFloat m_angle; // 0x08 @@ -51,6 +72,12 @@ class LegoScaleKey : public LegoAnimKey { public: LegoScaleKey(); LegoResult Read(LegoStorage* p_storage); + LegoFloat GetX() { return m_x; } + void SetX(LegoFloat p_x) { m_x = p_x; } + LegoFloat GetY() { return m_y; } + void SetY(LegoFloat p_y) { m_y = p_y; } + LegoFloat GetZ() { return m_z; } + void SetZ(LegoFloat p_z) { m_z = p_z; } protected: LegoFloat m_x; // 0x08 @@ -63,9 +90,10 @@ class LegoMorphKey : public LegoAnimKey { public: LegoMorphKey(); LegoResult Read(LegoStorage* p_storage); + LegoBool GetUnknown0x08() { return m_unk0x08; } protected: - undefined m_unk0x08; // 0x08 + LegoBool m_unk0x08; // 0x08 }; // SIZE 0x0c @@ -87,14 +115,64 @@ class LegoAnimNodeData : public LegoTreeNodeData { LegoResult Read(LegoStorage* p_storage) override; // vtable+0x04 LegoResult Write(LegoStorage* p_storage) override; // vtable+0x08 - LegoResult FUN_100a03c0(LegoFloat p_time, Matrix4& p_matrix); + LegoResult CreateLocalTransform(LegoFloat p_time, Matrix4& p_matrix); LegoBool FUN_100a0990(LegoFloat p_time); const LegoChar* GetName() { return m_name; } + LegoU32 GetTranslationIndex() { return m_translationIndex; } + LegoU32 GetRotationIndex() { return m_rotationIndex; } + LegoU32 GetScaleIndex() { return m_scaleIndex; } + LegoU32 GetMorphIndex() { return m_morphIndex; } - LegoResult FUN_100a03c0(LegoTime p_time, Matrix4& p_matrix) { return FUN_100a03c0((LegoFloat) p_time, p_matrix); } + void SetTranslationIndex(LegoU32 p_translationIndex) { m_translationIndex = p_translationIndex; } + void SetRotationIndex(LegoU32 p_rotationIndex) { m_rotationIndex = p_rotationIndex; } + void SetScaleIndex(LegoU32 p_scaleIndex) { m_scaleIndex = p_scaleIndex; } + void SetMorphIndex(LegoU32 p_morphIndex) { m_morphIndex = p_morphIndex; } + + LegoResult CreateLocalTransform(LegoTime p_time, Matrix4& p_matrix) + { + return CreateLocalTransform((LegoFloat) p_time, p_matrix); + } LegoBool FUN_100a0990(LegoTime p_time) { return FUN_100a0990((LegoFloat) p_time); } + inline static void GetTranslation( + LegoU16 p_numTranslationKeys, + LegoTranslationKey* p_translationKeys, + LegoFloat p_time, + Matrix4& p_matrix, + LegoU32& p_old_index + ); + /*inline*/ static void GetRotation( + LegoU16 p_numRotationKeys, + LegoRotationKey* p_rotationKeys, + LegoFloat p_time, + Matrix4& p_matrix, + LegoU32& p_old_index + ); + inline static void GetScale( + LegoU16 p_numScaleKeys, + LegoScaleKey* p_scaleKeys, + LegoFloat p_time, + Matrix4& p_matrix, + LegoU32& p_old_index + ); + inline static LegoFloat Interpolate( + LegoFloat p_time, + LegoAnimKey& p_key1, + LegoFloat p_value1, + LegoAnimKey& p_key2, + LegoFloat p_value2 + ); + + static LegoU32 FindKeys( + LegoFloat p_time, + LegoU32 p_numKeys, + LegoAnimKey* p_keys, + LegoU32 p_size, + LegoU32& p_new_index, + LegoU32& p_old_index + ); + // SYNTHETIC: LEGO1 0x1009fd80 // LegoAnimNodeData::`scalar deleting destructor' @@ -110,10 +188,10 @@ class LegoAnimNodeData : public LegoTreeNodeData { LegoMorphKey* m_morphKeys; // 0x1c undefined2 m_unk0x20; // 0x20 undefined2 m_unk0x22; // 0x22 - undefined4 m_unk0x24; // 0x24 - undefined4 m_unk0x28; // 0x28 - undefined4 m_unk0x2c; // 0x2c - undefined4 m_unk0x30; // 0x30 + LegoU32 m_translationIndex; // 0x24 + LegoU32 m_rotationIndex; // 0x28 + LegoU32 m_scaleIndex; // 0x2c + LegoU32 m_morphIndex; // 0x30 }; // SIZE 0x08 diff --git a/LEGO1/lego/sources/roi/legoroi.cpp b/LEGO1/lego/sources/roi/legoroi.cpp index e06f7832..8635408b 100644 --- a/LEGO1/lego/sources/roi/legoroi.cpp +++ b/LEGO1/lego/sources/roi/legoroi.cpp @@ -339,7 +339,7 @@ LegoResult LegoROI::Read( LegoResult LegoROI::FUN_100a8cb0(LegoAnimNodeData* p_data, LegoTime p_time, Matrix4& p_matrix) { p_matrix.SetIdentity(); - p_data->FUN_100a03c0(p_time, p_matrix); + p_data->CreateLocalTransform(p_time, p_matrix); return SUCCESS; } @@ -477,6 +477,12 @@ TimeROI::TimeROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, LegoTime p_t m_time = p_time; } +// STUB: LEGO1 0x100a9b40 +void TimeROI::FUN_100a9b40(Matrix4& p_matrix, LegoTime p_time) +{ + // TODO +} + // FUNCTION: LEGO1 0x100a9bf0 LegoBool LegoROI::FUN_100a9bf0(const LegoChar* p_param, float& p_red, float& p_green, float& p_blue, float& p_alpha) { diff --git a/LEGO1/lego/sources/roi/legoroi.h b/LEGO1/lego/sources/roi/legoroi.h index b5f6c7af..4f74f14f 100644 --- a/LEGO1/lego/sources/roi/legoroi.h +++ b/LEGO1/lego/sources/roi/legoroi.h @@ -78,6 +78,8 @@ class TimeROI : public LegoROI { // SYNTHETIC: LEGO1 0x100a9ad0 // TimeROI::`scalar deleting destructor' + void FUN_100a9b40(Matrix4& p_matrix, LegoTime p_time); + private: LegoTime m_time; // 0x108 }; diff --git a/LEGO1/library_msvc.h b/LEGO1/library_msvc.h index e819f995..8ca06710 100644 --- a/LEGO1/library_msvc.h +++ b/LEGO1/library_msvc.h @@ -18,6 +18,9 @@ // LIBRARY: LEGO1 0x1008b020 // ___CxxFrameHandler +// LIBRARY: LEGO1 0x1008b3dc +// __CIacos + // LIBRARY: LEGO1 0x1008b400 // _atol diff --git a/LEGO1/mxgeometry/mxgeometry3d.h b/LEGO1/mxgeometry/mxgeometry3d.h index 0bbe1ba8..0e1f5fdc 100644 --- a/LEGO1/mxgeometry/mxgeometry3d.h +++ b/LEGO1/mxgeometry/mxgeometry3d.h @@ -1,6 +1,8 @@ #ifndef MXGEOMETRY3D_H #define MXGEOMETRY3D_H +#include "decomp.h" +#include "realtime/matrix.h" #include "realtime/vector.h" // VTABLE: LEGO1 0x100d4488 @@ -15,22 +17,24 @@ class Mx3DPointFloat : public Vector3 { m_elements[2] = p_z; } - inline float GetX() { return m_data[0]; } - inline float GetY() { return m_data[1]; } - inline float GetZ() { return m_data[2]; } - - inline float& operator[](size_t idx) { return m_data[idx]; } - inline const float& operator[](size_t idx) const { return m_data[idx]; } - // FUNCTION: LEGO1 0x100343a0 inline Mx3DPointFloat(const Mx3DPointFloat& p_other) : Vector3(m_elements) { EqualsImpl(p_other.m_data); } + inline Mx3DPointFloat(const float* p_other) : Vector3(m_elements) { EqualsImpl((float*) p_other); } + // SYNTHETIC: LEGO1 0x1001d170 // Mx3DPointFloat::Mx3DPointFloat // FUNCTION: LEGO1 0x10003c10 virtual void operator=(const Vector3& p_impl) { EqualsImpl(p_impl.m_data); } // vtable+0x88 + inline float GetX() { return m_data[0]; } + inline float GetY() { return m_data[1]; } + inline float GetZ() { return m_data[2]; } + + inline float& operator[](size_t idx) { return m_data[idx]; } + inline const float& operator[](size_t idx) const { return m_data[idx]; } + // FUNCTION: LEGO1 0x10010c00 inline Mx3DPointFloat& operator=(const Mx3DPointFloat& p_other) { @@ -54,9 +58,121 @@ class Mx3DPointFloat : public Vector3 { class Mx4DPointFloat : public Vector4 { public: inline Mx4DPointFloat() : Vector4(m_elements) {} + inline Mx4DPointFloat(float p_x, float p_y, float p_z, float p_a) : Vector4(m_elements) + { + m_elements[0] = p_x; + m_elements[1] = p_y; + m_elements[2] = p_z; + m_elements[3] = p_a; + } + + // FUNCTION: LEGO1 0x10003200 + virtual void operator=(const Vector4& p_impl) { EqualsImpl(p_impl.m_data); } // vtable+0x98 + + inline float& operator[](size_t idx) { return m_data[idx]; } + inline const float& operator[](size_t idx) const { return m_data[idx]; } private: - float m_elements[4]; + float m_elements[4]; // 0x08 }; +// SIZE 0x34 +class UnknownMx4DPointFloat { +public: + enum { + c_bit1 = 0x01, + c_bit2 = 0x02 + }; + + UnknownMx4DPointFloat() : m_unk0x30(0) {} + + inline void Unknown1(Vector4& p_v) + { + m_unk0x00 = p_v; + m_unk0x30 |= c_bit1; + } + + inline void Unknown2(Vector4& p_v) + { + m_unk0x18 = p_v; + m_unk0x30 |= c_bit2; + } + + inline int Unknown_100040a0(Matrix4& p_matrix, float p_f); + inline int FUN_100040a0(Vector4& p_v, float p_f); + +private: + Mx4DPointFloat m_unk0x00; // 0x00 + Mx4DPointFloat m_unk0x18; // 0x18 + undefined4 m_unk0x30; // 0x30 +}; + +int UnknownMx4DPointFloat::Unknown_100040a0(Matrix4& p_matrix, float p_f) +{ + float data[4]; + Vector4 v(data); + + if (FUN_100040a0(v, p_f) == 0) { + return p_matrix.FromQuaternion(v); + } + else { + return -1; + } +} + +// FUNCTION: LEGO1 0x100040a0 +inline int UnknownMx4DPointFloat::FUN_100040a0(Vector4& p_v, float p_f) +{ + undefined4 state = m_unk0x30; + + if (state == 1) { + p_v = m_unk0x00; + p_v[3] = (1.0 - p_f) * acos(p_v[3]) * 2.0; + return p_v.NormalizeQuaternion(); + } + else if (state == 2) { + p_v = m_unk0x18; + p_v[3] = p_f * acos(p_v[3]) * 2.0; + return p_v.NormalizeQuaternion(); + } + else if (state == 3) { + double d1 = p_v.Dot(&m_unk0x00, &m_unk0x18); + double d2; + + if (d1 + 1.0 > 0.00001) { + if (1.0 - d1 > 0.00001) { + double d = acos(d1); + sin(d); + d1 = sin((1 - p_f) * d) / sin(d); + d2 = sin(p_f * d) / sin(d); + } + else { + d1 = 1.0 - p_f; + d2 = p_f; + } + + for (int i = 0; i < 4; i++) { + p_v[i] = m_unk0x18[i] * d2 + m_unk0x00[i] * d1; + } + } + else { + p_v[0] = -m_unk0x00[1]; + p_v[1] = m_unk0x00[1]; + p_v[2] = -m_unk0x00[3]; + p_v[3] = m_unk0x00[2]; + d1 = sin((1.0 - p_f) * 1.570796326794895); + d2 = sin(p_f * 1.570796326794895); + + for (int i = 0; i < 3; i++) { + p_v[i] = m_unk0x00[i] * d1 + p_v[i] * d2; + } + } + + return 0; + } + else { + return -1; + } +} + #endif // MXGEOMETRY3D_H diff --git a/LEGO1/mxgeometry/mxmatrix.h b/LEGO1/mxgeometry/mxmatrix.h index 13c07c54..c32635b9 100644 --- a/LEGO1/mxgeometry/mxmatrix.h +++ b/LEGO1/mxgeometry/mxmatrix.h @@ -8,8 +8,12 @@ class MxMatrix : public Matrix4 { public: inline MxMatrix() : Matrix4(m_elements) {} + + // FUNCTION: LEGO1 0x10032770 inline MxMatrix(const MxMatrix& p_matrix) : Matrix4(m_elements) { Equals(p_matrix); } + inline MxMatrix(const Matrix4& p_matrix) : Matrix4(m_elements) { Equals(p_matrix); } + float* operator[](size_t idx) { return m_data[idx]; } const float* operator[](size_t idx) const { return m_data[idx]; } diff --git a/LEGO1/omni/include/mxautolock.h b/LEGO1/omni/include/mxautolock.h new file mode 100644 index 00000000..1488cd4e --- /dev/null +++ b/LEGO1/omni/include/mxautolock.h @@ -0,0 +1,17 @@ +#ifndef MXAUTOLOCK_H +#define MXAUTOLOCK_H + +#include "mxcriticalsection.h" + +#define AUTOLOCK(CS) MxAutoLock lock(&CS) + +class MxAutoLock { +public: + MxAutoLock(MxCriticalSection* p_criticalSection); + ~MxAutoLock(); + +private: + MxCriticalSection* m_criticalSection; +}; + +#endif // MXAUTOLOCK_H diff --git a/LEGO1/omni/include/mxautolocker.h b/LEGO1/omni/include/mxautolocker.h deleted file mode 100644 index e5838486..00000000 --- a/LEGO1/omni/include/mxautolocker.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef MXAUTOLOCKER_H -#define MXAUTOLOCKER_H - -#include "mxcriticalsection.h" - -class MxAutoLocker { -public: - MxAutoLocker(MxCriticalSection* p_criticalSection); - ~MxAutoLocker(); - -private: - MxCriticalSection* m_criticalSection; -}; - -#endif // MXAUTOLOCKER_H diff --git a/LEGO1/omni/include/mxbitset.h b/LEGO1/omni/include/mxbitset.h new file mode 100644 index 00000000..415470d8 --- /dev/null +++ b/LEGO1/omni/include/mxbitset.h @@ -0,0 +1,95 @@ +#ifndef MXBITSET_H +#define MXBITSET_H + +#pragma warning(disable : 4237) + +#include "mxtypes.h" + +#include +#include // CHAR_BIT + +template +class MxBitset { +public: + MxBitset() { Tidy(); } + + // SIZE 0x08 + class Reference { + friend class MxBitset; + + public: + Reference& Flip() + { + m_bitset->Flip(m_offset); + return (*this); + } + bool operator~() const { return (!m_bitset->Test(m_offset)); } + operator bool() const { return (m_bitset->Test(m_offset)); } + + private: + Reference(MxBitset& p_bitset, size_t p_offset) : m_bitset(&p_bitset), m_offset(p_offset) {} + MxBitset* m_bitset; // 0x00 + size_t m_offset; // 0x04 + }; + + Reference operator[](size_t p_bit) { return (Reference(*this, p_bit)); } + + MxBitset& Flip(size_t p_bit) + { + if (N <= p_bit) { + Xran(); + } + m_blocks[p_bit / e_bitsPerBlock] ^= 1 << p_bit % e_bitsPerBlock; + return (*this); + } + + size_t Count() + { + // debug only, intentionally unimplemented + return 0; + } + + bool Test(MxU32 p_bit) + { + if (p_bit >= N) { + Xran(); + } + + return (m_blocks[p_bit / e_bitsPerBlock] & (1 << p_bit % e_bitsPerBlock)) != 0; + } + + MxU32 Size() const { return N; } + +private: + void Tidy(MxU32 p_value = 0) + { + for (MxS32 i = e_blocksRequired; i >= 0; --i) { + m_blocks[i] = p_value; + } + + // No need to trim if all bits were zeroed out + if (p_value != 0) { + Trim(); + } + } + + // Apply bit mask to most significant block + void Trim() + { + if (N % e_bitsPerBlock != 0) { + m_blocks[e_blocksRequired] &= ((1 << (N % e_bitsPerBlock)) - 1); + } + } + + void Xran() { assert("invalid MxBitset position" == NULL); } + + // Not a real enum. This is how STL BITSET defines these constants. + enum { + e_bitsPerBlock = CHAR_BIT * sizeof(MxU32), + e_blocksRequired = N == 0 ? 0 : (N - 1) / e_bitsPerBlock + }; + + MxU32 m_blocks[e_blocksRequired + 1]; // 0x00 +}; + +#endif // MXBITSET_H diff --git a/LEGO1/omni/include/mxcore.h b/LEGO1/omni/include/mxcore.h index dc167f2b..7fe5afbc 100644 --- a/LEGO1/omni/include/mxcore.h +++ b/LEGO1/omni/include/mxcore.h @@ -38,6 +38,8 @@ class MxCore { // MxCore::`scalar deleting destructor' private: + static MxU32 g_nextCoreId; + MxU32 m_id; // 0x04 }; diff --git a/LEGO1/omni/include/mxdisplaysurface.h b/LEGO1/omni/include/mxdisplaysurface.h index 4e107f60..61b35eec 100644 --- a/LEGO1/omni/include/mxdisplaysurface.h +++ b/LEGO1/omni/include/mxdisplaysurface.h @@ -92,7 +92,7 @@ class MxDisplaySurface : public MxCore { void ClearScreen(); static LPDIRECTDRAWSURFACE CreateCursorSurface(); - static LPDIRECTDRAWSURFACE FUN_100bbfb0(LPDIRECTDRAWSURFACE p_und); + static LPDIRECTDRAWSURFACE CopySurface(LPDIRECTDRAWSURFACE p_src); inline LPDIRECTDRAWSURFACE GetDirectDrawSurface1() { return this->m_ddSurface1; } inline LPDIRECTDRAWSURFACE GetDirectDrawSurface2() { return this->m_ddSurface2; } diff --git a/LEGO1/omni/include/mxdsbuffer.h b/LEGO1/omni/include/mxdsbuffer.h index 79dee7d7..47c7bb07 100644 --- a/LEGO1/omni/include/mxdsbuffer.h +++ b/LEGO1/omni/include/mxdsbuffer.h @@ -66,7 +66,7 @@ class MxDSBuffer : public MxCore { inline MxU8* GetBuffer() { return m_pBuffer; } inline MxU8** GetBufferRef() { return &m_pBuffer; } inline undefined4 GetUnknown14() { return m_unk0x14; } - inline MxU16 GetRefCount() { return m_refcount; } + inline MxU16 GetRefCount() { return m_referenceCount; } inline Type GetMode() { return m_mode; } inline MxU32 GetWriteOffset() { return m_writeOffset; } inline MxU32 GetBytesRemaining() { return m_bytesRemaining; } @@ -85,7 +85,7 @@ class MxDSBuffer : public MxCore { undefined4 m_unk0x14; // 0x14 undefined4 m_unk0x18; // 0x18 undefined4 m_unk0x1c; // 0x1c - MxU16 m_refcount; // 0x20 + MxU16 m_referenceCount; // 0x20 Type m_mode; // 0x24 MxU32 m_writeOffset; // 0x28 MxU32 m_bytesRemaining; // 0x2c diff --git a/LEGO1/omni/include/mxmemorypool.h b/LEGO1/omni/include/mxmemorypool.h new file mode 100644 index 00000000..a5023457 --- /dev/null +++ b/LEGO1/omni/include/mxmemorypool.h @@ -0,0 +1,86 @@ +#ifndef MXMEMORYPOOL_H +#define MXMEMORYPOOL_H + +#include "decomp.h" +#include "mxbitset.h" +#include "mxtypes.h" + +#include + +template +class MxMemoryPool { +public: + MxMemoryPool() : m_pool(NULL), m_blockSize(BS) {} + ~MxMemoryPool() { delete[] m_pool; } + + MxResult Allocate(); + MxU8* Get(); + void Release(MxU8*); + + MxU32 GetPoolSize() const { return m_blockRef.Size(); } + +private: + MxU8* m_pool; // 0x00 + MxU32 m_blockSize; // 0x04 + MxBitset m_blockRef; // 0x08 +}; + +template +MxResult MxMemoryPool::Allocate() +{ + assert(m_pool == NULL); + assert(m_blockSize); + assert(m_blockRef.Size()); + + m_pool = new MxU8[GetPoolSize() * m_blockSize * 1024]; + assert(m_pool); + + return m_pool ? SUCCESS : FAILURE; +} + +template +MxU8* MxMemoryPool::Get() +{ + assert(m_pool != NULL); + assert(m_blockSize); + assert(m_blockRef.Size()); + + for (MxU32 i = 0; i < GetPoolSize(); i++) { + if (!m_blockRef[i]) { + m_blockRef[i].Flip(); + +#ifdef _DEBUG + // TODO: This is actually some debug print function, but + // we just need any func with variatic args to eliminate diff noise. + printf("Get> %d pool: busy %d blocks\n", m_blockSize, m_blockRef.Count()); +#endif + + return &m_pool[i * m_blockSize * 1024]; + } + } + + return NULL; +} + +template +void MxMemoryPool::Release(MxU8* p_buf) +{ + assert(m_pool != NULL); + assert(m_blockSize); + assert(m_blockRef.Size()); + + MxU32 i = (MxU32) (p_buf - m_pool) / (m_blockSize * 1024); + + assert(i >= 0 && i < GetPoolSize()); + assert(m_blockRef[i]); + + if (m_blockRef[i]) { + m_blockRef[i].Flip(); + } + +#ifdef _DEBUG + printf("Release> %d pool: busy %d blocks\n", m_blockSize, m_blockRef.Count()); +#endif +} + +#endif // MXMEMORYPOOL_H diff --git a/LEGO1/omni/include/mxomni.h b/LEGO1/omni/include/mxomni.h index 8cefb099..5aca3e23 100644 --- a/LEGO1/omni/include/mxomni.h +++ b/LEGO1/omni/include/mxomni.h @@ -70,7 +70,7 @@ class MxOmni : public MxCore { MxMusicManager* GetMusicManager() const { return this->m_musicManager; } MxEventManager* GetEventManager() const { return this->m_eventManager; } MxAtomIdCounterSet* GetAtomIdCounterSet() const { return this->m_atomIdCounterSet; } - MxLong HandleActionEnd(MxParam& p_param); + MxLong HandleEndAction(MxParam& p_param); // SYNTHETIC: LEGO1 0x100aefd0 // MxOmni::`scalar deleting destructor' @@ -91,7 +91,7 @@ class MxOmni : public MxCore { MxTimer* m_timer; // 0x3c MxStreamer* m_streamer; // 0x40 MxAtomIdCounterSet* m_atomIdCounterSet; // 0x44 - MxCriticalSection m_criticalsection; // 0x48 + MxCriticalSection m_criticalSection; // 0x48 MxBool m_timerRunning; // 0x64 }; diff --git a/LEGO1/omni/include/mxsoundmanager.h b/LEGO1/omni/include/mxsoundmanager.h index 24e7111a..8d1d573d 100644 --- a/LEGO1/omni/include/mxsoundmanager.h +++ b/LEGO1/omni/include/mxsoundmanager.h @@ -22,7 +22,7 @@ class MxSoundManager : public MxAudioManager { inline LPDIRECTSOUND GetDirectSound() { return m_directSound; } - MxS32 FUN_100aecf0(MxU32 p_undefined); + MxS32 GetAttenuation(MxU32 p_volume); protected: void Init(); diff --git a/LEGO1/omni/include/mxstreamer.h b/LEGO1/omni/include/mxstreamer.h index 2308981d..f0dd9b7e 100644 --- a/LEGO1/omni/include/mxstreamer.h +++ b/LEGO1/omni/include/mxstreamer.h @@ -4,50 +4,16 @@ #include "decomp.h" #include "mxcore.h" #include "mxdsobject.h" +#include "mxmemorypool.h" #include "mxnotificationparam.h" #include "mxstreamcontroller.h" #include "mxtypes.h" +#include #include -// NOTE: This feels like some kind of templated class, maybe something from the -// STL. But I haven't figured out what yet (it's definitely not a vector). -class MxStreamerSubClass1 { -public: - inline MxStreamerSubClass1(undefined4 p_size) - { - m_buffer = NULL; - m_size = p_size; - undefined4* ptr = &m_unk0x08; - for (int i = 0; i >= 0; i--) { - ptr[i] = 0; - } - } - - // FUNCTION: LEGO1 0x100b9110 - ~MxStreamerSubClass1() { delete[] m_buffer; } - - undefined4 GetSize() const { return m_size; } - - void SetBuffer(undefined* p_buf) { m_buffer = p_buf; } - inline undefined* GetBuffer() const { return m_buffer; } - inline undefined* GetUnk08Ref() const { return (undefined*) &m_unk0x08; } - -private: - undefined* m_buffer; - undefined4 m_size; - undefined4 m_unk0x08; -}; - -class MxStreamerSubClass2 : public MxStreamerSubClass1 { -public: - inline MxStreamerSubClass2() : MxStreamerSubClass1(0x40) {} -}; - -class MxStreamerSubClass3 : public MxStreamerSubClass1 { -public: - inline MxStreamerSubClass3() : MxStreamerSubClass1(0x80) {} -}; +typedef MxMemoryPool<64, 22> MxMemoryPool64; +typedef MxMemoryPool<128, 2> MxMemoryPool128; // VTABLE: LEGO1 0x100dc760 class MxStreamerNotification : public MxNotificationParam { @@ -105,13 +71,44 @@ class MxStreamer : public MxCore { MxResult FUN_100b99b0(MxDSAction* p_action); MxResult DeleteObject(MxDSAction* p_dsAction); - inline const MxStreamerSubClass2& GetSubclass1() { return m_subclass1; } - inline const MxStreamerSubClass3& GetSubclass2() { return m_subclass2; } + MxU8* GetMemoryBlock(MxU32 p_blockSize) + { + switch (p_blockSize) { + case 0x40: + return m_pool64.Get(); + + case 0x80: + return m_pool128.Get(); + + default: + assert("Invalid block size for memory pool" == NULL); + break; + } + + return NULL; + } + + void ReleaseMemoryBlock(MxU8* p_block, MxU32 p_blockSize) + { + switch (p_blockSize) { + case 0x40: + m_pool64.Release(p_block); + break; + + case 0x80: + m_pool128.Release(p_block); + break; + + default: + assert("Invalid block size for memory pool" == NULL); + break; + } + } private: list m_openStreams; // 0x08 - MxStreamerSubClass2 m_subclass1; // 0x14 - MxStreamerSubClass3 m_subclass2; // 0x20 + MxMemoryPool64 m_pool64; // 0x14 + MxMemoryPool128 m_pool128; // 0x20 }; // clang-format off @@ -119,6 +116,12 @@ class MxStreamer : public MxCore { // list >::~list > // clang-format on +// TEMPLATE: LEGO1 0x100b9100 +// MxMemoryPool<64,22>::~MxMemoryPool<64,22> + +// TEMPLATE: LEGO1 0x100b9110 +// MxMemoryPool<128,2>::~MxMemoryPool<128,2> + // SYNTHETIC: LEGO1 0x100b9120 // MxStreamer::`scalar deleting destructor' diff --git a/LEGO1/omni/src/action/mxdsaction.cpp b/LEGO1/omni/src/action/mxdsaction.cpp index 0a72abd8..26322ceb 100644 --- a/LEGO1/omni/src/action/mxdsaction.cpp +++ b/LEGO1/omni/src/action/mxdsaction.cpp @@ -178,13 +178,10 @@ void MxDSAction::MergeFrom(MxDSAction& p_dsAction) this->m_up[2] = p_dsAction.m_up[2]; } - MxU16 extraLength = p_dsAction.m_extraLength; - char* extraData = p_dsAction.m_extraData; + MxU16 extraLength; + char* extraData; + p_dsAction.GetExtra(extraLength, extraData); - // Taking those references forces the compiler to move the values onto the stack. - // The original code most likely looked different, but this yields a 100% match. - MxU16& extraLengthRef = extraLength; - char*& extraDataRef = extraData; if (extraLength && extraData) { if (!this->m_extraData || !strncmp("XXX", this->m_extraData, 3)) { delete[] this->m_extraData; diff --git a/LEGO1/omni/src/audio/mxmidipresenter.cpp b/LEGO1/omni/src/audio/mxmidipresenter.cpp index 361481fc..205b760d 100644 --- a/LEGO1/omni/src/audio/mxmidipresenter.cpp +++ b/LEGO1/omni/src/audio/mxmidipresenter.cpp @@ -1,7 +1,7 @@ #include "mxmidipresenter.h" #include "decomp.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdssound.h" #include "mxmisc.h" #include "mxmusicmanager.h" @@ -115,7 +115,7 @@ MxResult MxMIDIPresenter::PutData() void MxMIDIPresenter::EndAction() { if (m_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxMediaPresenter::EndAction(); MusicManager()->DeinitializeMIDI(); diff --git a/LEGO1/omni/src/audio/mxsoundmanager.cpp b/LEGO1/omni/src/audio/mxsoundmanager.cpp index 05514898..583d1dfc 100644 --- a/LEGO1/omni/src/audio/mxsoundmanager.cpp +++ b/LEGO1/omni/src/audio/mxsoundmanager.cpp @@ -1,7 +1,6 @@ #include "mxsoundmanager.h" -#include "define.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxmisc.h" #include "mxomni.h" #include "mxpresenter.h" @@ -10,6 +9,17 @@ DECOMP_SIZE_ASSERT(MxSoundManager, 0x3c); +// GLOBAL LEGO1 0x10101420 +MxS32 g_volumeAttenuation[100] = {-6643, -5643, -5058, -4643, -4321, -4058, -3836, -3643, -3473, -3321, -3184, -3058, + -2943, -2836, -2736, -2643, -2556, -2473, -2395, -2321, -2251, -2184, -2120, -2058, + -2000, -1943, -1888, -1836, -1785, -1736, -1689, -1643, -1599, -1556, -1514, -1473, + -1434, -1395, -1358, -1321, -1286, -1251, -1217, -1184, -1152, -1120, -1089, -1058, + -1029, -1000, -971, -943, -915, -888, -862, -836, -810, -785, -761, -736, + -713, -689, -666, -643, -621, -599, -577, -556, -535, -514, -494, -473, + -454, -434, -415, -395, -377, -358, -340, -321, -304, -286, -268, -251, + -234, -217, -200, -184, -168, -152, -136, -120, -104, -89, -74, -58, + -43, -29, -14, 0}; + // FUNCTION: LEGO1 0x100ae740 MxSoundManager::MxSoundManager() { @@ -168,7 +178,7 @@ void MxSoundManager::SetVolume(MxS32 p_volume) // FUNCTION: LEGO1 0x100aebd0 MxPresenter* MxSoundManager::FUN_100aebd0(const MxAtomId& p_atomId, MxU32 p_objectId) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxPresenter* presenter; MxPresenterListCursor cursor(m_presenters); @@ -184,18 +194,21 @@ MxPresenter* MxSoundManager::FUN_100aebd0(const MxAtomId& p_atomId, MxU32 p_obje } // FUNCTION: LEGO1 0x100aecf0 -MxS32 MxSoundManager::FUN_100aecf0(MxU32 p_undefined) +MxS32 MxSoundManager::GetAttenuation(MxU32 p_volume) { - if (!p_undefined) { - return -10000; + // The unit for p_volume is percent, rounded to integer. + // Convert to DSOUND attenuation units: -10000 (silent) to 0 (loudest). + if (p_volume == 0) { + return DSBVOLUME_MIN; } - return g_mxcoreCount[p_undefined]; + + return g_volumeAttenuation[p_volume - 1]; } // FUNCTION: LEGO1 0x100aed10 void MxSoundManager::Pause() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxPresenter* presenter; MxPresenterListCursor cursor(m_presenters); @@ -210,7 +223,7 @@ void MxSoundManager::Pause() // FUNCTION: LEGO1 0x100aee10 void MxSoundManager::Resume() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxPresenter* presenter; MxPresenterListCursor cursor(m_presenters); diff --git a/LEGO1/omni/src/audio/mxwavepresenter.cpp b/LEGO1/omni/src/audio/mxwavepresenter.cpp index af32e4dd..defb20f6 100644 --- a/LEGO1/omni/src/audio/mxwavepresenter.cpp +++ b/LEGO1/omni/src/audio/mxwavepresenter.cpp @@ -2,7 +2,7 @@ #include "decomp.h" #include "define.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdssound.h" #include "mxmisc.h" #include "mxomni.h" @@ -241,7 +241,7 @@ void MxWavePresenter::LoopChunk(MxStreamChunk* p_chunk) // FUNCTION: LEGO1 0x100b2160 MxResult MxWavePresenter::PutData() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (IsEnabled()) { switch (m_currentTickleState) { @@ -280,7 +280,7 @@ MxResult MxWavePresenter::PutData() void MxWavePresenter::EndAction() { if (m_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxMediaPresenter::EndAction(); if (m_dsBuffer) { @@ -297,7 +297,7 @@ void MxWavePresenter::SetVolume(MxS32 p_volume) m_volume = p_volume; if (m_dsBuffer != NULL) { MxS32 volume = p_volume * MxOmni::GetInstance()->GetSoundManager()->GetVolume() / 100; - MxS32 otherVolume = MxOmni::GetInstance()->GetSoundManager()->FUN_100aecf0(volume); + MxS32 otherVolume = MxOmni::GetInstance()->GetSoundManager()->GetAttenuation(volume); m_dsBuffer->SetVolume(otherVolume); } diff --git a/LEGO1/omni/src/common/mxcompositepresenter.cpp b/LEGO1/omni/src/common/mxcompositepresenter.cpp index 043af4ea..5d5d8c6f 100644 --- a/LEGO1/omni/src/common/mxcompositepresenter.cpp +++ b/LEGO1/omni/src/common/mxcompositepresenter.cpp @@ -1,7 +1,7 @@ #include "mxcompositepresenter.h" #include "decomp.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdsmultiaction.h" #include "mxmisc.h" #include "mxnotificationmanager.h" @@ -24,7 +24,7 @@ MxCompositePresenter::~MxCompositePresenter() // FUNCTION: LEGO1 0x100b6410 MxResult MxCompositePresenter::StartAction(MxStreamController* p_controller, MxDSAction* p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxResult result = FAILURE; MxDSActionList* actions = ((MxDSMultiAction*) p_action)->GetActionList(); @@ -77,7 +77,7 @@ MxResult MxCompositePresenter::StartAction(MxStreamController* p_controller, MxD // FUNCTION: LEGO1 0x100b65e0 void MxCompositePresenter::EndAction() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (!m_action) { return; @@ -113,7 +113,7 @@ void MxCompositePresenter::EndAction() // FUNCTION: LEGO1 0x100b6760 MxLong MxCompositePresenter::Notify(MxParam& p_param) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); switch (((MxNotificationParam&) p_param).GetNotification()) { case c_notificationEndAction: diff --git a/LEGO1/omni/src/common/mxcore.cpp b/LEGO1/omni/src/common/mxcore.cpp index 1266a1cb..c07cc51a 100644 --- a/LEGO1/omni/src/common/mxcore.cpp +++ b/LEGO1/omni/src/common/mxcore.cpp @@ -1,12 +1,15 @@ #include "mxcore.h" -#include "define.h" +#include + +// GLOBAL: LEGO1 0x1010141c +MxU32 MxCore::g_nextCoreId = 0; // FUNCTION: LEGO1 0x100ae1a0 MxCore::MxCore() { - m_id = (MxU32) g_mxcoreCount[0]; - g_mxcoreCount[0]++; + m_id = g_nextCoreId++; + assert(g_nextCoreId); } // FUNCTION: LEGO1 0x100ae1e0 @@ -17,5 +20,6 @@ MxCore::~MxCore() // FUNCTION: LEGO1 0x100ae1f0 MxLong MxCore::Notify(MxParam& p_param) { + assert(0); return 0; } diff --git a/LEGO1/omni/src/common/mxmediamanager.cpp b/LEGO1/omni/src/common/mxmediamanager.cpp index 6a9d99c5..bd32c70b 100644 --- a/LEGO1/omni/src/common/mxmediamanager.cpp +++ b/LEGO1/omni/src/common/mxmediamanager.cpp @@ -1,7 +1,7 @@ #include "mxmediamanager.h" #include "decomp.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxomni.h" #include "mxpresenter.h" #include "mxticklemanager.h" @@ -33,7 +33,7 @@ MxResult MxMediaManager::Init() // FUNCTION: LEGO1 0x100b85e0 MxResult MxMediaManager::InitPresenters() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); this->m_presenters = new MxPresenterList; @@ -48,7 +48,7 @@ MxResult MxMediaManager::InitPresenters() // FUNCTION: LEGO1 0x100b8710 void MxMediaManager::Destroy() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); if (this->m_presenters) { delete this->m_presenters; @@ -60,7 +60,7 @@ void MxMediaManager::Destroy() // FUNCTION: LEGO1 0x100b8790 MxResult MxMediaManager::Tickle() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); MxPresenter* presenter; MxPresenterListCursor cursor(this->m_presenters); @@ -80,7 +80,7 @@ MxResult MxMediaManager::Tickle() // FUNCTION: LEGO1 0x100b88c0 void MxMediaManager::RegisterPresenter(MxPresenter& p_presenter) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); this->m_presenters->Append(&p_presenter); } @@ -88,7 +88,7 @@ void MxMediaManager::RegisterPresenter(MxPresenter& p_presenter) // FUNCTION: LEGO1 0x100b8980 void MxMediaManager::UnregisterPresenter(MxPresenter& p_presenter) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); MxPresenterListCursor cursor(this->m_presenters); if (cursor.Find(&p_presenter)) { @@ -99,7 +99,7 @@ void MxMediaManager::UnregisterPresenter(MxPresenter& p_presenter) // FUNCTION: LEGO1 0x100b8ac0 void MxMediaManager::StopPresenters() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); MxPresenter* presenter; MxPresenterListCursor cursor(this->m_presenters); diff --git a/LEGO1/omni/src/common/mxmediapresenter.cpp b/LEGO1/omni/src/common/mxmediapresenter.cpp index 5f162c71..fe43cca7 100644 --- a/LEGO1/omni/src/common/mxmediapresenter.cpp +++ b/LEGO1/omni/src/common/mxmediapresenter.cpp @@ -1,7 +1,7 @@ #include "mxmediapresenter.h" #include "mxactionnotificationparam.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxcompositepresenter.h" #include "mxmisc.h" #include "mxnotificationmanager.h" @@ -25,7 +25,7 @@ void MxMediaPresenter::Init() void MxMediaPresenter::Destroy(MxBool p_fromDestructor) { { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (m_currentChunk && m_subscriber) { m_subscriber->FreeDataChunk(m_currentChunk); @@ -101,7 +101,7 @@ MxStreamChunk* MxMediaPresenter::NextChunk() MxResult MxMediaPresenter::StartAction(MxStreamController* p_controller, MxDSAction* p_action) { MxResult result = FAILURE; - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (MxPresenter::StartAction(p_controller, p_action) == SUCCESS) { if (m_action->GetFlags() & MxDSAction::c_looping) { @@ -132,7 +132,7 @@ MxResult MxMediaPresenter::StartAction(MxStreamController* p_controller, MxDSAct // FUNCTION: LEGO1 0x100b5bc0 void MxMediaPresenter::EndAction() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (!m_action) { return; @@ -172,7 +172,7 @@ void MxMediaPresenter::EndAction() // FUNCTION: LEGO1 0x100b5d10 MxResult MxMediaPresenter::Tickle() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); CurrentChunk(); diff --git a/LEGO1/omni/src/common/mxpresenter.cpp b/LEGO1/omni/src/common/mxpresenter.cpp index 1c81764e..76cbd880 100644 --- a/LEGO1/omni/src/common/mxpresenter.cpp +++ b/LEGO1/omni/src/common/mxpresenter.cpp @@ -3,7 +3,7 @@ #include "decomp.h" #include "define.h" #include "mxactionnotificationparam.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxcompositepresenter.h" #include "mxdsanim.h" #include "mxdssound.h" @@ -34,7 +34,7 @@ void MxPresenter::Init() // FUNCTION: LEGO1 0x100b4d80 MxResult MxPresenter::StartAction(MxStreamController*, MxDSAction* p_action) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); this->m_action = p_action; @@ -55,7 +55,7 @@ void MxPresenter::EndAction() return; } - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); if (!this->m_compositePresenter) { #ifdef COMPAT_MODE @@ -79,7 +79,7 @@ void MxPresenter::EndAction() // FUNCTION: LEGO1 0x100b4fc0 void MxPresenter::ParseExtra() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxU16 extraLength; char* extraData; @@ -113,7 +113,7 @@ void MxPresenter::ParseExtra() void MxPresenter::SendToCompositePresenter(MxOmni* p_omni) { if (m_compositePresenter) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); #ifdef COMPAT_MODE { @@ -132,7 +132,7 @@ void MxPresenter::SendToCompositePresenter(MxOmni* p_omni) // FUNCTION: LEGO1 0x100b5200 MxResult MxPresenter::Tickle() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); switch (this->m_currentTickleState) { case e_ready: diff --git a/LEGO1/omni/src/common/mxutilities.cpp b/LEGO1/omni/src/common/mxutilities.cpp index 052ab57c..7030848c 100644 --- a/LEGO1/omni/src/common/mxutilities.cpp +++ b/LEGO1/omni/src/common/mxutilities.cpp @@ -9,6 +9,8 @@ #include "mxpresenterlist.h" #include "mxrect32.h" +#include + // GLOBAL: LEGO1 0x101020e8 void (*g_omniUserMessage)(const char*, int) = NULL; @@ -78,39 +80,37 @@ void MakeSourceName(char* p_output, const char* p_input) } // FUNCTION: LEGO1 0x100b7050 -MxBool KeyValueStringParse(char* p_outputValue, const char* p_key, const char* p_source) +MxBool KeyValueStringParse(char* p_output, const char* p_command, const char* p_string) { MxBool didMatch = FALSE; + assert(p_string); + assert(p_command); - MxS16 len = strlen(p_source); - char* temp = new char[len + 1]; - strcpy(temp, p_source); + MxS16 len = strlen(p_string); + char* string = new char[len + 1]; + assert(string); + strcpy(string, p_string); - char* token = strtok(temp, ", \t\r\n:"); - while (token) { + for (char* token = strtok(string, ", \t\r\n:"); token; token = strtok(NULL, ", \t\r\n:")) { len -= (strlen(token) + 1); - if (strcmpi(token, p_key) == 0) { - if (p_outputValue && len > 0) { - char* cur = &token[strlen(p_key)]; + if (strcmpi(token, p_command) == 0) { + if (p_output && len > 0) { + char* output = p_output; + char* cur = &token[strlen(p_command)]; cur++; - while (*cur != ',') { - if (*cur == ' ' || *cur == '\0' || *cur == '\t' || *cur == '\n' || *cur == '\r') { - break; - } - *p_outputValue++ = *cur++; + while (*cur != ',' && *cur != ' ' && *cur != '\0' && *cur != '\t' && *cur != '\n' && *cur != '\r') { + *output++ = *cur++; } - *p_outputValue = '\0'; + *output = '\0'; } didMatch = TRUE; break; } - - token = strtok(NULL, ", \t\r\n:"); } - delete[] temp; + delete[] string; return didMatch; } diff --git a/LEGO1/omni/src/event/mxeventpresenter.cpp b/LEGO1/omni/src/event/mxeventpresenter.cpp index 90d5ceee..70a3c6af 100644 --- a/LEGO1/omni/src/event/mxeventpresenter.cpp +++ b/LEGO1/omni/src/event/mxeventpresenter.cpp @@ -1,7 +1,7 @@ #include "mxeventpresenter.h" #include "decomp.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxeventmanager.h" #include "mxmisc.h" #include "mxvariabletable.h" @@ -90,7 +90,7 @@ void MxEventPresenter::StartingTickle() // FUNCTION: LEGO1 0x100c2ef0 MxResult MxEventPresenter::PutData() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (IsEnabled()) { if (m_currentTickleState >= e_streaming && diff --git a/LEGO1/omni/src/main/mxomni.cpp b/LEGO1/omni/src/main/mxomni.cpp index b85efed6..052099b1 100644 --- a/LEGO1/omni/src/main/mxomni.cpp +++ b/LEGO1/omni/src/main/mxomni.cpp @@ -2,7 +2,7 @@ #include "mxactionnotificationparam.h" #include "mxatom.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdsmultiaction.h" #include "mxeventmanager.h" #include "mxmisc.h" @@ -338,17 +338,17 @@ MxBool MxOmni::ActionSourceEquals(MxDSAction* p_action, const char* p_name) // FUNCTION: LEGO1 0x100b07f0 MxLong MxOmni::Notify(MxParam& p_param) { - MxAutoLocker lock(&this->m_criticalsection); + AUTOLOCK(m_criticalSection); if (((MxNotificationParam&) p_param).GetNotification() != c_notificationEndAction) { return 0; } - return HandleActionEnd(p_param); + return HandleEndAction(p_param); } // FUNCTION: LEGO1 0x100b0880 -MxLong MxOmni::HandleActionEnd(MxParam& p_param) +MxLong MxOmni::HandleEndAction(MxParam& p_param) { MxDSAction* action = ((MxEndActionNotificationParam&) p_param).GetAction(); MxStreamController* controller = Streamer()->GetOpenStream(action->GetAtomId().GetInternal()); diff --git a/LEGO1/omni/src/notify/mxnotificationmanager.cpp b/LEGO1/omni/src/notify/mxnotificationmanager.cpp index 48429dfc..21907d2c 100644 --- a/LEGO1/omni/src/notify/mxnotificationmanager.cpp +++ b/LEGO1/omni/src/notify/mxnotificationmanager.cpp @@ -2,7 +2,7 @@ #include "compat.h" #include "decomp.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxmisc.h" #include "mxparam.h" #include "mxticklemanager.h" @@ -36,7 +36,7 @@ MxNotificationManager::MxNotificationManager() : MxCore(), m_lock(), m_listenerI // FUNCTION: LEGO1 0x100ac450 MxNotificationManager::~MxNotificationManager() { - MxAutoLocker lock(&m_lock); + AUTOLOCK(m_lock); Tickle(); delete m_queue; m_queue = NULL; @@ -63,7 +63,7 @@ MxResult MxNotificationManager::Create(MxU32 p_frequencyMS, MxBool p_createThrea // FUNCTION: LEGO1 0x100ac6c0 MxResult MxNotificationManager::Send(MxCore* p_listener, MxNotificationParam* p_param) { - MxAutoLocker lock(&m_lock); + AUTOLOCK(m_lock); if (m_active == FALSE) { return FAILURE; @@ -94,7 +94,7 @@ MxResult MxNotificationManager::Tickle() } else { { - MxAutoLocker lock(&m_lock); + AUTOLOCK(m_lock); MxNotificationPtrList* temp1 = m_queue; MxNotificationPtrList* temp2 = m_sendList; m_queue = temp2; @@ -121,7 +121,7 @@ void MxNotificationManager::FlushPending(MxCore* p_listener) MxNotification* notif; { - MxAutoLocker lock(&m_lock); + AUTOLOCK(m_lock); // Find all notifications from, and addressed to, p_listener. if (m_sendList != NULL) { @@ -166,7 +166,7 @@ void MxNotificationManager::FlushPending(MxCore* p_listener) // FUNCTION: LEGO1 0x100acd20 void MxNotificationManager::Register(MxCore* p_listener) { - MxAutoLocker lock(&m_lock); + AUTOLOCK(m_lock); MxIdList::iterator it = find(m_listenerIds.begin(), m_listenerIds.end(), p_listener->GetId()); if (it != m_listenerIds.end()) { @@ -179,7 +179,7 @@ void MxNotificationManager::Register(MxCore* p_listener) // FUNCTION: LEGO1 0x100acdf0 void MxNotificationManager::Unregister(MxCore* p_listener) { - MxAutoLocker lock(&m_lock); + AUTOLOCK(m_lock); MxIdList::iterator it = find(m_listenerIds.begin(), m_listenerIds.end(), p_listener->GetId()); diff --git a/LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp b/LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp index 1ce82edc..69b11054 100644 --- a/LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp +++ b/LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp @@ -1,7 +1,7 @@ #include "mxdiskstreamcontroller.h" #include "mxactionnotificationparam.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdiskstreamprovider.h" #include "mxdsstreamingaction.h" #include "mxmisc.h" @@ -19,7 +19,7 @@ MxDiskStreamController::MxDiskStreamController() // FUNCTION: LEGO1 0x100c7530 MxDiskStreamController::~MxDiskStreamController() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); m_unk0xc4 = FALSE; m_unk0x70 = FALSE; @@ -67,7 +67,7 @@ MxDiskStreamController::~MxDiskStreamController() // FUNCTION: LEGO1 0x100c7790 MxResult MxDiskStreamController::Open(const char* p_filename) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); MxResult result = MxStreamController::Open(p_filename); if (result == SUCCESS) { @@ -99,7 +99,7 @@ MxResult MxDiskStreamController::VTable0x18(undefined4, undefined4) // FUNCTION: LEGO1 0x100c7890 MxResult MxDiskStreamController::FUN_100c7890(MxDSStreamingAction* p_action) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); if (p_action == NULL) { return FAILURE; } @@ -128,7 +128,7 @@ void MxDiskStreamController::FUN_100c7980() MxDSStreamingAction* action = NULL; { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); if (m_unk0x3c.size() && m_unk0x8c < m_provider->GetStreamBuffersNum()) { buffer = new MxDSBuffer(); @@ -161,7 +161,7 @@ void MxDiskStreamController::FUN_100c7980() // FUNCTION: LEGO1 0x100c7ac0 MxDSStreamingAction* MxDiskStreamController::VTable0x28() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); MxDSAction* oldAction; MxDSStreamingAction* result = NULL; MxU32 filesize = m_provider->GetFileSize(); @@ -182,7 +182,7 @@ MxDSStreamingAction* MxDiskStreamController::VTable0x28() // FUNCTION: LEGO1 0x100c7c00 MxResult MxDiskStreamController::VTable0x30(MxDSAction* p_action) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); MxResult result = MxStreamController::VTable0x30(p_action); MxDSStreamingAction* item; @@ -231,7 +231,7 @@ void MxDiskStreamController::FUN_100c7ce0(MxDSBuffer* p_buffer) // FUNCTION: LEGO1 0x100c7d10 MxResult MxDiskStreamController::FUN_100c7d10() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); MxDSStreamingAction* action = FUN_100c7db0(); if (!action) { @@ -250,7 +250,7 @@ MxResult MxDiskStreamController::FUN_100c7d10() // FUNCTION: LEGO1 0x100c7db0 MxDSStreamingAction* MxDiskStreamController::FUN_100c7db0() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); for (MxStreamListMxNextActionDataStart::iterator it = m_nextActionList.begin(); it != m_nextActionList.end(); it++) { @@ -276,7 +276,7 @@ MxDSStreamingAction* MxDiskStreamController::FUN_100c7db0() // FUNCTION: LEGO1 0x100c7f40 void MxDiskStreamController::FUN_100c7f40(MxDSStreamingAction* p_streamingaction) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); if (p_streamingaction) { m_list0x64.push_back(p_streamingaction); } @@ -285,7 +285,7 @@ void MxDiskStreamController::FUN_100c7f40(MxDSStreamingAction* p_streamingaction // FUNCTION: LEGO1 0x100c7ff0 MxResult MxDiskStreamController::VTable0x20(MxDSAction* p_action) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); MxDSStreamingAction* entry = (MxDSStreamingAction*) m_list0x80.Find(p_action, FALSE); // TODO: is this a seperate class? if (entry) { @@ -331,7 +331,7 @@ void MxDiskStreamController::FUN_100c8120(MxDSAction* p_action) // FUNCTION: LEGO1 0x100c8160 MxResult MxDiskStreamController::VTable0x24(MxDSAction* p_action) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); if (m_unk0x54.Find(p_action, FALSE) == NULL) { if (VTable0x30(p_action) == SUCCESS) { #ifdef COMPAT_MODE @@ -373,7 +373,7 @@ MxResult MxDiskStreamController::VTable0x24(MxDSAction* p_action) // FUNCTION: LEGO1 0x100c8360 MxResult MxDiskStreamController::FUN_100c8360(MxDSStreamingAction* p_action) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); MxDSBuffer* buffer = p_action->GetUnknowna0(); MxDSStreamingAction* action2 = (MxDSStreamingAction*) m_list0x90.Find(p_action, TRUE); buffer->FUN_100c6f80(p_action->GetUnknown94() - p_action->GetBufferOffset()); @@ -404,14 +404,14 @@ MxResult MxDiskStreamController::FUN_100c8360(MxDSStreamingAction* p_action) // FUNCTION: LEGO1 0x100c84a0 void MxDiskStreamController::InsertToList74(MxDSBuffer* p_buffer) { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); m_list0x74.push_back(p_buffer); } // FUNCTION: LEGO1 0x100c8540 void MxDiskStreamController::FUN_100c8540() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); for (list::iterator it = m_list0x74.begin(); it != m_list0x74.end();) { MxDSBuffer* buf = *it; if (buf->GetRefCount() == 0) { @@ -452,14 +452,14 @@ MxResult MxDiskStreamController::Tickle() // FUNCTION: LEGO1 0x100c8670 void MxDiskStreamController::FUN_100c8670(MxDSStreamingAction* p_streamingAction) { - MxAutoLocker lock(&this->m_critical9c); + AUTOLOCK(m_critical9c); m_list0xb8.push_back(p_streamingAction); } // FUNCTION: LEGO1 0x100c8720 void MxDiskStreamController::FUN_100c8720() { - MxAutoLocker lock(&this->m_critical9c); + AUTOLOCK(m_critical9c); MxDSStreamingAction* action; while (!m_list0xb8.empty()) { diff --git a/LEGO1/omni/src/stream/mxdiskstreamprovider.cpp b/LEGO1/omni/src/stream/mxdiskstreamprovider.cpp index 88f70c7d..d316912d 100644 --- a/LEGO1/omni/src/stream/mxdiskstreamprovider.cpp +++ b/LEGO1/omni/src/stream/mxdiskstreamprovider.cpp @@ -1,6 +1,6 @@ #include "mxdiskstreamprovider.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdiskstreamcontroller.h" #include "mxdsbuffer.h" #include "mxdsstreamingaction.h" @@ -52,7 +52,7 @@ MxDiskStreamProvider::~MxDiskStreamProvider() action = NULL; { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); m_list.PopFrontStreamingAction(action); } @@ -124,7 +124,7 @@ void MxDiskStreamProvider::VTable0x20(MxDSAction* p_action) action = NULL; { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); m_list.PopFrontStreamingAction(action); } @@ -142,7 +142,7 @@ void MxDiskStreamProvider::VTable0x20(MxDSAction* p_action) else { do { { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); action = (MxDSStreamingAction*) m_list.Find(p_action, TRUE); } @@ -199,7 +199,7 @@ MxResult MxDiskStreamProvider::FUN_100d1780(MxDSStreamingAction* p_action) } { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); m_list.push_back(p_action); } @@ -215,7 +215,7 @@ void MxDiskStreamProvider::PerformWork() MxDSStreamingAction* streamingAction = NULL; { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (!m_list.empty()) { streamingAction = (MxDSStreamingAction*) m_list.front(); @@ -230,7 +230,7 @@ void MxDiskStreamProvider::PerformWork() MxDSBuffer* buffer; { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (!m_list.PopFrontStreamingAction(streamingAction)) { goto done; diff --git a/LEGO1/omni/src/stream/mxdsbuffer.cpp b/LEGO1/omni/src/stream/mxdsbuffer.cpp index a42577c7..d3f075dd 100644 --- a/LEGO1/omni/src/stream/mxdsbuffer.cpp +++ b/LEGO1/omni/src/stream/mxdsbuffer.cpp @@ -14,7 +14,7 @@ DECOMP_SIZE_ASSERT(MxDSBuffer, 0x34); // FUNCTION: LEGO1 0x100c6470 MxDSBuffer::MxDSBuffer() { - m_refcount = 0; + m_referenceCount = 0; m_pBuffer = NULL; m_pIntoBuffer = NULL; m_pIntoBuffer2 = NULL; @@ -30,6 +30,8 @@ MxDSBuffer::MxDSBuffer() // FUNCTION: LEGO1 0x100c6530 MxDSBuffer::~MxDSBuffer() { + assert(m_referenceCount == 0); + if (m_pBuffer != NULL) { switch (m_mode) { case e_allocate: @@ -37,39 +39,12 @@ MxDSBuffer::~MxDSBuffer() delete[] m_pBuffer; break; - case e_chunk: { - MxU32 offset = m_writeOffset / 1024; - MxStreamer* streamer = Streamer(); + case e_chunk: + Streamer()->ReleaseMemoryBlock(m_pBuffer, m_writeOffset / 1024); + break; - switch (offset) { - case 0x40: { - MxU32 a = - (m_pBuffer - streamer->GetSubclass1().GetBuffer()) / (streamer->GetSubclass1().GetSize() << 10); - - MxU32 bit = 1 << ((MxU8) a & 0x1f); - MxU32 index = (a & ~0x18u) >> 3; - - if ((*(MxU32*) (&streamer->GetSubclass1().GetUnk08Ref()[index])) & bit) { - MxU32* ptr = (MxU32*) (&streamer->GetSubclass1().GetUnk08Ref()[index]); - *ptr = *ptr ^ bit; - } - break; - } - case 0x80: { - MxU32 a = - (m_pBuffer - streamer->GetSubclass2().GetBuffer()) / (streamer->GetSubclass2().GetSize() << 10); - - MxU32 bit = 1 << ((MxU8) a & 0x1f); - MxU32 index = (a & ~0x18u) >> 3; - - if ((*(MxU32*) (&streamer->GetSubclass2().GetUnk08Ref()[index])) & bit) { - MxU32* ptr = (MxU32*) (&streamer->GetSubclass2().GetUnk08Ref()[index]); - *ptr = *ptr ^ bit; - } - break; - } - } - } + case e_preallocated: + break; } } @@ -85,58 +60,21 @@ MxResult MxDSBuffer::AllocateBuffer(MxU32 p_bufferSize, Type p_mode) switch (p_mode) { case e_allocate: m_pBuffer = new MxU8[p_bufferSize]; + assert(m_pBuffer); // m_firstRiffChunk? break; - case e_chunk: { - MxStreamer* streamer = Streamer(); - - switch (p_bufferSize / 1024) { - case 0x40: { - for (MxU32 i = 0; i < 22; i++) { - if (((1 << (i & 0x1f)) & (*(MxU32*) &streamer->GetSubclass1().GetUnk08Ref()[(i & ~0x18u) >> 3])) == 0) { - MxU32* ptr = (MxU32*) &streamer->GetSubclass1().GetUnk08Ref()[(i & 0xffffffe7) >> 3]; - - *ptr = *ptr ^ 1 << (i & 0x1f); - - m_pBuffer = - (MxU8*) (streamer->GetSubclass1().GetSize() * i * 0x400 + streamer->GetSubclass1().GetBuffer()); - goto done; - } - } - - m_pBuffer = NULL; - break; - } - case 0x80: { - for (MxU32 i = 0; i < 2; i++) { - if (((1 << (i & 0x1f)) & (*(MxU32*) &streamer->GetSubclass2().GetUnk08Ref()[(i & ~0x18u) >> 3])) == 0) { - MxU32* ptr = (MxU32*) &streamer->GetSubclass2().GetUnk08Ref()[(i & 0xffffffe7) >> 3]; - - *ptr = *ptr ^ 1 << (i & 0x1f); - - m_pBuffer = - (MxU8*) (streamer->GetSubclass2().GetSize() * i * 0x400 + streamer->GetSubclass2().GetBuffer()); - goto done; - } - } - - m_pBuffer = NULL; - break; - } - default: - m_pBuffer = NULL; - } - } + case e_chunk: + m_pBuffer = Streamer()->GetMemoryBlock(p_bufferSize / 1024); + break; } -done: m_pIntoBuffer = m_pBuffer; m_pIntoBuffer2 = m_pBuffer; if (m_pBuffer != NULL) { - m_mode = p_mode; m_bytesRemaining = p_bufferSize; - m_writeOffset = p_bufferSize; + m_writeOffset = m_bytesRemaining; + m_mode = p_mode; result = SUCCESS; } @@ -444,8 +382,8 @@ MxU8* MxDSBuffer::SkipToData() // FUNCTION: LEGO1 0x100c6ec0 MxU8 MxDSBuffer::ReleaseRef(MxDSChunk*) { - if (m_refcount != 0) { - m_refcount--; + if (m_referenceCount != 0) { + m_referenceCount--; } return 0; } @@ -454,7 +392,7 @@ MxU8 MxDSBuffer::ReleaseRef(MxDSChunk*) void MxDSBuffer::AddRef(MxDSChunk* p_chunk) { if (p_chunk) { - m_refcount++; + m_referenceCount++; } } diff --git a/LEGO1/omni/src/stream/mxramstreamcontroller.cpp b/LEGO1/omni/src/stream/mxramstreamcontroller.cpp index b480255c..dea72610 100644 --- a/LEGO1/omni/src/stream/mxramstreamcontroller.cpp +++ b/LEGO1/omni/src/stream/mxramstreamcontroller.cpp @@ -1,6 +1,6 @@ #include "mxramstreamcontroller.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdsstreamingaction.h" #include "mxramstreamprovider.h" @@ -9,7 +9,7 @@ DECOMP_SIZE_ASSERT(MxRAMStreamController, 0x98); // FUNCTION: LEGO1 0x100c6110 MxResult MxRAMStreamController::Open(const char* p_filename) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (MxStreamController::Open(p_filename) != SUCCESS) { return FAILURE; } @@ -37,7 +37,7 @@ MxResult MxRAMStreamController::Open(const char* p_filename) // FUNCTION: LEGO1 0x100c6210 MxResult MxRAMStreamController::VTable0x20(MxDSAction* p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxS32 unk0x24 = 0; MxResult result = FAILURE; @@ -81,7 +81,7 @@ MxResult MxRAMStreamController::VTable0x24(MxDSAction* p_action) // FUNCTION: LEGO1 0x100c63c0 MxResult MxRAMStreamController::DeserializeObject(MxDSStreamingAction& p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxResult result; MxDSStreamingAction* value = NULL; diff --git a/LEGO1/omni/src/stream/mxstreamcontroller.cpp b/LEGO1/omni/src/stream/mxstreamcontroller.cpp index bcad399d..a94cd974 100644 --- a/LEGO1/omni/src/stream/mxstreamcontroller.cpp +++ b/LEGO1/omni/src/stream/mxstreamcontroller.cpp @@ -1,6 +1,6 @@ #include "mxstreamcontroller.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdsmultiaction.h" #include "mxdsstreamingaction.h" #include "mxmisc.h" @@ -42,7 +42,7 @@ MxStreamController::MxStreamController() // FUNCTION: LEGO1 0x100c1290 MxStreamController::~MxStreamController() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxDSSubscriber* subscriber; while (m_subscriberList.PopFront(subscriber)) { @@ -82,7 +82,7 @@ MxStreamController::~MxStreamController() MxResult MxStreamController::Open(const char* p_filename) { char sourceName[256]; - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MakeSourceName(sourceName, p_filename); this->m_atom = MxAtomId(sourceName, e_lowerCase2); @@ -104,7 +104,7 @@ void MxStreamController::RemoveSubscriber(MxDSSubscriber* p_subscriber) // FUNCTION: LEGO1 0x100c1690 MxResult MxStreamController::VTable0x20(MxDSAction* p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxResult result; MxU32 offset = 0; @@ -129,7 +129,7 @@ MxResult MxStreamController::VTable0x20(MxDSAction* p_action) // FUNCTION: LEGO1 0x100c1740 MxResult MxStreamController::VTable0x24(MxDSAction* p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); VTable0x30(p_action); m_action0x60 = m_unk0x54.Find(p_action, TRUE); if (m_action0x60 == NULL) { @@ -219,7 +219,7 @@ MxResult MxStreamController::FUN_100c1a00(MxDSAction* p_action, MxU32 p_offset) // FUNCTION: LEGO1 0x100c1c10 MxResult MxStreamController::VTable0x2c(MxDSAction* p_action, MxU32 p_bufferval) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (FUN_100c1a00(p_action, p_bufferval) != SUCCESS) { return FAILURE; } @@ -229,7 +229,7 @@ MxResult MxStreamController::VTable0x2c(MxDSAction* p_action, MxU32 p_bufferval) // FUNCTION: LEGO1 0x100c1ce0 MxResult MxStreamController::VTable0x30(MxDSAction* p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxResult result = FAILURE; MxDSAction* action = m_unk0x3c.Find(p_action, TRUE); if (action != NULL) { @@ -244,7 +244,7 @@ MxResult MxStreamController::VTable0x30(MxDSAction* p_action) // FUNCTION: LEGO1 0x100c1da0 MxResult MxStreamController::InsertActionToList54(MxDSAction* p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxDSAction* action = p_action->Clone(); if (action == NULL) { @@ -259,7 +259,7 @@ MxResult MxStreamController::InsertActionToList54(MxDSAction* p_action) // FUNCTION: LEGO1 0x100c1e70 MxPresenter* MxStreamController::FUN_100c1e70(MxDSAction& p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxPresenter* result = NULL; if (p_action.GetObjectId() != -1) { MxDSAction* action = m_unk0x3c.Find(&p_action, FALSE); @@ -274,7 +274,7 @@ MxPresenter* MxStreamController::FUN_100c1e70(MxDSAction& p_action) // FUNCTION: LEGO1 0x100c1f00 MxResult MxStreamController::FUN_100c1f00(MxDSAction* p_action) { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); MxU32 objectId = p_action->GetObjectId(); MxStreamChunk* chunk = new MxStreamChunk; diff --git a/LEGO1/omni/src/stream/mxstreamer.cpp b/LEGO1/omni/src/stream/mxstreamer.cpp index 1cede5a7..9b03fd47 100644 --- a/LEGO1/omni/src/stream/mxstreamer.cpp +++ b/LEGO1/omni/src/stream/mxstreamer.cpp @@ -8,6 +8,10 @@ #include DECOMP_SIZE_ASSERT(MxStreamer, 0x2c); +DECOMP_SIZE_ASSERT(MxMemoryPool64, 0x0c); +DECOMP_SIZE_ASSERT(MxMemoryPool128, 0x0c); +DECOMP_SIZE_ASSERT(MxBitset<22>, 0x04); +DECOMP_SIZE_ASSERT(MxBitset<2>, 0x04); // FUNCTION: LEGO1 0x100b8f00 MxStreamer::MxStreamer() @@ -18,17 +22,11 @@ MxStreamer::MxStreamer() // FUNCTION: LEGO1 0x100b9190 MxResult MxStreamer::Create() { - undefined* b = new undefined[m_subclass1.GetSize() * 0x5800]; - m_subclass1.SetBuffer(b); - if (b) { - b = new undefined[m_subclass2.GetSize() * 0x800]; - m_subclass2.SetBuffer(b); - if (b) { - return SUCCESS; - } + if (m_pool64.Allocate() || m_pool128.Allocate()) { + return FAILURE; } - return FAILURE; + return SUCCESS; } // FUNCTION: LEGO1 0x100b91d0 diff --git a/LEGO1/omni/src/system/mxautolocker.cpp b/LEGO1/omni/src/system/mxautolock.cpp similarity index 68% rename from LEGO1/omni/src/system/mxautolocker.cpp rename to LEGO1/omni/src/system/mxautolock.cpp index 3c5a2afb..56a5a977 100644 --- a/LEGO1/omni/src/system/mxautolocker.cpp +++ b/LEGO1/omni/src/system/mxautolock.cpp @@ -1,7 +1,7 @@ -#include "mxautolocker.h" +#include "mxautolock.h" // FUNCTION: LEGO1 0x100b8ed0 -MxAutoLocker::MxAutoLocker(MxCriticalSection* p_criticalSection) +MxAutoLock::MxAutoLock(MxCriticalSection* p_criticalSection) { this->m_criticalSection = p_criticalSection; if (this->m_criticalSection != 0) { @@ -10,7 +10,7 @@ MxAutoLocker::MxAutoLocker(MxCriticalSection* p_criticalSection) } // FUNCTION: LEGO1 0x100b8ef0 -MxAutoLocker::~MxAutoLocker() +MxAutoLock::~MxAutoLock() { if (this->m_criticalSection != 0) { this->m_criticalSection->Leave(); diff --git a/LEGO1/omni/src/video/mxdisplaysurface.cpp b/LEGO1/omni/src/video/mxdisplaysurface.cpp index c599b131..a4bd9947 100644 --- a/LEGO1/omni/src/video/mxdisplaysurface.cpp +++ b/LEGO1/omni/src/video/mxdisplaysurface.cpp @@ -701,11 +701,30 @@ LPDIRECTDRAWSURFACE MxDisplaySurface::VTable0x44( return surface; } -// STUB: LEGO1 0x100bbfb0 -LPDIRECTDRAWSURFACE MxDisplaySurface::FUN_100bbfb0(LPDIRECTDRAWSURFACE p_und) +// FUNCTION: LEGO1 0x100bbfb0 +LPDIRECTDRAWSURFACE MxDisplaySurface::CopySurface(LPDIRECTDRAWSURFACE p_src) { - // TODO - return NULL; + LPDIRECTDRAWSURFACE newSurface = NULL; + IDirectDraw* draw = MVideoManager()->GetDirectDraw(); + + DDSURFACEDESC ddsd; + memset(&ddsd, 0, sizeof(ddsd)); + ddsd.dwSize = sizeof(ddsd); + + p_src->GetSurfaceDesc(&ddsd); + + if (draw->CreateSurface(&ddsd, &newSurface, NULL) != DD_OK) { + return NULL; + } + + RECT rect = {0, 0, (LONG) ddsd.dwWidth, (LONG) ddsd.dwHeight}; + + if (newSurface->BltFast(0, 0, p_src, &rect, 16) != DD_OK) { + newSurface->Release(); + return NULL; + } + + return newSurface; } // FUNCTION: LEGO1 0x100bc070 diff --git a/LEGO1/omni/src/video/mxloopingsmkpresenter.cpp b/LEGO1/omni/src/video/mxloopingsmkpresenter.cpp index 9229afee..af73b59a 100644 --- a/LEGO1/omni/src/video/mxloopingsmkpresenter.cpp +++ b/LEGO1/omni/src/video/mxloopingsmkpresenter.cpp @@ -1,6 +1,6 @@ #include "mxloopingsmkpresenter.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdsmediaaction.h" DECOMP_SIZE_ASSERT(MxLoopingSmkPresenter, 0x724); @@ -122,7 +122,7 @@ void MxLoopingSmkPresenter::RepeatingTickle() // FUNCTION: LEGO1 0x100b4cd0 MxResult MxLoopingSmkPresenter::AddToManager() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); return MxSmkPresenter::AddToManager(); } diff --git a/LEGO1/omni/src/video/mxstillpresenter.cpp b/LEGO1/omni/src/video/mxstillpresenter.cpp index 4093dabe..3908aadb 100644 --- a/LEGO1/omni/src/video/mxstillpresenter.cpp +++ b/LEGO1/omni/src/video/mxstillpresenter.cpp @@ -231,7 +231,7 @@ MxStillPresenter* MxStillPresenter::Clone() if (presenter) { if (presenter->AddToManager() == SUCCESS) { - MxDSAction* action = presenter->GetAction()->Clone(); + MxDSAction* action = GetAction()->Clone(); if (action && presenter->StartAction(NULL, action) == SUCCESS) { presenter->SetBit0(GetBit0()); @@ -249,7 +249,7 @@ MxStillPresenter* MxStillPresenter::Clone() } if (m_unk0x58) { - presenter->m_unk0x58 = MxDisplaySurface::FUN_100bbfb0(m_unk0x58); + presenter->m_unk0x58 = MxDisplaySurface::CopySurface(m_unk0x58); } if (m_alpha) { diff --git a/LEGO1/omni/src/video/mxvideomanager.cpp b/LEGO1/omni/src/video/mxvideomanager.cpp index 8e414480..14b99a7e 100644 --- a/LEGO1/omni/src/video/mxvideomanager.cpp +++ b/LEGO1/omni/src/video/mxvideomanager.cpp @@ -1,6 +1,6 @@ #include "mxvideomanager.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxmisc.h" #include "mxomni.h" #include "mxpresenter.h" @@ -306,7 +306,7 @@ void MxVideoManager::InvalidateRect(MxRect32& p_rect) // FUNCTION: LEGO1 0x100bea90 MxResult MxVideoManager::Tickle() { - MxAutoLocker lock(&this->m_criticalSection); + AUTOLOCK(m_criticalSection); SortPresenterList(); diff --git a/LEGO1/omni/src/video/mxvideopresenter.cpp b/LEGO1/omni/src/video/mxvideopresenter.cpp index e1ab5837..41871b33 100644 --- a/LEGO1/omni/src/video/mxvideopresenter.cpp +++ b/LEGO1/omni/src/video/mxvideopresenter.cpp @@ -1,6 +1,6 @@ #include "mxvideopresenter.h" -#include "mxautolocker.h" +#include "mxautolock.h" #include "mxdsmediaaction.h" #include "mxmisc.h" #include "mxregioncursor.h" @@ -544,7 +544,7 @@ void MxVideoPresenter::EndAction() { if (m_action) { MxMediaPresenter::EndAction(); - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (m_bitmap) { MxLong height = m_bitmap->GetBmiHeightAbs(); @@ -562,7 +562,7 @@ void MxVideoPresenter::EndAction() // FUNCTION: LEGO1 0x100b3280 MxResult MxVideoPresenter::PutData() { - MxAutoLocker lock(&m_criticalSection); + AUTOLOCK(m_criticalSection); if (IsEnabled() && m_currentTickleState >= e_streaming && m_currentTickleState <= e_unk5) { PutFrame(); diff --git a/LEGO1/realtime/matrix.h b/LEGO1/realtime/matrix.h index 266b2fa6..6f96e477 100644 --- a/LEGO1/realtime/matrix.h +++ b/LEGO1/realtime/matrix.h @@ -104,6 +104,16 @@ class Matrix4 { // FUNCTION: LEGO1 0x10002530 virtual void Product(const Matrix4& p_a, const Matrix4& p_b) { Product(p_a.m_data, p_b.m_data); } // vtable+0x38 + // FUNCTION: LEGO1 0x100a0ff0 + inline void Scale(const float& p_x, const float& p_y, const float& p_z) + { + for (int i = 0; i < 4; i++) { + m_data[i][0] *= p_x; + m_data[i][1] *= p_y; + m_data[i][2] *= p_z; + } + } + inline virtual void ToQuaternion(Vector4& p_resultQuat); // vtable+0x40 inline virtual int FromQuaternion(const Vector4& p_vec); // vtable+0x44 diff --git a/LEGO1/realtime/vector.h b/LEGO1/realtime/vector.h index 4ca77620..ad1f53eb 100644 --- a/LEGO1/realtime/vector.h +++ b/LEGO1/realtime/vector.h @@ -291,8 +291,8 @@ class Vector4 : public Vector3 { // FUNCTION: LEGO1 0x10002ae0 virtual void SetMatrixProduct(Vector4* p_a, float* p_b) { SetMatrixProduct(p_a->m_data, p_b); } // vtable+0x88 - inline virtual int NormalizeQuaternion(); // vtable+90 - inline virtual void UnknownQuaternionOp(Vector4* p_a, Vector4* p_b); // vtable+94 + inline virtual int NormalizeQuaternion(); // vtable+0x90 + inline virtual void UnknownQuaternionOp(Vector4* p_a, Vector4* p_b); // vtable+0x94 // Vector3 overrides @@ -376,6 +376,8 @@ class Vector4 : public Vector3 { m_data[2] = *p_value; m_data[3] = *p_value; } // vtable+0x84 + + friend class Mx4DPointFloat; }; // Note close yet, included because I'm at least confident I know what operation diff --git a/tools/isledecomp/isledecomp/bin.py b/tools/isledecomp/isledecomp/bin.py index b103a143..514f4a8e 100644 --- a/tools/isledecomp/isledecomp/bin.py +++ b/tools/isledecomp/isledecomp/bin.py @@ -112,6 +112,7 @@ def __init__(self, filename: str, find_str: bool = False) -> None: self._relocated_addrs = set() self.imports = [] self.thunks = [] + self.exports: List[Tuple[int, str]] = [] def __enter__(self): logger.debug("Bin %s Enter", self.filename) @@ -137,6 +138,11 @@ def __enter__(self): (entry,) = struct.unpack(" Section: section = next( filter(lambda section: section.match_name(name), self.sections), diff --git a/tools/isledecomp/isledecomp/compare/asm/const.py b/tools/isledecomp/isledecomp/compare/asm/const.py new file mode 100644 index 00000000..7c715c0c --- /dev/null +++ b/tools/isledecomp/isledecomp/compare/asm/const.py @@ -0,0 +1,27 @@ +# Duplicates removed, according to the mnemonics capstone uses. +# e.g. je and jz are the same instruction. capstone uses je. +# See: /arch/X86/X86GenAsmWriter.inc in the capstone repo. +JUMP_MNEMONICS = { + "ja", + "jae", + "jb", + "jbe", + "jcxz", # unused? + "je", + "jecxz", + "jg", + "jge", + "jl", + "jle", + "jmp", + "jne", + "jno", + "jnp", + "jns", + "jo", + "jp", + "js", +} + +# Guaranteed to be a single operand. +SINGLE_OPERAND_INSTS = {"push", "call", *JUMP_MNEMONICS} diff --git a/tools/isledecomp/isledecomp/compare/asm/parse.py b/tools/isledecomp/isledecomp/compare/asm/parse.py index 35451fc6..c57f2df9 100644 --- a/tools/isledecomp/isledecomp/compare/asm/parse.py +++ b/tools/isledecomp/isledecomp/compare/asm/parse.py @@ -12,10 +12,15 @@ from collections import namedtuple from isledecomp.bin import InvalidVirtualAddressError from capstone import Cs, CS_ARCH_X86, CS_MODE_32 +from .const import JUMP_MNEMONICS, SINGLE_OPERAND_INSTS disassembler = Cs(CS_ARCH_X86, CS_MODE_32) -ptr_replace_regex = re.compile(r"(?P\w+) ptr \[(?P0x[0-9a-fA-F]+)\]") +ptr_replace_regex = re.compile(r"\[(0x[0-9a-f]+)\]") + +# For matching an immediate value on its own. +# Preceded by start-of-string (first operand) or comma-space (second operand) +immediate_replace_regex = re.compile(r"(?:^|, )(0x[0-9a-f]+)") DisasmLiteInst = namedtuple("DisasmLiteInst", "address, size, mnemonic, op_str") @@ -30,10 +35,6 @@ def from_hex(string: str) -> Optional[int]: return None -def get_float_size(size_str: str) -> int: - return 8 if size_str == "qword" else 4 - - class ParseAsm: def __init__( self, @@ -94,14 +95,41 @@ def replace(self, addr: int) -> str: self.replacements[addr] = placeholder return placeholder + def hex_replace_always(self, match: re.Match) -> str: + """If a pointer value was matched, always insert a placeholder""" + value = int(match.group(1), 16) + return match.group(0).replace(match.group(1), self.replace(value)) + + def hex_replace_relocated(self, match: re.Match) -> str: + """For replacing immediate value operands. We only want to + use the placeholder if we are certain that this is a valid address. + We can check the relocation table to find out.""" + value = int(match.group(1), 16) + if self.is_relocated(value): + return match.group(0).replace(match.group(1), self.replace(value)) + + return match.group(0) + + def hex_replace_float(self, match: re.Match) -> str: + """Special case for replacements on float instructions. + If the pointer is a float constant, read it from the binary.""" + value = int(match.group(1), 16) + + # If we can find a variable name for this pointer, use it. + placeholder = self.lookup(value) + + # Read what's under the pointer and show the decimal value. + if placeholder is None: + float_size = 8 if "qword" in match.string else 4 + placeholder = self.float_replace(value, float_size) + + # If we can't read the float, use a regular placeholder. + if placeholder is None: + placeholder = self.replace(value) + + return match.group(0).replace(match.group(1), placeholder) + def sanitize(self, inst: DisasmLiteInst) -> Tuple[str, str]: - if len(inst.op_str) == 0: - # Nothing to sanitize - return (inst.mnemonic, "") - - if "0x" not in inst.op_str: - return (inst.mnemonic, inst.op_str) - # For jumps or calls, if the entire op_str is a hex number, the value # is a relative offset. # Otherwise (i.e. it looks like `dword ptr [address]`) it is an @@ -109,12 +137,21 @@ def sanitize(self, inst: DisasmLiteInst) -> Tuple[str, str]: # Providing the starting address of the function to capstone.disasm has # automatically resolved relative offsets to an absolute address. # We will have to undo this for some of the jumps or they will not match. - op_str_address = from_hex(inst.op_str) - if op_str_address is not None: + if ( + inst.mnemonic in SINGLE_OPERAND_INSTS + and (op_str_address := from_hex(inst.op_str)) is not None + ): if inst.mnemonic == "call": return (inst.mnemonic, self.replace(op_str_address)) + if inst.mnemonic == "push": + if self.is_relocated(op_str_address): + return (inst.mnemonic, self.replace(op_str_address)) + + # To avoid falling into jump handling + return (inst.mnemonic, inst.op_str) + if inst.mnemonic == "jmp": # The unwind section contains JMPs to other functions. # If we have a name for this address, use it. If not, @@ -124,70 +161,19 @@ def sanitize(self, inst: DisasmLiteInst) -> Tuple[str, str]: if potential_name is not None: return (inst.mnemonic, potential_name) - if inst.mnemonic.startswith("j"): - # i.e. if this is any jump - # Show the jump offset rather than the absolute address - jump_displacement = op_str_address - (inst.address + inst.size) - return (inst.mnemonic, hex(jump_displacement)) - - def filter_out_ptr(match): - """Helper for re.sub, see below""" - offset = from_hex(match.group("addr")) - - if offset is not None: - # We assume this is always an address to replace - placeholder = self.replace(offset) - return f'{match.group("data_size")} ptr [{placeholder}]' - - # Strict regex should ensure we can read the hex number. - # But just in case: return the string with no changes - return match.group(0) - - def float_ptr_replace(match): - offset = from_hex(match.group("addr")) - - if offset is not None: - # If we can find a variable name for this pointer, use it. - placeholder = self.lookup(offset) - - # Read what's under the pointer and show the decimal value. - if placeholder is None: - placeholder = self.float_replace( - offset, get_float_size(match.group("data_size")) - ) - - # If we can't read the float, use a regular placeholder. - if placeholder is None: - placeholder = self.replace(offset) - - return f'{match.group("data_size")} ptr [{placeholder}]' - - # Strict regex should ensure we can read the hex number. - # But just in case: return the string with no changes - return match.group(0) + # Else: this is any jump + # Show the jump offset rather than the absolute address + jump_displacement = op_str_address - (inst.address + inst.size) + return (inst.mnemonic, hex(jump_displacement)) if inst.mnemonic.startswith("f"): # If floating point instruction - op_str = ptr_replace_regex.sub(float_ptr_replace, inst.op_str) + op_str = ptr_replace_regex.sub(self.hex_replace_float, inst.op_str) else: - op_str = ptr_replace_regex.sub(filter_out_ptr, inst.op_str) + op_str = ptr_replace_regex.sub(self.hex_replace_always, inst.op_str) - def replace_immediate(chunk: str) -> str: - if (inttest := from_hex(chunk)) is not None: - # If this value is a virtual address, it is referenced absolutely, - # which means it must be in the relocation table. - if self.is_relocated(inttest): - return self.replace(inttest) - - return chunk - - # Performance hack: - # Skip this step if there is nothing left to consider replacing. - if "0x" in op_str: - # Replace immediate values with name or placeholder (where appropriate) - op_str = ", ".join(map(replace_immediate, op_str.split(", "))) - - return inst.mnemonic, op_str + op_str = immediate_replace_regex.sub(self.hex_replace_relocated, op_str) + return (inst.mnemonic, op_str) def parse_asm(self, data: bytes, start_addr: Optional[int] = 0) -> List[str]: asm = [] @@ -196,7 +182,22 @@ def parse_asm(self, data: bytes, start_addr: Optional[int] = 0) -> List[str]: # Use heuristics to disregard some differences that aren't representative # of the accuracy of a function (e.g. global offsets) inst = DisasmLiteInst(*raw_inst) - result = self.sanitize(inst) + + # If there is no pointer or immediate value in the op_str, + # there is nothing to sanitize. + # This leaves us with cases where a small immediate value or + # small displacement (this.member or vtable calls) appears. + # If we assume that instructions we want to sanitize need to be 5 + # bytes -- 1 for the opcode and 4 for the address -- exclude cases + # where the hex value could not be an address. + # The exception is jumps which are as small as 2 bytes + # but are still useful to sanitize. + if "0x" in inst.op_str and ( + inst.mnemonic in JUMP_MNEMONICS or inst.size > 4 + ): + result = self.sanitize(inst) + else: + result = (inst.mnemonic, inst.op_str) # mnemonic + " " + op_str asm.append((hex(inst.address), " ".join(result))) diff --git a/tools/isledecomp/isledecomp/compare/core.py b/tools/isledecomp/isledecomp/compare/core.py index 53ba3fa0..3d2246e4 100644 --- a/tools/isledecomp/isledecomp/compare/core.py +++ b/tools/isledecomp/isledecomp/compare/core.py @@ -85,6 +85,7 @@ def __init__( self._load_markers() self._find_original_strings() self._match_thunks() + self._match_exports() def _load_cvdump(self): logger.info("Parsing %s ...", self.pdb_file) @@ -158,20 +159,19 @@ def _load_cvdump(self): addr, sym.node_type, sym.name(), sym.decorated_name, sym.size() ) - for lineref in cv.lines: - addr = self.recomp_bin.get_abs_addr(lineref.section, lineref.offset) - self._lines_db.add_line(lineref.filename, lineref.line_no, addr) + for (section, offset), (filename, line_no) in res.verified_lines.items(): + addr = self.recomp_bin.get_abs_addr(section, offset) + self._lines_db.add_line(filename, line_no, addr) # The _entry symbol is referenced in the PE header so we get this match for free. self._db.set_function_pair(self.orig_bin.entry, self.recomp_bin.entry) def _load_markers(self): - # Guess at module name from PDB file name - # reccmp checks the original binary filename; we could use this too - (module, _) = os.path.splitext(os.path.basename(self.pdb_file)) + # Assume module name is the base filename of the original binary. + (module, _) = os.path.splitext(os.path.basename(self.orig_bin.filename)) codefiles = list(walk_source_dir(self.code_dir)) - codebase = DecompCodebase(codefiles, module) + codebase = DecompCodebase(codefiles, module.upper()) # Match lineref functions first because this is a guaranteed match. # If we have two functions that share the same name, and one is @@ -274,6 +274,17 @@ def _match_thunks(self): # function in the first place. self._db.skip_compare(thunk_from_orig) + def _match_exports(self): + # invert for name lookup + orig_exports = {y: x for (x, y) in self.orig_bin.exports} + + for recomp_addr, export_name in self.recomp_bin.exports: + orig_addr = orig_exports.get(export_name) + if orig_addr is not None and self._db.set_pair_tentative( + orig_addr, recomp_addr + ): + logger.debug("Matched export %s", repr(export_name)) + def _compare_function(self, match: MatchInfo) -> DiffReport: orig_raw = self.orig_bin.read(match.orig_addr, match.size) recomp_raw = self.recomp_bin.read(match.recomp_addr, match.size) diff --git a/tools/isledecomp/isledecomp/compare/db.py b/tools/isledecomp/isledecomp/compare/db.py index 7e0546b8..54ae8081 100644 --- a/tools/isledecomp/isledecomp/compare/db.py +++ b/tools/isledecomp/isledecomp/compare/db.py @@ -86,7 +86,7 @@ def set_recomp_symbol( ): # Ignore collisions here. The same recomp address can have # multiple names (e.g. _strlwr and __strlwr) - if self.recomp_used(addr): + if self._recomp_used(addr): return compare_value = compare_type.value if compare_type is not None else None @@ -166,18 +166,18 @@ def get_matches_by_type(self, compare_type: SymbolType) -> List[MatchInfo]: return cur.fetchall() - def orig_used(self, addr: int) -> bool: + def _orig_used(self, addr: int) -> bool: cur = self._db.execute("SELECT 1 FROM symbols WHERE orig_addr = ?", (addr,)) return cur.fetchone() is not None - def recomp_used(self, addr: int) -> bool: + def _recomp_used(self, addr: int) -> bool: cur = self._db.execute("SELECT 1 FROM symbols WHERE recomp_addr = ?", (addr,)) return cur.fetchone() is not None def set_pair( self, orig: int, recomp: int, compare_type: Optional[SymbolType] = None ) -> bool: - if self.orig_used(orig): + if self._orig_used(orig): logger.error("Original address %s not unique!", hex(orig)) return False @@ -189,6 +189,32 @@ def set_pair( return cur.rowcount > 0 + def set_pair_tentative( + self, orig: int, recomp: int, compare_type: Optional[SymbolType] = None + ) -> bool: + """Declare a match for the original and recomp addresses given, but only if: + 1. The original address is not used elsewhere (as with set_pair) + 2. The recomp address has not already been matched + If the compare_type is given, update this also, but only if NULL in the db. + + The purpose here is to set matches found via some automated analysis + but to not overwrite a match provided by the human operator.""" + if self._orig_used(orig): + # Probable and expected situation. Just ignore it. + return False + + compare_value = compare_type.value if compare_type is not None else None + + cur = self._db.execute( + """UPDATE `symbols` + SET orig_addr = ?, compare_type = coalesce(compare_type, ?) + WHERE recomp_addr = ? + AND orig_addr IS NULL""", + (orig, compare_value, recomp), + ) + + return cur.rowcount > 0 + def set_function_pair(self, orig: int, recomp: int) -> bool: """For lineref match or _entry""" return self.set_pair(orig, recomp, SymbolType.FUNCTION) diff --git a/tools/isledecomp/isledecomp/cvdump/analysis.py b/tools/isledecomp/isledecomp/cvdump/analysis.py index d3f8bd27..4ef654c5 100644 --- a/tools/isledecomp/isledecomp/cvdump/analysis.py +++ b/tools/isledecomp/isledecomp/cvdump/analysis.py @@ -1,5 +1,5 @@ """For collating the results from parsing cvdump.exe into a more directly useful format.""" -from typing import List, Optional +from typing import Dict, List, Tuple, Optional from isledecomp.types import SymbolType from .parser import CvdumpParser from .demangler import demangle_string_const, demangle_vtable @@ -81,6 +81,7 @@ class CvdumpAnalysis: These can then be analyzed by a downstream tool.""" nodes = List[CvdumpNode] + verified_lines = Dict[Tuple[str, str], Tuple[str, str]] def __init__(self, parser: CvdumpParser): """Read in as much information as we have from the parser. @@ -126,13 +127,21 @@ def __init__(self, parser: CvdumpParser): # No big deal if we don't have complete type information. pass - for lin in parser.lines: - key = (lin.section, lin.offset) + for key, _ in parser.lines.items(): # Here we only set if the section:offset already exists # because our values include offsets inside of the function. if key in node_dict: node_dict[key].node_type = SymbolType.FUNCTION + # The LINES section contains every code line in the file, naturally. + # There isn't an obvious separation between functions, so we have to + # read everything. However, any function that would be in LINES + # has to be somewhere else in the PDB (probably PUBLICS). + # Isolate the lines that we actually care about for matching. + self.verified_lines = { + key: value for (key, value) in parser.lines.items() if key in node_dict + } + for sym in parser.symbols: key = (sym.section, sym.offset) if key not in node_dict: diff --git a/tools/isledecomp/isledecomp/cvdump/parser.py b/tools/isledecomp/isledecomp/cvdump/parser.py index 27554eda..1b1eb3fd 100644 --- a/tools/isledecomp/isledecomp/cvdump/parser.py +++ b/tools/isledecomp/isledecomp/cvdump/parser.py @@ -4,7 +4,7 @@ from .types import CvdumpTypesParser # e.g. `*** PUBLICS` -_section_change_regex = re.compile(r"^\*\*\* (?P
[A-Z/ ]+)$") +_section_change_regex = re.compile(r"\*\*\* (?P
[A-Z/ ]{2,})") # e.g. ` 27 00034EC0 28 00034EE2 29 00034EE7 30 00034EF4` _line_addr_pairs_findall = re.compile(r"\s+(?P\d+) (?P[A-F0-9]{8})") @@ -70,7 +70,7 @@ def __init__(self) -> None: self._section: str = "" self._lines_function: Tuple[str, int] = ("", 0) - self.lines = [] + self.lines = {} self.publics = [] self.symbols = [] self.sizerefs = [] @@ -95,14 +95,8 @@ def _lines_section(self, line: str): # Match any pairs as we find them for line_no, offset in _line_addr_pairs_findall.findall(line): - self.lines.append( - LinesEntry( - filename=self._lines_function[0], - line_no=int(line_no), - section=self._lines_function[1], - offset=int(offset, 16), - ) - ) + key = (self._lines_function[1], int(offset, 16)) + self.lines[key] = (self._lines_function[0], int(line_no)) def _publics_section(self, line: str): """Match each line from PUBLICS and pull out the symbol information. @@ -175,23 +169,22 @@ def _modules_section(self, line: str): ) def read_line(self, line: str): - # Blank lines are there to help the reader; they have no context significance - if line.strip() == "": - return - if (match := _section_change_regex.match(line)) is not None: self._section = match.group(1) return - if self._section == "LINES": + if self._section == "TYPES": + self.types.read_line(line) + + elif self._section == "SYMBOLS": + self._symbols_section(line) + + elif self._section == "LINES": self._lines_section(line) elif self._section == "PUBLICS": self._publics_section(line) - elif self._section == "SYMBOLS": - self._symbols_section(line) - elif self._section == "SECTION CONTRIBUTIONS": self._section_contributions(line) @@ -201,9 +194,6 @@ def read_line(self, line: str): elif self._section == "MODULES": self._modules_section(line) - elif self._section == "TYPES": - self.types.read_line(line) - def read_lines(self, lines: Iterable[str]): for line in lines: self.read_line(line) diff --git a/tools/isledecomp/isledecomp/cvdump/runner.py b/tools/isledecomp/isledecomp/cvdump/runner.py index 33e2d98d..9463acfa 100644 --- a/tools/isledecomp/isledecomp/cvdump/runner.py +++ b/tools/isledecomp/isledecomp/cvdump/runner.py @@ -1,3 +1,4 @@ +import io from os import name as os_name from enum import Enum from typing import List @@ -71,8 +72,12 @@ def cmd_line(self) -> List[str]: return ["wine", cvdump_exe, *flags, winepath_unix_to_win(self._pdb)] def run(self) -> CvdumpParser: - p = CvdumpParser() + parser = CvdumpParser() call = self.cmd_line() - lines = subprocess.check_output(call).decode("utf-8").split("\r\n") - p.read_lines(lines) - return p + with subprocess.Popen(call, stdout=subprocess.PIPE) as proc: + for line in io.TextIOWrapper(proc.stdout, encoding="utf-8"): + # Blank lines are there to help the reader; they have no context significance + if line != "\n": + parser.read_line(line) + + return parser diff --git a/tools/isledecomp/isledecomp/cvdump/types.py b/tools/isledecomp/isledecomp/cvdump/types.py index ed5a38b8..87ae4b6e 100644 --- a/tools/isledecomp/isledecomp/cvdump/types.py +++ b/tools/isledecomp/isledecomp/cvdump/types.py @@ -56,11 +56,11 @@ def normalize_type_id(key: str) -> str: If key begins with "T_" it is a built-in type. Else it is a hex string. We prefer lower case letters and no leading zeroes. (UDT identifier pads to 8 characters.)""" - if key.startswith("T_"): - # Remove numeric value for "T_" type. We don't use this. - return key[: key.index("(")] if "(" in key else key + if key[0] == "0": + return f"0x{key[-4:].lower()}" - return hex(int(key, 16)).lower() + # Remove numeric value for "T_" type. We don't use this. + return key.partition("(")[0] def scalar_type_pointer(type_name: str) -> bool: @@ -203,8 +203,18 @@ class CvdumpTypesParser: # LF_MODIFIER, type being modified MODIFIES_RE = re.compile(r".*modifies type (?P.*)$") + MODES_OF_INTEREST = { + "LF_ARRAY", + "LF_CLASS", + "LF_ENUM", + "LF_FIELDLIST", + "LF_MODIFIER", + "LF_POINTER", + "LF_STRUCTURE", + } + def __init__(self) -> None: - self.mode = "" + self.mode: Optional[str] = None self.last_key = "" self.keys = {} @@ -370,13 +380,19 @@ def get_format_string(self, type_key: str) -> str: def read_line(self, line: str): if (match := self.INDEX_RE.match(line)) is not None: - self.last_key = normalize_type_id(match.group("key")) - self.mode = match.group("type") - self._new_type() + type_ = match.group(2) + if type_ not in self.MODES_OF_INTEREST: + self.mode = None + return - # We don't need to read anything else from here (for now) - if self.mode in ("LF_ENUM", "LF_POINTER"): - self._set("size", 4) + # Don't need to normalize, it's already in the format we want + self.last_key = match.group(1) + self.mode = type_ + self._new_type() + return + + if self.mode is None: + return if self.mode == "LF_MODIFIER": if (match := self.MODIFIES_RE.match(line)) is not None: @@ -385,14 +401,14 @@ def read_line(self, line: str): self._set("is_forward_ref", True) self._set("modifies", normalize_type_id(match.group("type"))) - if self.mode == "LF_ARRAY": + elif self.mode == "LF_ARRAY": if (match := self.ARRAY_ELEMENT_RE.match(line)) is not None: self._set("array_type", normalize_type_id(match.group("type"))) - if (match := self.ARRAY_LENGTH_RE.match(line)) is not None: + elif (match := self.ARRAY_LENGTH_RE.match(line)) is not None: self._set("size", int(match.group("length"))) - if self.mode == "LF_FIELDLIST": + elif self.mode == "LF_FIELDLIST": # If this class has a vtable, create a mock member at offset 0 if (match := self.VTABLE_RE.match(line)) is not None: # For our purposes, any pointer type will do @@ -400,20 +416,20 @@ def read_line(self, line: str): self._set_member_name("vftable") # Superclass is set here in the fieldlist rather than in LF_CLASS - if (match := self.SUPERCLASS_RE.match(line)) is not None: + elif (match := self.SUPERCLASS_RE.match(line)) is not None: self._set("super", normalize_type_id(match.group("type"))) # Member offset and type given on the first of two lines. - if (match := self.LIST_RE.match(line)) is not None: + elif (match := self.LIST_RE.match(line)) is not None: self._add_member( int(match.group("offset")), normalize_type_id(match.group("type")) ) # Name of the member read on the second of two lines. - if (match := self.MEMBER_RE.match(line)) is not None: + elif (match := self.MEMBER_RE.match(line)) is not None: self._set_member_name(match.group("name")) - if self.mode in ("LF_STRUCTURE", "LF_CLASS"): + else: # LF_CLASS or LF_STRUCTURE # Match the reference to the associated LF_FIELDLIST if (match := self.CLASS_FIELD_RE.match(line)) is not None: if match.group("field_type") == "0x0000": @@ -427,7 +443,7 @@ def read_line(self, line: str): # Last line has the vital information. # If this is a FORWARD REF, we need to follow the UDT pointer # to get the actual class details. - if (match := self.CLASS_NAME_RE.match(line)) is not None: + elif (match := self.CLASS_NAME_RE.match(line)) is not None: self._set("name", match.group("name")) self._set("udt", normalize_type_id(match.group("udt"))) self._set("size", int(match.group("size"))) diff --git a/tools/isledecomp/tests/test_islebin.py b/tools/isledecomp/tests/test_islebin.py index ffb3c494..14fb85b4 100644 --- a/tools/isledecomp/tests/test_islebin.py +++ b/tools/isledecomp/tests/test_islebin.py @@ -144,3 +144,9 @@ def test_imports(import_ref: Tuple[str, str, int], binfile: IsleBin): @pytest.mark.parametrize("thunk_ref", THUNKS) def test_thunks(thunk_ref: Tuple[int, int], binfile: IsleBin): assert thunk_ref in binfile.thunks + + +def test_exports(binfile: IsleBin): + assert len(binfile.exports) == 130 + assert (0x1003BFB0, b"??0LegoBackgroundColor@@QAE@PBD0@Z") in binfile.exports + assert (0x10091EE0, b"_DllMain@12") in binfile.exports diff --git a/tools/ncc/skip.yml b/tools/ncc/skip.yml index f6d2de8e..b33cec77 100644 --- a/tools/ncc/skip.yml +++ b/tools/ncc/skip.yml @@ -15,4 +15,9 @@ p_HELDesc: 'Allow this variable name' e_RAMStream: 'Allow this enum constant' p_milliseconds: 'Probably a bug with function call' m_increaseAmount: "Can't currently detect member in union" -m_increaseFactor: "Can't currently detect member in union" \ No newline at end of file +m_increaseFactor: "Can't currently detect member in union" +delta_rad: "Allow original naming from 1996" +delta_pos: "Allow original naming from 1996" +rot_mat: "Allow original naming from 1996" +new_pos: "Allow original naming from 1996" +new_dir: "Allow original naming from 1996"