Merge branch 'master' into dong

This commit is contained in:
Christian Semmler 2024-02-04 09:53:14 -05:00
commit 2e70d642d7
346 changed files with 5840 additions and 2444 deletions

6
.clang-tidy Normal file
View File

@ -0,0 +1,6 @@
Checks: >
-*,
readability-braces-around-statements,
modernize-use-override
WarningsAsErrors: '-*,readability-braces-around-statements,modernize-use-override'
HeaderFilterRegex: ".*"

View File

@ -14,18 +14,20 @@ jobs:
matrix: matrix:
toolchain: toolchain:
- { name: 'MSVC', shell: 'sh', setup-cmake: true, setup-ninja: true, setup-msvc: true } - { name: 'MSVC', shell: 'sh', setup-cmake: true, setup-ninja: true, setup-msvc: true }
- { name: 'msys2 mingw32', shell: 'msys2 {0}', setup-msys2: true } - { name: 'msys2 mingw32', shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686, clang-tidy: true, werror: true }
- { name: 'msys2 clang32', shell: 'msys2 {0}', msystem: clang32, msys-env: mingw-w64-clang-i686, clang-tidy: true, werror: true, no-dx5-libs: true }
steps: steps:
- name: Set up MSYS2 - name: Set up MSYS2
if: matrix.toolchain.setup-msys2 if: ${{ !!matrix.toolchain.msystem }}
uses: msys2/setup-msys2@v2 uses: msys2/setup-msys2@v2
with: with:
msystem: mingw32 msystem: ${{ matrix.toolchain.msystem }}
install: >- install: >-
mingw-w64-i686-cc ${{ matrix.toolchain.msys-env }}-cc
mingw-w64-i686-cmake ${{ matrix.toolchain.msys-env }}-cmake
mingw-w64-i686-ninja ${{ matrix.toolchain.msys-env }}-ninja
${{ matrix.toolchain.msys-env }}-clang-tools-extra
- name: Setup cmake - name: Setup cmake
if: matrix.toolchain.setup-cmake if: matrix.toolchain.setup-cmake
@ -45,8 +47,13 @@ jobs:
- name: Build - name: Build
run: | run: |
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -GNinja -Werror=dev cmake -S . -B build -GNinja \
cmake --build build -DCMAKE_BUILD_TYPE=Debug \
-DISLE_USE_DX5_LIBS=${{ !matrix.toolchain.no-dx5-libs }} \
-DENABLE_CLANG_TIDY=${{ !!matrix.toolchain.clang-tidy }} \
-DISLE_WERROR=${{ !!matrix.toolchain.werror }} \
-Werror=dev
cmake --build build -- -k0
build: build:
name: 'MSVC 4.20' name: 'MSVC 4.20'

View File

@ -14,10 +14,9 @@ jobs:
run: | run: |
find LEGO1 ISLE -iname '*.h' -o -iname '*.cpp' | xargs \ find LEGO1 ISLE -iname '*.h' -o -iname '*.cpp' | xargs \
pipx run "clang-format>=17,<18" \ pipx run "clang-format>=17,<18" \
--Werror \
--dry-run \
--style=file \ --style=file \
-i -i
git diff --exit-code
python-format: python-format:
name: 'Python' name: 'Python'

View File

@ -2,6 +2,18 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
project(isle CXX) project(isle CXX)
include(CheckCXXSourceCompiles)
include(CMakeDependentOption)
include(CMakePushCheckState)
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
option(ENABLE_CLANG_TIDY "Enable clang-tidy")
if (ENABLE_CLANG_TIDY)
find_program(CLANG_TIDY_BIN NAMES "clang-tidy")
set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY_BIN}")
set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_BIN}")
endif()
math(EXPR bits "8 * ${CMAKE_SIZEOF_VOID_P}") math(EXPR bits "8 * ${CMAKE_SIZEOF_VOID_P}")
message(STATUS "Building ${bits}-bit LEGO Island") message(STATUS "Building ${bits}-bit LEGO Island")
if (NOT bits EQUAL 32) if (NOT bits EQUAL 32)
@ -21,15 +33,44 @@ macro(register_lego1_target __target)
list(APPEND lego1_targets ${__target}) list(APPEND lego1_targets ${__target})
endmacro() endmacro()
function(add_cxx_warning WARNING)
if(ISLE_WERROR)
set(compiler_option "-Werror=${WARNING}")
else()
set(compiler_option "-W${WARNING}")
endif()
string(MAKE_C_IDENTIFIER "COMPILER_SUPPORTS${compiler_option}" varname)
cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_FLAGS "${compiler_option} ")
if(MSVC)
string(APPEND CMAKE_REQUIRED_FLAGS "/WX")
else()
string(APPEND CMAKE_REQUIRED_FLAGS "-Werror")
endif()
check_cxx_source_compiles("int main() { return 0; }" ${varname})
cmake_pop_check_state()
if(${varname})
add_compile_options(${compiler_option})
endif()
endfunction()
message(STATUS "MSVC for decompilation: ${MSVC_FOR_DECOMP}") message(STATUS "MSVC for decompilation: ${MSVC_FOR_DECOMP}")
option(ISLE_WERROR "Treat warnings as errors" OFF)
option(ISLE_BUILD_APP "Build ISLE.EXE application" ON) option(ISLE_BUILD_APP "Build ISLE.EXE application" ON)
option(ISLE_USE_SMARTHEAP "Build with SmartHeap" ${MSVC_FOR_DECOMP}) option(ISLE_USE_SMARTHEAP "Build with SmartHeap" ${MSVC_FOR_DECOMP})
option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" ON) option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" ON)
cmake_dependent_option(ISLE_USE_DX5_LIBS "Build with internal DirectX 5 SDK Libraries" ON ISLE_USE_DX5 OFF)
add_cxx_warning(parentheses)
add_library(DirectX5::DirectX5 INTERFACE IMPORTED) add_library(DirectX5::DirectX5 INTERFACE IMPORTED)
target_include_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc") target_include_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
target_link_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib") if(ISLE_USE_DX5_LIBS)
target_link_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
endif()
add_library(Smacker::Smacker STATIC IMPORTED) add_library(Smacker::Smacker STATIC IMPORTED)
set_property(TARGET Smacker::Smacker PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/3rdparty/smacker/smack.lib") set_property(TARGET Smacker::Smacker PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/3rdparty/smacker/smack.lib")
@ -110,7 +151,7 @@ add_library(misc STATIC
) )
register_lego1_target(misc) register_lego1_target(misc)
set_property(TARGET misc PROPERTY ARCHIVE_OUTPUT_NAME "misc$<$<CONFIG:Debug>:d>") set_property(TARGET misc PROPERTY ARCHIVE_OUTPUT_NAME "misc$<$<CONFIG:Debug>:d>")
target_include_directories(misc PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/util") target_include_directories(misc PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/LEGO1/realtime" "${CMAKE_SOURCE_DIR}/util")
target_link_libraries(misc PRIVATE) target_link_libraries(misc PRIVATE)
add_library(3dmanager STATIC add_library(3dmanager STATIC
@ -208,7 +249,7 @@ add_library(omni STATIC
) )
register_lego1_target(omni) register_lego1_target(omni)
set_property(TARGET omni PROPERTY ARCHIVE_OUTPUT_NAME "omni$<$<CONFIG:Debug>:d>") set_property(TARGET omni PROPERTY ARCHIVE_OUTPUT_NAME "omni$<$<CONFIG:Debug>:d>")
target_include_directories(omni PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util") target_include_directories(omni PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
target_link_libraries(omni PRIVATE dsound winmm FLIC::FLIC Smacker::Smacker) target_link_libraries(omni PRIVATE dsound winmm FLIC::FLIC Smacker::Smacker)
add_library(lego1 SHARED add_library(lego1 SHARED
@ -352,6 +393,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/omni/include")
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources") 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")
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/realtime")
# Link libraries # Link libraries
target_link_libraries(lego1 PRIVATE tglrl viewmanager realtime mxdirectx roi FLIC::FLIC Vec::Vec dinput dxguid misc 3dmanager omni) target_link_libraries(lego1 PRIVATE tglrl viewmanager realtime mxdirectx roi FLIC::FLIC Vec::Vec dinput dxguid misc 3dmanager omni)
@ -377,6 +419,8 @@ if (ISLE_BUILD_APP)
ISLE/define.cpp ISLE/define.cpp
) )
target_compile_definitions(isle PRIVATE ISLE_APP)
# Use internal DirectX 5 if required # Use internal DirectX 5 if required
target_link_libraries(isle PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>) target_link_libraries(isle PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)

View File

@ -1,8 +1,10 @@
# Contributing # Contributing
## Learning Decompilation ## Important Note
Generally, decompilation is a fairly advanced skill. If you aren't already familiar with it, it will likely take you months, or even years, to learn the skills necessary to do it (depending on your current proficiency with C/C++ and x86 assembly). If you're still interested, [part 1 of the decompilation vlog](https://www.youtube.com/watch?v=MToTEqoVv3I) covers the overall process and should give you a starting point that you can dive in from. While we're thrilled that there is so much interest in reverse engineering LEGO Island and are happy to accept contributions from anyone who would like to help progress us further to our goal of a complete codebase, proposed changes to this repository must adhere to a certain degree of engineering quality. While the established contributors here are more than happy to provide code reviews and constructive criticism, it is not their job to teach potential contributors C++ or decompilation fundamentals. As a project that is largely an artifact of the free time of its contributors, the more of that (often scarce) resource that can be dedicated to efficient work, the faster the decompilation will progress. Unfortunately, this results in well-intentioned but poorly constructed contributions actually hurting progress in the long-term. While we are greatly appreciative of the sentiment, if you aren't very confident in your decompilation abilities, it is generally in the project's best interest that you return when you have a better grasp over the process.
Generally, decompilation is a fairly advanced skill. Depending on your current proficiency with C/C++ and x86 assembly, it could take you months or even years to learn the skills necessary to do it adequately. If you're still interested in learning, [part 1 of the decompilation vlog](https://www.youtube.com/watch?v=MToTEqoVv3I) covers the overall process and should give you a starting point that you can dive in from. Once again, please make yourself familiar with this process before attempting to contribute code to this project.
## Ghidra Server ## Ghidra Server
@ -15,7 +17,7 @@ To access the Ghidra repository, use the following details:
## General Guidelines ## General Guidelines
If you have contributions, feel free to create a pull request! Someone will review and merge it (or provide feedback) as soon as possible. If you feel fit to contribute, feel free to create a pull request! Someone will review and merge it (or provide feedback) as soon as possible.
Please keep your pull requests small and understandable; you may be able to shoot ahead and make a lot of progress in a short amount of time, but this is a collaborative project, so you must allow others to catch up and follow along. Large pull requests become significantly more unwieldy to review, and as such make it exponentially more likely for a mistake or error to go undetected. They also make it harder to merge other pull requests because the more files you modify, the more likely it is for a merge conflict to occur. A general guideline is to keep submissions limited to one class at a time. Sometimes two or more classes may be too interlinked for this to be feasible, so this is not a hard rule, however if your PR is starting to modify more than 10 or so files, it's probably getting too big. Please keep your pull requests small and understandable; you may be able to shoot ahead and make a lot of progress in a short amount of time, but this is a collaborative project, so you must allow others to catch up and follow along. Large pull requests become significantly more unwieldy to review, and as such make it exponentially more likely for a mistake or error to go undetected. They also make it harder to merge other pull requests because the more files you modify, the more likely it is for a merge conflict to occur. A general guideline is to keep submissions limited to one class at a time. Sometimes two or more classes may be too interlinked for this to be feasible, so this is not a hard rule, however if your PR is starting to modify more than 10 or so files, it's probably getting too big.

View File

@ -770,12 +770,15 @@ inline void IsleApp::Tick(BOOL sleepIfNotNextFrame)
return; return;
} }
if (!Lego()) if (!Lego()) {
return; return;
if (!TickleManager()) }
if (!TickleManager()) {
return; return;
if (!Timer()) }
if (!Timer()) {
return; return;
}
MxLong currentTime = Timer()->GetRealTime(); MxLong currentTime = Timer()->GetRealTime();
if (currentTime < g_lastFrameTime) { if (currentTime < g_lastFrameTime) {
@ -828,8 +831,9 @@ inline void IsleApp::Tick(BOOL sleepIfNotNextFrame)
this->m_gameStarted = 1; this->m_gameStarted = 1;
} }
} }
else if (sleepIfNotNextFrame != 0) else if (sleepIfNotNextFrame != 0) {
Sleep(0); Sleep(0);
}
} }
// FUNCTION: ISLE 0x402e80 // FUNCTION: ISLE 0x402e80

View File

@ -1,6 +1,6 @@
; LegoOmni.def : Declares the module paarameters for the LEGO1.DLL. ; LegoOmni.def : Declares the module paarameters for the LEGO1.DLL.
DESCRIPTION " Lego OMNI Windows Dynamic Link Library" ; DESCRIPTION " Lego OMNI Windows Dynamic Link Library"
EXPORTS EXPORTS
@ -42,9 +42,6 @@ _Z5Timerv
_Z7PickROIii _Z7PickROIii
_Z8Streamerv _Z8Streamerv
_Z9GameStatev _Z9GameStatev
_ZN10LegoEntityD0Ev
_ZN10LegoEntityD1Ev
_ZN10LegoEntityD2Ev
_ZN10MxDSActionC1Ev _ZN10MxDSActionC1Ev
_ZN10MxDSActionC2Ev _ZN10MxDSActionC2Ev
_ZN10MxDSActionD0Ev _ZN10MxDSActionD0Ev
@ -60,9 +57,6 @@ _ZN11MxPresenter4InitEv
_ZN11MxPresenter6EnableEh _ZN11MxPresenter6EnableEh
_ZN11MxPresenter6TickleEv _ZN11MxPresenter6TickleEv
_ZN11MxPresenter9EndActionEv _ZN11MxPresenter9EndActionEv
_ZN11MxPresenterD0Ev
_ZN11MxPresenterD1Ev
_ZN11MxPresenterD2Ev
_ZN11MxScheduler11GetInstanceEv _ZN11MxScheduler11GetInstanceEv
_ZN11MxScheduler17StartMultiTaskingEj _ZN11MxScheduler17StartMultiTaskingEj
_ZN11ViewManager9RemoveAllEP7ViewROI _ZN11ViewManager9RemoveAllEP7ViewROI

View File

@ -2,49 +2,124 @@
#define ACT1STATE_H #define ACT1STATE_H
#include "legostate.h" #include "legostate.h"
#include "legoutil.h"
#include "roi/legoroi.h"
// VTABLE: LEGO1 0x100d7028 // VTABLE: LEGO1 0x100d7028
// SIZE 0x26c // SIZE 0x26c
class Act1State : public LegoState { class Act1State : public LegoState {
public: public:
enum {
e_unk953 = 953,
e_unk954 = 954,
e_unk955 = 955,
};
Act1State(); Act1State();
// FUNCTION: LEGO1 0x100338a0 // FUNCTION: LEGO1 0x100338a0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0154 // STRING: LEGO1 0x100f0154
return "Act1State"; return "Act1State";
} }
// FUNCTION: LEGO1 0x100338b0 // FUNCTION: LEGO1 0x100338b0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxBool SetFlag() override; // vtable+0x18 MxBool SetFlag() override; // vtable+0x18
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x18 = p_unk0x18; } inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x018 = p_unk0x18; }
inline MxU32 GetUnknown18() { return m_unk0x18; } inline MxU32 GetUnknown18() { return m_unk0x018; }
inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x21 = p_unk0x21; } inline MxU32 GetUnknown1c() { return m_unk0x01c; }
inline MxS16 GetUnknown21() { return m_unk0x21; } 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(); void FUN_10034d00();
// SYNTHETIC: LEGO1 0x10033960 // SYNTHETIC: LEGO1 0x10033960
// Act1State::`scalar deleting destructor' // Act1State::`scalar deleting destructor'
// SIZE 0x4c
class NamedPlane {
public:
// FUNCTION: LEGO1 0x10033800
NamedPlane() {}
inline void SetName(const char* p_name) { m_name = p_name; }
inline const MxString* GetName() const { return &m_name; }
// FUNCTION: LEGO1 0x100344d0
MxResult Serialize(LegoFile* p_file)
{
if (p_file->IsWriteMode()) {
p_file->FUN_10006030(m_name);
p_file->WriteVector3(m_point1);
p_file->WriteVector3(m_point2);
p_file->WriteVector3(m_point3);
}
else if (p_file->IsReadMode()) {
p_file->ReadString(m_name);
p_file->ReadVector3(m_point1);
p_file->ReadVector3(m_point2);
p_file->ReadVector3(m_point3);
}
return SUCCESS;
}
private:
MxString m_name; // 0x00
Mx3DPointFloat m_point1; // 0x10
Mx3DPointFloat m_point2; // 0x24
Mx3DPointFloat m_point3; // 0x38
};
protected: protected:
undefined m_unk0x08[0x10]; // 0x08 MxS32* m_unk0x008; // 0x008
MxU32 m_unk0x18; // 0x18 // FIXME: count for m_unk0x008
undefined2 m_unk0x1c; // 0x1c MxS16 m_unk0x00c; // 0x00c
undefined m_unk0x1e; // 0x1e undefined2 m_unk0x00e; // 0x00e
undefined m_unk0x1f; // 0x1f undefined2 m_unk0x010; // 0x010
undefined m_unk0x20; // 0x20 undefined m_unk0x012; // 0x012
MxBool m_unk0x21; // 0x21 MxS32 m_unk0x014; // 0x014
undefined m_unk0x22; // 0x22 MxU32 m_unk0x018; // 0x018
// TODO MxU16 m_unk0x01c; // 0x01c
undefined m_unk0x01e; // 0x01e
undefined m_unk0x01f; // 0x01f
undefined m_unk0x020; // 0x020
undefined m_unk0x021; // 0x021
undefined m_unk0x022; // 0x022
undefined m_unk0x023; // 0x023
NamedPlane m_unk0x024; // 0x024
NamedPlane m_unk0x070; // 0x070
NamedPlane m_unk0x0bc; // 0x0bc
NamedPlane m_unk0x108; // 0x108
NamedTexture* m_unk0x154; // 0x154
NamedTexture* m_unk0x158; // 0x158
NamedTexture* m_unk0x15c; // 0x15c
MxCore* m_unk0x160; // 0x160
NamedPlane m_unk0x164; // 0x164
NamedTexture* m_unk0x1b0; // 0x1b0
NamedTexture* m_unk0x1b4; // 0x1b4
MxCore* m_unk0x1b8; // 0x1b8
NamedPlane m_unk0x1bc; // 0x1bc
NamedTexture* m_unk0x208; // 0x208
MxCore* m_unk0x20c; // 0x20c
NamedPlane m_unk0x210; // 0x210
NamedTexture* m_unk0x25c; // 0x25c
NamedTexture* m_unk0x260; // 0x260
NamedTexture* m_unk0x264; // 0x264
MxCore* m_unk0x268; // 0x268
}; };
// FUNCTION: LEGO1 0x10033a70
// Act1State::NamedPlane::~NamedPlane
#endif // ACT1STATE_H #endif // ACT1STATE_H

View File

@ -8,25 +8,25 @@
class Act2Brick : public LegoPathActor { class Act2Brick : public LegoPathActor {
public: public:
Act2Brick(); Act2Brick();
virtual ~Act2Brick() override; // vtable+0x00 ~Act2Brick() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x1007a360 // FUNCTION: LEGO1 0x1007a360
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0438 // STRING: LEGO1 0x100f0438
return "Act2Brick"; return "Act2Brick";
} }
// FUNCTION: LEGO1 0x1007a370 // FUNCTION: LEGO1 0x1007a370
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name); return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name);
} }
virtual MxS32 VTable0x94() override; // vtable+0x94 MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x1007a450 // SYNTHETIC: LEGO1 0x1007a450
// Act2Brick::`scalar deleting destructor' // Act2Brick::`scalar deleting destructor'

View File

@ -7,17 +7,17 @@
// SIZE 0x68 // SIZE 0x68
class Act2PoliceStation : public LegoEntity { class Act2PoliceStation : public LegoEntity {
public: public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x1000e200 // FUNCTION: LEGO1 0x1000e200
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f03fc // STRING: LEGO1 0x100f03fc
return "Act2PoliceStation"; return "Act2PoliceStation";
} }
// FUNCTION: LEGO1 0x1000e210 // FUNCTION: LEGO1 0x1000e210
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Act2PoliceStation::ClassName()) || LegoEntity::IsA(p_name); return !strcmp(p_name, Act2PoliceStation::ClassName()) || LegoEntity::IsA(p_name);
} }

View File

@ -9,31 +9,31 @@ class Act3 : public LegoWorld {
public: public:
Act3(); Act3();
virtual ~Act3() override; // vtable+00 ~Act3() override; // vtable+00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x10072510 // FUNCTION: LEGO1 0x10072510
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f013c // STRING: LEGO1 0x100f013c
return "Act3"; return "Act3";
} }
// FUNCTION: LEGO1 0x10072520 // FUNCTION: LEGO1 0x10072520
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Act3::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, Act3::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x5c() override; // vtable+0x5c
virtual void VTable0x60() override; // vtable+0x60 void VTable0x60() override; // vtable+0x60
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; } inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; }
inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; } inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; }

View File

@ -8,7 +8,7 @@
class Act3Actor : public MxCore { class Act3Actor : public MxCore {
public: public:
// FUNCTION: LEGO1 0x100431b0 // FUNCTION: LEGO1 0x100431b0
inline virtual const char* ClassName() const override inline const char* ClassName() const override
{ {
// STRING: LEGO1 0x100f03ac // STRING: LEGO1 0x100f03ac
return "Act3Actor"; return "Act3Actor";

View File

@ -7,22 +7,22 @@
class Act3Shark : public LegoAnimActor { class Act3Shark : public LegoAnimActor {
public: public:
// FUNCTION: LEGO1 0x100430c0 // FUNCTION: LEGO1 0x100430c0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f03a0 // STRING: LEGO1 0x100f03a0
return "Act3Shark"; return "Act3Shark";
} }
// FUNCTION: LEGO1 0x1001a130 // FUNCTION: LEGO1 0x1001a130
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Act3Shark::ClassName()) || LegoAnimActor::IsA(p_name); return !strcmp(p_name, Act3Shark::ClassName()) || LegoAnimActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20 void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30 void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74 void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
// SYNTHETIC: LEGO1 0x10043020 // SYNTHETIC: LEGO1 0x10043020
// Act3Shark::`scalar deleting destructor' // Act3Shark::`scalar deleting destructor'

View File

@ -10,19 +10,19 @@ class Act3State : public LegoState {
inline Act3State() { m_unk0x08 = 0; } inline Act3State() { m_unk0x08 = 0; }
// FUNCTION: LEGO1 0x1000e300 // FUNCTION: LEGO1 0x1000e300
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f03f0 // STRING: LEGO1 0x100f03f0
return "Act3State"; return "Act3State";
} }
// FUNCTION: LEGO1 0x1000e310 // FUNCTION: LEGO1 0x1000e310
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Act3State::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, Act3State::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxBool VTable0x14() override; MxBool VTable0x14() override;
// SYNTHETIC: LEGO1 0x1000e3c0 // SYNTHETIC: LEGO1 0x1000e3c0
// Act3State::`scalar deleting destructor' // Act3State::`scalar deleting destructor'

View File

@ -9,29 +9,29 @@ class Ambulance : public IslePathActor {
public: public:
Ambulance(); Ambulance();
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x10035fa0 // FUNCTION: LEGO1 0x10035fa0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f03c4 // STRING: LEGO1 0x100f03c4
return "Ambulance"; return "Ambulance";
} }
// FUNCTION: LEGO1 0x10035fb0 // FUNCTION: LEGO1 0x10035fb0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
virtual void VTable0xe4() override; // vtable+0xe4 void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10036130 // SYNTHETIC: LEGO1 0x10036130
// Ambulance::`scalar deleting destructor' // Ambulance::`scalar deleting destructor'

View File

@ -10,19 +10,19 @@ class AmbulanceMissionState : public LegoState {
AmbulanceMissionState(); AmbulanceMissionState();
// FUNCTION: LEGO1 0x10037600 // FUNCTION: LEGO1 0x10037600
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f00e8 // STRING: LEGO1 0x100f00e8
return "AmbulanceMissionState"; return "AmbulanceMissionState";
} }
// FUNCTION: LEGO1 0x10037610 // FUNCTION: LEGO1 0x10037610
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, AmbulanceMissionState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, AmbulanceMissionState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline MxU16 GetColor(MxU8 p_id) inline MxU16 GetColor(MxU8 p_id)
{ {

View File

@ -8,23 +8,23 @@
class AnimState : public LegoState { class AnimState : public LegoState {
public: public:
AnimState(); AnimState();
virtual ~AnimState() override; // vtable+0x00 ~AnimState() override; // vtable+0x00
// FUNCTION: LEGO1 0x10065070 // FUNCTION: LEGO1 0x10065070
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0460 // STRING: LEGO1 0x100f0460
return "AnimState"; return "AnimState";
} }
// FUNCTION: LEGO1 0x10065080 // FUNCTION: LEGO1 0x10065080
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, AnimState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, AnimState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxBool SetFlag() override; // vtable+0x18 MxBool SetFlag() override; // vtable+0x18
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1C MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1C
// SYNTHETIC: LEGO1 0x10065130 // SYNTHETIC: LEGO1 0x10065130
// AnimState::`scalar deleting destructor' // AnimState::`scalar deleting destructor'

View File

@ -8,14 +8,14 @@
class BeachHouseEntity : public BuildingEntity { class BeachHouseEntity : public BuildingEntity {
public: public:
// FUNCTION: LEGO1 0x1000ee80 // FUNCTION: LEGO1 0x1000ee80
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0314 // STRING: LEGO1 0x100f0314
return "BeachHouseEntity"; return "BeachHouseEntity";
} }
// FUNCTION: LEGO1 0x1000ee90 // FUNCTION: LEGO1 0x1000ee90
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(p_name); return !strcmp(p_name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(p_name);
} }

View File

@ -11,22 +11,22 @@ class Bike : public IslePathActor {
Bike(); Bike();
// FUNCTION: LEGO1 0x100766f0 // FUNCTION: LEGO1 0x100766f0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f03d0 // STRING: LEGO1 0x100f03d0
return "Bike"; return "Bike";
} }
// FUNCTION: LEGO1 0x10076700 // FUNCTION: LEGO1 0x10076700
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual MxU32 VTable0xcc() override; // vtable+0xcc MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
virtual void VTable0xe4() override; // vtable+0xe4 void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10076880 // SYNTHETIC: LEGO1 0x10076880
// Bike::`scalar deleting destructor' // Bike::`scalar deleting destructor'

View File

@ -8,19 +8,19 @@
class BuildingEntity : public LegoEntity { class BuildingEntity : public LegoEntity {
public: public:
BuildingEntity(); BuildingEntity();
virtual ~BuildingEntity() override; // vtable+0x00 ~BuildingEntity() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10014f20 // FUNCTION: LEGO1 0x10014f20
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f07e8 // STRING: LEGO1 0x100f07e8
return "BuildingEntity"; return "BuildingEntity";
} }
// FUNCTION: LEGO1 0x10014f30 // FUNCTION: LEGO1 0x10014f30
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, BuildingEntity::ClassName()) || LegoEntity::IsA(p_name); return !strcmp(p_name, BuildingEntity::ClassName()) || LegoEntity::IsA(p_name);
} }

View File

@ -7,25 +7,25 @@
// VTABLE: LEGO1 0x100d6790 // VTABLE: LEGO1 0x100d6790
class BumpBouy : public LegoAnimActor { class BumpBouy : public LegoAnimActor {
public: public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x100274e0 // FUNCTION: LEGO1 0x100274e0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0394 // STRING: LEGO1 0x100f0394
return "BumpBouy"; return "BumpBouy";
} }
// FUNCTION: LEGO1 0x10027500 // FUNCTION: LEGO1 0x10027500
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, BumpBouy::ClassName()) || LegoAnimActor::IsA(p_name); return !strcmp(p_name, BumpBouy::ClassName()) || LegoAnimActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20 void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30 void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74 void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
// SYNTHETIC: LEGO1 0x10027490 // SYNTHETIC: LEGO1 0x10027490
// BumpBouy::`scalar deleting destructor' // BumpBouy::`scalar deleting destructor'

View File

@ -11,25 +11,25 @@ class CarRace : public LegoRace {
CarRace(); CarRace();
// FUNCTION: LEGO1 0x10016b20 // FUNCTION: LEGO1 0x10016b20
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0528 // STRING: LEGO1 0x100f0528
return "CarRace"; return "CarRace";
} }
// FUNCTION: LEGO1 0x10016b30 // FUNCTION: LEGO1 0x10016b30
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name); return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual undefined4 VTable0x6c(undefined4) override; // vtable+0x6c undefined4 VTable0x6c(undefined4) override; // vtable+0x6c
virtual undefined4 VTable0x70(undefined4) override; // vtable+0x70 undefined4 VTable0x70(undefined4) override; // vtable+0x70
virtual undefined4 VTable0x74(undefined4) override; // vtable+0x74 undefined4 VTable0x74(undefined4) override; // vtable+0x74
virtual undefined4 VTable0x78(undefined4) override; // vtable+0x78 undefined4 VTable0x78(undefined4) override; // vtable+0x78
// SYNTHETIC: LEGO1 0x10016c70 // SYNTHETIC: LEGO1 0x10016c70
// CarRace::`scalar deleting destructor' // CarRace::`scalar deleting destructor'

View File

@ -8,14 +8,14 @@
class CarRaceState : public RaceState { class CarRaceState : public RaceState {
public: public:
// FUNCTION: LEGO1 0x1000dd30 // FUNCTION: LEGO1 0x1000dd30
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f009c // STRING: LEGO1 0x100f009c
return "CarRaceState"; return "CarRaceState";
} }
// FUNCTION: LEGO1 0x1000dd40 // FUNCTION: LEGO1 0x1000dd40
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, CarRaceState::ClassName()) || RaceState::IsA(p_name); return !strcmp(p_name, CarRaceState::ClassName()) || RaceState::IsA(p_name);
} }

View File

@ -8,21 +8,21 @@
class Doors : public LegoPathActor { class Doors : public LegoPathActor {
public: public:
// FUNCTION: LEGO1 0x1000e430 // FUNCTION: LEGO1 0x1000e430
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f03e8 // STRING: LEGO1 0x100f03e8
return "Doors"; return "Doors";
} }
// FUNCTION: LEGO1 0x1000e440 // FUNCTION: LEGO1 0x1000e440
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name); return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20 void ParseAction(char*) override; // vtable+0x20
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x94() override; // vtable+0x94 MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x1000e580 // SYNTHETIC: LEGO1 0x1000e580
// Doors::`scalar deleting destructor' // Doors::`scalar deleting destructor'

View File

@ -11,24 +11,24 @@ class DuneBuggy : public IslePathActor {
DuneBuggy(); DuneBuggy();
// FUNCTION: LEGO1 0x10067c30 // FUNCTION: LEGO1 0x10067c30
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0410 // STRING: LEGO1 0x100f0410
return "DuneBuggy"; return "DuneBuggy";
} }
// FUNCTION: LEGO1 0x10067c40 // FUNCTION: LEGO1 0x10067c40
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
virtual void VTable0xe4() override; // vtable+0xe4 void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10067dc0 // SYNTHETIC: LEGO1 0x10067dc0
// DuneBuggy::`scalar deleting destructor' // DuneBuggy::`scalar deleting destructor'

View File

@ -4,36 +4,38 @@
#include "decomp.h" #include "decomp.h"
#include "legoworld.h" #include "legoworld.h"
class LegoControlManagerEvent;
// VTABLE: LEGO1 0x100d5f20 // VTABLE: LEGO1 0x100d5f20
// SIZE: 0xfc (from inlined ctor at 0x1000a8aa) // SIZE: 0xfc (from inlined ctor at 0x1000a8aa)
class ElevatorBottom : public LegoWorld { class ElevatorBottom : public LegoWorld {
public: public:
ElevatorBottom(); ElevatorBottom();
virtual ~ElevatorBottom() override; // vtable+0x00 ~ElevatorBottom() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10017f20 // FUNCTION: LEGO1 0x10017f20
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f04ac // STRING: LEGO1 0x100f04ac
return "ElevatorBottom"; return "ElevatorBottom";
} }
// FUNCTION: LEGO1 0x10017f30 // FUNCTION: LEGO1 0x10017f30
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, ElevatorBottom::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, ElevatorBottom::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
// FUNCTION: LEGO1 0x10017f10 // FUNCTION: LEGO1 0x10017f10
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x10018040 // SYNTHETIC: LEGO1 0x10018040
// ElevatorBottom::`scalar deleting destructor' // ElevatorBottom::`scalar deleting destructor'
@ -41,7 +43,7 @@ class ElevatorBottom : public LegoWorld {
private: private:
undefined4 m_unk0xf8; // 0xf8 undefined4 m_unk0xf8; // 0xf8
MxLong HandleNotification17(MxParam& p_param); MxLong HandleClick(LegoControlManagerEvent& p_param);
}; };
#endif // ELEVATORBOTTOM_H #endif // ELEVATORBOTTOM_H

View File

@ -11,29 +11,29 @@
class GasStation : public LegoWorld { class GasStation : public LegoWorld {
public: public:
GasStation(); GasStation();
virtual ~GasStation() override; // vtable+0x00 ~GasStation() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x10004780 // FUNCTION: LEGO1 0x10004780
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0168 // STRING: LEGO1 0x100f0168
return "GasStation"; return "GasStation";
} }
// FUNCTION: LEGO1 0x10004790 // FUNCTION: LEGO1 0x10004790
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x100048a0 // SYNTHETIC: LEGO1 0x100048a0
// GasStation::`scalar deleting destructor' // GasStation::`scalar deleting destructor'

View File

@ -8,14 +8,14 @@
class GasStationEntity : public BuildingEntity { class GasStationEntity : public BuildingEntity {
public: public:
// FUNCTION: LEGO1 0x1000eb20 // FUNCTION: LEGO1 0x1000eb20
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0348 // STRING: LEGO1 0x100f0348
return "GasStationEntity"; return "GasStationEntity";
} }
// FUNCTION: LEGO1 0x1000eb30 // FUNCTION: LEGO1 0x1000eb30
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, GasStationEntity::ClassName()) || BuildingEntity::IsA(p_name); return !strcmp(p_name, GasStationEntity::ClassName()) || BuildingEntity::IsA(p_name);
} }

View File

@ -10,19 +10,19 @@ class GasStationState : public LegoState {
GasStationState(); GasStationState();
// FUNCTION: LEGO1 0x100061d0 // FUNCTION: LEGO1 0x100061d0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0174 // STRING: LEGO1 0x100f0174
return "GasStationState"; return "GasStationState";
} }
// FUNCTION: LEGO1 0x100061e0 // FUNCTION: LEGO1 0x100061e0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, GasStationState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, GasStationState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x10006290 // SYNTHETIC: LEGO1 0x10006290
// GasStationState::`scalar deleting destructor' // GasStationState::`scalar deleting destructor'

View File

@ -77,7 +77,7 @@ class GifManagerBase {
class GifManager : public GifManagerBase { class GifManager : public GifManagerBase {
public: public:
GifManager() { m_ownership = TRUE; } GifManager() { m_ownership = TRUE; }
virtual ~GifManager() override; ~GifManager() override;
// SYNTHETIC: LEGO1 0x1005a580 // SYNTHETIC: LEGO1 0x1005a580
// GifManager::`scalar deleting destructor' // GifManager::`scalar deleting destructor'

View File

@ -22,28 +22,28 @@ class HelicopterSubclass {
class Helicopter : public IslePathActor { class Helicopter : public IslePathActor {
public: public:
Helicopter(); Helicopter();
virtual ~Helicopter() override; // vtable+0x00 ~Helicopter() override; // vtable+0x00
// FUNCTION: LEGO1 0x10003070 // FUNCTION: LEGO1 0x10003070
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0130 // STRING: LEGO1 0x100f0130
return "Helicopter"; return "Helicopter";
} }
// FUNCTION: LEGO1 0x10003080 // FUNCTION: LEGO1 0x10003080
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Helicopter::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Helicopter::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74 void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
virtual MxU32 VTable0xcc() override; // vtable+0xcc MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4 MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8 MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8
virtual void VTable0xe4() override; // vtable+0xe4 void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10003210 // SYNTHETIC: LEGO1 0x10003210
// Helicopter::`scalar deleting destructor' // Helicopter::`scalar deleting destructor'

View File

@ -9,23 +9,23 @@
class HelicopterState : public LegoState { class HelicopterState : public LegoState {
public: public:
// FUNCTION: LEGO1 0x1000e0d0 // FUNCTION: LEGO1 0x1000e0d0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0144 // STRING: LEGO1 0x100f0144
return "HelicopterState"; return "HelicopterState";
} }
// FUNCTION: LEGO1 0x1000e0e0 // FUNCTION: LEGO1 0x1000e0e0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, HelicopterState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, HelicopterState::ClassName()) || LegoState::IsA(p_name);
} }
// FUNCTION: LEGO1 0x1000e0b0 // FUNCTION: LEGO1 0x1000e0b0
virtual MxBool VTable0x14() override { return FALSE; } // vtable+0x14 MxBool VTable0x14() override { return FALSE; } // vtable+0x14
// FUNCTION: LEGO1 0x1000e0c0 // FUNCTION: LEGO1 0x1000e0c0
virtual MxBool SetFlag() override MxBool SetFlag() override
{ {
m_unk0x08 = 0; m_unk0x08 = 0;
return TRUE; return TRUE;

View File

@ -8,26 +8,26 @@
class HistoryBook : public LegoWorld { class HistoryBook : public LegoWorld {
public: public:
HistoryBook(); HistoryBook();
virtual ~HistoryBook() override; // vtable+0x00 ~HistoryBook() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10082390 // FUNCTION: LEGO1 0x10082390
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f04bc // STRING: LEGO1 0x100f04bc
return "HistoryBook"; return "HistoryBook";
} }
// FUNCTION: LEGO1 0x100823a0 // FUNCTION: LEGO1 0x100823a0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
// SYNTHETIC: LEGO1 0x100824b0 // SYNTHETIC: LEGO1 0x100824b0
// HistoryBook::`scalar deleting destructor' // HistoryBook::`scalar deleting destructor'

View File

@ -9,29 +9,29 @@
class Hospital : public LegoWorld { class Hospital : public LegoWorld {
public: public:
Hospital(); Hospital();
virtual ~Hospital() override; // vtable+0x00 ~Hospital() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x100746b0 // FUNCTION: LEGO1 0x100746b0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0490 // STRING: LEGO1 0x100f0490
return "Hospital"; return "Hospital";
} }
// FUNCTION: LEGO1 0x100746c0 // FUNCTION: LEGO1 0x100746c0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x100747d0 // SYNTHETIC: LEGO1 0x100747d0
// Hospital::`scalar deleting destructor' // Hospital::`scalar deleting destructor'

View File

@ -8,14 +8,14 @@
class HospitalEntity : public BuildingEntity { class HospitalEntity : public BuildingEntity {
public: public:
// FUNCTION: LEGO1 0x1000ec40 // FUNCTION: LEGO1 0x1000ec40
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0338 // STRING: LEGO1 0x100f0338
return "HospitalEntity"; return "HospitalEntity";
} }
// FUNCTION: LEGO1 0x1000ec50 // FUNCTION: LEGO1 0x1000ec50
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, HospitalEntity::ClassName()) || BuildingEntity::IsA(p_name); return !strcmp(p_name, HospitalEntity::ClassName()) || BuildingEntity::IsA(p_name);
} }

View File

@ -9,22 +9,22 @@
class HospitalState : public LegoState { class HospitalState : public LegoState {
public: public:
HospitalState(); HospitalState();
virtual ~HospitalState() override {} ~HospitalState() override {}
// FUNCTION: LEGO1 0x10076400 // FUNCTION: LEGO1 0x10076400
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0480 // STRING: LEGO1 0x100f0480
return "HospitalState"; return "HospitalState";
} }
// FUNCTION: LEGO1 0x10076410 // FUNCTION: LEGO1 0x10076410
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x100764c0 // SYNTHETIC: LEGO1 0x100764c0
// HospitalState::`scalar deleting destructor' // HospitalState::`scalar deleting destructor'

View File

@ -2,10 +2,12 @@
#define INFOCENTER_H #define INFOCENTER_H
#include "legoworld.h" #include "legoworld.h"
#include "mxrect32.h"
#include "radio.h" #include "radio.h"
class InfocenterState; class InfocenterState;
class MxStillPresenter; class MxStillPresenter;
class LegoControlManagerEvent;
// SIZE 0x18 // SIZE 0x18
struct InfocenterMapEntry { struct InfocenterMapEntry {
@ -14,10 +16,7 @@ struct InfocenterMapEntry {
MxStillPresenter* m_presenter; // 0x00 MxStillPresenter* m_presenter; // 0x00
undefined4 m_unk0x04; // 0x04 undefined4 m_unk0x04; // 0x04
undefined4 m_unk0x08; // 0x08 MxRect32 m_area; // 0x08
undefined4 m_unk0x0c; // 0x0c
undefined4 m_unk0x10; // 0x10
undefined4 m_unk0x14; // 0x14
}; };
// VTABLE: LEGO1 0x100d9338 // VTABLE: LEGO1 0x100d9338
@ -40,12 +39,15 @@ class Infocenter : public LegoWorld {
c_leftArrowCtl = 1, c_leftArrowCtl = 1,
c_rightArrowCtl = 2, c_rightArrowCtl = 2,
c_infoCtl = 3, c_infoCtl = 3,
c_doorCtl = 4,
c_boatCtl = 10, c_boatCtl = 10,
c_raceCtl = 11, c_raceCtl = 11,
c_pizzaCtl = 12, c_pizzaCtl = 12,
c_gasCtl = 13, c_gasCtl = 13,
c_medCtl = 14, c_medCtl = 14,
c_copCtl = 15, c_copCtl = 15,
c_bigInfoCtl = 16,
c_bookCtl = 17,
c_radioCtl = 18, c_radioCtl = 18,
c_mamaCtl = 21, c_mamaCtl = 21,
c_papaCtl = 22, c_papaCtl = 22,
@ -53,6 +55,23 @@ class Infocenter : public LegoWorld {
c_nickCtl = 24, c_nickCtl = 24,
c_lauraCtl = 25, 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_welcomeDialogue = 500,
c_goodJobDialogue = 501, c_goodJobDialogue = 501,
@ -114,11 +133,28 @@ class Infocenter : public LegoWorld {
c_noCDDialogueUnused1 = 552, c_noCDDialogueUnused1 = 552,
c_noCDDialogueUnused2 = 553, c_noCDDialogueUnused2 = 553,
c_gasCtlDescription = 555,
c_medCtlDescription = 556,
c_unk557 = 557,
c_boatCtlDescription = 558,
c_copCtlDescription = 559,
c_pizzaCtlDescription = 560,
c_raceCtlDescription = 561,
c_leaveInfoCenterDialogue1 = 562, c_leaveInfoCenterDialogue1 = 562,
c_leaveInfoCenterDialogue2 = 563, c_leaveInfoCenterDialogue2 = 563,
c_leaveInfoCenterDialogue3 = 564, c_leaveInfoCenterDialogue3 = 564,
c_leaveInfoCenterDialogue4 = 565, 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_registerToContinueDialogue = 573,
c_bricksterDialogue = 574, c_bricksterDialogue = 574,
@ -130,29 +166,29 @@ class Infocenter : public LegoWorld {
}; };
Infocenter(); Infocenter();
virtual ~Infocenter() override; ~Infocenter() override;
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x1006eb40 // FUNCTION: LEGO1 0x1006eb40
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f04ec // STRING: LEGO1 0x100f04ec
return "Infocenter"; return "Infocenter";
} }
// FUNCTION: LEGO1 0x1006eb50 // FUNCTION: LEGO1 0x1006eb50
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Infocenter::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, Infocenter::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x1006ec60 // SYNTHETIC: LEGO1 0x1006ec60
// Infocenter::`scalar deleting destructor' // Infocenter::`scalar deleting destructor'
@ -163,16 +199,18 @@ class Infocenter : public LegoWorld {
MxLong HandleKeyPress(MxS8 p_key); MxLong HandleKeyPress(MxS8 p_key);
MxU8 HandleMouseMove(MxS32 p_x, MxS32 p_y); MxU8 HandleMouseMove(MxS32 p_x, MxS32 p_y);
MxU8 HandleButtonUp(MxS32 p_x, MxS32 p_y); MxU8 HandleButtonUp(MxS32 p_x, MxS32 p_y);
MxU8 HandleNotification17(MxParam&); MxU8 HandleClick(LegoControlManagerEvent& p_param);
MxLong HandleEndAction(MxParam& p_param); MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleNotification0(MxParam&); MxLong HandleNotification0(MxNotificationParam& p_param);
void FUN_10070dc0(MxBool); void UpdateFrameHot(MxBool p_display);
void FUN_10070e90(); void FUN_10070e90();
void PlayCutscene(Cutscene p_entityId, MxBool p_scale); void PlayCutscene(Cutscene p_entityId, MxBool p_scale);
void StopCutscene(); void StopCutscene();
void FUN_10070d10(MxS32 p_x, MxS32 p_y);
void StartCredits(); void StartCredits();
void StopCredits(); void StopCredits();
@ -185,10 +223,10 @@ class Infocenter : public LegoWorld {
InfomainScript m_currentInfomainScript; // 0xf8 InfomainScript m_currentInfomainScript; // 0xf8
MxS16 m_unk0xfc; // 0xfc MxS16 m_unk0xfc; // 0xfc
InfocenterState* m_infocenterState; // 0x100 InfocenterState* m_infocenterState; // 0x100
undefined4 m_unk0x104; // 0x104 undefined4 m_transitionDestination; // 0x104
Cutscene m_currentCutscene; // 0x108 Cutscene m_currentCutscene; // 0x108
Radio m_radio; // 0x10c Radio m_radio; // 0x10c
undefined4 m_unk0x11c; // 0x11c MxStillPresenter* m_unk0x11c; // 0x11c
InfocenterMapEntry m_mapAreas[7]; // 0x120 InfocenterMapEntry m_mapAreas[7]; // 0x120
MxS16 m_unk0x1c8; // 0x1c8 MxS16 m_unk0x1c8; // 0x1c8
MxStillPresenter* m_frameHotBitmap; // 0x1cc MxStillPresenter* m_frameHotBitmap; // 0x1cc

View File

@ -3,42 +3,46 @@
#include "legoworld.h" #include "legoworld.h"
class LegoControlManagerEvent;
// VTABLE: LEGO1 0x100d72d8 // VTABLE: LEGO1 0x100d72d8
// SIZE 0xfc // SIZE 0xfc
class InfocenterDoor : public LegoWorld { class InfocenterDoor : public LegoWorld {
public: public:
InfocenterDoor(); InfocenterDoor();
virtual ~InfocenterDoor(); // vtable+0x00 ~InfocenterDoor() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x100377b0 // FUNCTION: LEGO1 0x100377b0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f049c // STRING: LEGO1 0x100f049c
return "InfocenterDoor"; return "InfocenterDoor";
} }
// FUNCTION: LEGO1 0x100377c0 // FUNCTION: LEGO1 0x100377c0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, InfocenterDoor::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, InfocenterDoor::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
// FUNCTION: LEGO1 0x100377a0 // FUNCTION: LEGO1 0x100377a0
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x100378d0 // SYNTHETIC: LEGO1 0x100378d0
// InfocenterDoor::`scalar deleting destructor' // InfocenterDoor::`scalar deleting destructor'
private: private:
MxS32 m_unk0xf8; // 0xf8 MxS32 m_unk0xf8; // 0xf8
MxLong HandleClick(LegoControlManagerEvent& p_param);
}; };
#endif // INFOCENTERDOOR_H #endif // INFOCENTERDOOR_H

View File

@ -8,14 +8,14 @@
class InfoCenterEntity : public BuildingEntity { class InfoCenterEntity : public BuildingEntity {
public: public:
// FUNCTION: LEGO1 0x1000ea00 // FUNCTION: LEGO1 0x1000ea00
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f035c // STRING: LEGO1 0x100f035c
return "InfoCenterEntity"; return "InfoCenterEntity";
} }
// FUNCTION: LEGO1 0x1000ea10 // FUNCTION: LEGO1 0x1000ea10
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(p_name); return !strcmp(p_name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(p_name);
} }

View File

@ -10,27 +10,31 @@
class InfocenterState : public LegoState { class InfocenterState : public LegoState {
public: public:
InfocenterState(); InfocenterState();
virtual ~InfocenterState() override; ~InfocenterState() override;
// FUNCTION: LEGO1 0x10071840 // FUNCTION: LEGO1 0x10071840
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f04dc // STRING: LEGO1 0x100f04dc
return "InfocenterState"; return "InfocenterState";
} }
// FUNCTION: LEGO1 0x10071850 // FUNCTION: LEGO1 0x10071850
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, InfocenterState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, InfocenterState::ClassName()) || LegoState::IsA(p_name);
} }
// FUNCTION: LEGO1 0x10071830 // FUNCTION: LEGO1 0x10071830
virtual MxBool VTable0x14() override { return FALSE; } // vtable+0x14 MxBool VTable0x14() override { return FALSE; } // vtable+0x14
inline MxS16 GetInfocenterBufferSize() { return sizeof(m_buffer) / sizeof(m_buffer[0]); } inline MxS16 GetInfocenterBufferSize() { return sizeof(m_buffer) / sizeof(m_buffer[0]); }
inline MxStillPresenter* GetInfocenterBufferElement(MxS32 p_index) { return m_buffer[p_index]; } inline MxStillPresenter* GetInfocenterBufferElement(MxS32 p_index) { return m_buffer[p_index]; }
inline Playlist& GetUnknown0x08() { return m_unk0x08; }
inline Playlist& GetUnknown0x14() { return m_unk0x14; }
inline Playlist& GetUnknown0x68() { return m_unk0x68; }
inline MxU32 GetUnknown0x74() { return m_unk0x74; } inline MxU32 GetUnknown0x74() { return m_unk0x74; }
inline Playlist* GetUnknown0x44() { return m_unk0x44; }
inline void SetUnknown0x74(MxU32 p_unk0x74) { m_unk0x74 = p_unk0x74; } inline void SetUnknown0x74(MxU32 p_unk0x74) { m_unk0x74 = p_unk0x74; }
@ -38,35 +42,11 @@ class InfocenterState : public LegoState {
// InfocenterState::`scalar deleting destructor' // InfocenterState::`scalar deleting destructor'
private: private:
// Members should be renamed with their offsets before use Playlist m_unk0x08; // 0x08
/* Playlist m_unk0x14; // 0x14
struct UnkStruct Playlist m_unk0x20[3]; // 0x20
{ Playlist m_unk0x44[3]; // 0x44
undefined4 unk1; Playlist m_unk0x68; // 0x68
undefined2 unk2;
undefined2 unk3;
undefined2 unk4;
};
undefined2 unk1;
undefined2 unk2;
undefined4 unk3;
undefined4 padding1;
void *unk4;
undefined2 unk5;
undefined2 unk6;
undefined2 unk7;
undefined2 padding2;
void *unk8;
undefined2 unk9;
undefined2 unk10;
undefined2 unk11;
undefined2 padding3;
UnkStruct unk12[6];
undefined4 unk13;
*/
undefined m_pad[0x6c];
MxU32 m_unk0x74; // 0x74 MxU32 m_unk0x74; // 0x74
MxStillPresenter* m_buffer[7]; // 0x78 MxStillPresenter* m_buffer[7]; // 0x78
}; };

View File

@ -23,31 +23,31 @@ class Act1State;
class Isle : public LegoWorld { class Isle : public LegoWorld {
public: public:
Isle(); Isle();
virtual ~Isle() override; ~Isle() override;
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10030910 // FUNCTION: LEGO1 0x10030910
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0458 // STRING: LEGO1 0x100f0458
return "Isle"; return "Isle";
} }
// FUNCTION: LEGO1 0x10030920 // FUNCTION: LEGO1 0x10030920
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Isle::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, Isle::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+50 void ReadyWorld() override; // vtable+50
virtual void Add(MxCore* p_object) override; // vtable+58 void Add(MxCore* p_object) override; // vtable+58
// FUNCTION: LEGO1 0x10030900 // FUNCTION: LEGO1 0x10030900
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+5c MxBool VTable0x5c() override { return TRUE; } // vtable+5c
// FUNCTION: LEGO1 0x10033170 // FUNCTION: LEGO1 0x10033170
virtual void VTable0x60() override {} // vtable+60 void VTable0x60() override {} // vtable+60
virtual MxBool VTable0x64() override; // vtable+64 MxBool VTable0x64() override; // vtable+64
virtual void VTable0x68(MxBool p_add) override; // vtable+68 void Enable(MxBool p_enable) override; // vtable+68
virtual void VTable0x6c(IslePathActor* p_actor); // vtable+6c virtual void VTable0x6c(IslePathActor* p_actor); // vtable+6c
inline void SetUnknown13c(MxU32 p_unk0x13c) { m_unk0x13c = p_unk0x13c; } inline void SetUnknown13c(MxU32 p_unk0x13c) { m_unk0x13c = p_unk0x13c; }

View File

@ -6,22 +6,22 @@
// VTABLE: LEGO1 0x100d5178 // VTABLE: LEGO1 0x100d5178
class IsleActor : public LegoActor { class IsleActor : public LegoActor {
public: public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x1000e660 // FUNCTION: LEGO1 0x1000e660
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f07dc // STRING: LEGO1 0x100f07dc
return "IsleActor"; return "IsleActor";
} }
// FUNCTION: LEGO1 0x1000e670 // FUNCTION: LEGO1 0x1000e670
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, IsleActor::ClassName()) || LegoActor::IsA(p_name); return !strcmp(p_name, IsleActor::ClassName()) || LegoActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
}; };
// SYNTHETIC: LEGO1 0x1000e940 // SYNTHETIC: LEGO1 0x1000e940

View File

@ -15,25 +15,25 @@ class IslePathActor : public LegoPathActor {
IslePathActor(); IslePathActor();
// FUNCTION: LEGO1 0x10002e10 // FUNCTION: LEGO1 0x10002e10
inline virtual ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x00 inline ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10002ea0 // FUNCTION: LEGO1 0x10002ea0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0104 // STRING: LEGO1 0x100f0104
return "IslePathActor"; return "IslePathActor";
} }
// FUNCTION: LEGO1 0x10002eb0 // FUNCTION: LEGO1 0x10002eb0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, IslePathActor::ClassName()) || LegoPathActor::IsA(p_name); return !strcmp(p_name, IslePathActor::ClassName()) || LegoPathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
// FUNCTION: LEGO1 0x10002e70 // FUNCTION: LEGO1 0x10002e70
virtual MxU32 VTable0xcc() { return 0; } // vtable+0xcc virtual MxU32 VTable0xcc() { return 0; } // vtable+0xcc
// FUNCTION: LEGO1 0x10002df0 // FUNCTION: LEGO1 0x10002df0

View File

@ -12,23 +12,23 @@ class Jetski : public IslePathActor {
Jetski(); Jetski();
// FUNCTION: LEGO1 0x1007e430 // FUNCTION: LEGO1 0x1007e430
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f03d8 // STRING: LEGO1 0x100f03d8
return "Jetski"; return "Jetski";
} }
// FUNCTION: LEGO1 0x1007e440 // FUNCTION: LEGO1 0x1007e440
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name); return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(LegoControlManagerEvent&) override; // vtable+0xd4 MxU32 VTable0xd4(LegoControlManagerEvent&) override; // vtable+0xd4
virtual void VTable0xe4() override; // vtable+0xe4 void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x1007e5c0 // SYNTHETIC: LEGO1 0x1007e5c0
// Jetski::`scalar deleting destructor' // Jetski::`scalar deleting destructor'

View File

@ -8,14 +8,14 @@
class JetskiRace : public LegoRace { class JetskiRace : public LegoRace {
public: public:
// FUNCTION: LEGO1 0x1000daf0 // FUNCTION: LEGO1 0x1000daf0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0530 // STRING: LEGO1 0x100f0530
return "JetskiRace"; return "JetskiRace";
} }
// FUNCTION: LEGO1 0x1000db00 // FUNCTION: LEGO1 0x1000db00
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, JetskiRace::ClassName()) || LegoRace::IsA(p_name); return !strcmp(p_name, JetskiRace::ClassName()) || LegoRace::IsA(p_name);
} }

View File

@ -8,14 +8,14 @@
class JetskiRaceState : public RaceState { class JetskiRaceState : public RaceState {
public: public:
// FUNCTION: LEGO1 0x1000dc40 // FUNCTION: LEGO1 0x1000dc40
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f00ac // STRING: LEGO1 0x100f00ac
return "JetskiRaceState"; return "JetskiRaceState";
} }
// FUNCTION: LEGO1 0x1000dc50 // FUNCTION: LEGO1 0x1000dc50
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, JetskiRaceState::ClassName()) || RaceState::IsA(p_name); return !strcmp(p_name, JetskiRaceState::ClassName()) || RaceState::IsA(p_name);
} }

View File

@ -10,30 +10,31 @@ class JukeBox : public LegoWorld {
public: public:
JukeBox(); JukeBox();
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x1005d6f0 // FUNCTION: LEGO1 0x1005d6f0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f02cc // STRING: LEGO1 0x100f02cc
return "JukeBox"; return "JukeBox";
} }
// FUNCTION: LEGO1 0x1005d700 // FUNCTION: LEGO1 0x1005d700
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x1005d810 // SYNTHETIC: LEGO1 0x1005d810
// JukeBox::`scalar deleting destructor' // JukeBox::`scalar deleting destructor'
enum JukeBoxScript { enum JukeBoxScript {
e_mamaPapaBrickolini, e_mamaPapaBrickolini,
e_jailUnused, e_jailUnused,
@ -65,29 +66,18 @@ class JukeBox : public LegoWorld {
e_legoRadioReminder2, e_legoRadioReminder2,
e_legoRadioRacingAd, e_legoRadioRacingAd,
e_legoRadioNews1, e_legoRadioNews1,
e_legoRadioNews2, e_legoRadioNews2,
e_legoRadioPizzaAd1, e_legoRadioPizzaAd1,
e_legoRadioBricksterPSA, e_legoRadioBricksterPSA,
e_legoRadioSports1, e_legoRadioSports1,
e_legoRadioIntermission1, e_legoRadioIntermission1,
e_legoRadioIntermission2, e_legoRadioIntermission2,
e_legoRadioPizzaAd2, e_legoRadioPizzaAd2,
e_legoRadioWeatherReport, e_legoRadioWeatherReport,
e_legoRadioSports2, e_legoRadioSports2,
e_legoRadioPizzaAd3, e_legoRadioPizzaAd3,
e_legoRadioIntermission3, e_legoRadioIntermission3,
e_legoRadioSuperStoreAd, e_legoRadioSuperStoreAd,
e_legoRadioLuckyYou, e_legoRadioLuckyYou,

View File

@ -8,19 +8,19 @@
class JukeBoxEntity : public LegoEntity { class JukeBoxEntity : public LegoEntity {
public: public:
JukeBoxEntity(); JukeBoxEntity();
virtual ~JukeBoxEntity() override; // vtable+0x00 ~JukeBoxEntity() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10085cc0 // FUNCTION: LEGO1 0x10085cc0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f02f0 // STRING: LEGO1 0x100f02f0
return "JukeBoxEntity"; return "JukeBoxEntity";
} }
// FUNCTION: LEGO1 0x10085cd0 // FUNCTION: LEGO1 0x10085cd0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, JukeBoxEntity::ClassName()) || LegoEntity::IsA(p_name); return !strcmp(p_name, JukeBoxEntity::ClassName()) || LegoEntity::IsA(p_name);
} }

View File

@ -8,19 +8,19 @@
class JukeBoxState : public LegoState { class JukeBoxState : public LegoState {
public: public:
// FUNCTION: LEGO1 0x1000f310 // FUNCTION: LEGO1 0x1000f310
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f02bc // STRING: LEGO1 0x100f02bc
return "JukeBoxState"; return "JukeBoxState";
} }
// FUNCTION: LEGO1 0x1000f320 // FUNCTION: LEGO1 0x1000f320
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, JukeBoxState::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, JukeBoxState::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxBool VTable0x14() override; // vtable+0x14 MxBool VTable0x14() override; // vtable+0x14
// SYNTHETIC: LEGO1 0x1000f3d0 // SYNTHETIC: LEGO1 0x1000f3d0
// JukeBoxState::`scalar deleting destructor' // JukeBoxState::`scalar deleting destructor'

View File

@ -8,22 +8,22 @@
class Lego3DWavePresenter : public MxWavePresenter { class Lego3DWavePresenter : public MxWavePresenter {
public: public:
// FUNCTION: LEGO1 0x1000d890 // FUNCTION: LEGO1 0x1000d890
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f058c // STRING: LEGO1 0x100f058c
return "Lego3DWavePresenter"; return "Lego3DWavePresenter";
} }
// FUNCTION: LEGO1 0x1000d8a0 // FUNCTION: LEGO1 0x1000d8a0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(p_name); return !strcmp(p_name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(p_name);
} }
virtual void StartingTickle() override; // vtable+0x1c void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20 void StreamingTickle() override; // vtable+0x20
virtual MxResult AddToManager() override; // vtable+0x34 MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
// SYNTHETIC: LEGO1 0x1000f4b0 // SYNTHETIC: LEGO1 0x1000f4b0
// Lego3DWavePresenter::`scalar deleting destructor' // Lego3DWavePresenter::`scalar deleting destructor'

View File

@ -9,14 +9,14 @@
// SIZE 0x1154 // SIZE 0x1154
class LegoAct2 : public LegoWorld { class LegoAct2 : public LegoWorld {
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x5c() override; // vtable+0x5c
virtual void VTable0x60() override; // vtable+0x60 void VTable0x60() override; // vtable+0x60
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x1004fe20 // SYNTHETIC: LEGO1 0x1004fe20
// LegoAct2::`scalar deleting destructor' // LegoAct2::`scalar deleting destructor'

View File

@ -7,22 +7,22 @@
// SIZE 0x10 // SIZE 0x10
class LegoAct2State : public LegoState { class LegoAct2State : public LegoState {
public: public:
virtual ~LegoAct2State() override {} ~LegoAct2State() override {}
// FUNCTION: LEGO1 0x1000df80 // FUNCTION: LEGO1 0x1000df80
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0428 // STRING: LEGO1 0x100f0428
return "LegoAct2State"; return "LegoAct2State";
} }
// FUNCTION: LEGO1 0x1000df90 // FUNCTION: LEGO1 0x1000df90
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoAct2State::ClassName()) || LegoState::IsA(p_name); return !strcmp(p_name, LegoAct2State::ClassName()) || LegoState::IsA(p_name);
} }
virtual MxBool VTable0x14() override; // vtable+0x14 MxBool VTable0x14() override; // vtable+0x14
// SYNTHETIC: LEGO1 0x1000e040 // SYNTHETIC: LEGO1 0x1000e040
// LegoAct2State::`scalar deleting destructor' // LegoAct2State::`scalar deleting destructor'

View File

@ -10,25 +10,25 @@
class LegoActionControlPresenter : public MxMediaPresenter { class LegoActionControlPresenter : public MxMediaPresenter {
public: public:
inline LegoActionControlPresenter() { m_unk0x50 = Extra::ActionType::e_none; } inline LegoActionControlPresenter() { m_unk0x50 = Extra::ActionType::e_none; }
virtual ~LegoActionControlPresenter() override { Destroy(TRUE); } // vtable+0x00 ~LegoActionControlPresenter() override { Destroy(TRUE); } // vtable+0x00
// FUNCTION: LEGO1 0x1000d0e0 // FUNCTION: LEGO1 0x1000d0e0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f05bc // STRING: LEGO1 0x100f05bc
return "LegoActionControlPresenter"; return "LegoActionControlPresenter";
} }
// FUNCTION: LEGO1 0x1000d0f0 // FUNCTION: LEGO1 0x1000d0f0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoActionControlPresenter::ClassName()) || MxMediaPresenter::IsA(p_name); return !strcmp(p_name, LegoActionControlPresenter::ClassName()) || MxMediaPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void RepeatingTickle() override; // vtable+0x24 void RepeatingTickle() override; // vtable+0x24
virtual void ParseExtra() override; // vtable+0x30 void ParseExtra() override; // vtable+0x30
virtual MxResult AddToManager() override; // vtable+0x34 MxResult AddToManager() override; // vtable+0x34
virtual void Destroy(MxBool p_fromDestructor); // vtable+0x5c virtual void Destroy(MxBool p_fromDestructor); // vtable+0x5c
private: private:

View File

@ -9,23 +9,23 @@
class LegoActor : public LegoEntity { class LegoActor : public LegoEntity {
public: public:
LegoActor(); LegoActor();
virtual ~LegoActor() override; ~LegoActor() override;
// FUNCTION: LEGO1 0x1002d210 // FUNCTION: LEGO1 0x1002d210
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0124 // STRING: LEGO1 0x100f0124
return "LegoActor"; return "LegoActor";
} }
// FUNCTION: LEGO1 0x1002d220 // FUNCTION: LEGO1 0x1002d220
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoActor::ClassName()) || LegoEntity::IsA(p_name); return !strcmp(p_name, LegoActor::ClassName()) || LegoEntity::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20 void ParseAction(char*) override; // vtable+0x20
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24 void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
// FUNCTION: LEGO1 0x10002cc0 // FUNCTION: LEGO1 0x10002cc0
virtual MxFloat VTable0x50() { return m_unk0x68; } // vtable+0x50 virtual MxFloat VTable0x50() { return m_unk0x68; } // vtable+0x50

View File

@ -7,24 +7,24 @@
// SIZE 0x50 // SIZE 0x50
class LegoActorPresenter : public LegoEntityPresenter { class LegoActorPresenter : public LegoEntityPresenter {
public: public:
virtual ~LegoActorPresenter() override{}; ~LegoActorPresenter() override{};
// FUNCTION: LEGO1 0x1000cb10 // FUNCTION: LEGO1 0x1000cb10
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f06a4 // STRING: LEGO1 0x100f06a4
return "LegoActorPresenter"; return "LegoActorPresenter";
} }
// FUNCTION: LEGO1 0x1000cb20 // FUNCTION: LEGO1 0x1000cb20
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoActorPresenter::ClassName()) || LegoEntityPresenter::IsA(p_name); return !strcmp(p_name, LegoActorPresenter::ClassName()) || LegoEntityPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x1c void StartingTickle() override; // vtable+0x1c
virtual void ParseExtra() override; // vtable+0x30 void ParseExtra() override; // vtable+0x30
}; };
// SYNTHETIC: LEGO1 0x1000cc30 // SYNTHETIC: LEGO1 0x1000cc30

View File

@ -9,27 +9,30 @@
class LegoAnimationManager : public MxCore { class LegoAnimationManager : public MxCore {
public: public:
LegoAnimationManager(); LegoAnimationManager();
virtual ~LegoAnimationManager() override; // vtable+0x00 ~LegoAnimationManager() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x1005ec80 // FUNCTION: LEGO1 0x1005ec80
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f7508 // STRING: LEGO1 0x100f7508
return "LegoAnimationManager"; return "LegoAnimationManager";
} }
// FUNCTION: LEGO1 0x1005ec90 // FUNCTION: LEGO1 0x1005ec90
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name); return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name);
} }
void FUN_1005ee80(MxBool);
void FUN_1005ef10(); void FUN_1005ef10();
void FUN_1005f0b0();
void FUN_1005f6d0(MxBool); void FUN_1005f6d0(MxBool);
void FUN_1005f720(undefined4); void FUN_1005f720(undefined4);
void FUN_10061010(undefined4);
void FUN_10064670(MxBool); void FUN_10064670(MxBool);
static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig); static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig);

View File

@ -9,30 +9,30 @@ class LegoAnimMMPresenter : public MxCompositePresenter {
public: public:
LegoAnimMMPresenter(); LegoAnimMMPresenter();
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x1004a950 // FUNCTION: LEGO1 0x1004a950
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f046c // STRING: LEGO1 0x100f046c
return "LegoAnimMMPresenter"; return "LegoAnimMMPresenter";
} }
// FUNCTION: LEGO1 0x1004a960 // FUNCTION: LEGO1 0x1004a960
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(p_name); return !strcmp(p_name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x1c void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20 void StreamingTickle() override; // vtable+0x20
virtual void RepeatingTickle() override; // vtable+0x24 void RepeatingTickle() override; // vtable+0x24
virtual void DoneTickle() override; // vtable+0x2c void DoneTickle() override; // vtable+0x2c
virtual void ParseExtra() override; // vtable+0x30 void ParseExtra() override; // vtable+0x30
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
virtual void EndAction() override; // vtable+0x40 void EndAction() override; // vtable+0x40
virtual void VTable0x60(MxPresenter* p_presenter) override; // vtable+0x60 void VTable0x60(MxPresenter* p_presenter) override; // vtable+0x60
// SYNTHETIC: LEGO1 0x1004aa40 // SYNTHETIC: LEGO1 0x1004aa40
// LegoAnimMMPresenter::`scalar deleting destructor' // LegoAnimMMPresenter::`scalar deleting destructor'

View File

@ -14,32 +14,32 @@ class LegoAnimClass;
class LegoAnimPresenter : public MxVideoPresenter { class LegoAnimPresenter : public MxVideoPresenter {
public: public:
LegoAnimPresenter(); LegoAnimPresenter();
virtual ~LegoAnimPresenter() override; ~LegoAnimPresenter() override;
// FUNCTION: LEGO1 0x10068530 // FUNCTION: LEGO1 0x10068530
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f071c // STRING: LEGO1 0x100f071c
return "LegoAnimPresenter"; return "LegoAnimPresenter";
} }
// FUNCTION: LEGO1 0x10068540 // FUNCTION: LEGO1 0x10068540
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoAnimPresenter::ClassName()) || MxVideoPresenter::IsA(p_name); return !strcmp(p_name, LegoAnimPresenter::ClassName()) || MxVideoPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x1c void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20 void StreamingTickle() override; // vtable+0x20
virtual void DoneTickle() override; // vtable+0x2c void DoneTickle() override; // vtable+0x2c
virtual void ParseExtra() override; // vtable+0x30 void ParseExtra() override; // vtable+0x30
virtual MxResult AddToManager() override; // vtable+0x34 MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
virtual void EndAction() override; // vtable+0x40 void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c void PutFrame() override; // vtable+0x6c
virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88 virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88
inline LegoAnimClass* GetUnknown0x64() { return m_unk0x64; } inline LegoAnimClass* GetUnknown0x64() { return m_unk0x64; }
@ -81,11 +81,11 @@ class LegoAnimPresenter : public MxVideoPresenter {
class LegoAnimClass : public LegoTree { class LegoAnimClass : public LegoTree {
public: public:
LegoAnimClass(); LegoAnimClass();
virtual ~LegoAnimClass() override; ~LegoAnimClass() override;
virtual LegoResult Write(LegoStorage* p_storage) override; // vtable+0x08 LegoResult Write(LegoStorage* p_storage) override; // vtable+0x08
virtual LegoTreeNodeData* CreateData() override; // vtable+0x0c LegoTreeNodeData* CreateData() override; // vtable+0x0c
virtual MxResult VTable0x10(LegoMemory* p_stream, MxS32); // vtable+0x10 virtual MxResult VTable0x10(LegoMemory* p_stream, MxS32); // vtable+0x10
inline MxLong GetUnknown0x8() { return m_unk0x08; } inline MxLong GetUnknown0x8() { return m_unk0x08; }

View File

@ -8,7 +8,7 @@
class LegoBackgroundColor : public MxVariable { class LegoBackgroundColor : public MxVariable {
public: public:
LegoBackgroundColor(const char* p_key, const char* p_value); LegoBackgroundColor(const char* p_key, const char* p_value);
virtual void SetValue(const char* p_colorString) override; void SetValue(const char* p_colorString) override;
private: private:
float m_h; float m_h;

View File

@ -8,12 +8,12 @@
class LegoBuildingManager : public MxCore { class LegoBuildingManager : public MxCore {
public: public:
LegoBuildingManager(); LegoBuildingManager();
virtual ~LegoBuildingManager() override; ~LegoBuildingManager() override;
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x1002f930 // FUNCTION: LEGO1 0x1002f930
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f37d0 // STRING: LEGO1 0x100f37d0
return "LegoBuildingManager"; return "LegoBuildingManager";

View File

@ -9,17 +9,17 @@
class LegoCacheSound : public MxCore { class LegoCacheSound : public MxCore {
public: public:
LegoCacheSound(); LegoCacheSound();
virtual ~LegoCacheSound() override; // vtable+0x00 ~LegoCacheSound() override; // vtable+0x00
// FUNCTION: LEGO1 0x10006580 // FUNCTION: LEGO1 0x10006580
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f01c4 // STRING: LEGO1 0x100f01c4
return "LegoCacheSound"; return "LegoCacheSound";
} }
// FUNCTION: LEGO1 0x10006590 // FUNCTION: LEGO1 0x10006590
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoCacheSound::ClassName()) || MxCore::IsA(p_name); return !strcmp(p_name, LegoCacheSound::ClassName()) || MxCore::IsA(p_name);
} }

View File

@ -22,7 +22,7 @@ class LegoCacheSoundList : public MxPtrList<LegoCacheSound> {
LegoCacheSoundList(MxBool p_ownership = FALSE) : MxPtrList<LegoCacheSound>(p_ownership) {} LegoCacheSoundList(MxBool p_ownership = FALSE) : MxPtrList<LegoCacheSound>(p_ownership) {}
// FUNCTION: LEGO1 0x1001e650 // FUNCTION: LEGO1 0x1001e650
virtual MxS8 Compare(LegoCacheSound* p_a, LegoCacheSound* p_b) override MxS8 Compare(LegoCacheSound* p_a, LegoCacheSound* p_b) override
{ {
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1; return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
} // vtable+0x14 } // vtable+0x14

View File

@ -12,19 +12,19 @@
class LegoCameraController : public LegoPointOfViewController { class LegoCameraController : public LegoPointOfViewController {
public: public:
LegoCameraController(); LegoCameraController();
virtual ~LegoCameraController() override; // vtable+0x00 ~LegoCameraController() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+04 MxLong Notify(MxParam& p_param) override; // vtable+04
// FUNCTION: LEGO1 0x10011ec0 // FUNCTION: LEGO1 0x10011ec0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0850 // STRING: LEGO1 0x100f0850
return "LegoCameraController"; return "LegoCameraController";
} }
// FUNCTION: LEGO1 0x10011ed0 // FUNCTION: LEGO1 0x10011ed0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name); return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name);
} }

View File

@ -8,29 +8,29 @@
class LegoCarBuild : public LegoWorld { class LegoCarBuild : public LegoWorld {
public: public:
LegoCarBuild(); LegoCarBuild();
virtual ~LegoCarBuild() override; ~LegoCarBuild() override;
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x10022940 // FUNCTION: LEGO1 0x10022940
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0504 // STRING: LEGO1 0x100f0504
return "LegoCarBuild"; return "LegoCarBuild";
} }
// FUNCTION: LEGO1 0x10022950 // FUNCTION: LEGO1 0x10022950
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50 void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x10022a60 // SYNTHETIC: LEGO1 0x10022a60
// LegoCarBuild::`scalar deleting destructor' // LegoCarBuild::`scalar deleting destructor'

View File

@ -8,26 +8,26 @@
class LegoCarBuildAnimPresenter : public LegoAnimPresenter { class LegoCarBuildAnimPresenter : public LegoAnimPresenter {
public: public:
LegoCarBuildAnimPresenter(); LegoCarBuildAnimPresenter();
virtual ~LegoCarBuildAnimPresenter() override; // vtable+0x00 ~LegoCarBuildAnimPresenter() override; // vtable+0x00
// FUNCTION: LEGO1 0x10078510 // FUNCTION: LEGO1 0x10078510
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f05ec // STRING: LEGO1 0x100f05ec
return "LegoCarBuildAnimPresenter"; return "LegoCarBuildAnimPresenter";
} }
// FUNCTION: LEGO1 0x10078520 // FUNCTION: LEGO1 0x10078520
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(p_name); return !strcmp(p_name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void StreamingTickle() override; // vtable+0x20 void StreamingTickle() override; // vtable+0x20
virtual void RepeatingTickle() override; // vtable+0x24 void RepeatingTickle() override; // vtable+0x24
virtual void EndAction() override; // vtable+0x40 void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c void PutFrame() override; // vtable+0x6c
// SYNTHETIC: LEGO1 0x10078660 // SYNTHETIC: LEGO1 0x10078660
// LegoCarBuildAnimPresenter::`scalar deleting destructor' // LegoCarBuildAnimPresenter::`scalar deleting destructor'

View File

@ -7,25 +7,25 @@
class LegoCarRaceActor : public LegoRaceActor { class LegoCarRaceActor : public LegoRaceActor {
public: public:
// FUNCTION: LEGO1 0x10081650 // FUNCTION: LEGO1 0x10081650
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f0568 // STRING: LEGO1 0x100f0568
return "LegoCarRaceActor"; return "LegoCarRaceActor";
} }
// FUNCTION: LEGO1 0x10081670 // FUNCTION: LEGO1 0x10081670
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name); return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
} }
virtual void VTable0x68() override; // vtable+0x68 void VTable0x68() override; // vtable+0x68
virtual void VTable0x6c() override; // vtable+0x6c void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x90() override; // vtable+0x90 MxS32 VTable0x90() override; // vtable+0x90
virtual MxS32 VTable0x94() override; // vtable+0x94 MxS32 VTable0x94() override; // vtable+0x94
virtual void VTable0x98() override; // vtable+0x98 void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10081610 // SYNTHETIC: LEGO1 0x10081610
// LegoCarRaceActor::`scalar deleting destructor' // LegoCarRaceActor::`scalar deleting destructor'

View File

@ -6,6 +6,8 @@
#include "mxcore.h" #include "mxcore.h"
#include "mxpresenterlist.h" #include "mxpresenterlist.h"
class MxControlPresenter;
// VTABLE: LEGO1 0x100d6a98 // VTABLE: LEGO1 0x100d6a98
// SIZE 0x2c // SIZE 0x2c
class LegoControlManagerEvent : public LegoEventNotificationParam { class LegoControlManagerEvent : public LegoEventNotificationParam {
@ -40,19 +42,19 @@ class LegoControlManagerEvent : public LegoEventNotificationParam {
class LegoControlManager : public MxCore { class LegoControlManager : public MxCore {
public: public:
LegoControlManager(); LegoControlManager();
virtual ~LegoControlManager() override; // vtable+0x00 ~LegoControlManager() override; // vtable+0x00
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x10028cb0 // FUNCTION: LEGO1 0x10028cb0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f31b8 // STRING: LEGO1 0x100f31b8
return "LegoControlManager"; return "LegoControlManager";
} }
// FUNCTION: LEGO1 0x10028cc0 // FUNCTION: LEGO1 0x10028cc0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoControlManager::ClassName()) || MxCore::IsA(p_name); return !strcmp(p_name, LegoControlManager::ClassName()) || MxCore::IsA(p_name);
} }
@ -62,7 +64,7 @@ class LegoControlManager : public MxCore {
void Unregister(MxCore* p_listener); void Unregister(MxCore* p_listener);
MxBool FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter); MxBool FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter);
void FUN_100293c0(undefined4, const char*, undefined2); void FUN_100293c0(undefined4, const char*, undefined2);
void FUN_100294e0(MxS32 p_x, MxS32 p_y); MxControlPresenter* FUN_100294e0(MxS32 p_x, MxS32 p_y);
MxBool FUN_10029630(); MxBool FUN_10029630();
MxBool FUN_10029750(); MxBool FUN_10029750();
void FUN_100292e0(); void FUN_100292e0();

View File

@ -20,9 +20,9 @@ class LegoEntity : public MxEntity {
inline LegoEntity() { Init(); } inline LegoEntity() { Init(); }
// FUNCTION: LEGO1 0x1000c290 // FUNCTION: LEGO1 0x1000c290
virtual ~LegoEntity() override { Destroy(TRUE); } ~LegoEntity() override { Destroy(TRUE); }
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x1000c2f0 // FUNCTION: LEGO1 0x1000c2f0
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c

View File

@ -22,7 +22,7 @@ class LegoEntityList : public MxPtrList<LegoEntity> {
LegoEntityList(MxBool p_ownership = FALSE) : MxPtrList<LegoEntity>(p_ownership) {} LegoEntityList(MxBool p_ownership = FALSE) : MxPtrList<LegoEntity>(p_ownership) {}
// FUNCTION: LEGO1 0x1001e2d0 // FUNCTION: LEGO1 0x1001e2d0
virtual MxS8 Compare(LegoEntity* p_a, LegoEntity* p_b) override MxS8 Compare(LegoEntity* p_a, LegoEntity* p_b) override
{ {
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1; return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
} // vtable+0x14 } // vtable+0x14
@ -74,7 +74,7 @@ class LegoEntityListCursor : public MxPtrListCursor<LegoEntity> {
// SYNTHETIC: LEGO1 0x1001f110 // SYNTHETIC: LEGO1 0x1001f110
// LegoEntityListCursor::`scalar deleting destructor' // LegoEntityListCursor::`scalar deleting destructor'
// FUNCTION: LEGO1 0x1001f180 // TEMPLATE: LEGO1 0x1001f180
// MxPtrListCursor<LegoEntity>::~MxPtrListCursor<LegoEntity> // MxPtrListCursor<LegoEntity>::~MxPtrListCursor<LegoEntity>
// SYNTHETIC: LEGO1 0x1001f1d0 // SYNTHETIC: LEGO1 0x1001f1d0
@ -83,7 +83,7 @@ class LegoEntityListCursor : public MxPtrListCursor<LegoEntity> {
// SYNTHETIC: LEGO1 0x1001f240 // SYNTHETIC: LEGO1 0x1001f240
// MxPtrListCursor<LegoEntity>::`scalar deleting destructor' // MxPtrListCursor<LegoEntity>::`scalar deleting destructor'
// FUNCTION: LEGO1 0x1001f2b0 // TEMPLATE: LEGO1 0x1001f2b0
// MxListCursor<LegoEntity *>::~MxListCursor<LegoEntity *> // MxListCursor<LegoEntity *>::~MxListCursor<LegoEntity *>
// FUNCTION: LEGO1 0x1001f300 // FUNCTION: LEGO1 0x1001f300

View File

@ -10,7 +10,7 @@ class LegoEntity;
class LegoEntityPresenter : public MxCompositePresenter { class LegoEntityPresenter : public MxCompositePresenter {
public: public:
LegoEntityPresenter(); LegoEntityPresenter();
virtual ~LegoEntityPresenter() override; // vtable+0x00 ~LegoEntityPresenter() override; // vtable+0x00
// FUNCTION: LEGO1 0x100534b0 // FUNCTION: LEGO1 0x100534b0
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -25,13 +25,13 @@ class LegoEntityPresenter : public MxCompositePresenter {
return !strcmp(p_name, LegoEntityPresenter::ClassName()) || MxCompositePresenter::IsA(p_name); return !strcmp(p_name, LegoEntityPresenter::ClassName()) || MxCompositePresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void RepeatingTickle() override; // vtable+0x24 void RepeatingTickle() override; // vtable+0x24
virtual void ParseExtra() override; // vtable+0x30 void ParseExtra() override; // vtable+0x30
virtual void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
virtual void Init(); // vtable+0x68 virtual void Init(); // vtable+0x68
virtual undefined4 SetEntity(LegoEntity* p_entity); // vtable+0x6c virtual undefined4 SetEntity(LegoEntity* p_entity); // vtable+0x6c
void SetEntityLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up); void SetEntityLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up);

View File

@ -12,7 +12,7 @@
class LegoEventNotificationParam : public MxNotificationParam { class LegoEventNotificationParam : public MxNotificationParam {
public: public:
// FUNCTION: LEGO1 0x10028690 // FUNCTION: LEGO1 0x10028690
virtual MxNotificationParam* Clone() override MxNotificationParam* Clone() override
{ {
LegoEventNotificationParam* clone = LegoEventNotificationParam* clone =
new LegoEventNotificationParam(m_type, m_sender, m_modifier, m_x, m_y, m_key); new LegoEventNotificationParam(m_type, m_sender, m_modifier, m_x, m_y, m_key);

View File

@ -17,9 +17,9 @@ class LegoFlcTexturePresenter : public MxFlcPresenter {
return "LegoFlcTexturePresenter"; return "LegoFlcTexturePresenter";
} }
virtual void StartingTickle() override; // vtable+0x1c void StartingTickle() override; // vtable+0x1c
virtual void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68 void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
virtual void PutFrame() override; // vtable+0x6c void PutFrame() override; // vtable+0x6c
// SYNTHETIC: LEGO1 0x1005df00 // SYNTHETIC: LEGO1 0x1005df00
// LegoFlcTexturePresenter::`scalar deleting destructor' // LegoFlcTexturePresenter::`scalar deleting destructor'

View File

@ -8,7 +8,7 @@
class LegoFullScreenMovie : public MxVariable { class LegoFullScreenMovie : public MxVariable {
public: public:
LegoFullScreenMovie(const char* p_key, const char* p_value); LegoFullScreenMovie(const char* p_key, const char* p_value);
virtual void SetValue(const char* p_option) override; void SetValue(const char* p_option) override;
}; };
#endif // LEGOFULLSCREENMOVIE_H #endif // LEGOFULLSCREENMOVIE_H

View File

@ -32,19 +32,25 @@ class LegoGameState {
LegoState* CreateState(const char* p_stateName); LegoState* CreateState(const char* p_stateName);
void GetFileSavePath(MxString* p_outPath, MxULong p_slotn); void GetFileSavePath(MxString* p_outPath, MxULong p_slotn);
void FUN_1003a720(MxU32); void StopArea(MxU32 p_area = 0);
void HandleAction(MxU32); void SwitchArea(MxU32 p_area);
inline MxU8 GetUnknownC() { return m_unk0x0c; } inline MxU8 GetUnknownC() { return m_unk0x0c; }
inline MxU32 GetUnknown10() { return m_unk0x10; } inline MxU32 GetUnknown10() { return m_unk0x10; }
inline MxS32 GetCurrentAct() { return m_currentAct; } inline MxS32 GetCurrentAct() { return m_currentAct; }
inline undefined4 GetUnknown424() { return m_unk0x424; } inline MxU32 GetCurrentArea() { return m_currentArea; }
inline MxU32 GetPreviousArea() { return m_previousArea; }
inline MxU32 GetUnknown0x42c() { return m_unk0x42c; }
inline void SetDirty(MxBool p_dirty) { m_isDirty = p_dirty; } inline void SetDirty(MxBool p_dirty) { m_isDirty = p_dirty; }
inline void SetUnknown424(undefined4 p_unk0x424) { m_unk0x424 = p_unk0x424; } inline void SetCurrentArea(MxU32 p_currentArea) { m_currentArea = p_currentArea; }
inline void SetPreviousArea(MxU32 p_previousArea) { m_previousArea = p_previousArea; }
inline void SetUnknown0x0c(MxU8 p_unk0x0c) { m_unk0x0c = p_unk0x0c; }
void SetSomeEnumState(undefined4 p_state); void SetSomeEnumState(undefined4 p_state);
void FUN_1003ceb0(); void FUN_1003ceb0();
void FUN_10039780(MxU8); void FUN_10039780(MxU8);
void FUN_10039940();
struct ScoreStruct { struct ScoreStruct {
void WriteScoreHistory(); void WriteScoreHistory();
@ -75,8 +81,8 @@ class LegoGameState {
ScoreStruct m_unk0xa6; // 0xa6 ScoreStruct m_unk0xa6; // 0xa6
undefined m_unk0x41a[8]; // 0x41a - might be part of the structure at 0xa6 undefined m_unk0x41a[8]; // 0x41a - might be part of the structure at 0xa6
MxBool m_isDirty; // 0x420 MxBool m_isDirty; // 0x420
undefined4 m_unk0x424; // 0x424 MxU32 m_currentArea; // 0x424
undefined4 m_prevArea; // 0x428 MxU32 m_previousArea; // 0x428
undefined4 m_unk0x42c; // 0x42c undefined4 m_unk0x42c; // 0x42c
}; };

View File

@ -9,7 +9,7 @@
class LegoHideAnimPresenter : public LegoLoopingAnimPresenter { class LegoHideAnimPresenter : public LegoLoopingAnimPresenter {
public: public:
LegoHideAnimPresenter(); LegoHideAnimPresenter();
virtual ~LegoHideAnimPresenter() override; ~LegoHideAnimPresenter() override;
// FUNCTION: LEGO1 0x1006d880 // FUNCTION: LEGO1 0x1006d880
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -24,12 +24,12 @@ class LegoHideAnimPresenter : public LegoLoopingAnimPresenter {
return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name); return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x18 void StartingTickle() override; // vtable+0x18
virtual MxResult AddToManager() override; // vtable+0x34 MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
virtual void EndAction() override; // vtable+0x40 void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c void PutFrame() override; // vtable+0x6c
private: private:
void Init(); void Init();

View File

@ -42,7 +42,7 @@ class LegoEventQueue : public MxQueue<LegoEventNotificationParam> {};
class LegoNotifyList : public MxPtrList<MxCore> { class LegoNotifyList : public MxPtrList<MxCore> {
protected: protected:
// FUNCTION: LEGO1 0x10028830 // FUNCTION: LEGO1 0x10028830
virtual MxS8 Compare(MxCore* p_element1, MxCore* p_element2) override MxS8 Compare(MxCore* p_element1, MxCore* p_element2) override
{ {
return p_element1 == p_element2 ? 0 : p_element1 < p_element2 ? -1 : 1; return p_element1 == p_element2 ? 0 : p_element1 < p_element2 ? -1 : 1;
} // vtable+0x14 } // vtable+0x14
@ -69,19 +69,19 @@ class LegoNotifyListCursor : public MxPtrListCursor<MxCore> {
class LegoInputManager : public MxPresenter { class LegoInputManager : public MxPresenter {
public: public:
LegoInputManager(); LegoInputManager();
virtual ~LegoInputManager() override; ~LegoInputManager() override;
void QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, MxU8 p_key); void QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, MxU8 p_key);
void Register(MxCore*); void Register(MxCore*);
void UnRegister(MxCore*); void UnRegister(MxCore*);
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x1005b8c0 // FUNCTION: LEGO1 0x1005b8c0
virtual MxResult PutData() override { return SUCCESS; } // vtable+0x4c MxResult PutData() override { return SUCCESS; } // vtable+0x4c
MxResult Create(HWND p_hwnd); MxResult Create(HWND p_hwnd);
void Destroy(); void Destroy() override;
void CreateAndAcquireKeyboard(HWND p_hwnd); void CreateAndAcquireKeyboard(HWND p_hwnd);
void ReleaseDX(); void ReleaseDX();
MxResult GetJoystickId(); MxResult GetJoystickId();

View File

@ -6,7 +6,7 @@
// VTABLE: LEGO1 0x100d5a40 // VTABLE: LEGO1 0x100d5a40
class LegoJetski : public LegoJetskiRaceActor { class LegoJetski : public LegoJetskiRaceActor {
public: public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10013e80 // FUNCTION: LEGO1 0x10013e80
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -21,13 +21,13 @@ class LegoJetski : public LegoJetskiRaceActor {
return !strcmp(p_name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(p_name); return !strcmp(p_name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20 void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30 void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x6c() override; // vtable+0x6c void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x94() override; // vtable+0x94 MxS32 VTable0x94() override; // vtable+0x94
virtual void VTable0x98() override; // vtable+0x98 void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10013e20 // SYNTHETIC: LEGO1 0x10013e20
// LegoJetski::`scalar deleting destructor' // LegoJetski::`scalar deleting destructor'

View File

@ -19,10 +19,10 @@ class LegoJetskiRaceActor : public LegoCarRaceActor {
return !strcmp(p_name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name); return !strcmp(p_name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
} }
virtual void VTable0x6c() override; // vtable+0x6c void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x98() override; // vtable+0x98 void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10081d40 // SYNTHETIC: LEGO1 0x10081d40
// LegoJetskiRaceActor::`scalar deleting destructor' // LegoJetskiRaceActor::`scalar deleting destructor'

View File

@ -11,7 +11,7 @@ class LegoCacheSound;
class LegoLoadCacheSoundPresenter : public MxWavePresenter { class LegoLoadCacheSoundPresenter : public MxWavePresenter {
public: public:
LegoLoadCacheSoundPresenter(); LegoLoadCacheSoundPresenter();
virtual ~LegoLoadCacheSoundPresenter() override; ~LegoLoadCacheSoundPresenter() override;
// FUNCTION: LEGO1 0x10018450 // FUNCTION: LEGO1 0x10018450
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -20,10 +20,10 @@ class LegoLoadCacheSoundPresenter : public MxWavePresenter {
return "LegoLoadCacheSoundPresenter"; return "LegoLoadCacheSoundPresenter";
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void StreamingTickle() override; // vtable+0x20 void StreamingTickle() override; // vtable+0x20
virtual void DoneTickle() override; // vtable+0x2c void DoneTickle() override; // vtable+0x2c
virtual MxResult PutData() override; // vtable+0x4c MxResult PutData() override; // vtable+0x4c
private: private:
void Init(); void Init();

View File

@ -8,7 +8,7 @@
class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter { class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
public: public:
LegoLocomotionAnimPresenter(); LegoLocomotionAnimPresenter();
virtual ~LegoLocomotionAnimPresenter() override; ~LegoLocomotionAnimPresenter() override;
// FUNCTION: LEGO1 0x1006ce50 // FUNCTION: LEGO1 0x1006ce50
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -23,22 +23,23 @@ class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
return !strcmp(p_name, ClassName()) || LegoLoopingAnimPresenter::IsA(p_name); return !strcmp(p_name, ClassName()) || LegoLoopingAnimPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x1c void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20 void StreamingTickle() override; // vtable+0x20
virtual MxResult AddToManager() override; // vtable+0x34 MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
virtual void EndAction() override; // vtable+0x40 void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c void PutFrame() override; // vtable+0x6c
virtual MxResult VTable0x88(MxStreamChunk* p_chunk) override; // vtable+0x88 MxResult VTable0x88(MxStreamChunk* p_chunk) override; // vtable+0x88
// SYNTHETIC: LEGO1 0x1006cfe0 // SYNTHETIC: LEGO1 0x1006cfe0
// LegoLocomotionAnimPresenter::`scalar deleting destructor' // LegoLocomotionAnimPresenter::`scalar deleting destructor'
inline void DecrementUnknown0xd4() inline void DecrementUnknown0xd4()
{ {
if (m_unk0xd4) if (m_unk0xd4) {
--m_unk0xd4; --m_unk0xd4;
}
} }
inline undefined2 GetUnknown0xd4() { return m_unk0xd4; } inline undefined2 GetUnknown0xd4() { return m_unk0xd4; }

View File

@ -20,8 +20,8 @@ class LegoLoopingAnimPresenter : public LegoAnimPresenter {
return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name); return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name);
} }
virtual void StreamingTickle() override; // vtable+0x20 void StreamingTickle() override; // vtable+0x20
virtual void PutFrame() override; // vtable+0x6c void PutFrame() override; // vtable+0x6c
}; };
// SYNTHETIC: LEGO1 0x1006d000 // SYNTHETIC: LEGO1 0x1006d000

View File

@ -8,13 +8,13 @@
class LegoMeterPresenter : public MxStillPresenter { class LegoMeterPresenter : public MxStillPresenter {
public: public:
LegoMeterPresenter(); LegoMeterPresenter();
virtual ~LegoMeterPresenter() override; ~LegoMeterPresenter() override;
// MxStillPresenter's `::ClassName` and `::IsA` are used. // MxStillPresenter's `::ClassName` and `::IsA` are used.
virtual void StreamingTickle() override; // vtable+0x20 void StreamingTickle() override; // vtable+0x20
virtual void RepeatingTickle() override; // vtable+0x24 void RepeatingTickle() override; // vtable+0x24
virtual void ParseExtra() override; // vtable+0x30 void ParseExtra() override; // vtable+0x30
private: private:
void FUN_10043a50(); void FUN_10043a50();

View File

@ -24,9 +24,9 @@ class LegoModelPresenter : public MxVideoPresenter {
return !strcmp(p_name, ClassName()) || MxVideoPresenter::IsA(p_name); return !strcmp(p_name, ClassName()) || MxVideoPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void ParseExtra() override; // vtable+0x30 void ParseExtra() override; // vtable+0x30
virtual void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
// SYNTHETIC: LEGO1 0x1000cdd0 // SYNTHETIC: LEGO1 0x1000cdd0
// LegoModelPresenter::`scalar deleting destructor' // LegoModelPresenter::`scalar deleting destructor'

View File

@ -37,8 +37,8 @@ class LegoNavController : public MxCore {
); );
LegoNavController(); LegoNavController();
virtual ~LegoNavController() override; // vtable+0x00 ~LegoNavController() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10054b80 // FUNCTION: LEGO1 0x10054b80
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c

View File

@ -105,8 +105,8 @@
class LegoObjectFactory : public MxObjectFactory { class LegoObjectFactory : public MxObjectFactory {
public: public:
LegoObjectFactory(); LegoObjectFactory();
virtual MxCore* Create(const char* p_name) override; // vtable 0x14 MxCore* Create(const char* p_name) override; // vtable 0x14
virtual void Destroy(MxCore* p_object) override; // vtable 0x18 void Destroy(MxCore* p_object) override; // vtable 0x18
// SYNTHETIC: LEGO1 0x10009000 // SYNTHETIC: LEGO1 0x10009000
// LegoObjectFactory::`scalar deleting destructor' // LegoObjectFactory::`scalar deleting destructor'

View File

@ -28,6 +28,7 @@ class MxBackgroundAudioManager;
class MxDSFile; class MxDSFile;
class MxTransitionManager; class MxTransitionManager;
class ViewLODListManager; class ViewLODListManager;
class ViewManager;
extern MxAtomId* g_copterScript; extern MxAtomId* g_copterScript;
extern MxAtomId* g_dunecarScript; extern MxAtomId* g_dunecarScript;
@ -75,33 +76,33 @@ class LegoOmni : public MxOmni {
static LegoOmni* GetInstance(); static LegoOmni* GetInstance();
LegoOmni(); LegoOmni();
virtual ~LegoOmni(); // vtable+00 ~LegoOmni() override; // vtable+00
virtual MxLong Notify(MxParam& p_param) override; // vtable+04 MxLong Notify(MxParam& p_param) override; // vtable+04
// FUNCTION: LEGO1 0x10058aa0 // FUNCTION: LEGO1 0x10058aa0
inline virtual const char* ClassName() const override // vtable+0c inline const char* ClassName() const override // vtable+0c
{ {
// STRING: LEGO1 0x100f671c // STRING: LEGO1 0x100f671c
return "LegoOmni"; return "LegoOmni";
} }
// FUNCTION: LEGO1 0x10058ab0 // FUNCTION: LEGO1 0x10058ab0
inline virtual MxBool IsA(const char* p_name) const override // vtable+10 inline MxBool IsA(const char* p_name) const override // vtable+10
{ {
return !strcmp(p_name, LegoOmni::ClassName()) || MxOmni::IsA(p_name); return !strcmp(p_name, LegoOmni::ClassName()) || MxOmni::IsA(p_name);
} }
virtual void Init() override; // vtable+14 void Init() override; // vtable+14
virtual MxResult Create(MxOmniCreateParam& p_param) override; // vtable+18 MxResult Create(MxOmniCreateParam& p_param) override; // vtable+18
virtual void Destroy() override; // vtable+1c void Destroy() override; // vtable+1c
virtual MxResult Start(MxDSAction* p_dsAction) override; // vtable+20 MxResult Start(MxDSAction* p_dsAction) override; // vtable+20
virtual void DeleteObject(MxDSAction& p_dsAction) override; // vtable+24 void DeleteObject(MxDSAction& p_dsAction) override; // vtable+24
virtual MxBool DoesEntityExist(MxDSAction& p_dsAction) override; // vtable+28 MxBool DoesEntityExist(MxDSAction& p_dsAction) override; // vtable+28
virtual MxEntity* AddToWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter) override; // vtable+30 MxEntity* AddToWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter) override; // vtable+30
virtual void NotifyCurrentEntity(MxNotificationParam* p_param) override; // vtable+34 void NotifyCurrentEntity(MxNotificationParam* p_param) override; // vtable+34
virtual void StartTimer() override; // vtable+38 void StartTimer() override; // vtable+38
virtual void StopTimer() override; // vtable+3c void StopTimer() override; // vtable+3c
LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid); LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid);
void AddWorld(LegoWorld* p_world); void AddWorld(LegoWorld* p_world);
@ -125,7 +126,7 @@ class LegoOmni : public MxOmni {
LegoUnkSaveDataWriter* GetUnkSaveDataWriter() { return m_saveDataWriter; } LegoUnkSaveDataWriter* GetUnkSaveDataWriter() { return m_saveDataWriter; }
inline void SetNavController(LegoNavController* p_navController) { m_navController = p_navController; } inline void SetNavController(LegoNavController* p_navController) { m_navController = p_navController; }
inline void SetWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; } inline void SetCurrentWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; }
inline void SetExit(MxBool p_exit) { m_exit = p_exit; } inline void SetExit(MxBool p_exit) { m_exit = p_exit; }
inline void CloseMainWindow() { PostMessageA(m_windowHandle, WM_CLOSE, 0, 0); } inline void CloseMainWindow() { PostMessageA(m_windowHandle, WM_CLOSE, 0, 0); }
@ -164,14 +165,15 @@ LegoROI* PickROI(MxLong, MxLong);
LegoSoundManager* SoundManager(); LegoSoundManager* SoundManager();
MxTransitionManager* TransitionManager(); MxTransitionManager* TransitionManager();
LegoVideoManager* VideoManager(); LegoVideoManager* VideoManager();
LegoAnimationManager* AnimationManager(); LegoAnimationManager* AnimationManager();
LegoNavController* NavController();
LegoBuildingManager* BuildingManager(); LegoBuildingManager* BuildingManager();
LegoControlManager* ControlManager(); LegoControlManager* ControlManager();
IslePathActor* GetCurrentVehicle(); IslePathActor* CurrentVehicle();
ViewManager* GetViewManager();
LegoPlantManager* PlantManager(); LegoPlantManager* PlantManager();
LegoWorld* GetCurrentWorld(); LegoWorld* CurrentWorld();
LegoUnkSaveDataWriter* GetUnkSaveDataWriter(); LegoUnkSaveDataWriter* UnkSaveDataWriter();
GifManager* GetGifManager(); GifManager* GetGifManager();
void FUN_10015820(MxBool p_disable, MxU16 p_flags); void FUN_10015820(MxBool p_disable, MxU16 p_flags);
void FUN_10015860(const char*, MxU8); void FUN_10015860(const char*, MxU8);

View File

@ -10,7 +10,7 @@
class LegoPalettePresenter : public MxVideoPresenter { class LegoPalettePresenter : public MxVideoPresenter {
public: public:
LegoPalettePresenter(); LegoPalettePresenter();
virtual ~LegoPalettePresenter() override; // vtable+0x00 ~LegoPalettePresenter() override; // vtable+0x00
// FUNCTION: LEGO1 0x10079f30 // FUNCTION: LEGO1 0x10079f30
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -25,8 +25,8 @@ class LegoPalettePresenter : public MxVideoPresenter {
return !strcmp(p_name, ClassName()) || MxVideoPresenter::IsA(p_name); return !strcmp(p_name, ClassName()) || MxVideoPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
MxResult ParsePalette(MxStreamChunk* p_chunk); MxResult ParsePalette(MxStreamChunk* p_chunk);

View File

@ -20,9 +20,9 @@ class LegoPartPresenter : public MxMediaPresenter {
return !strcmp(p_name, LegoPartPresenter::ClassName()) || MxMediaPresenter::IsA(p_name); return !strcmp(p_name, LegoPartPresenter::ClassName()) || MxMediaPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual MxResult AddToManager() override; // vtable+0x34 MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
static void configureLegoPartPresenter(MxS32, MxS32); static void configureLegoPartPresenter(MxS32, MxS32);

View File

@ -10,7 +10,7 @@
class LegoPathActor : public LegoActor { class LegoPathActor : public LegoActor {
public: public:
LegoPathActor(); LegoPathActor();
virtual ~LegoPathActor() override; ~LegoPathActor() override;
// FUNCTION: LEGO1 0x1000c430 // FUNCTION: LEGO1 0x1000c430
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -25,7 +25,7 @@ class LegoPathActor : public LegoActor {
return !strcmp(p_name, LegoPathActor::ClassName()) || LegoActor::IsA(p_name); return !strcmp(p_name, LegoPathActor::ClassName()) || LegoActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20 void ParseAction(char*) override; // vtable+0x20
virtual void VTable0x68(); // vtable+0x68 virtual void VTable0x68(); // vtable+0x68
virtual void VTable0x6c(); // vtable+0x6c virtual void VTable0x6c(); // vtable+0x6c
virtual void VTable0x70(float p_float); // vtable+0x70 virtual void VTable0x70(float p_float); // vtable+0x70

View File

@ -8,9 +8,9 @@
class LegoPathController : public MxCore { class LegoPathController : public MxCore {
public: public:
LegoPathController(); LegoPathController();
virtual ~LegoPathController() override { Destroy(); } ~LegoPathController() override { Destroy(); }
virtual MxResult Tickle() override; // vtable+08 MxResult Tickle() override; // vtable+08
// FUNCTION: LEGO1 0x10045110 // FUNCTION: LEGO1 0x10045110
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -30,6 +30,8 @@ class LegoPathController : public MxCore {
virtual void VTable0x14(); // vtable+0x14 virtual void VTable0x14(); // vtable+0x14
virtual void Destroy(); // vtable+0x18 virtual void Destroy(); // vtable+0x18
void Enable(MxBool p_enable);
}; };
#endif // LEGOPATHCONTROLLER_H #endif // LEGOPATHCONTROLLER_H

View File

@ -5,6 +5,12 @@
#include "mxlist.h" #include "mxlist.h"
#include "mxtypes.h" #include "mxtypes.h"
// VTABLE: LEGO1 0x100d6380
// class MxCollection<LegoPathController *>
// VTABLE: LEGO1 0x100d6398
// class MxList<LegoPathController *>
// VTABLE: LEGO1 0x100d6320 // VTABLE: LEGO1 0x100d6320
// class MxPtrList<LegoPathController> // class MxPtrList<LegoPathController>
@ -15,20 +21,24 @@ class LegoPathControllerList : public MxPtrList<LegoPathController> {
LegoPathControllerList(MxBool p_ownership = FALSE) : MxPtrList<LegoPathController>(p_ownership) {} LegoPathControllerList(MxBool p_ownership = FALSE) : MxPtrList<LegoPathController>(p_ownership) {}
// FUNCTION: LEGO1 0x1001d210 // FUNCTION: LEGO1 0x1001d210
virtual MxS8 Compare(LegoPathController* p_a, LegoPathController* p_b) override MxS8 Compare(LegoPathController* p_a, LegoPathController* p_b) override
{ {
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1; return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
} // vtable+0x14 } // vtable+0x14
// SYNTHETIC: LEGO1 0x1001d3d0
// LegoPathControllerList::`scalar deleting destructor'
}; };
// VTABLE: LEGO1 0x100d6380 // VTABLE: LEGO1 0x100d6578
// class MxCollection<LegoPathController *> // class MxListCursor<LegoPathController *>
// VTABLE: LEGO1 0x100d6398 // VTABLE: LEGO1 0x100d6548
// class MxList<LegoPathController *> // class MxPtrListCursor<LegoPathController>
// VTABLE: LEGO1 0x100d6560
// SIZE 0x10
class LegoPathControllerListCursor : public MxPtrListCursor<LegoPathController> {
public:
LegoPathControllerListCursor(LegoPathControllerList* p_list) : MxPtrListCursor<LegoPathController>(p_list){};
};
// TEMPLATE: LEGO1 0x1001d230 // TEMPLATE: LEGO1 0x1001d230
// MxCollection<LegoPathController *>::Compare // MxCollection<LegoPathController *>::Compare
@ -48,6 +58,9 @@ class LegoPathControllerList : public MxPtrList<LegoPathController> {
// TEMPLATE: LEGO1 0x1001d3c0 // TEMPLATE: LEGO1 0x1001d3c0
// MxPtrList<LegoPathController>::Destroy // MxPtrList<LegoPathController>::Destroy
// SYNTHETIC: LEGO1 0x1001d3d0
// LegoPathControllerList::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1001d440 // TEMPLATE: LEGO1 0x1001d440
// MxPtrList<LegoPathController>::~MxPtrList<LegoPathController> // MxPtrList<LegoPathController>::~MxPtrList<LegoPathController>
@ -63,4 +76,22 @@ class LegoPathControllerList : public MxPtrList<LegoPathController> {
// SYNTHETIC: LEGO1 0x1001d620 // SYNTHETIC: LEGO1 0x1001d620
// LegoPathControllerList::~LegoPathControllerList // LegoPathControllerList::~LegoPathControllerList
// SYNTHETIC: LEGO1 0x1001f830
// LegoPathControllerListCursor::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1001f8a0
// MxPtrListCursor<LegoPathController>::~MxPtrListCursor<LegoPathController>
// SYNTHETIC: LEGO1 0x1001f8f0
// MxListCursor<LegoPathController *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001f960
// MxPtrListCursor<LegoPathController>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1001f9d0
// MxListCursor<LegoPathController *>::~MxListCursor<LegoPathController *>
// FUNCTION: LEGO1 0x1001fa20
// LegoPathControllerListCursor::~LegoPathControllerListCursor
#endif // LEGOPATHCONTROLLERLIST_H #endif // LEGOPATHCONTROLLERLIST_H

View File

@ -8,7 +8,7 @@
class LegoPathPresenter : public MxMediaPresenter { class LegoPathPresenter : public MxMediaPresenter {
public: public:
LegoPathPresenter(); LegoPathPresenter();
virtual ~LegoPathPresenter() override; ~LegoPathPresenter() override;
// FUNCTION: LEGO1 0x100449a0 // FUNCTION: LEGO1 0x100449a0
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -23,12 +23,12 @@ class LegoPathPresenter : public MxMediaPresenter {
return !strcmp(p_name, LegoPathPresenter::ClassName()) || MxMediaPresenter::IsA(p_name); return !strcmp(p_name, LegoPathPresenter::ClassName()) || MxMediaPresenter::IsA(p_name);
} }
virtual void ReadyTickle() override; // vtable+0x18 void ReadyTickle() override; // vtable+0x18
virtual void StreamingTickle() override; // vtable+0x20 void StreamingTickle() override; // vtable+0x20
virtual void RepeatingTickle() override; // vtable+0x24 void RepeatingTickle() override; // vtable+0x24
virtual void ParseExtra() override; // vtable+0x30 void ParseExtra() override; // vtable+0x30
virtual MxResult AddToManager() override; // vtable+0x34 MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38 void Destroy() override; // vtable+0x38
// SYNTHETIC: LEGO1 0x10044a90 // SYNTHETIC: LEGO1 0x10044a90
// LegoPathPresenter::`scalar deleting destructor' // LegoPathPresenter::`scalar deleting destructor'

View File

@ -11,7 +11,7 @@
class LegoPhonemePresenter : public MxFlcPresenter { class LegoPhonemePresenter : public MxFlcPresenter {
public: public:
LegoPhonemePresenter(); LegoPhonemePresenter();
virtual ~LegoPhonemePresenter() override; // vtable+0x00 ~LegoPhonemePresenter() override; // vtable+0x00
// FUNCTION: LEGO1 0x1004e310 // FUNCTION: LEGO1 0x1004e310
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -20,10 +20,10 @@ class LegoPhonemePresenter : public MxFlcPresenter {
return "LegoPhonemePresenter"; return "LegoPhonemePresenter";
} }
virtual void StartingTickle() override; // vtable+0x1c void StartingTickle() override; // vtable+0x1c
virtual void EndAction() override; // vtable+0x40 void EndAction() override; // vtable+0x40
virtual void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68 void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
virtual void PutFrame() override; // vtable+0x6c void PutFrame() override; // vtable+0x6c
// SYNTHETIC: LEGO1 0x1004e320 // SYNTHETIC: LEGO1 0x1004e320
// LegoPhonemePresenter::`scalar deleting destructor' // LegoPhonemePresenter::`scalar deleting destructor'

View File

@ -9,9 +9,9 @@
class LegoPlantManager : public MxCore { class LegoPlantManager : public MxCore {
public: public:
LegoPlantManager(); LegoPlantManager();
virtual ~LegoPlantManager() override; // vtable+0x00 ~LegoPlantManager() override; // vtable+0x00
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x10026290 // FUNCTION: LEGO1 0x10026290
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c

View File

@ -20,7 +20,7 @@ class LegoNavController;
class LegoMouseController : public MxCore { class LegoMouseController : public MxCore {
public: public:
LegoMouseController(); LegoMouseController();
virtual ~LegoMouseController() override; ~LegoMouseController() override;
virtual void LeftDown(int, int); // vtable+0x14 virtual void LeftDown(int, int); // vtable+0x14
virtual void LeftDrag(int, int); // vtable+0x18 virtual void LeftDrag(int, int); // vtable+0x18
@ -44,14 +44,14 @@ class LegoMouseController : public MxCore {
class LegoPointOfViewController : public LegoMouseController { class LegoPointOfViewController : public LegoMouseController {
public: public:
LegoPointOfViewController(); LegoPointOfViewController();
virtual ~LegoPointOfViewController() override; ~LegoPointOfViewController() override;
virtual MxResult Tickle() override; // vtable+0x08 MxResult Tickle() override; // vtable+0x08
virtual void LeftDown(int p_x, int p_y) override; // vtable+0x0c void LeftDown(int p_x, int p_y) override; // vtable+0x0c
virtual void LeftDrag(int p_x, int p_y) override; // vtable+0x10 void LeftDrag(int p_x, int p_y) override; // vtable+0x10
// FUNCTION: LEGO1 0x10011e40 // FUNCTION: LEGO1 0x10011e40
virtual void LeftUp(int p_x, int p_y) override void LeftUp(int p_x, int p_y) override
{ {
LegoMouseController::LeftUp(p_x, p_y); LegoMouseController::LeftUp(p_x, p_y);
AffectPointOfView(); AffectPointOfView();
@ -59,7 +59,7 @@ class LegoPointOfViewController : public LegoMouseController {
// vtable+0x14 // vtable+0x14
// FUNCTION: LEGO1 0x10011e60 // FUNCTION: LEGO1 0x10011e60
virtual void RightDown(int p_x, int p_y) override void RightDown(int p_x, int p_y) override
{ {
LegoMouseController::RightDown(p_x, p_y); LegoMouseController::RightDown(p_x, p_y);
AffectPointOfView(); AffectPointOfView();
@ -67,7 +67,7 @@ class LegoPointOfViewController : public LegoMouseController {
// vtable+0x20 // vtable+0x20
// FUNCTION: LEGO1 0x10011e80 // FUNCTION: LEGO1 0x10011e80
virtual void RightDrag(int p_x, int p_y) override void RightDrag(int p_x, int p_y) override
{ {
LegoMouseController::RightDrag(p_x, p_y); LegoMouseController::RightDrag(p_x, p_y);
AffectPointOfView(); AffectPointOfView();
@ -75,7 +75,7 @@ class LegoPointOfViewController : public LegoMouseController {
// vtable+0x24 // vtable+0x24
// FUNCTION: LEGO1 0x10011ea0 // FUNCTION: LEGO1 0x10011ea0
virtual void RightUp(int p_x, int p_y) override void RightUp(int p_x, int p_y) override
{ {
LegoMouseController::RightUp(p_x, p_y); LegoMouseController::RightUp(p_x, p_y);
AffectPointOfView(); AffectPointOfView();
@ -86,6 +86,7 @@ class LegoPointOfViewController : public LegoMouseController {
void OnViewSize(int p_width, int p_height); void OnViewSize(int p_width, int p_height);
inline LegoEntity* GetEntity() { return m_entity; } inline LegoEntity* GetEntity() { return m_entity; }
inline LegoNavController* GetNavController() { return m_nav; }
protected: protected:
void AffectPointOfView(); void AffectPointOfView();

View File

@ -11,9 +11,9 @@
class LegoRace : public LegoWorld { class LegoRace : public LegoWorld {
public: public:
LegoRace(); LegoRace();
virtual ~LegoRace() override; // vtable+0x00 ~LegoRace() override; // vtable+0x00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10015ba0 // FUNCTION: LEGO1 0x10015ba0
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -28,15 +28,15 @@ class LegoRace : public LegoWorld {
return !strcmp(p_name, LegoRace::ClassName()) || LegoWorld::IsA(p_name); return !strcmp(p_name, LegoRace::ClassName()) || LegoWorld::IsA(p_name);
} }
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual MxBool VTable0x5c() override; // vtable+0x5c MxBool VTable0x5c() override; // vtable+0x5c
virtual MxBool VTable0x64() override; // vtable+0x64 MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 void Enable(MxBool p_enable) override; // vtable+0x68
virtual undefined4 VTable0x6c(undefined4) = 0; // vtable+0x6c virtual undefined4 VTable0x6c(undefined4) = 0; // vtable+0x6c
virtual undefined4 VTable0x70(undefined4); // vtable+0x70 virtual undefined4 VTable0x70(undefined4); // vtable+0x70
virtual undefined4 VTable0x74(undefined4); // vtable+0x74 virtual undefined4 VTable0x74(undefined4); // vtable+0x74
virtual undefined4 VTable0x78(undefined4); // vtable+0x78 virtual undefined4 VTable0x78(undefined4); // vtable+0x78
virtual void VTable0x7c(undefined4, undefined4); // vtable+0x7c virtual void VTable0x7c(undefined4, undefined4); // vtable+0x7c
// SYNTHETIC: LEGO1 0x10015cc0 // SYNTHETIC: LEGO1 0x10015cc0
// LegoRace::`scalar deleting destructor' // LegoRace::`scalar deleting destructor'

View File

@ -20,13 +20,13 @@ class LegoRaceActor : public LegoAnimActor {
return !strcmp(p_name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(p_name); return !strcmp(p_name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20 void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30 void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x68() override; // vtable+0x68 void VTable0x68() override; // vtable+0x68
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74 void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
virtual MxS32 VTable0x90() override; // vtable+0x90 MxS32 VTable0x90() override; // vtable+0x90
virtual MxS32 VTable0x94() override; // vtable+0x94 MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x10014ab0 // SYNTHETIC: LEGO1 0x10014ab0
// LegoRaceActor::`scalar deleting destructor' // LegoRaceActor::`scalar deleting destructor'

View File

@ -8,7 +8,7 @@
// SIZE 0x200 // SIZE 0x200
class LegoRaceCar : public LegoCarRaceActor { class LegoRaceCar : public LegoCarRaceActor {
public: public:
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x10014290 // FUNCTION: LEGO1 0x10014290
inline const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
@ -23,13 +23,13 @@ class LegoRaceCar : public LegoCarRaceActor {
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name); return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
} }
virtual void ParseAction(char*) override; // vtable+0x20 void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30 void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x6c() override; // vtable+0x6c void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70 void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x94() override; // vtable+0x94 MxS32 VTable0x94() override; // vtable+0x94
virtual void VTable0x98() override; // vtable+0x98 void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10014230 // SYNTHETIC: LEGO1 0x10014230
// LegoRaceCar::`scalar deleting destructor' // LegoRaceCar::`scalar deleting destructor'

View File

@ -9,11 +9,11 @@
class LegoSoundManager : public MxSoundManager { class LegoSoundManager : public MxSoundManager {
public: public:
LegoSoundManager(); LegoSoundManager();
virtual ~LegoSoundManager() override; ~LegoSoundManager() override;
virtual MxResult Tickle() override; // vtable+08 MxResult Tickle() override; // vtable+08
virtual void Destroy() override; // vtable+18 void Destroy() override; // vtable+18
virtual MxResult Create(MxU32 p_frequencyMS, MxBool p_createThread) override; // vtable+0x30 MxResult Create(MxU32 p_frequencyMS, MxBool p_createThread) override; // vtable+0x30
// SYNTHETIC: LEGO1 0x10029920 // SYNTHETIC: LEGO1 0x10029920
// LegoSoundManager::`scalar deleting destructor' // LegoSoundManager::`scalar deleting destructor'
@ -24,8 +24,11 @@ class LegoSoundManager : public MxSoundManager {
void Init(); void Init();
void Destroy(MxBool p_fromDestructor); void Destroy(MxBool p_fromDestructor);
undefined4 m_unk0x3c; // 0x3c LPDIRECTSOUND3DLISTENER m_listener; // 0x3c
LegoUnknown100d6b4c* m_unk0x40; // 0x40 LegoUnknown100d6b4c* m_unk0x40; // 0x40
}; };
// GLOBAL: LEGO1 0x100db6d0
// IID_IDirectSound3DListener
#endif // LEGOSOUNDMANAGER_H #endif // LEGOSOUNDMANAGER_H

View File

@ -11,17 +11,17 @@
class LegoState : public MxCore { class LegoState : public MxCore {
public: public:
// FUNCTION: LEGO1 0x10005f40 // FUNCTION: LEGO1 0x10005f40
virtual ~LegoState() override {} ~LegoState() override {}
// FUNCTION: LEGO1 0x100060d0 // FUNCTION: LEGO1 0x100060d0
inline virtual const char* ClassName() const override // vtable+0x0c inline const char* ClassName() const override // vtable+0x0c
{ {
// STRING: LEGO1 0x100f01b8 // STRING: LEGO1 0x100f01b8
return "LegoState"; return "LegoState";
} }
// FUNCTION: LEGO1 0x100060e0 // FUNCTION: LEGO1 0x100060e0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10 inline MxBool IsA(const char* p_name) const override // vtable+0x10
{ {
return !strcmp(p_name, LegoState::ClassName()) || MxCore::IsA(p_name); return !strcmp(p_name, LegoState::ClassName()) || MxCore::IsA(p_name);
} }
@ -43,6 +43,55 @@ class LegoState : public MxCore {
// SYNTHETIC: LEGO1 0x10006160 // SYNTHETIC: LEGO1 0x10006160
// LegoState::`scalar deleting destructor' // LegoState::`scalar deleting destructor'
// SIZE 0x0c
class Playlist {
public:
enum Mode {
e_loop,
e_once,
e_random,
e_loopSkipFirst
};
// FUNCTION: LEGO1 0x10017c00
Playlist()
{
m_objectIds = NULL;
m_length = 0;
m_mode = e_loop;
m_nextIndex = 0;
}
Playlist(MxU32* p_objectIds, MxS16 p_length)
{
m_objectIds = p_objectIds;
m_length = p_length;
m_mode = e_loop;
m_nextIndex = 0;
}
// FUNCTION: LEGO1 0x10071800
Playlist& operator=(const Playlist& p_shuffle)
{
m_objectIds = p_shuffle.m_objectIds;
m_length = p_shuffle.m_length;
m_nextIndex = p_shuffle.m_nextIndex;
m_mode = p_shuffle.m_mode;
return *this;
}
MxU32 Next();
MxBool Contains(MxU32 p_objectId);
inline void SetUnknown0x08(MxS16 p_unk0x08) { m_nextIndex = p_unk0x08; }
private:
MxU32* m_objectIds; // 0x00
MxS16 m_length; // 0x04
MxS16 m_mode; // 0x06
MxS16 m_nextIndex; // 0x08
};
}; };
#endif // LEGOSTATE_H #endif // LEGOSTATE_H

Some files were not shown because too many files have changed in this diff Show More