mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 18:51:16 +00:00
Merge branch 'master' into legotree
This commit is contained in:
commit
f0a31294fd
4
.github/workflows/analyze.yml
vendored
4
.github/workflows/analyze.yml
vendored
@ -8,7 +8,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install python libraries
|
||||
run: |
|
||||
@ -23,7 +23,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install python libraries
|
||||
run: |
|
||||
|
||||
8
.github/workflows/build.yml
vendored
8
.github/workflows/build.yml
vendored
@ -41,7 +41,7 @@ jobs:
|
||||
with:
|
||||
arch: amd64_x86 # Use the 64-bit x64-native cross tools to build 32-bit x86 code
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
@ -53,9 +53,9 @@ jobs:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: 'itsmattkc/msvc420'
|
||||
path: msvc420
|
||||
@ -165,7 +165,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'isledecomp/isle' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
repository: 'probonopd/uploadtool'
|
||||
|
||||
|
||||
6
.github/workflows/format.yml
vendored
6
.github/workflows/format.yml
vendored
@ -8,7 +8,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Run clang-format
|
||||
run: |
|
||||
@ -24,12 +24,12 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install python libraries
|
||||
shell: bash
|
||||
run: |
|
||||
pip install black pylint pytest -r tools/requirements.txt
|
||||
pip install black==23.* pylint==3.* pytest==7.* -r tools/requirements.txt
|
||||
|
||||
- name: Run pylint and black
|
||||
shell: bash
|
||||
|
||||
2
.github/workflows/naming.yml
vendored
2
.github/workflows/naming.yml
vendored
@ -8,7 +8,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install LLVM and Clang
|
||||
uses: KyleMayes/install-llvm-action@v1
|
||||
|
||||
4
.github/workflows/unittest.yml
vendored
4
.github/workflows/unittest.yml
vendored
@ -8,7 +8,7 @@ jobs:
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install python libraries
|
||||
shell: bash
|
||||
@ -25,7 +25,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install python libraries
|
||||
shell: bash
|
||||
|
||||
399
CMakeLists.txt
399
CMakeLists.txt
@ -16,12 +16,202 @@ if (MSVC)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(lego1_targets)
|
||||
macro(register_lego1_target __target)
|
||||
list(APPEND lego1_targets ${__target})
|
||||
endmacro()
|
||||
|
||||
message(STATUS "MSVC for decompilation: ${MSVC_FOR_DECOMP}")
|
||||
|
||||
option(ISLE_BUILD_APP "Build ISLE.EXE application" ON)
|
||||
option(ISLE_USE_SMARTHEAP "Build with SmartHeap" ${MSVC_FOR_DECOMP})
|
||||
option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" ON)
|
||||
|
||||
add_library(DirectX5::DirectX5 INTERFACE IMPORTED)
|
||||
target_include_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
|
||||
target_link_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
|
||||
|
||||
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 INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/3rdparty/smacker")
|
||||
|
||||
add_library(FLIC::FLIC STATIC IMPORTED)
|
||||
set_property(TARGET FLIC::FLIC PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/3rdparty/flic/flic.lib")
|
||||
set_property(TARGET FLIC::FLIC PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/3rdparty/flic")
|
||||
|
||||
add_library(Vec::Vec INTERFACE IMPORTED)
|
||||
target_include_directories(Vec::Vec INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/vec")
|
||||
|
||||
add_library(SmartHeap::SmartHeap STATIC IMPORTED)
|
||||
set_property(TARGET SmartHeap::SmartHeap PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/3rdparty/smartheap/SHLW32MT.LIB")
|
||||
set_property(TARGET SmartHeap::SmartHeap PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/3rdparty/smartheap")
|
||||
set_property(TARGET SmartHeap::SmartHeap PROPERTY INTERFACE_COMPILE_OPTIONS "/FI${CMAKE_SOURCE_DIR}/3rdparty/smartheap/SMRTHEAP.HPP")
|
||||
|
||||
add_library(tglrl STATIC
|
||||
LEGO1/tgl/d3drm/camera.cpp
|
||||
LEGO1/tgl/d3drm/device.cpp
|
||||
LEGO1/tgl/d3drm/group.cpp
|
||||
LEGO1/tgl/d3drm/light.cpp
|
||||
LEGO1/tgl/d3drm/mesh.cpp
|
||||
LEGO1/tgl/d3drm/renderer.cpp
|
||||
LEGO1/tgl/d3drm/texture.cpp
|
||||
LEGO1/tgl/d3drm/unk.cpp
|
||||
LEGO1/tgl/d3drm/view.cpp
|
||||
)
|
||||
register_lego1_target(tglrl)
|
||||
set_property(TARGET tglrl PROPERTY ARCHIVE_OUTPUT_NAME "tglrl40$<$<CONFIG:Debug>:d>")
|
||||
target_include_directories(tglrl PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
|
||||
target_link_libraries(tglrl PRIVATE d3drm)
|
||||
|
||||
add_library(realtime STATIC
|
||||
LEGO1/realtime/matrix.cpp
|
||||
LEGO1/realtime/orientableroi.cpp
|
||||
LEGO1/realtime/realtime.cpp
|
||||
LEGO1/realtime/realtimeview.cpp
|
||||
LEGO1/realtime/vector.cpp
|
||||
)
|
||||
register_lego1_target(realtime)
|
||||
set_property(TARGET realtime PROPERTY ARCHIVE_OUTPUT_NAME "realtime$<$<CONFIG:Debug>:d>")
|
||||
target_include_directories(realtime PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
|
||||
target_link_libraries(realtime PRIVATE Vec::Vec)
|
||||
|
||||
add_library(viewmanager STATIC
|
||||
LEGO1/viewmanager/viewlodlist.cpp
|
||||
LEGO1/viewmanager/viewmanager.cpp
|
||||
LEGO1/viewmanager/viewroi.cpp
|
||||
)
|
||||
register_lego1_target(viewmanager)
|
||||
set_property(TARGET viewmanager PROPERTY ARCHIVE_OUTPUT_NAME "viewmanager$<$<CONFIG:Debug>:d>")
|
||||
target_include_directories(viewmanager PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
|
||||
target_link_libraries(viewmanager PRIVATE Vec::Vec)
|
||||
|
||||
add_library(mxdirectx STATIC
|
||||
LEGO1/mxdirectx/mxdirect3d.cpp
|
||||
LEGO1/mxdirectx/mxdirectdraw.cpp
|
||||
)
|
||||
register_lego1_target(mxdirectx)
|
||||
set_property(TARGET mxdirectx PROPERTY ARCHIVE_OUTPUT_NAME "MxDirectX$<$<CONFIG:Debug>:d>")
|
||||
target_include_directories(mxdirectx PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
|
||||
target_link_libraries(mxdirectx PRIVATE ddraw)
|
||||
|
||||
add_library(roi STATIC
|
||||
LEGO1/lego/sources/roi/legoroi.cpp
|
||||
)
|
||||
register_lego1_target(roi)
|
||||
set_property(TARGET roi PROPERTY ARCHIVE_OUTPUT_NAME "roi$<$<CONFIG:Debug>:d>")
|
||||
target_include_directories(roi PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
|
||||
target_link_libraries(roi PRIVATE)
|
||||
|
||||
add_library(misc STATIC
|
||||
LEGO1/lego/sources/misc/legoimage.cpp
|
||||
LEGO1/lego/sources/misc/legostorage.cpp
|
||||
LEGO1/lego/sources/misc/legotexture.cpp
|
||||
LEGO1/lego/sources/misc/legotree.cpp
|
||||
)
|
||||
register_lego1_target(misc)
|
||||
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_link_libraries(misc PRIVATE)
|
||||
|
||||
add_library(3dmanager STATIC
|
||||
LEGO1/lego/sources/3dmanager/lego3dmanager.cpp
|
||||
LEGO1/lego/sources/3dmanager/lego3dview.cpp
|
||||
LEGO1/lego/sources/3dmanager/legoview1.cpp
|
||||
LEGO1/lego/sources/3dmanager/tglsurface.cpp
|
||||
)
|
||||
register_lego1_target(3dmanager)
|
||||
set_property(TARGET 3dmanager PROPERTY ARCHIVE_OUTPUT_NAME "3dmanager$<$<CONFIG:Debug>:d>")
|
||||
target_include_directories(3dmanager PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
|
||||
target_link_libraries(3dmanager PRIVATE Vec::Vec)
|
||||
|
||||
add_library(omni STATIC
|
||||
LEGO1/omni/src/action/mxdsaction.cpp
|
||||
LEGO1/omni/src/action/mxdsanim.cpp
|
||||
LEGO1/omni/src/action/mxdsevent.cpp
|
||||
LEGO1/omni/src/action/mxdsmediaaction.cpp
|
||||
LEGO1/omni/src/action/mxdsmultiaction.cpp
|
||||
LEGO1/omni/src/action/mxdsobjectaction.cpp
|
||||
LEGO1/omni/src/action/mxdsobject.cpp
|
||||
LEGO1/omni/src/action/mxdsparallelaction.cpp
|
||||
LEGO1/omni/src/action/mxdsselectaction.cpp
|
||||
LEGO1/omni/src/action/mxdsserialaction.cpp
|
||||
LEGO1/omni/src/action/mxdssound.cpp
|
||||
LEGO1/omni/src/action/mxdsstill.cpp
|
||||
LEGO1/omni/src/action/mxdsstreamingaction.cpp
|
||||
LEGO1/omni/src/audio/mxaudiomanager.cpp
|
||||
LEGO1/omni/src/audio/mxaudiopresenter.cpp
|
||||
LEGO1/omni/src/audio/mxloopingmidipresenter.cpp
|
||||
LEGO1/omni/src/audio/mxmidipresenter.cpp
|
||||
LEGO1/omni/src/audio/mxmusicmanager.cpp
|
||||
LEGO1/omni/src/audio/mxmusicpresenter.cpp
|
||||
LEGO1/omni/src/audio/mxsoundmanager.cpp
|
||||
LEGO1/omni/src/audio/mxsoundpresenter.cpp
|
||||
LEGO1/omni/src/audio/mxwavepresenter.cpp
|
||||
LEGO1/omni/src/common/mxatomidcounter.cpp
|
||||
LEGO1/omni/src/common/mxatomid.cpp
|
||||
LEGO1/omni/src/common/mxcompositepresenter.cpp
|
||||
LEGO1/omni/src/common/mxcore.cpp
|
||||
LEGO1/omni/src/common/mxmediamanager.cpp
|
||||
LEGO1/omni/src/common/mxmediapresenter.cpp
|
||||
LEGO1/omni/src/common/mxobjectfactory.cpp
|
||||
LEGO1/omni/src/common/mxpresenter.cpp
|
||||
LEGO1/omni/src/common/mxstring.cpp
|
||||
LEGO1/omni/src/common/mxticklemanager.cpp
|
||||
LEGO1/omni/src/common/mxtimer.cpp
|
||||
LEGO1/omni/src/common/mxutil.cpp
|
||||
LEGO1/omni/src/common/mxvariable.cpp
|
||||
LEGO1/omni/src/common/mxvariabletable.cpp
|
||||
LEGO1/omni/src/entity/mxentity.cpp
|
||||
LEGO1/omni/src/event/mxeventmanager.cpp
|
||||
LEGO1/omni/src/event/mxeventpresenter.cpp
|
||||
LEGO1/omni/src/main/mxomni.cpp
|
||||
LEGO1/omni/src/main/mxomnicreateflags.cpp
|
||||
LEGO1/omni/src/main/mxomnicreateparam.cpp
|
||||
LEGO1/omni/src/notify/mxactionnotificationparam.cpp
|
||||
LEGO1/omni/src/notify/mxnotificationmanager.cpp
|
||||
LEGO1/omni/src/notify/mxnotificationparam.cpp
|
||||
LEGO1/omni/src/notify/mxtype17notificationparam.cpp
|
||||
LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp
|
||||
LEGO1/omni/src/stream/mxdiskstreamprovider.cpp
|
||||
LEGO1/omni/src/stream/mxdsbuffer.cpp
|
||||
LEGO1/omni/src/stream/mxdschunk.cpp
|
||||
LEGO1/omni/src/stream/mxdsfile.cpp
|
||||
LEGO1/omni/src/stream/mxdssource.cpp
|
||||
LEGO1/omni/src/stream/mxdssubscriber.cpp
|
||||
LEGO1/omni/src/stream/mxioinfo.cpp
|
||||
LEGO1/omni/src/stream/mxramstreamcontroller.cpp
|
||||
LEGO1/omni/src/stream/mxramstreamprovider.cpp
|
||||
LEGO1/omni/src/stream/mxstreamchunk.cpp
|
||||
LEGO1/omni/src/stream/mxstreamcontroller.cpp
|
||||
LEGO1/omni/src/stream/mxstreamer.cpp
|
||||
LEGO1/omni/src/stream/mxstreamlist.cpp
|
||||
LEGO1/omni/src/stream/mxstreamprovider.cpp
|
||||
LEGO1/omni/src/system/mxautolocker.cpp
|
||||
LEGO1/omni/src/system/mxcriticalsection.cpp
|
||||
LEGO1/omni/src/system/mxscheduler.cpp
|
||||
LEGO1/omni/src/system/mxsemaphore.cpp
|
||||
LEGO1/omni/src/system/mxthread.cpp
|
||||
LEGO1/omni/src/video/mxbitmap.cpp
|
||||
LEGO1/omni/src/video/mxdisplaysurface.cpp
|
||||
LEGO1/omni/src/video/mxflcpresenter.cpp
|
||||
LEGO1/omni/src/video/mxloopingflcpresenter.cpp
|
||||
LEGO1/omni/src/video/mxloopingsmkpresenter.cpp
|
||||
LEGO1/omni/src/video/mxpalette.cpp
|
||||
LEGO1/omni/src/video/mxregion.cpp
|
||||
LEGO1/omni/src/video/mxregioncursor.cpp
|
||||
LEGO1/omni/src/video/mxsmack.cpp
|
||||
LEGO1/omni/src/video/mxsmkpresenter.cpp
|
||||
LEGO1/omni/src/video/mxstillpresenter.cpp
|
||||
LEGO1/omni/src/video/mxvideomanager.cpp
|
||||
LEGO1/omni/src/video/mxvideoparam.cpp
|
||||
LEGO1/omni/src/video/mxvideoparamflags.cpp
|
||||
LEGO1/omni/src/video/mxvideopresenter.cpp
|
||||
)
|
||||
register_lego1_target(omni)
|
||||
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_link_libraries(omni PRIVATE dsound winmm FLIC::FLIC Smacker::Smacker)
|
||||
|
||||
add_library(lego1 SHARED
|
||||
LEGO1/define.cpp
|
||||
LEGO1/lego/legoomni/src/act1/act1state.cpp
|
||||
@ -36,6 +226,7 @@ add_library(lego1 SHARED
|
||||
LEGO1/lego/legoomni/src/audio/legocachesound.cpp
|
||||
LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp
|
||||
LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp
|
||||
LEGO1/lego/legoomni/src/audio/legounknown100d6b4c.cpp
|
||||
LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp
|
||||
LEGO1/lego/legoomni/src/build/buildingentity.cpp
|
||||
LEGO1/lego/legoomni/src/build/dunebuggy.cpp
|
||||
@ -143,156 +334,37 @@ add_library(lego1 SHARED
|
||||
LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp
|
||||
LEGO1/lego/legoomni/src/video/legovideomanager.cpp
|
||||
LEGO1/lego/legoomni/src/video/mxtransitionmanager.cpp
|
||||
LEGO1/lego/sources/3dmanager/lego3dmanager.cpp
|
||||
LEGO1/lego/sources/3dmanager/lego3dview.cpp
|
||||
LEGO1/lego/sources/3dmanager/legoview1.cpp
|
||||
LEGO1/lego/sources/3dmanager/tglsurface.cpp
|
||||
LEGO1/lego/sources/misc/legoimage.cpp
|
||||
LEGO1/lego/sources/misc/legostorage.cpp
|
||||
LEGO1/lego/sources/misc/legotexture.cpp
|
||||
LEGO1/lego/sources/misc/legotree.cpp
|
||||
LEGO1/lego/sources/roi/legoroi.cpp
|
||||
LEGO1/main.cpp
|
||||
LEGO1/mxdirectx/mxdirect3d.cpp
|
||||
LEGO1/mxdirectx/mxdirectdraw.cpp
|
||||
LEGO1/mxgeometry/mxgeometry3d.cpp
|
||||
LEGO1/mxgeometry/mxmatrix.cpp
|
||||
LEGO1/omni/src/action/mxdsaction.cpp
|
||||
LEGO1/omni/src/action/mxdsanim.cpp
|
||||
LEGO1/omni/src/action/mxdsevent.cpp
|
||||
LEGO1/omni/src/action/mxdsmediaaction.cpp
|
||||
LEGO1/omni/src/action/mxdsmultiaction.cpp
|
||||
LEGO1/omni/src/action/mxdsobjectaction.cpp
|
||||
LEGO1/omni/src/action/mxdsobject.cpp
|
||||
LEGO1/omni/src/action/mxdsparallelaction.cpp
|
||||
LEGO1/omni/src/action/mxdsselectaction.cpp
|
||||
LEGO1/omni/src/action/mxdsserialaction.cpp
|
||||
LEGO1/omni/src/action/mxdssound.cpp
|
||||
LEGO1/omni/src/action/mxdsstill.cpp
|
||||
LEGO1/omni/src/action/mxdsstreamingaction.cpp
|
||||
LEGO1/omni/src/audio/mxaudiomanager.cpp
|
||||
LEGO1/omni/src/audio/mxaudiopresenter.cpp
|
||||
LEGO1/omni/src/audio/mxloopingmidipresenter.cpp
|
||||
LEGO1/omni/src/audio/mxmidipresenter.cpp
|
||||
LEGO1/omni/src/audio/mxmusicmanager.cpp
|
||||
LEGO1/omni/src/audio/mxmusicpresenter.cpp
|
||||
LEGO1/omni/src/audio/mxsoundmanager.cpp
|
||||
LEGO1/omni/src/audio/mxsoundpresenter.cpp
|
||||
LEGO1/omni/src/audio/mxwavepresenter.cpp
|
||||
LEGO1/omni/src/common/mxatomidcounter.cpp
|
||||
LEGO1/omni/src/common/mxatomid.cpp
|
||||
LEGO1/omni/src/common/mxcompositepresenter.cpp
|
||||
LEGO1/omni/src/common/mxcore.cpp
|
||||
LEGO1/omni/src/common/mxmediamanager.cpp
|
||||
LEGO1/omni/src/common/mxmediapresenter.cpp
|
||||
LEGO1/omni/src/common/mxobjectfactory.cpp
|
||||
LEGO1/omni/src/common/mxpresenter.cpp
|
||||
LEGO1/omni/src/common/mxstring.cpp
|
||||
LEGO1/omni/src/common/mxticklemanager.cpp
|
||||
LEGO1/omni/src/common/mxtimer.cpp
|
||||
LEGO1/omni/src/common/mxutil.cpp
|
||||
LEGO1/omni/src/common/mxvariable.cpp
|
||||
LEGO1/omni/src/common/mxvariabletable.cpp
|
||||
LEGO1/omni/src/entity/mxentity.cpp
|
||||
LEGO1/omni/src/event/mxeventmanager.cpp
|
||||
LEGO1/omni/src/event/mxeventpresenter.cpp
|
||||
LEGO1/omni/src/main/mxomni.cpp
|
||||
LEGO1/omni/src/main/mxomnicreateflags.cpp
|
||||
LEGO1/omni/src/main/mxomnicreateparam.cpp
|
||||
LEGO1/omni/src/notify/mxactionnotificationparam.cpp
|
||||
LEGO1/omni/src/notify/mxnotificationmanager.cpp
|
||||
LEGO1/omni/src/notify/mxnotificationparam.cpp
|
||||
LEGO1/omni/src/notify/mxtype17notificationparam.cpp
|
||||
LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp
|
||||
LEGO1/omni/src/stream/mxdiskstreamprovider.cpp
|
||||
LEGO1/omni/src/stream/mxdsbuffer.cpp
|
||||
LEGO1/omni/src/stream/mxdschunk.cpp
|
||||
LEGO1/omni/src/stream/mxdsfile.cpp
|
||||
LEGO1/omni/src/stream/mxdssource.cpp
|
||||
LEGO1/omni/src/stream/mxdssubscriber.cpp
|
||||
LEGO1/omni/src/stream/mxioinfo.cpp
|
||||
LEGO1/omni/src/stream/mxramstreamcontroller.cpp
|
||||
LEGO1/omni/src/stream/mxramstreamprovider.cpp
|
||||
LEGO1/omni/src/stream/mxstreamchunk.cpp
|
||||
LEGO1/omni/src/stream/mxstreamcontroller.cpp
|
||||
LEGO1/omni/src/stream/mxstreamer.cpp
|
||||
LEGO1/omni/src/stream/mxstreamlist.cpp
|
||||
LEGO1/omni/src/stream/mxstreamprovider.cpp
|
||||
LEGO1/omni/src/system/mxautolocker.cpp
|
||||
LEGO1/omni/src/system/mxcriticalsection.cpp
|
||||
LEGO1/omni/src/system/mxscheduler.cpp
|
||||
LEGO1/omni/src/system/mxsemaphore.cpp
|
||||
LEGO1/omni/src/system/mxthread.cpp
|
||||
LEGO1/omni/src/video/mxbitmap.cpp
|
||||
LEGO1/omni/src/video/mxdisplaysurface.cpp
|
||||
LEGO1/omni/src/video/mxflcpresenter.cpp
|
||||
LEGO1/omni/src/video/mxloopingflcpresenter.cpp
|
||||
LEGO1/omni/src/video/mxloopingsmkpresenter.cpp
|
||||
LEGO1/omni/src/video/mxpalette.cpp
|
||||
LEGO1/omni/src/video/mxregion.cpp
|
||||
LEGO1/omni/src/video/mxregioncursor.cpp
|
||||
LEGO1/omni/src/video/mxsmack.cpp
|
||||
LEGO1/omni/src/video/mxsmkpresenter.cpp
|
||||
LEGO1/omni/src/video/mxstillpresenter.cpp
|
||||
LEGO1/omni/src/video/mxvideomanager.cpp
|
||||
LEGO1/omni/src/video/mxvideoparam.cpp
|
||||
LEGO1/omni/src/video/mxvideoparamflags.cpp
|
||||
LEGO1/omni/src/video/mxvideopresenter.cpp
|
||||
LEGO1/realtime/matrix.cpp
|
||||
LEGO1/realtime/orientableroi.cpp
|
||||
LEGO1/realtime/realtime.cpp
|
||||
LEGO1/realtime/realtimeview.cpp
|
||||
LEGO1/realtime/vector.cpp
|
||||
LEGO1/tgl/d3drm/camera.cpp
|
||||
LEGO1/tgl/d3drm/device.cpp
|
||||
LEGO1/tgl/d3drm/group.cpp
|
||||
LEGO1/tgl/d3drm/light.cpp
|
||||
LEGO1/tgl/d3drm/mesh.cpp
|
||||
LEGO1/tgl/d3drm/renderer.cpp
|
||||
LEGO1/tgl/d3drm/texture.cpp
|
||||
LEGO1/tgl/d3drm/unk.cpp
|
||||
LEGO1/tgl/d3drm/view.cpp
|
||||
LEGO1/viewmanager/viewlodlist.cpp
|
||||
LEGO1/viewmanager/viewmanager.cpp
|
||||
LEGO1/viewmanager/viewroi.cpp
|
||||
)
|
||||
register_lego1_target(lego1)
|
||||
|
||||
if (MINGW)
|
||||
target_compile_definitions(lego1 PRIVATE DIRECTINPUT_VERSION=0x0500)
|
||||
endif()
|
||||
|
||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/util")
|
||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1")
|
||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include")
|
||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources")
|
||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include")
|
||||
|
||||
# Additional include directories
|
||||
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/3rdparty/vec")
|
||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/flic")
|
||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/smacker")
|
||||
|
||||
if (ISLE_USE_SMARTHEAP)
|
||||
add_library(SmartHeap::SmartHeap STATIC IMPORTED)
|
||||
set_target_properties(SmartHeap::SmartHeap PROPERTIES
|
||||
IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/3rdparty/smartheap/SHLW32MT.LIB"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/3rdparty/smartheap"
|
||||
INTERFACE_COMPILE_OPTIONS "/FI${CMAKE_SOURCE_DIR}/3rdparty/smartheap/SMRTHEAP.HPP")
|
||||
|
||||
target_link_libraries(lego1 PRIVATE SmartHeap::SmartHeap)
|
||||
if (MSVC)
|
||||
target_sources(lego1 PRIVATE LEGO1/LegoOmni.def)
|
||||
else()
|
||||
target_sources(lego1 PRIVATE LEGO1/LegoOmni.mingw.def)
|
||||
endif()
|
||||
|
||||
# Use internal DirectX 5 if required
|
||||
if (ISLE_USE_DX5)
|
||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
|
||||
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
|
||||
endif()
|
||||
|
||||
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/smacker")
|
||||
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/flic")
|
||||
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/util")
|
||||
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1")
|
||||
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/omni/include")
|
||||
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources")
|
||||
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include")
|
||||
|
||||
# Link libraries
|
||||
target_link_libraries(lego1 PRIVATE ddraw dsound dinput dxguid winmm d3drm smack flic)
|
||||
target_link_libraries(lego1 PRIVATE tglrl viewmanager realtime mxdirectx roi FLIC::FLIC Vec::Vec dinput dxguid misc 3dmanager omni)
|
||||
|
||||
if (ISLE_USE_SMARTHEAP)
|
||||
foreach(tgt IN LISTS lego1_targets)
|
||||
target_link_libraries(${tgt} PRIVATE SmartHeap::SmartHeap)
|
||||
endforeach()
|
||||
endif()
|
||||
foreach(tgt IN LISTS lego1_targets)
|
||||
target_link_libraries(${tgt} PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)
|
||||
endforeach()
|
||||
|
||||
# Make sure filenames are ALL CAPS
|
||||
set_property(TARGET lego1 PROPERTY OUTPUT_NAME LEGO1)
|
||||
@ -302,23 +374,12 @@ set_property(TARGET lego1 PROPERTY SUFFIX ".DLL")
|
||||
if (ISLE_BUILD_APP)
|
||||
add_executable(isle WIN32
|
||||
ISLE/res/isle.rc
|
||||
ISLE/define.cpp
|
||||
ISLE/isleapp.cpp
|
||||
ISLE/define.cpp
|
||||
)
|
||||
|
||||
target_compile_definitions(isle PRIVATE ISLE_APP)
|
||||
|
||||
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/util")
|
||||
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1")
|
||||
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include")
|
||||
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources")
|
||||
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include")
|
||||
|
||||
# Use internal DirectX 5 if required
|
||||
if (ISLE_USE_DX5)
|
||||
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
|
||||
target_link_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
|
||||
endif()
|
||||
target_link_libraries(isle PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)
|
||||
|
||||
if (ISLE_USE_SMARTHEAP)
|
||||
target_link_libraries(isle PRIVATE SmartHeap::SmartHeap)
|
||||
@ -334,15 +395,19 @@ endif()
|
||||
|
||||
if (MSVC)
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15")
|
||||
target_compile_definitions(lego1 PRIVATE _CRT_SECURE_NO_WARNINGS)
|
||||
if (ISLE_BUILD_APP)
|
||||
foreach(tgt IN LISTS lego1_targets)
|
||||
target_compile_definitions(${tgt} PRIVATE _CRT_SECURE_NO_WARNINGS)
|
||||
endforeach()
|
||||
if (TARGET isle)
|
||||
target_compile_definitions(isle PRIVATE "_CRT_SECURE_NO_WARNINGS")
|
||||
endif()
|
||||
endif()
|
||||
# Visual Studio 2017 version 15.7 needs "/Zc:__cplusplus" for __cplusplus
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.14.26428")
|
||||
target_compile_options(lego1 PRIVATE "-Zc:__cplusplus")
|
||||
if (ISLE_BUILD_APP)
|
||||
foreach(tgt IN LISTS lego1_targets)
|
||||
target_compile_options(${tgt} PRIVATE "-Zc:__cplusplus")
|
||||
endforeach()
|
||||
if (TARGET isle)
|
||||
target_compile_options(isle PRIVATE "-Zc:__cplusplus")
|
||||
endif()
|
||||
endif()
|
||||
@ -365,6 +430,9 @@ if (MSVC_FOR_DECOMP)
|
||||
endif()
|
||||
|
||||
target_compile_options(lego1 PRIVATE "/MT$<$<CONFIG:Debug>:d>")
|
||||
foreach(tgt IN LISTS lego1_targets)
|
||||
target_compile_options(${tgt} PRIVATE "/MT$<$<CONFIG:Debug>:d>")
|
||||
endforeach()
|
||||
|
||||
set(CMAKE_CXX_FLAGS "/W3 /GX /D \"WIN32\" /D \"_WINDOWS\"")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "/Gm /Zi /Od /D \"_DEBUG\"")
|
||||
@ -378,6 +446,8 @@ if (MSVC_FOR_DECOMP)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/incremental:no /debug")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/incremental:no")
|
||||
|
||||
set(CMAKE_STATIC_LINKER_FLAGS "/machine:I386")
|
||||
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "/machine:I386")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/incremental:yes /debug")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/incremental:no")
|
||||
@ -386,12 +456,17 @@ if (MSVC_FOR_DECOMP)
|
||||
|
||||
# Older MSVC versions don't support building in parallel.
|
||||
# Force non-parallel builds of isle and lego1 by putting them in a pool with 1 available job.
|
||||
if(CMAKE_CXX_COMPILER_ID VERSION_LESS 12)
|
||||
set_property(GLOBAL PROPERTY JOB_POOLS "msvc_lego=1;msvc_lego1=1")
|
||||
set_property(TARGET isle PROPERTY JOB_POOL_COMPILE msvc_lego)
|
||||
set_property(TARGET isle PROPERTY JOB_POOL_LINK msvc_lego)
|
||||
set_property(TARGET lego1 PROPERTY JOB_POOL_COMPILE msvc_lego1)
|
||||
set_property(TARGET lego1 PROPERTY JOB_POOL_LINK msvc_lego1)
|
||||
if (CMAKE_CXX_COMPILER_ID VERSION_LESS 12)
|
||||
foreach(tgt IN LISTS lego1_taregets)
|
||||
set_property(GLOBAL APPEND PROPERTY JOB_POOLS "msvc_${tgt}=1;msvc_lego1=1")
|
||||
set_property(TARGET ${tgt} PROPERTY JOB_POOL_COMPILE msvc_${tgt})
|
||||
set_property(TARGET ${tgt} PROPERTY JOB_POOL_LINK msvc_${tgt})
|
||||
endforeach()
|
||||
if (TARGET isle)
|
||||
set_property(GLOBAL APPEND PROPERTY JOB_POOLS "msvc_isle=1")
|
||||
set_property(TARGET isle PROPERTY JOB_POOL_COMPILE msvc_isle)
|
||||
set_property(TARGET isle PROPERTY JOB_POOL_LINK msvc_isle)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
@ -52,7 +52,15 @@ IsleApp::IsleApp()
|
||||
m_frameDelta = 10;
|
||||
m_windowActive = 1;
|
||||
|
||||
#ifdef COMPAT_MODE
|
||||
{
|
||||
MxRect32 r(0, 0, 639, 479);
|
||||
MxVideoParamFlags flags;
|
||||
m_videoParam = MxVideoParam(r, NULL, 1, flags);
|
||||
}
|
||||
#else
|
||||
m_videoParam = MxVideoParam(MxRect32(0, 0, 639, 479), NULL, 1, MxVideoParamFlags());
|
||||
#endif
|
||||
m_videoParam.Flags().Set16Bit(MxDirectDraw::GetPrimaryBitDepth() == 16);
|
||||
|
||||
m_windowHandle = NULL;
|
||||
|
||||
138
LEGO1/LegoOmni.def
Normal file
138
LEGO1/LegoOmni.def
Normal file
@ -0,0 +1,138 @@
|
||||
; LegoOmni.def : Declares the module paarameters for the LEGO1.DLL.
|
||||
|
||||
DESCRIPTION "Lego OMNI Windows Dynamic Link Library"
|
||||
|
||||
EXPORTS
|
||||
|
||||
; EXPORTs really required only.
|
||||
|
||||
??0LegoBackgroundColor@@QAE@PBD0@Z
|
||||
??0LegoGameState@@QAE@XZ
|
||||
??0LegoWorld@@QAE@XZ
|
||||
??0MxAtomId@@QAE@PBDW4LookupMode@@@Z
|
||||
??0MxBitmap@@QAE@XZ
|
||||
??0MxCore@@QAE@XZ
|
||||
??0MxCriticalSection@@QAE@XZ
|
||||
??0MxDSAction@@QAE@XZ
|
||||
??0MxDSFile@@QAE@PBDK@Z
|
||||
??0MxOmniCreateFlags@@QAE@XZ
|
||||
??0MxOmniCreateParam@@QAE@PBDPAUHWND__@@AAVMxVideoParam@@VMxOmniCreateFlags@@@Z
|
||||
??0MxString@@QAE@ABV0@@Z
|
||||
??0MxVideoParam@@QAE@AAV0@@Z
|
||||
??0MxVideoParam@@QAE@AAVMxRect32@@PAVMxPalette@@KAAVMxVideoParamFlags@@@Z
|
||||
??0MxVideoParam@@QAE@XZ
|
||||
??0MxVideoParamFlags@@QAE@XZ
|
||||
??1LegoEntity@@UAE@XZ
|
||||
??1LegoGameState@@QAE@XZ
|
||||
??1LegoWorld@@UAE@XZ
|
||||
??1MXIOINFO@@QAE@XZ
|
||||
??1MxAtomId@@QAE@XZ
|
||||
??1MxBitmap@@UAE@XZ
|
||||
??1MxCore@@UAE@XZ
|
||||
??1MxCriticalSection@@QAE@XZ
|
||||
??1MxDSAction@@UAE@XZ
|
||||
??1MxDSFile@@UAE@XZ
|
||||
??1MxPresenter@@UAE@XZ
|
||||
??1MxString@@UAE@XZ
|
||||
??1MxVideoParam@@QAE@XZ
|
||||
??4MxAtomId@@QAEAAV0@ABV0@@Z
|
||||
??4MxString@@QAEABV0@PBD@Z
|
||||
??4MxVideoParam@@QAEAAV0@ABV0@@Z
|
||||
??8MxPalette@@QAEEAAV0@@Z
|
||||
?BackgroundAudioManager@@YAPAVMxBackgroundAudioManager@@XZ
|
||||
?Close@MxDSFile@@UAEJXZ
|
||||
?Close@MxStreamer@@QAEJPBD@Z
|
||||
?CreateBackgroundAudio@LegoOmni@@QAEXXZ
|
||||
?CreateInstance@LegoOmni@@SAXXZ
|
||||
?CreatePalette@MxBitmap@@UAEPAVMxPalette@@XZ
|
||||
?CreateStreamObject@@YAPAVMxDSObject@@PAVMxDSFile@@F@Z
|
||||
?DestroyInstance@MxOmni@@SAXXZ
|
||||
?Detach@MxPalette@@QAEXXZ
|
||||
?DisableRMDevice@LegoVideoManager@@QAEHXZ
|
||||
?DoneTickle@MxPresenter@@MAEXXZ
|
||||
?Enable@MxBackgroundAudioManager@@QAEXE@Z
|
||||
?Enable@MxPresenter@@UAEXE@Z
|
||||
?EnableFullScreenMovie@LegoVideoManager@@QAEXEE@Z
|
||||
?EnableRMDevice@LegoVideoManager@@QAEHXZ
|
||||
?EndAction@MxPresenter@@UAEXXZ
|
||||
?EventManager@@YAPAVMxEventManager@@XZ
|
||||
?FlipToGDISurface@MxDirectDraw@@QAEHXZ
|
||||
?GameState@@YAPAVLegoGameState@@XZ
|
||||
?GetBufferSize@MxDSFile@@UAEKXZ
|
||||
?GetCD@MxOmni@@SAPBDXZ
|
||||
?GetCurrPathInfo@LegoOmni@@SAHPAPAVLegoPathBoundary@@AAH@Z
|
||||
?GetDefaults@LegoNavController@@SAXPAHPAM11111111PAE@Z
|
||||
?GetHD@MxOmni@@SAPBDXZ
|
||||
?GetInstance@LegoOmni@@SAPAV1@XZ
|
||||
?GetInstance@MxOmni@@SAPAV1@XZ
|
||||
?GetInstance@MxScheduler@@SAPAV1@XZ
|
||||
?GetNoCD_SourceName@@YAPBDXZ
|
||||
?GetPartsThreshold@RealtimeView@@SAMXZ
|
||||
?GetPrimaryBitDepth@MxDirectDraw@@SAHXZ
|
||||
?GetRealTime@MxTimer@@QAEJXZ
|
||||
?GetStreamBuffersNum@MxDSFile@@UAEKXZ
|
||||
?GetUserMaxLOD@RealtimeView@@SAMXZ
|
||||
?GetVariable@MxVariableTable@@QAEPBDPBD@Z
|
||||
?Init@MxPresenter@@IAEXXZ
|
||||
?InputManager@@YAPAVLegoInputManager@@XZ
|
||||
?InvalidateRect@MxVideoManager@@QAEXAAVMxRect32@@@Z
|
||||
?IsSound3D@MxOmni@@SAEXZ
|
||||
?Lego@@YAPAVLegoOmni@@XZ
|
||||
?Load@LegoGameState@@QAEJK@Z
|
||||
?MSoundManager@@YAPAVMxSoundManager@@XZ
|
||||
?MakeSourceName@@YAXPADPBD@Z
|
||||
?MoveCursor@LegoVideoManager@@QAEXHH@Z
|
||||
?MusicManager@@YAPAVMxMusicManager@@XZ
|
||||
?NotificationManager@@YAPAVMxNotificationManager@@XZ
|
||||
?Notify@MxCore@@UAEJAAVMxParam@@@Z
|
||||
?Open@MxDSFile@@UAEJK@Z
|
||||
?Open@MxStreamer@@QAEPAVMxStreamController@@PBDG@Z
|
||||
?ParseExtra@MxPresenter@@MAEXXZ
|
||||
?Pause@MxDirectDraw@@QAEHH@Z
|
||||
?PickEntity@@YAPAVLegoEntity@@JJ@Z
|
||||
?PickROI@@YAPAVLegoROI@@JJ@Z
|
||||
?QueueEvent@LegoInputManager@@QAEXW4NotificationId@@EJJE@Z
|
||||
?Read@MxBitmap@@UAEJPBD@Z
|
||||
?Read@MxDSFile@@UAEJPAEK@Z
|
||||
?RealizePalette@MxVideoManager@@UAEJPAVMxPalette@@@Z
|
||||
?Register@LegoInputManager@@QAEXPAVMxCore@@@Z
|
||||
?RemoveAll@ViewManager@@QAEXPAVViewROI@@@Z
|
||||
?RemoveWorld@LegoOmni@@QAEXABVMxAtomId@@J@Z
|
||||
?Save@LegoGameState@@QAEJK@Z
|
||||
?Seek@MxDSFile@@UAEJJH@Z
|
||||
?SerializePlayersInfo@LegoGameState@@QAEXF@Z
|
||||
?SerializeScoreHistory@LegoGameState@@QAEXF@Z
|
||||
?SetCD@MxOmni@@SAXPBD@Z
|
||||
?SetDefaults@LegoNavController@@SAXHMMMMMMMMME@Z
|
||||
?SetDeviceName@MxVideoParam@@QAEXPAD@Z
|
||||
?SetDisplayBB@LegoROI@@QAEXH@Z
|
||||
?SetDoMutex@MxCriticalSection@@SAXXZ
|
||||
?SetHD@MxOmni@@SAXPBD@Z
|
||||
?SetObjectName@MxDSObject@@QAEXPBD@Z
|
||||
?SetOmniUserMessage@@YAXP6AXPBDH@Z@Z
|
||||
?SetPartsThreshold@RealtimeView@@SAXM@Z
|
||||
?SetSavePath@LegoGameState@@QAEXPAD@Z
|
||||
?SetSound3D@MxOmni@@SAXE@Z
|
||||
?SetUserMaxLOD@RealtimeView@@SAXM@Z
|
||||
?SetVariable@MxVariableTable@@QAEXPAVMxVariable@@@Z
|
||||
?SetVariable@MxVariableTable@@QAEXPBD0@Z
|
||||
?SetWaitIndicator@MxTransitionManager@@QAEXPAVMxVideoPresenter@@@Z
|
||||
?SoundManager@@YAPAVLegoSoundManager@@XZ
|
||||
?Start@@YAJPAVMxDSAction@@@Z
|
||||
?StartAction@MxPresenter@@UAEJPAVMxStreamController@@PAVMxDSAction@@@Z
|
||||
?StartMultiTasking@MxScheduler@@QAEXK@Z
|
||||
?Streamer@@YAPAVMxStreamer@@XZ
|
||||
?Tickle@MxPresenter@@UAEJXZ
|
||||
?TickleManager@@YAPAVMxTickleManager@@XZ
|
||||
?Timer@@YAPAVMxTimer@@XZ
|
||||
?TransitionManager@@YAPAVMxTransitionManager@@XZ
|
||||
?UnRegister@LegoInputManager@@QAEXPAVMxCore@@@Z
|
||||
?VariableTable@@YAPAVMxVariableTable@@XZ
|
||||
?VideoManager@@YAPAVLegoVideoManager@@XZ
|
||||
?configureLegoAnimationManager@LegoAnimationManager@@SAXH@Z
|
||||
?configureLegoBuildingManager@LegoBuildingManager@@SAXH@Z
|
||||
?configureLegoModelPresenter@LegoModelPresenter@@SAXH@Z
|
||||
?configureLegoPartPresenter@LegoPartPresenter@@SAXHH@Z
|
||||
?configureLegoROI@LegoROI@@SAXH@Z
|
||||
?configureLegoWorldPresenter@LegoWorldPresenter@@SAXH@Z
|
||||
_DllMain@12
|
||||
170
LEGO1/LegoOmni.mingw.def
Normal file
170
LEGO1/LegoOmni.mingw.def
Normal file
@ -0,0 +1,170 @@
|
||||
; LegoOmni.def : Declares the module paarameters for the LEGO1.DLL.
|
||||
|
||||
DESCRIPTION " Lego OMNI Windows Dynamic Link Library"
|
||||
|
||||
EXPORTS
|
||||
|
||||
; EXPORTs really required only.
|
||||
|
||||
_ZN13LegoGameState11SetSavePathEPc
|
||||
_ZN13LegoGameState20SerializePlayersInfoEs
|
||||
_ZN13LegoGameState21SerializeScoreHistoryEs
|
||||
_ZN13LegoGameState4SaveEj
|
||||
_ZN13LegoGameStateC1Ev
|
||||
_ZN13LegoGameStateC2Ev
|
||||
_ZN13LegoGameStateD1Ev
|
||||
_ZN13LegoGameStateD2Ev
|
||||
_ZN9LegoWorldC1Ev
|
||||
_ZN9LegoWorldC2Ev
|
||||
_ZN9LegoWorldD0Ev
|
||||
_ZN9LegoWorldD1Ev
|
||||
_ZN9LegoWorldD2Ev
|
||||
DllMain@12
|
||||
_Z10PickEntityii
|
||||
_Z12EventManagerv
|
||||
_Z12InputManagerv
|
||||
_Z12MusicManagerv
|
||||
_Z12SoundManagerv
|
||||
_Z12VideoManagerv
|
||||
_Z13MSoundManagerv
|
||||
_Z13TickleManagerv
|
||||
_Z13VariableTablev
|
||||
_Z14MakeSourceNamePcPKc
|
||||
_Z17TransitionManagerv
|
||||
_Z18CreateStreamObjectP8MxDSFiles
|
||||
_Z18GetNoCD_SourceNamev
|
||||
_Z18SetOmniUserMessagePFvPKciE
|
||||
_Z19NotificationManagerv
|
||||
_Z22BackgroundAudioManagerv
|
||||
_Z4Legov
|
||||
_Z5StartP10MxDSAction
|
||||
_Z5Timerv
|
||||
_Z7PickROIii
|
||||
_Z8Streamerv
|
||||
_Z9GameStatev
|
||||
_ZN10LegoEntityD0Ev
|
||||
_ZN10LegoEntityD1Ev
|
||||
_ZN10LegoEntityD2Ev
|
||||
_ZN10MxDSActionC1Ev
|
||||
_ZN10MxDSActionC2Ev
|
||||
_ZN10MxDSActionD0Ev
|
||||
_ZN10MxDSActionD1Ev
|
||||
_ZN10MxDSActionD2Ev
|
||||
_ZN10MxDSObject13SetObjectNameEPKc
|
||||
_ZN10MxStreamer4OpenEPKct
|
||||
_ZN10MxStreamer5CloseEPKc
|
||||
_ZN11MxPresenter10DoneTickleEv
|
||||
_ZN11MxPresenter10ParseExtraEv
|
||||
_ZN11MxPresenter11StartActionEP18MxStreamControllerP10MxDSAction
|
||||
_ZN11MxPresenter4InitEv
|
||||
_ZN11MxPresenter6EnableEh
|
||||
_ZN11MxPresenter6TickleEv
|
||||
_ZN11MxPresenter9EndActionEv
|
||||
_ZN11MxPresenterD0Ev
|
||||
_ZN11MxPresenterD1Ev
|
||||
_ZN11MxPresenterD2Ev
|
||||
_ZN11MxScheduler11GetInstanceEv
|
||||
_ZN11MxScheduler17StartMultiTaskingEj
|
||||
_ZN11ViewManager9RemoveAllEP7ViewROI
|
||||
_ZN12MxDirectDraw16FlipToGDISurfaceEv
|
||||
_ZN12MxDirectDraw18GetPrimaryBitDepthEv
|
||||
_ZN12MxDirectDraw5PauseEi
|
||||
_ZN12MxVideoParam13SetDeviceNameEPc
|
||||
_ZN12MxVideoParamC1ERS_
|
||||
_ZN12MxVideoParamC1Ev
|
||||
_ZN12MxVideoParamC2ERS_
|
||||
_ZN12MxVideoParamC2Ev
|
||||
_ZN12MxVideoParamD1Ev
|
||||
_ZN12MxVideoParamD2Ev
|
||||
_ZN12MxVideoParamaSERKS_
|
||||
_ZN12RealtimeView13GetUserMaxLODEv
|
||||
_ZN12RealtimeView13SetUserMaxLODEf
|
||||
_ZN12RealtimeView17GetPartsThresholdEv
|
||||
_ZN12RealtimeView17SetPartsThresholdEf
|
||||
_ZN14MxVideoManager14InvalidateRectER8MxRect32
|
||||
_ZN14MxVideoManager14RealizePaletteEP9MxPalette
|
||||
_ZN15MxVariableTable11GetVariableEPKc
|
||||
_ZN15MxVariableTable11SetVariableEP10MxVariable
|
||||
_ZN15MxVariableTable11SetVariableEPKcS1_ = _ZN15MxVariableTable11SetVariableEPKcS1_
|
||||
;_ZN16LegoInputManager10QueueEventE14NotificationIdhiih
|
||||
_ZN16LegoInputManager10QueueEventE14NotificationIdhiih
|
||||
_ZN16LegoInputManager10UnRegisterEP6MxCore
|
||||
_ZN16LegoInputManager8RegisterEP6MxCore
|
||||
_ZN16LegoVideoManager10MoveCursorEii
|
||||
_ZN16LegoVideoManager14EnableRMDeviceEv
|
||||
_ZN16LegoVideoManager15DisableRMDeviceEv
|
||||
_ZN16LegoVideoManager21EnableFullScreenMovieEhh
|
||||
_ZN17LegoNavController11GetDefaultsEPiPfS1_S1_S1_S1_S1_S1_S1_S1_Ph
|
||||
_ZN17LegoNavController11SetDefaultsEifffffffffh
|
||||
_ZN17LegoPartPresenter26configureLegoPartPresenterEii
|
||||
_ZN17MxCriticalSection10SetDoMutexEv
|
||||
_ZN17MxCriticalSectionC1Ev
|
||||
_ZN17MxCriticalSectionC2Ev
|
||||
_ZN17MxCriticalSectionD1Ev
|
||||
_ZN17MxCriticalSectionD2Ev
|
||||
_ZN17MxOmniCreateFlagsC1Ev
|
||||
_ZN17MxOmniCreateFlagsC2Ev
|
||||
_ZN17MxOmniCreateParamC1EPKcP6HWND__R12MxVideoParam17MxOmniCreateFlags
|
||||
_ZN17MxVideoParamFlagsC1Ev
|
||||
_ZN17MxVideoParamFlagsC2Ev
|
||||
_ZN18LegoModelPresenter27configureLegoModelPresenterEi
|
||||
_ZN18LegoWorldPresenter27configureLegoWorldPresenterEi
|
||||
_ZN19LegoBuildingManager28configureLegoBuildingManagerEi
|
||||
_ZN19MxTransitionManager16SetWaitIndicatorEP16MxVideoPresenter
|
||||
_ZN20LegoAnimationManager29configureLegoAnimationManagerEi
|
||||
_ZN24MxBackgroundAudioManager6EnableEh
|
||||
_ZN6MxCore6NotifyER7MxParam
|
||||
_ZN6MxCoreC1Ev
|
||||
_ZN6MxCoreC2Ev
|
||||
_ZN6MxCoreD0Ev
|
||||
_ZN6MxCoreD1Ev
|
||||
_ZN6MxCoreD2Ev
|
||||
_ZN6MxOmni10SetSound3DEh
|
||||
_ZN6MxOmni11GetInstanceEv
|
||||
_ZN6MxOmni15DestroyInstanceEv
|
||||
_ZN6MxOmni5GetCDEv
|
||||
_ZN6MxOmni5GetHDEv
|
||||
_ZN6MxOmni5SetCDEPKc
|
||||
_ZN6MxOmni5SetHDEPKc
|
||||
_ZN6MxOmni9IsSound3DEv
|
||||
_ZN7LegoROI12SetDisplayBBEi
|
||||
_ZN7LegoROI16configureLegoROIEi
|
||||
_ZN7MxTimer11GetRealTimeEv
|
||||
_ZN8LegoOmni11GetInstanceEv
|
||||
_ZN8LegoOmni11RemoveWorldERK8MxAtomIdi
|
||||
_ZN8LegoOmni14CreateInstanceEv
|
||||
_ZN8LegoOmni15GetCurrPathInfoEPP16LegoPathBoundaryRi
|
||||
_ZN8LegoOmni21CreateBackgroundAudioEv
|
||||
_ZN8MXIOINFOD1Ev
|
||||
_ZN8MXIOINFOD2Ev
|
||||
_ZN8MxAtomIdC1EPKc10LookupMode
|
||||
_ZN8MxAtomIdC2EPKc10LookupMode
|
||||
_ZN8MxAtomIdD1Ev
|
||||
_ZN8MxAtomIdD2Ev
|
||||
_ZN8MxAtomIdaSERKS_
|
||||
_ZN8MxBitmap13CreatePaletteEv
|
||||
_ZN8MxBitmap4ReadEPKc
|
||||
_ZN8MxBitmapC1Ev
|
||||
_ZN8MxBitmapC2Ev
|
||||
_ZN8MxBitmapD0Ev
|
||||
_ZN8MxBitmapD1Ev
|
||||
_ZN8MxBitmapD2Ev
|
||||
_ZN8MxDSFile13GetBufferSizeEv
|
||||
_ZN8MxDSFile19GetStreamBuffersNumEv
|
||||
_ZN8MxDSFile4OpenEj
|
||||
_ZN8MxDSFile4ReadEPhj
|
||||
_ZN8MxDSFile4SeekEii
|
||||
_ZN8MxDSFile5CloseEv
|
||||
_ZN8MxDSFileC1EPKcj
|
||||
_ZN8MxDSFileC2EPKcj
|
||||
_ZN8MxDSFileD0Ev
|
||||
_ZN8MxDSFileD1Ev
|
||||
_ZN8MxDSFileD2Ev
|
||||
_ZN8MxStringC1ERKS_
|
||||
_ZN8MxStringC2ERKS_
|
||||
_ZN8MxStringD0Ev
|
||||
_ZN8MxStringD1Ev
|
||||
_ZN8MxStringD2Ev
|
||||
_ZN8MxStringaSEPKc
|
||||
_ZN9MxPalette6DetachEv
|
||||
_ZN9MxPaletteeqERS_
|
||||
@ -29,7 +29,7 @@ class Act3 : public LegoWorld {
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual void VTable0x60() override; // vtable+0x60
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
@ -41,6 +41,11 @@ class Act3 : public LegoWorld {
|
||||
// SYNTHETIC: LEGO1 0x10072630
|
||||
// Act3::`scalar deleting destructor'
|
||||
|
||||
MxBool FUN_100727e0(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
|
||||
MxBool FUN_10072980(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
|
||||
void FUN_10073400();
|
||||
void FUN_10073430();
|
||||
|
||||
protected:
|
||||
undefined m_unk0xf8[0x4114]; // 0xf8
|
||||
MxEntity* m_unk0x420c; // 0x420c
|
||||
|
||||
@ -24,7 +24,7 @@ class CarRace : public LegoRace {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual undefined4 VTable0x6c(undefined4) override; // vtable+0x6c
|
||||
virtual undefined4 VTable0x70(undefined4) override; // vtable+0x70
|
||||
|
||||
@ -27,7 +27,7 @@ class ElevatorBottom : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
|
||||
// FUNCTION: LEGO1 0x10017f10
|
||||
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
||||
|
||||
@ -30,7 +30,7 @@ class GasStation : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
@ -21,8 +21,15 @@ class HelicopterState : public LegoState {
|
||||
return !strcmp(p_name, HelicopterState::ClassName()) || LegoState::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual MxBool VTable0x14() override; // vtable+0x14
|
||||
virtual MxBool SetFlag() override; // vtable+0x18
|
||||
// FUNCTION: LEGO1 0x1000e0b0
|
||||
virtual MxBool VTable0x14() override { return FALSE; }; // vtable+0x14
|
||||
|
||||
// FUNCTION: LEGO1 0x1000e0c0
|
||||
virtual MxBool SetFlag() override
|
||||
{
|
||||
m_unk0x8 = 0;
|
||||
return TRUE;
|
||||
}; // vtable+0x18
|
||||
|
||||
inline void SetUnknown8(MxU32 p_unk0x8) { m_unk0x8 = p_unk0x8; }
|
||||
inline MxU32 GetUnkown8() { return m_unk0x8; }
|
||||
|
||||
@ -26,7 +26,7 @@ class HistoryBook : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100824b0
|
||||
|
||||
@ -28,7 +28,7 @@ class Hospital : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
@ -149,7 +149,7 @@ class Infocenter : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
@ -26,7 +26,7 @@ class InfocenterDoor : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
|
||||
// FUNCTION: LEGO1 0x100377a0
|
||||
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
||||
|
||||
@ -20,7 +20,6 @@ class Act1State;
|
||||
|
||||
// VTABLE: LEGO1 0x100d6fb8
|
||||
// SIZE 0x140
|
||||
// Radio at 0x12c
|
||||
class Isle : public LegoWorld {
|
||||
public:
|
||||
Isle();
|
||||
@ -41,8 +40,8 @@ class Isle : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+50
|
||||
virtual void VTable0x58(MxCore* p_object) override; // vtable+58
|
||||
virtual void ReadyWorld() override; // vtable+50
|
||||
virtual void Add(MxCore* p_object) override; // vtable+58
|
||||
// FUNCTION: LEGO1 0x10030900
|
||||
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+5c
|
||||
// FUNCTION: LEGO1 0x10033170
|
||||
|
||||
@ -27,7 +27,7 @@ class JukeBox : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
@ -12,7 +12,7 @@ class LegoAct2 : public LegoWorld {
|
||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||
virtual MxResult Tickle() override; // vtable+0x08
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual void VTable0x60() override; // vtable+0x60
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
|
||||
@ -32,7 +32,7 @@ class LegoAnimationManager : public MxCore {
|
||||
void FUN_1005f720(undefined4);
|
||||
void FUN_10064670(MxBool);
|
||||
|
||||
__declspec(dllexport) static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig);
|
||||
static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005ed10
|
||||
// LegoAnimationManager::`scalar deleting destructor'
|
||||
|
||||
@ -41,7 +41,9 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||
virtual void PutFrame() override; // vtable+0x6c
|
||||
virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88
|
||||
|
||||
// 6 more virtual functions here
|
||||
inline LegoAnimClass* GetUnknown0x64() { return m_unk0x64; }
|
||||
|
||||
const char* GetActionObjectName();
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
@ -88,6 +90,9 @@ class LegoAnimClass : public LegoTree {
|
||||
virtual void Write() override; // vtable+0x0c
|
||||
virtual MxResult CreateData(LegoMemory* p_stream, MxS32); // vtable+0x10
|
||||
|
||||
inline MxLong GetUnknown0x8() { return m_unk0x8; }
|
||||
|
||||
// private:
|
||||
MxLong m_unk0x8; // 0x08
|
||||
undefined4 m_unk0xc; // 0x0c
|
||||
undefined4 m_unk0x10; // 0x10
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
// SIZE 0x30
|
||||
class LegoBackgroundColor : public MxVariable {
|
||||
public:
|
||||
__declspec(dllexport) 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;
|
||||
|
||||
private:
|
||||
|
||||
@ -19,9 +19,10 @@ class LegoBuildingManager : public MxCore {
|
||||
return "LegoBuildingManager";
|
||||
}
|
||||
|
||||
__declspec(dllexport) static void configureLegoBuildingManager(MxS32);
|
||||
static void configureLegoBuildingManager(MxS32);
|
||||
|
||||
void FUN_1002fa00();
|
||||
void FUN_1002fb30();
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1002f940
|
||||
// LegoBuildingManager::`scalar deleting destructor'
|
||||
|
||||
104
LEGO1/lego/legoomni/include/legocachesoundlist.h
Normal file
104
LEGO1/lego/legoomni/include/legocachesoundlist.h
Normal file
@ -0,0 +1,104 @@
|
||||
#ifndef LEGOCACHESOUNDLIST_H
|
||||
#define LEGOCACHESOUNDLIST_H
|
||||
|
||||
#include "mxlist.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
class LegoCacheSound;
|
||||
|
||||
// VTABLE: LEGO1 0x100d63b0
|
||||
// class MxCollection<LegoCacheSound *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d63c8
|
||||
// class MxList<LegoCacheSound *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d63e0
|
||||
// class MxPtrList<LegoCacheSound>
|
||||
|
||||
// VTABLE: LEGO1 0x100d63f8
|
||||
// SIZE 0x18
|
||||
class LegoCacheSoundList : public MxPtrList<LegoCacheSound> {
|
||||
public:
|
||||
LegoCacheSoundList(MxBool p_ownership = FALSE) : MxPtrList<LegoCacheSound>(p_ownership) {}
|
||||
|
||||
// FUNCTION: LEGO1 0x1001e650
|
||||
virtual MxS8 Compare(LegoCacheSound* p_a, LegoCacheSound* p_b) override
|
||||
{
|
||||
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
|
||||
}; // vtable+0x14
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d64a0
|
||||
// class MxListCursor<LegoCacheSound *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6500
|
||||
// class MxPtrListCursor<LegoCacheSound>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6518
|
||||
// SIZE 0x10
|
||||
class LegoCacheSoundListCursor : public MxPtrListCursor<LegoCacheSound> {
|
||||
public:
|
||||
LegoCacheSoundListCursor(LegoCacheSoundList* p_list) : MxPtrListCursor<LegoCacheSound>(p_list){};
|
||||
};
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e670
|
||||
// MxCollection<LegoCacheSound *>::Compare
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e680
|
||||
// MxCollection<LegoCacheSound *>::~MxCollection<LegoCacheSound *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e6d0
|
||||
// MxCollection<LegoCacheSound *>::Destroy
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e6e0
|
||||
// MxList<LegoCacheSound *>::~MxList<LegoCacheSound *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e770
|
||||
// MxPtrList<LegoCacheSound>::Destroy
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e780
|
||||
// LegoCacheSoundList::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e7f0
|
||||
// MxPtrList<LegoCacheSound>::~MxPtrList<LegoCacheSound>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e840
|
||||
// MxCollection<LegoCacheSound *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e8b0
|
||||
// MxList<LegoCacheSound *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e960
|
||||
// MxPtrList<LegoCacheSound>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f350
|
||||
// LegoCacheSoundListCursor::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001f3c0
|
||||
// MxPtrListCursor<LegoCacheSound>::~MxPtrListCursor<LegoCacheSound>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f410
|
||||
// MxListCursor<LegoCacheSound *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f480
|
||||
// MxPtrListCursor<LegoCacheSound>::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001f4f0
|
||||
// MxListCursor<LegoCacheSound *>::~MxListCursor<LegoCacheSound *>
|
||||
|
||||
// FUNCTION: LEGO1 0x1001f540
|
||||
// LegoCacheSoundListCursor::~LegoCacheSoundListCursor
|
||||
|
||||
// TEMPLATE: LEGO1 0x10020840
|
||||
// MxListCursor<LegoCacheSound *>::MxListCursor<LegoCacheSound *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x100224e0
|
||||
// MxList<LegoCacheSound *>::InsertEntry
|
||||
|
||||
// TEMPLATE: LEGO1 0x10022590
|
||||
// MxListCursor<LegoCacheSound *>::Find
|
||||
|
||||
// TEMPLATE: LEGO1 0x10022680
|
||||
// MxList<LegoCacheSound *>::DeleteEntry
|
||||
|
||||
#endif // LEGOCACHESOUNDLIST_H
|
||||
@ -27,7 +27,7 @@ class LegoCarBuild : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#ifndef LEGOCONTROLMANAGER_H
|
||||
#define LEGOCONTROLMANAGER_H
|
||||
|
||||
#include "legoeventnotificationparam.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxpresenterlist.h"
|
||||
|
||||
@ -28,10 +29,20 @@ class LegoControlManager : public MxCore {
|
||||
void FUN_10028df0(MxPresenterList* p_presenterList);
|
||||
void Register(MxCore* p_listener);
|
||||
void Unregister(MxCore* p_listener);
|
||||
MxBool FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter);
|
||||
void FUN_100293c0(undefined4, const char*, undefined2);
|
||||
|
||||
inline undefined4 GetUnknown0x0c() { return m_unk0x0c; }
|
||||
inline undefined GetUnknown0x10() { return m_unk0x10; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028d40
|
||||
// LegoControlManager::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
undefined m_unk0x10; // 0x10
|
||||
undefined m_padding0x14[0x4c]; // 0x14
|
||||
};
|
||||
|
||||
#endif // LEGOCONTROLMANAGER_H
|
||||
|
||||
@ -13,18 +13,15 @@
|
||||
class LegoEntity : public MxEntity {
|
||||
public:
|
||||
enum {
|
||||
c_bit1 = 0x01
|
||||
c_bit1 = 0x01,
|
||||
c_bit2 = 0x02
|
||||
};
|
||||
|
||||
// Inlined at 0x100853f7
|
||||
inline LegoEntity() { Init(); }
|
||||
|
||||
#ifdef ISLE_APP
|
||||
__declspec(dllexport) virtual ~LegoEntity() override;
|
||||
#else
|
||||
// FUNCTION: LEGO1 0x1000c290
|
||||
__declspec(dllexport) virtual ~LegoEntity() override { Destroy(TRUE); }
|
||||
#endif
|
||||
virtual ~LegoEntity() override { Destroy(TRUE); }
|
||||
|
||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
||||
|
||||
@ -62,6 +59,7 @@ class LegoEntity : public MxEntity {
|
||||
void SetLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up, MxBool);
|
||||
|
||||
inline LegoROI* GetROI() { return m_roi; }
|
||||
inline MxU8 GetFlags() { return m_flags; }
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
|
||||
@ -86,7 +86,16 @@ class LegoEntityListCursor : public MxPtrListCursor<LegoEntity> {
|
||||
// FUNCTION: LEGO1 0x1001f2b0
|
||||
// MxListCursor<LegoEntity *>::~MxListCursor<LegoEntity *>
|
||||
|
||||
// FUNCTION: LEGO1 0x1001edc6
|
||||
// FUNCTION: LEGO1 0x1001f300
|
||||
// LegoEntityListCursor::~LegoEntityListCursor
|
||||
|
||||
// TEMPLATE: LEGO1 0x100207d0
|
||||
// MxListCursor<LegoEntity *>::MxListCursor<LegoEntity *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x10022430
|
||||
// MxList<LegoEntity *>::InsertEntry
|
||||
|
||||
// TEMPLATE: LEGO1 0x10022630
|
||||
// MxList<LegoEntity *>::DeleteEntry
|
||||
|
||||
#endif // LEGOENTITYLIST_H
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
#include "mxnotificationparam.h"
|
||||
#include "mxtypes.h"
|
||||
#include "roi/legoroi.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
@ -10,7 +11,14 @@
|
||||
// SIZE 0x20
|
||||
class LegoEventNotificationParam : public MxNotificationParam {
|
||||
public:
|
||||
virtual MxNotificationParam* Clone() override; // vtable+0x4
|
||||
// FUNCTION: LEGO1 0x10028690
|
||||
virtual MxNotificationParam* Clone() override
|
||||
{
|
||||
LegoEventNotificationParam* clone =
|
||||
new LegoEventNotificationParam(m_type, m_sender, m_modifier, m_x, m_y, m_key);
|
||||
clone->m_roi = m_roi;
|
||||
return clone;
|
||||
}; // vtable+0x4
|
||||
|
||||
inline LegoEventNotificationParam() : MxNotificationParam(c_notificationType0, NULL) {}
|
||||
inline LegoEventNotificationParam(
|
||||
@ -21,20 +29,23 @@ class LegoEventNotificationParam : public MxNotificationParam {
|
||||
MxS32 p_y,
|
||||
MxU8 p_key
|
||||
)
|
||||
: MxNotificationParam(p_type, p_sender), m_modifier(p_modifier), m_x(p_x), m_y(p_y), m_key(p_key), m_unk0x1c(0)
|
||||
: MxNotificationParam(p_type, p_sender), m_modifier(p_modifier), m_x(p_x), m_y(p_y), m_key(p_key), m_roi(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
inline MxU8 GetModifier() { return m_modifier; }
|
||||
inline MxU8 GetKey() const { return m_key; }
|
||||
inline MxS32 GetX() const { return m_x; }
|
||||
inline MxS32 GetY() const { return m_y; }
|
||||
|
||||
inline void SetROI(LegoROI* p_roi) { m_roi = p_roi; }
|
||||
|
||||
protected:
|
||||
MxU8 m_modifier; // 0x0c
|
||||
MxS32 m_x; // 0x10
|
||||
MxS32 m_y; // 0x14
|
||||
MxU8 m_key; // 0x18
|
||||
MxU32 m_unk0x1c; // 0x1c
|
||||
LegoROI* m_roi; // 0x1c
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028770
|
||||
|
||||
@ -20,13 +20,13 @@ struct ColorStringStruct {
|
||||
// SIZE 0x430
|
||||
class LegoGameState {
|
||||
public:
|
||||
__declspec(dllexport) LegoGameState();
|
||||
__declspec(dllexport) ~LegoGameState();
|
||||
__declspec(dllexport) MxResult Load(MxULong);
|
||||
__declspec(dllexport) MxResult Save(MxULong);
|
||||
__declspec(dllexport) void SerializePlayersInfo(MxS16);
|
||||
__declspec(dllexport) void SerializeScoreHistory(MxS16 p_flags);
|
||||
__declspec(dllexport) void SetSavePath(char*);
|
||||
LegoGameState();
|
||||
~LegoGameState();
|
||||
MxResult Load(MxULong);
|
||||
MxResult Save(MxULong);
|
||||
void SerializePlayersInfo(MxS16);
|
||||
void SerializeScoreHistory(MxS16 p_flags);
|
||||
void SetSavePath(char*);
|
||||
|
||||
LegoState* GetState(const char* p_stateName);
|
||||
LegoState* CreateState(const char* p_stateName);
|
||||
|
||||
@ -25,6 +25,42 @@ class LegoControlManager;
|
||||
// SIZE 0x18
|
||||
class LegoEventQueue : public MxQueue<LegoEventNotificationParam> {};
|
||||
|
||||
// VTABLE: LEGO1 0x100d6a20
|
||||
// class MxCollection<MxCore*>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6a38
|
||||
// class MxList<MxCore*>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6a50
|
||||
// class MxPtrList<MxCore>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6a68
|
||||
// SIZE 0x18
|
||||
class LegoNotifyList : public MxPtrList<MxCore> {
|
||||
protected:
|
||||
// FUNCTION: LEGO1 0x10028830
|
||||
virtual MxS8 Compare(MxCore* p_element1, MxCore* p_element2) override
|
||||
{
|
||||
return p_element1 == p_element2 ? 0 : p_element1 < p_element2 ? -1 : 1;
|
||||
} // vtable+0x14
|
||||
|
||||
public:
|
||||
LegoNotifyList(MxBool p_ownership = FALSE) : MxPtrList<MxCore>(p_ownership) {}
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d6ac0
|
||||
// class MxListCursor<MxCore *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6ad8
|
||||
// class MxPtrListCursor<MxCore>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6aa8
|
||||
// SIZE 0x10
|
||||
class LegoNotifyListCursor : public MxPtrListCursor<MxCore> {
|
||||
public:
|
||||
LegoNotifyListCursor(LegoNotifyList* p_list) : MxPtrListCursor<MxCore>(p_list) {}
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d8760
|
||||
// SIZE 0x338
|
||||
class LegoInputManager : public MxPresenter {
|
||||
@ -32,9 +68,9 @@ class LegoInputManager : public MxPresenter {
|
||||
LegoInputManager();
|
||||
virtual ~LegoInputManager() override;
|
||||
|
||||
__declspec(dllexport) void QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, MxU8 p_key);
|
||||
__declspec(dllexport) void Register(MxCore*);
|
||||
__declspec(dllexport) void UnRegister(MxCore*);
|
||||
void QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, MxU8 p_key);
|
||||
void Register(MxCore*);
|
||||
void UnRegister(MxCore*);
|
||||
|
||||
virtual MxResult Tickle() override; // vtable+0x8
|
||||
|
||||
@ -47,8 +83,8 @@ class LegoInputManager : public MxPresenter {
|
||||
void ReleaseDX();
|
||||
MxResult GetJoystickId();
|
||||
MxResult GetJoystickState(MxU32* p_joystickX, MxU32* p_joystickY, DWORD* p_buttonsState, MxU32* p_povPosition);
|
||||
void SetTimer();
|
||||
void KillTimer();
|
||||
void StartAutoDragTimer();
|
||||
void StopAutoDragTimer();
|
||||
void EnableInputProcessing();
|
||||
void SetCamera(LegoCameraController* p_camera);
|
||||
void ClearCamera();
|
||||
@ -73,40 +109,86 @@ class LegoInputManager : public MxPresenter {
|
||||
|
||||
void ProcessEvents();
|
||||
MxBool ProcessOneEvent(LegoEventNotificationParam& p_param);
|
||||
MxBool FUN_1005cdf0(LegoEventNotificationParam& p_param);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005b8d0
|
||||
// LegoInputManager::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
MxCriticalSection m_criticalSection;
|
||||
MxList<undefined4>* m_unk0x5c; // list or hash table
|
||||
LegoCameraController* m_camera;
|
||||
LegoWorld* m_world;
|
||||
LegoEventQueue* m_eventQueue; // +0x68
|
||||
undefined4 m_unk0x6c;
|
||||
undefined4 m_unk0x70;
|
||||
undefined4 m_unk0x74;
|
||||
UINT m_timer;
|
||||
UINT m_timeout;
|
||||
undefined m_unk0x80;
|
||||
undefined m_unk0x81;
|
||||
LegoControlManager* m_controlManager;
|
||||
MxBool m_unk0x88;
|
||||
IDirectInput* m_directInput;
|
||||
IDirectInputDevice* m_directInputDevice;
|
||||
undefined m_unk0x94;
|
||||
undefined4 m_unk0x98;
|
||||
undefined m_unk0x9c[0xF8];
|
||||
undefined m_unk0x194;
|
||||
MxBool m_unk0x195;
|
||||
MxS32 m_joyid;
|
||||
MxS32 m_joystickIndex;
|
||||
JOYCAPS m_joyCaps;
|
||||
MxBool m_useJoystick;
|
||||
MxBool m_unk0x335;
|
||||
MxBool m_unk0x336;
|
||||
MxCriticalSection m_criticalSection; // 0x58
|
||||
LegoNotifyList* m_keyboardNotifyList; // 0x5c
|
||||
LegoCameraController* m_camera; // 0x60
|
||||
LegoWorld* m_world; // 0x64
|
||||
LegoEventQueue* m_eventQueue; // 0x68
|
||||
undefined4 m_unk0x6c; // 0x6c
|
||||
undefined4 m_unk0x70; // 0x70
|
||||
undefined4 m_unk0x74; // 0x74
|
||||
UINT m_autoDragTimerID; // 0x78
|
||||
UINT m_autoDragTime; // 0x7c
|
||||
undefined m_unk0x80; // 0x80
|
||||
undefined m_unk0x81; // 0x81
|
||||
LegoControlManager* m_controlManager; // 0x84
|
||||
MxBool m_unk0x88; // 0x88
|
||||
IDirectInput* m_directInput; // 0x8c
|
||||
IDirectInputDevice* m_directInputDevice; // 0x90
|
||||
undefined m_unk0x94; // 0x94
|
||||
undefined4 m_unk0x98; // 0x98
|
||||
undefined m_unk0x9c[0xf8]; // 0x9c
|
||||
undefined m_unk0x194; // 0x194
|
||||
MxBool m_unk0x195; // 0x195
|
||||
MxS32 m_joyid; // 0x198
|
||||
MxS32 m_joystickIndex; // 0x19c
|
||||
JOYCAPS m_joyCaps; // 0x200
|
||||
MxBool m_useJoystick; // 0x334
|
||||
MxBool m_unk0x335; // 0x335
|
||||
MxBool m_unk0x336; // 0x336
|
||||
};
|
||||
|
||||
// TEMPLATE: LEGO1 0x10028850
|
||||
// MxCollection<MxCore *>::Compare
|
||||
|
||||
// TEMPLATE: LEGO1 0x10028860
|
||||
// MxCollection<MxCore *>::~MxCollection<MxCore *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x100288b0
|
||||
// MxCollection<MxCore *>::Destroy
|
||||
|
||||
// TEMPLATE: LEGO1 0x100288c0
|
||||
// MxList<MxCore *>::~MxList<MxCore *>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028950
|
||||
// LegoNotifyList::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x100289c0
|
||||
// MxPtrList<MxCore>::~MxPtrList<MxCore>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028a10
|
||||
// MxCollection<MxCore *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028a80
|
||||
// MxList<MxCore *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028b30
|
||||
// MxPtrList<MxCore>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028fd0
|
||||
// LegoNotifyListCursor::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x10029040
|
||||
// MxPtrListCursor<MxCore>::~MxPtrListCursor<MxCore>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10029090
|
||||
// MxListCursor<MxCore *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10029100
|
||||
// MxPtrListCursor<MxCore>::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x10029170
|
||||
// MxListCursor<MxCore *>::~MxListCursor<MxCore *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x100291c0
|
||||
// LegoNotifyListCursor::~LegoNotifyListCursor
|
||||
|
||||
// TEMPLATE: LEGO1 0x1005bb80
|
||||
// MxCollection<LegoEventNotificationParam>::Compare
|
||||
|
||||
|
||||
@ -35,6 +35,14 @@ class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
|
||||
// SYNTHETIC: LEGO1 0x1006cfe0
|
||||
// LegoLocomotionAnimPresenter::`scalar deleting destructor'
|
||||
|
||||
inline void DecrementUnknown0xd4()
|
||||
{
|
||||
if (m_unk0xd4)
|
||||
--m_unk0xd4;
|
||||
}
|
||||
|
||||
inline undefined2 GetUnknown0xd4() { return m_unk0xd4; }
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
||||
@ -9,7 +9,7 @@ class AutoROI;
|
||||
// SIZE 0x6c (discovered through inline constructor at 0x10009ae6)
|
||||
class LegoModelPresenter : public MxVideoPresenter {
|
||||
public:
|
||||
__declspec(dllexport) static void configureLegoModelPresenter(MxS32 p_modelPresenterConfig);
|
||||
static void configureLegoModelPresenter(MxS32 p_modelPresenterConfig);
|
||||
|
||||
// FUNCTION: LEGO1 0x1000ccb0
|
||||
inline const char* ClassName() const override // vtable+0xc
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// SIZE 0x70
|
||||
class LegoNavController : public MxCore {
|
||||
public:
|
||||
__declspec(dllexport) static void GetDefaults(
|
||||
static void GetDefaults(
|
||||
int* p_mouseDeadzone,
|
||||
float* p_movementMaxSpeed,
|
||||
float* p_turnMaxSpeed,
|
||||
@ -22,7 +22,7 @@ class LegoNavController : public MxCore {
|
||||
float* p_rotationSensitivity,
|
||||
MxBool* p_turnUseVelocity
|
||||
);
|
||||
__declspec(dllexport) static void SetDefaults(
|
||||
static void SetDefaults(
|
||||
int p_mouseDeadzone,
|
||||
float p_movementMaxSpeed,
|
||||
float p_turnMaxSpeed,
|
||||
|
||||
@ -68,11 +68,11 @@ class LegoOmni : public MxOmni {
|
||||
c_clearScreen = 0x04
|
||||
};
|
||||
|
||||
__declspec(dllexport) void CreateBackgroundAudio();
|
||||
__declspec(dllexport) void RemoveWorld(const MxAtomId&, MxLong);
|
||||
__declspec(dllexport) static int GetCurrPathInfo(LegoPathBoundary**, MxS32&);
|
||||
__declspec(dllexport) static void CreateInstance();
|
||||
__declspec(dllexport) static LegoOmni* GetInstance();
|
||||
void CreateBackgroundAudio();
|
||||
void RemoveWorld(const MxAtomId&, MxLong);
|
||||
static int GetCurrPathInfo(LegoPathBoundary**, MxS32&);
|
||||
static void CreateInstance();
|
||||
static LegoOmni* GetInstance();
|
||||
|
||||
LegoOmni();
|
||||
virtual ~LegoOmni(); // vtable+00
|
||||
@ -92,18 +92,18 @@ class LegoOmni : public MxOmni {
|
||||
return !strcmp(p_name, LegoOmni::ClassName()) || MxOmni::IsA(p_name);
|
||||
}
|
||||
|
||||
virtual void Init() override; // vtable+14
|
||||
virtual MxResult Create(MxOmniCreateParam& p_param) override; // vtable+18
|
||||
virtual void Destroy() override; // vtable+1c
|
||||
virtual MxResult Start(MxDSAction* p_dsAction) override; // vtable+20
|
||||
virtual void DeleteObject(MxDSAction& p_dsAction) override; // vtable+24
|
||||
virtual MxBool DoesEntityExist(MxDSAction& p_dsAction) override; // vtable+28
|
||||
virtual MxEntity* FindWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter) override; // vtable+30
|
||||
virtual void NotifyCurrentEntity(MxNotificationParam* p_param) override; // vtable+34
|
||||
virtual void StartTimer() override; // vtable+38
|
||||
virtual void StopTimer() override; // vtable+3c
|
||||
virtual void Init() override; // vtable+14
|
||||
virtual MxResult Create(MxOmniCreateParam& p_param) override; // vtable+18
|
||||
virtual void Destroy() override; // vtable+1c
|
||||
virtual MxResult Start(MxDSAction* p_dsAction) override; // vtable+20
|
||||
virtual void DeleteObject(MxDSAction& p_dsAction) override; // vtable+24
|
||||
virtual MxBool DoesEntityExist(MxDSAction& p_dsAction) override; // vtable+28
|
||||
virtual MxEntity* AddToWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter) override; // vtable+30
|
||||
virtual void NotifyCurrentEntity(MxNotificationParam* p_param) override; // vtable+34
|
||||
virtual void StartTimer() override; // vtable+38
|
||||
virtual void StopTimer() override; // vtable+3c
|
||||
|
||||
LegoEntity* FindByEntityIdOrAtomId(const MxAtomId& p_atom, MxS32 p_entityid);
|
||||
LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid);
|
||||
void AddWorld(LegoWorld* p_world);
|
||||
void FUN_1005b4f0(MxBool p_disable, MxU16 p_flags);
|
||||
|
||||
@ -111,7 +111,7 @@ class LegoOmni : public MxOmni {
|
||||
LegoSoundManager* GetSoundManager() { return (LegoSoundManager*) m_soundManager; }
|
||||
LegoInputManager* GetInputManager() { return m_inputMgr; }
|
||||
GifManager* GetGifManager() { return m_gifManager; }
|
||||
LegoWorld* GetCurrentOmniWorld() { return m_currentWorld; }
|
||||
LegoWorld* GetCurrentWorld() { return m_currentWorld; }
|
||||
LegoNavController* GetNavController() { return m_navController; }
|
||||
IslePathActor* GetCurrentVehicle() { return m_currentVehicle; }
|
||||
LegoPlantManager* GetLegoPlantManager() { return m_plantManager; }
|
||||
@ -153,16 +153,16 @@ class LegoOmni : public MxOmni {
|
||||
MxBool m_unk0x13c; // 0x13c
|
||||
};
|
||||
|
||||
__declspec(dllexport) MxBackgroundAudioManager* BackgroundAudioManager();
|
||||
__declspec(dllexport) LegoGameState* GameState();
|
||||
__declspec(dllexport) const char* GetNoCD_SourceName();
|
||||
__declspec(dllexport) LegoInputManager* InputManager();
|
||||
__declspec(dllexport) LegoOmni* Lego();
|
||||
__declspec(dllexport) LegoEntity* PickEntity(MxLong, MxLong);
|
||||
__declspec(dllexport) LegoROI* PickROI(MxLong, MxLong);
|
||||
__declspec(dllexport) LegoSoundManager* SoundManager();
|
||||
__declspec(dllexport) MxTransitionManager* TransitionManager();
|
||||
__declspec(dllexport) LegoVideoManager* VideoManager();
|
||||
MxBackgroundAudioManager* BackgroundAudioManager();
|
||||
LegoGameState* GameState();
|
||||
const char* GetNoCD_SourceName();
|
||||
LegoInputManager* InputManager();
|
||||
LegoOmni* Lego();
|
||||
LegoEntity* PickEntity(MxLong, MxLong);
|
||||
LegoROI* PickROI(MxLong, MxLong);
|
||||
LegoSoundManager* SoundManager();
|
||||
MxTransitionManager* TransitionManager();
|
||||
LegoVideoManager* VideoManager();
|
||||
|
||||
LegoAnimationManager* AnimationManager();
|
||||
LegoBuildingManager* BuildingManager();
|
||||
@ -174,7 +174,7 @@ LegoUnkSaveDataWriter* GetUnkSaveDataWriter();
|
||||
GifManager* GetGifManager();
|
||||
void FUN_10015820(MxBool p_disable, MxU16 p_flags);
|
||||
void FUN_10015860(const char*, MxU8);
|
||||
LegoEntity* FindEntityByAtomIdOrEntityId(const MxAtomId& p_atom, MxS32 p_entityid);
|
||||
LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid);
|
||||
MxDSAction& GetCurrentAction();
|
||||
|
||||
void PlayMusic(MxU32 p_index);
|
||||
|
||||
@ -24,7 +24,7 @@ class LegoPartPresenter : public MxMediaPresenter {
|
||||
virtual MxResult AddToManager() override; // vtable+0x34
|
||||
virtual void Destroy() override; // vtable+0x38
|
||||
|
||||
__declspec(dllexport) static void configureLegoPartPresenter(MxS32, MxS32);
|
||||
static void configureLegoPartPresenter(MxS32, MxS32);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000d060
|
||||
// LegoPartPresenter::`scalar deleting destructor'
|
||||
|
||||
@ -21,6 +21,7 @@ class LegoPlantManager : public MxCore {
|
||||
}
|
||||
|
||||
void FUN_10026360(undefined4 p_world);
|
||||
void FUN_100263a0(undefined4 p_und);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100262a0
|
||||
// LegoPlantManager::`scalar deleting destructor'
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#ifndef LEGOSOUNDMANAGER_H
|
||||
#define LEGOSOUNDMANAGER_H
|
||||
|
||||
#include "legounknown100d6b4c.h"
|
||||
#include "mxsoundmanager.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d6b10
|
||||
@ -17,12 +18,14 @@ class LegoSoundManager : public MxSoundManager {
|
||||
// SYNTHETIC: LEGO1 0x10029920
|
||||
// LegoSoundManager::`scalar deleting destructor'
|
||||
|
||||
inline LegoUnknown100d6b4c* GetUnknown0x40() { return m_unk0x40; }
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
||||
undefined4 m_unk0x3c;
|
||||
undefined4 m_unk0x40;
|
||||
undefined4 m_unk0x3c; // 0x3c
|
||||
LegoUnknown100d6b4c* m_unk0x40; // 0x40
|
||||
};
|
||||
|
||||
#endif // LEGOSOUNDMANAGER_H
|
||||
|
||||
15
LEGO1/lego/legoomni/include/legounknown100d6b4c.h
Normal file
15
LEGO1/lego/legoomni/include/legounknown100d6b4c.h
Normal file
@ -0,0 +1,15 @@
|
||||
#ifndef LEGOUNKNOWN100D6B4C_H
|
||||
#define LEGOUNKNOWN100D6B4C_H
|
||||
|
||||
#include "decomp.h"
|
||||
|
||||
class LegoCacheSound;
|
||||
|
||||
// VTABLE: LEGO1 0x100d6b4c
|
||||
// SIZE 0x20
|
||||
class LegoUnknown100d6b4c {
|
||||
public:
|
||||
void FUN_1003dc40(LegoCacheSound** p_und);
|
||||
};
|
||||
|
||||
#endif // LEGOUNKNOWN100D6B4C_H
|
||||
@ -9,7 +9,9 @@
|
||||
|
||||
class MxAtomId;
|
||||
class LegoEntity;
|
||||
class LegoAnimPresenter;
|
||||
|
||||
void FUN_1003e050(LegoAnimPresenter* p_presenter);
|
||||
Extra::ActionType MatchActionString(const char*);
|
||||
void InvokeAction(Extra::ActionType p_actionId, MxAtomId& p_pAtom, int p_targetEntityId, LegoEntity* p_sender);
|
||||
void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bOut, float* p_gOut);
|
||||
|
||||
@ -19,11 +19,11 @@ class LegoVideoManager : public MxVideoManager {
|
||||
LegoVideoManager();
|
||||
virtual ~LegoVideoManager() override;
|
||||
|
||||
__declspec(dllexport) int EnableRMDevice();
|
||||
__declspec(dllexport) int DisableRMDevice();
|
||||
int EnableRMDevice();
|
||||
int DisableRMDevice();
|
||||
void EnableFullScreenMovie(MxBool p_enable);
|
||||
__declspec(dllexport) void EnableFullScreenMovie(MxBool p_enable, MxBool p_scale);
|
||||
__declspec(dllexport) void MoveCursor(MxS32 p_cursorX, MxS32 p_cursorY);
|
||||
void EnableFullScreenMovie(MxBool p_enable, MxBool p_scale);
|
||||
void MoveCursor(MxS32 p_cursorX, MxS32 p_cursorY);
|
||||
|
||||
virtual MxResult Tickle() override; // vtable+0x8
|
||||
virtual void Destroy() override; // vtable+0x18
|
||||
@ -31,7 +31,8 @@ class LegoVideoManager : public MxVideoManager {
|
||||
override; // vtable+0x2c
|
||||
virtual MxResult RealizePalette(MxPalette*) override; // vtable+0x30
|
||||
virtual void UpdateView(MxU32 p_x, MxU32 p_y, MxU32 p_width, MxU32 p_height) override; // vtable+0x34
|
||||
virtual void VTable0x38(undefined4, undefined4); // vtable+0x38
|
||||
virtual MxPresenter* GetPresenterAt(MxS32 p_x, MxS32 p_y); // vtable+0x38
|
||||
|
||||
// FUNCTION: LEGO1 0x1007ab10
|
||||
virtual LegoUnknown100d9d00* VTable0x3c() { return m_unk0x100d9d00; } // vtable+0x3c
|
||||
|
||||
|
||||
@ -1,29 +1,39 @@
|
||||
#ifndef LEGOWORLD_H
|
||||
#define LEGOWORLD_H
|
||||
|
||||
#include "legocachesound.h"
|
||||
#include "legocachesoundlist.h"
|
||||
#include "legocameracontroller.h"
|
||||
#include "legoentity.h"
|
||||
#include "legoentitylist.h"
|
||||
#include "legopathcontrollerlist.h"
|
||||
#include "mxcorelist.h"
|
||||
#include "mxpresenter.h"
|
||||
#include "mxpresenterlist.h"
|
||||
|
||||
class IslePathActor;
|
||||
class LegoPathBoundary;
|
||||
class LegoHideAnimPresenter;
|
||||
|
||||
struct PresenterSetCompare {
|
||||
MxS32 operator()(MxPresenter* const& p_a, MxPresenter* const& p_b) const { return p_a > p_b; }
|
||||
struct CoreSetCompare {
|
||||
MxS32 operator()(MxCore* const& p_a, MxCore* const& p_b) const { return (MxS32) p_a < (MxS32) p_b; }
|
||||
};
|
||||
|
||||
typedef set<MxPresenter*, PresenterSetCompare> MxPresenterSet;
|
||||
typedef set<MxCore*, CoreSetCompare> MxCoreSet;
|
||||
|
||||
// VTABLE: LEGO1 0x100d6280
|
||||
// SIZE 0xf8
|
||||
class LegoWorld : public LegoEntity {
|
||||
public:
|
||||
__declspec(dllexport) LegoWorld();
|
||||
__declspec(dllexport) virtual ~LegoWorld() override; // vtable+0x0
|
||||
enum StartupTicks {
|
||||
e_start = 0,
|
||||
e_one,
|
||||
e_two,
|
||||
e_three,
|
||||
e_four
|
||||
};
|
||||
|
||||
LegoWorld();
|
||||
virtual ~LegoWorld() override; // vtable+0x0
|
||||
|
||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
||||
virtual MxResult Tickle() override; // vtable+0x8
|
||||
@ -43,9 +53,9 @@ class LegoWorld : public LegoEntity {
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
virtual void VTable0x50(); // vtable+0x50
|
||||
virtual void ReadyWorld(); // vtable+0x50
|
||||
virtual LegoCameraController* VTable0x54(); // vtable+0x54
|
||||
virtual void VTable0x58(MxCore* p_object); // vtable+0x58
|
||||
virtual void Add(MxCore* p_object); // vtable+0x58
|
||||
virtual MxBool VTable0x5c(); // vtable+0x5c
|
||||
|
||||
// FUNCTION: LEGO1 0x100010a0
|
||||
@ -57,53 +67,49 @@ class LegoWorld : public LegoEntity {
|
||||
inline LegoCameraController* GetCamera() { return m_cameraController; }
|
||||
inline undefined4 GetUnknown0xec() { return m_unk0xec; }
|
||||
|
||||
undefined FUN_100220e0();
|
||||
void EndAction(MxCore* p_object);
|
||||
MxBool PresentersPending();
|
||||
void Remove(MxCore* p_object);
|
||||
void FUN_1001fc80(IslePathActor* p_actor);
|
||||
MxBool FUN_100727e0(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
|
||||
MxBool FUN_10072980(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
|
||||
void FUN_10073400();
|
||||
void FUN_10073430();
|
||||
MxS32 GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value);
|
||||
MxPresenter* FindPresenter(const char* p_presenter, const char* p_name);
|
||||
MxPresenter* FUN_10021790(MxAtomId& p_atom, MxS32 p_entityId);
|
||||
MxCore* Find(const char* p_class, const char* p_name);
|
||||
MxCore* Find(const MxAtomId& p_atom, MxS32 p_entityId);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001dee0
|
||||
// LegoWorld::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
LegoPathControllerList m_list0x68; // 0x68
|
||||
MxPresenterList m_list0x80; // 0x80
|
||||
LegoCameraController* m_cameraController; // 0x98
|
||||
LegoEntityList* m_entityList; // 0x9c
|
||||
MxCoreList* m_coreList; // 0xa0
|
||||
undefined m_unk0xa4; // 0xa4
|
||||
MxPresenterSet m_set0xa8; // 0xa8
|
||||
MxPresenterList m_list0xb8; // 0xb8
|
||||
MxPresenterSet m_set0xd0; // 0xd0
|
||||
list<AutoROI*> m_list0xe0; // 0xe0
|
||||
undefined4 m_unk0xec; // 0xec
|
||||
undefined4 m_unk0xf0; // 0xf0
|
||||
MxS16 m_unk0xf4; // 0xf4
|
||||
MxBool m_worldStarted; // 0xf6
|
||||
undefined m_unk0xf7; // 0xf7
|
||||
LegoPathControllerList m_list0x68; // 0x68
|
||||
MxPresenterList m_animPresenters; // 0x80
|
||||
LegoCameraController* m_cameraController; // 0x98
|
||||
LegoEntityList* m_entityList; // 0x9c
|
||||
LegoCacheSoundList* m_cacheSoundList; // 0xa0
|
||||
MxBool m_destroyed; // 0xa4
|
||||
MxCoreSet m_set0xa8; // 0xa8
|
||||
MxPresenterList m_controlPresenters; // 0xb8
|
||||
MxCoreSet m_set0xd0; // 0xd0
|
||||
list<AutoROI*> m_list0xe0; // 0xe0
|
||||
undefined4 m_unk0xec; // 0xec
|
||||
LegoHideAnimPresenter* m_hideAnimPresenter; // 0xf0
|
||||
MxS16 m_startupTicks; // 0xf4
|
||||
MxBool m_worldStarted; // 0xf6
|
||||
undefined m_unk0xf7; // 0xf7
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
// TEMPLATE: LEGO1 0x1001d780
|
||||
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::~_Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::~_Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001d850
|
||||
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::iterator::_Inc
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::iterator::_Inc
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001d890
|
||||
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::erase
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001dcf0
|
||||
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::_Erase
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001dd30
|
||||
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::_Init
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Init
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001ddf0
|
||||
// list<AutoROI *,allocator<AutoROI *> >::~list<AutoROI *,allocator<AutoROI *> >
|
||||
@ -115,34 +121,42 @@ class LegoWorld : public LegoEntity {
|
||||
// list<AutoROI *,allocator<AutoROI *> >::_Buynode
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001de90
|
||||
// set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >::~set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *> >
|
||||
// set<MxCore *,CoreSetCompare,allocator<MxCore *> >::~set<MxCore *,CoreSetCompare,allocator<MxCore *> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001df00
|
||||
// Set<MxPresenter *,PresenterSetCompare>::~Set<MxPresenter *,PresenterSetCompare>
|
||||
// Set<MxCore *,CoreSetCompare>::~Set<MxCore *,CoreSetCompare>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001eed0
|
||||
// MxPresenterListCursor::`scalar deleting destructor'
|
||||
// TEMPLATE: LEGO1 0x1001f590
|
||||
// list<AutoROI *,allocator<AutoROI *> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001ef40
|
||||
// MxPtrListCursor<MxPresenter>::~MxPtrListCursor<MxPresenter>
|
||||
// TEMPLATE: LEGO1 0x100208b0
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::insert
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001ef90
|
||||
// MxListCursor<MxPresenter *>::`scalar deleting destructor'
|
||||
// TEMPLATE: LEGO1 0x10020b20
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::iterator::_Dec
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f000
|
||||
// MxPtrListCursor<MxPresenter>::`scalar deleting destructor'
|
||||
// XTEMPLATE LEGO1 0x10020b70
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001f070
|
||||
// MxListCursor<MxPresenter *>::~MxListCursor<MxPresenter *>
|
||||
// TEMPLATE: LEGO1 0x10020bb0
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Buynode
|
||||
|
||||
// FUNCTION: LEGO1 0x1001f0c0
|
||||
// MxPresenterListCursor::~MxPresenterListCursor
|
||||
// TEMPLATE: LEGO1 0x10020bd0
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x10020760
|
||||
// MxListCursor<MxPresenter *>::MxListCursor<MxPresenter *>
|
||||
// TEMPLATE: LEGO1 0x10020e50
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Lrotate
|
||||
|
||||
// TEMPLATE: LEGO1 0x10020eb0
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Rrotate
|
||||
|
||||
// TEMPLATE: LEGO1 0x10021340
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::find
|
||||
|
||||
// TEMPLATE: LEGO1 0x10022360
|
||||
// _Construct
|
||||
|
||||
// GLOBAL: LEGO1 0x100f11a0
|
||||
// _Tree<MxPresenter *,MxPresenter *,set<MxPresenter *,PresenterSetCompare,allocator<MxPresenter *>>::_Kfn,PresenterSetCompare,allocator<MxPresenter *> >::_Nil
|
||||
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Nil
|
||||
// clang-format on
|
||||
|
||||
#endif // LEGOWORLD_H
|
||||
|
||||
@ -10,7 +10,7 @@ class LegoWorldPresenter : public LegoEntityPresenter {
|
||||
LegoWorldPresenter();
|
||||
virtual ~LegoWorldPresenter() override; // vtable+0x0
|
||||
|
||||
__declspec(dllexport) static void configureLegoWorldPresenter(MxS32 p_legoWorldPresenterQuality);
|
||||
static void configureLegoWorldPresenter(MxS32 p_legoWorldPresenterQuality);
|
||||
|
||||
// FUNCTION: LEGO1 0x10066630
|
||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
||||
|
||||
@ -39,7 +39,7 @@ class MxBackgroundAudioManager : public MxCore {
|
||||
void FUN_1007ef40();
|
||||
void FadeInOrFadeOut();
|
||||
|
||||
__declspec(dllexport) void Enable(MxBool p_enable);
|
||||
void Enable(MxBool p_enable);
|
||||
virtual MxResult Create(MxAtomId& p_script, MxU32 p_frequencyMS);
|
||||
|
||||
void Stop();
|
||||
|
||||
@ -13,7 +13,7 @@ class MxTransitionManager : public MxCore {
|
||||
MxTransitionManager();
|
||||
virtual ~MxTransitionManager() override; // vtable+0x0
|
||||
|
||||
__declspec(dllexport) void SetWaitIndicator(MxVideoPresenter* p_waitIndicator);
|
||||
void SetWaitIndicator(MxVideoPresenter* p_waitIndicator);
|
||||
|
||||
virtual MxResult Tickle(); // vtable+0x8
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ class Police : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
@ -27,7 +27,7 @@ class RegistrationBook : public LegoWorld {
|
||||
}
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
virtual void VTable0x50() override; // vtable+0x50
|
||||
virtual void ReadyWorld() override; // vtable+0x50
|
||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ class Score : public LegoWorld {
|
||||
// Score::`scalar deleting destructor'
|
||||
|
||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+18
|
||||
virtual void VTable0x50() override; // vtable+50
|
||||
virtual void ReadyWorld() override; // vtable+50
|
||||
virtual MxBool VTable0x5c() override; // vtable+5c
|
||||
virtual MxBool VTable0x64() override; // vtable+64
|
||||
virtual void VTable0x68(MxBool p_add) override; // vtable+68
|
||||
|
||||
@ -29,7 +29,7 @@ MxLong LegoAct2::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10050a80
|
||||
void LegoAct2::VTable0x50()
|
||||
void LegoAct2::ReadyWorld()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -21,6 +21,18 @@ Act3::~Act3()
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100727e0
|
||||
MxBool Act3::FUN_100727e0(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10072980
|
||||
MxBool Act3::FUN_10072980(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10072c30
|
||||
MxResult Act3::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
@ -42,7 +54,7 @@ MxLong Act3::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10073270
|
||||
void Act3::VTable0x50()
|
||||
void Act3::ReadyWorld()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
@ -54,6 +66,16 @@ MxResult Act3::Tickle()
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10073400
|
||||
void Act3::FUN_10073400()
|
||||
{
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10073430
|
||||
void Act3::FUN_10073430()
|
||||
{
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10073a90
|
||||
void Act3::VTable0x68(MxBool p_add)
|
||||
{
|
||||
|
||||
7
LEGO1/lego/legoomni/src/audio/legounknown100d6b4c.cpp
Normal file
7
LEGO1/lego/legoomni/src/audio/legounknown100d6b4c.cpp
Normal file
@ -0,0 +1,7 @@
|
||||
#include "legounknown100d6b4c.h"
|
||||
|
||||
// STUB: LEGO1 0x1003dc40
|
||||
void LegoUnknown100d6b4c::FUN_1003dc40(LegoCacheSound** p_und)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
@ -13,6 +13,9 @@
|
||||
#include "mxtransitionmanager.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(Helicopter, 0x230)
|
||||
DECOMP_SIZE_ASSERT(Mx3DPointFloat, 0x14)
|
||||
DECOMP_SIZE_ASSERT(Mx4DPointFloat, 0x18)
|
||||
DECOMP_SIZE_ASSERT(MxMatrix, 0x48)
|
||||
|
||||
// FUNCTION: LEGO1 0x10001e60
|
||||
Helicopter::Helicopter()
|
||||
@ -38,7 +41,7 @@ MxResult Helicopter::Create(MxDSAction& p_dsAction)
|
||||
}
|
||||
world = GetWorld();
|
||||
if (world)
|
||||
world->VTable0x58(this);
|
||||
world->Add(this);
|
||||
GetState();
|
||||
return result;
|
||||
}
|
||||
@ -194,9 +197,9 @@ MxU32 Helicopter::VTable0xd4(MxType17NotificationParam& p_param)
|
||||
va4.EqualsCross(v68, dir);
|
||||
v7c.EqualsCross(va4, v90);
|
||||
if (ret)
|
||||
if (m_world->FUN_100727e0(m_unk0x138, loc, dir, v7c))
|
||||
if (((Act3*) m_world)->FUN_100727e0(m_unk0x138, loc, dir, v7c))
|
||||
break;
|
||||
else if (m_world->FUN_10072980(m_unk0x138, loc, dir, v7c))
|
||||
else if (((Act3*) m_world)->FUN_10072980(m_unk0x138, loc, dir, v7c))
|
||||
break;
|
||||
}
|
||||
ret = 1;
|
||||
@ -326,9 +329,9 @@ void Helicopter::VTable0x70(float p_float)
|
||||
}
|
||||
else {
|
||||
if (state == 4)
|
||||
m_world->FUN_10073400();
|
||||
((Act3*) m_world)->FUN_10073400();
|
||||
else
|
||||
m_world->FUN_10073430();
|
||||
((Act3*) m_world)->FUN_10073430();
|
||||
m_unk0xdc = 4;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,15 +1 @@
|
||||
#include "helicopterstate.h"
|
||||
|
||||
// STUB: LEGO1 0x1000e0b0
|
||||
MxBool HelicopterState::VTable0x14()
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1000e0c0
|
||||
MxBool HelicopterState::SetFlag()
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -33,6 +33,12 @@ void LegoBuildingManager::FUN_1002fa00()
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1002fb30
|
||||
void LegoBuildingManager::FUN_1002fb30()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10030220
|
||||
MxResult LegoBuildingManager::Tickle()
|
||||
{
|
||||
|
||||
@ -43,7 +43,7 @@ MxLong LegoCarBuild::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100242c0
|
||||
void LegoCarBuild::VTable0x50()
|
||||
void LegoCarBuild::ReadyWorld()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -1,17 +1,21 @@
|
||||
#include "racecar.h"
|
||||
|
||||
#include "legocontrolmanager.h"
|
||||
#include "legoomni.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(RaceCar, 0x164);
|
||||
|
||||
// FUNCTION: LEGO1 0x10028200
|
||||
RaceCar::RaceCar()
|
||||
{
|
||||
this->m_unk0x13c = 40.0;
|
||||
m_unk0x13c = 40.0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10028420
|
||||
// FUNCTION: LEGO1 0x10028420
|
||||
RaceCar::~RaceCar()
|
||||
{
|
||||
// TODO
|
||||
ControlManager()->Unregister(this);
|
||||
VTable0xe4();
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10028490
|
||||
|
||||
@ -398,13 +398,13 @@ void LegoGameState::SetSomeEnumState(undefined4 p_state)
|
||||
// FUNCTION: LEGO1 0x1003ceb0
|
||||
void LegoGameState::FUN_1003ceb0()
|
||||
{
|
||||
if (FindEntityByAtomIdOrEntityId(*g_isleScript, 0)) {
|
||||
if (FindWorld(*g_isleScript, 0)) {
|
||||
m_currentAct = 0;
|
||||
}
|
||||
else if (FindEntityByAtomIdOrEntityId(*g_act2mainScript, 0)) {
|
||||
else if (FindWorld(*g_act2mainScript, 0)) {
|
||||
m_currentAct = 1;
|
||||
}
|
||||
else if (FindEntityByAtomIdOrEntityId(*g_act3Script, 0)) {
|
||||
else if (FindWorld(*g_act3Script, 0)) {
|
||||
m_currentAct = 2;
|
||||
}
|
||||
else {
|
||||
|
||||
@ -24,6 +24,12 @@ void LegoPlantManager::FUN_10026360(undefined4 p_world)
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100263a0
|
||||
void LegoPlantManager::FUN_100263a0(undefined4 p_und)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10026e00
|
||||
MxResult LegoPlantManager::Tickle()
|
||||
{
|
||||
|
||||
@ -10,6 +10,12 @@
|
||||
#include <process.h>
|
||||
#include <string.h>
|
||||
|
||||
// STUB: LEGO1 0x1003e050
|
||||
void FUN_1003e050(LegoAnimPresenter* p_presenter)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1003e300
|
||||
Extra::ActionType MatchActionString(const char* p_str)
|
||||
{
|
||||
@ -99,7 +105,8 @@ void InvokeAction(Extra::ActionType p_actionId, MxAtomId& p_pAtom, int p_targetE
|
||||
// FUNCTION: LEGO1 0x1003e670
|
||||
MxBool CheckIfEntityExists(MxBool p_enable, const char* p_filename, MxS32 p_entityId)
|
||||
{
|
||||
LegoWorld* world = (LegoWorld*) FindEntityByAtomIdOrEntityId(MxAtomId(p_filename, e_lowerCase2), p_entityId);
|
||||
LegoWorld* world = FindWorld(MxAtomId(p_filename, e_lowerCase2), p_entityId);
|
||||
|
||||
if (world) {
|
||||
world->VTable0x68(p_enable);
|
||||
return TRUE;
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
#include "legocontrolmanager.h"
|
||||
|
||||
#include "legoeventnotificationparam.h"
|
||||
#include "mxpresenter.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(LegoControlManager, 0x60);
|
||||
|
||||
// STUB: LEGO1 0x10028520
|
||||
LegoControlManager::LegoControlManager()
|
||||
{
|
||||
@ -30,6 +35,12 @@ void LegoControlManager::Unregister(MxCore* p_listener)
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10029210
|
||||
MxBool LegoControlManager::FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100293c0
|
||||
void LegoControlManager::FUN_100293c0(undefined4, const char*, undefined2)
|
||||
{
|
||||
|
||||
@ -71,7 +71,7 @@ void LegoEntity::SetWorld()
|
||||
{
|
||||
LegoWorld* world = GetCurrentWorld();
|
||||
if (world != NULL && world != (LegoWorld*) this) {
|
||||
world->VTable0x58(this);
|
||||
world->Add(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,11 +1,17 @@
|
||||
#include "legoworld.h"
|
||||
|
||||
#include "legoanimpresenter.h"
|
||||
#include "legobuildingmanager.h"
|
||||
#include "legocontrolmanager.h"
|
||||
#include "legoinputmanager.h"
|
||||
#include "legolocomotionanimpresenter.h"
|
||||
#include "legoomni.h"
|
||||
#include "legoplantmanager.h"
|
||||
#include "legosoundmanager.h"
|
||||
#include "legoutil.h"
|
||||
#include "legovideomanager.h"
|
||||
#include "mxactionnotificationparam.h"
|
||||
#include "mxcontrolpresenter.h"
|
||||
#include "mxnotificationmanager.h"
|
||||
#include "mxnotificationparam.h"
|
||||
#include "mxomni.h"
|
||||
@ -14,18 +20,18 @@
|
||||
DECOMP_SIZE_ASSERT(LegoWorld, 0xf8)
|
||||
DECOMP_SIZE_ASSERT(LegoEntityList, 0x18)
|
||||
DECOMP_SIZE_ASSERT(LegoEntityListCursor, 0x10)
|
||||
DECOMP_SIZE_ASSERT(MxCoreList, 0x18)
|
||||
DECOMP_SIZE_ASSERT(MxCoreListCursor, 0x10)
|
||||
DECOMP_SIZE_ASSERT(LegoCacheSoundList, 0x18)
|
||||
DECOMP_SIZE_ASSERT(LegoCacheSoundListCursor, 0x10)
|
||||
|
||||
// FUNCTION: LEGO1 0x1001ca40
|
||||
LegoWorld::LegoWorld() : m_list0x68(TRUE)
|
||||
{
|
||||
m_unk0xf4 = 4;
|
||||
m_startupTicks = e_four;
|
||||
m_cameraController = NULL;
|
||||
m_entityList = NULL;
|
||||
m_coreList = NULL;
|
||||
m_unk0xa4 = 0; // MxBool?
|
||||
m_unk0xf0 = 0;
|
||||
m_cacheSoundList = NULL;
|
||||
m_destroyed = FALSE;
|
||||
m_hideAnimPresenter = NULL;
|
||||
m_worldStarted = FALSE;
|
||||
|
||||
NotificationManager()->Register(this);
|
||||
@ -43,10 +49,13 @@ MxBool LegoWorld::VTable0x64()
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1001dfa0
|
||||
// FUNCTION: LEGO1 0x1001dfa0
|
||||
LegoWorld::~LegoWorld()
|
||||
{
|
||||
// TODO
|
||||
Destroy(TRUE);
|
||||
|
||||
TickleManager()->UnregisterClient(this);
|
||||
NotificationManager()->Unregister(this);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1001e0b0
|
||||
@ -59,9 +68,9 @@ MxResult LegoWorld::Create(MxDSAction& p_dsAction)
|
||||
if (!m_entityList)
|
||||
return FAILURE;
|
||||
|
||||
m_coreList = new MxCoreList(TRUE);
|
||||
m_cacheSoundList = new LegoCacheSoundList(TRUE);
|
||||
|
||||
if (!m_coreList)
|
||||
if (!m_cacheSoundList)
|
||||
return FAILURE;
|
||||
|
||||
if (!VTable0x54())
|
||||
@ -73,7 +82,7 @@ MxResult LegoWorld::Create(MxDSAction& p_dsAction)
|
||||
}
|
||||
|
||||
SetCurrentWorld(this);
|
||||
ControlManager()->FUN_10028df0(&m_list0xb8);
|
||||
ControlManager()->FUN_10028df0(&m_controlPresenters);
|
||||
}
|
||||
|
||||
SetIsWorldActive(TRUE);
|
||||
@ -82,10 +91,118 @@ MxResult LegoWorld::Create(MxDSAction& p_dsAction)
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1001e9d0
|
||||
// FUNCTION: LEGO1 0x1001e9d0
|
||||
void LegoWorld::Destroy(MxBool p_fromDestructor)
|
||||
{
|
||||
// TODO
|
||||
m_destroyed = TRUE;
|
||||
|
||||
if (GetCurrentWorld() == this) {
|
||||
ControlManager()->FUN_10028df0(NULL);
|
||||
SetCurrentWorld(NULL);
|
||||
}
|
||||
|
||||
m_list0x68.DeleteAll();
|
||||
|
||||
if (m_cameraController) {
|
||||
delete m_cameraController;
|
||||
m_cameraController = NULL;
|
||||
}
|
||||
|
||||
MxPresenterListCursor animPresenterCursor(&m_animPresenters);
|
||||
MxPresenter* presenter;
|
||||
|
||||
while (animPresenterCursor.First(presenter)) {
|
||||
animPresenterCursor.Detach();
|
||||
|
||||
MxDSAction* action = presenter->GetAction();
|
||||
if (action) {
|
||||
if (presenter->IsA("LegoLocomotionAnimPresenter")) {
|
||||
LegoLocomotionAnimPresenter* animPresenter = (LegoLocomotionAnimPresenter*) presenter;
|
||||
|
||||
animPresenter->DecrementUnknown0xd4();
|
||||
if (animPresenter->GetUnknown0xd4() == 0) {
|
||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
||||
presenter->EndAction();
|
||||
}
|
||||
}
|
||||
else {
|
||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
||||
presenter->EndAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while (!m_set0xa8.empty()) {
|
||||
MxCoreSet::iterator it = m_set0xa8.begin();
|
||||
MxCore* object = *it;
|
||||
m_set0xa8.erase(it);
|
||||
|
||||
if (object->IsA("MxPresenter")) {
|
||||
MxPresenter* presenter = (MxPresenter*) object;
|
||||
MxDSAction* action = presenter->GetAction();
|
||||
|
||||
if (action) {
|
||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
||||
presenter->EndAction();
|
||||
}
|
||||
}
|
||||
else
|
||||
delete object;
|
||||
}
|
||||
|
||||
MxPresenterListCursor controlPresenterCursor(&m_controlPresenters);
|
||||
|
||||
while (controlPresenterCursor.First(presenter)) {
|
||||
controlPresenterCursor.Detach();
|
||||
|
||||
MxDSAction* action = presenter->GetAction();
|
||||
if (action) {
|
||||
FUN_100b7220(action, MxDSAction::c_world, FALSE);
|
||||
presenter->EndAction();
|
||||
}
|
||||
}
|
||||
|
||||
if (m_unk0xec != -1 && m_set0xd0.empty()) {
|
||||
PlantManager()->FUN_100263a0(m_unk0xec);
|
||||
BuildingManager()->FUN_1002fb30();
|
||||
}
|
||||
|
||||
if (m_entityList) {
|
||||
LegoEntityListCursor cursor(m_entityList);
|
||||
LegoEntity* entity;
|
||||
|
||||
while (cursor.First(entity)) {
|
||||
cursor.Detach();
|
||||
|
||||
if (!(entity->GetFlags() & LegoEntity::c_bit2))
|
||||
delete entity;
|
||||
}
|
||||
|
||||
delete m_entityList;
|
||||
m_entityList = NULL;
|
||||
}
|
||||
|
||||
if (m_cacheSoundList) {
|
||||
LegoCacheSoundListCursor cursor(m_cacheSoundList);
|
||||
LegoCacheSound* sound;
|
||||
|
||||
while (cursor.First(sound)) {
|
||||
cursor.Detach();
|
||||
SoundManager()->GetUnknown0x40()->FUN_1003dc40(&sound);
|
||||
}
|
||||
|
||||
delete m_cacheSoundList;
|
||||
m_cacheSoundList = NULL;
|
||||
}
|
||||
|
||||
while (!m_list0xe0.empty()) {
|
||||
AutoROI* roi = m_list0xe0.front();
|
||||
m_list0xe0.pop_front();
|
||||
delete roi;
|
||||
}
|
||||
|
||||
if (!p_fromDestructor)
|
||||
LegoEntity::Destroy(FALSE);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1001f5e0
|
||||
@ -95,7 +212,7 @@ MxLong LegoWorld::Notify(MxParam& p_param)
|
||||
switch (((MxNotificationParam&) p_param).GetNotification()) {
|
||||
case c_notificationEndAction: {
|
||||
MxPresenter* presenter = (MxPresenter*) ((MxEndActionNotificationParam&) p_param).GetSender();
|
||||
EndAction(presenter);
|
||||
Remove(presenter);
|
||||
ret = 1;
|
||||
break;
|
||||
}
|
||||
@ -151,26 +268,220 @@ MxS32 LegoWorld::GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10020220
|
||||
void LegoWorld::VTable0x58(MxCore* p_object)
|
||||
// FUNCTION: LEGO1 0x10020220
|
||||
void LegoWorld::Add(MxCore* p_object)
|
||||
{
|
||||
// TODO
|
||||
if (p_object && !p_object->IsA("LegoWorld") && !p_object->IsA("LegoWorldPresenter")) {
|
||||
if (p_object->IsA("LegoAnimPresenter")) {
|
||||
LegoAnimPresenter* animPresenter = (LegoAnimPresenter*) p_object;
|
||||
|
||||
if (!strcmpi(animPresenter->GetAction()->GetObjectName(), "ConfigAnimation")) {
|
||||
FUN_1003e050(animPresenter);
|
||||
animPresenter->GetAction()->SetDuration(animPresenter->GetUnknown0x64()->GetUnknown0x8());
|
||||
}
|
||||
}
|
||||
|
||||
if (p_object->IsA("MxControlPresenter")) {
|
||||
MxPresenterListCursor cursor(&m_controlPresenters);
|
||||
|
||||
if (cursor.Find((MxPresenter*) p_object))
|
||||
return;
|
||||
|
||||
m_controlPresenters.Append((MxPresenter*) p_object);
|
||||
}
|
||||
else if (p_object->IsA("MxEntity")) {
|
||||
LegoEntityListCursor cursor(m_entityList);
|
||||
|
||||
if (cursor.Find((LegoEntity*) p_object))
|
||||
return;
|
||||
|
||||
m_entityList->Append((LegoEntity*) p_object);
|
||||
}
|
||||
else if (p_object->IsA("LegoLocomotionAnimPresenter") || p_object->IsA("LegoHideAnimPresenter") || p_object->IsA("LegoLoopingAnimPresenter")) {
|
||||
MxPresenterListCursor cursor(&m_animPresenters);
|
||||
|
||||
if (cursor.Find((MxPresenter*) p_object))
|
||||
return;
|
||||
|
||||
((MxPresenter*) p_object)->SendToCompositePresenter(Lego());
|
||||
m_animPresenters.Append(((MxPresenter*) p_object));
|
||||
|
||||
if (p_object->IsA("LegoHideAnimPresenter"))
|
||||
m_hideAnimPresenter = (LegoHideAnimPresenter*) p_object;
|
||||
}
|
||||
else if (p_object->IsA("LegoCacheSound")) {
|
||||
LegoCacheSoundListCursor cursor(m_cacheSoundList);
|
||||
|
||||
if (cursor.Find((LegoCacheSound*) p_object))
|
||||
return;
|
||||
|
||||
m_cacheSoundList->Append((LegoCacheSound*) p_object);
|
||||
}
|
||||
else {
|
||||
if (m_set0xa8.find(p_object) == m_set0xa8.end())
|
||||
m_set0xa8.insert(p_object);
|
||||
}
|
||||
|
||||
if (!m_set0xd0.empty() && p_object->IsA("MxPresenter")) {
|
||||
if (((MxPresenter*) p_object)->IsEnabled()) {
|
||||
((MxPresenter*) p_object)->Enable(FALSE);
|
||||
m_set0xd0.insert(p_object);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10020f10
|
||||
void LegoWorld::EndAction(MxCore* p_object)
|
||||
// FUNCTION: LEGO1 0x10020f10
|
||||
void LegoWorld::Remove(MxCore* p_object)
|
||||
{
|
||||
if (p_object) {
|
||||
MxCoreSet::iterator it;
|
||||
|
||||
if (p_object->IsA("MxControlPresenter")) {
|
||||
MxPresenterListCursor cursor(&m_controlPresenters);
|
||||
|
||||
if (cursor.Find((MxControlPresenter*) p_object)) {
|
||||
cursor.Detach();
|
||||
((MxControlPresenter*) p_object)->GetAction()->SetOrigin(Lego());
|
||||
((MxControlPresenter*) p_object)->VTable0x68(TRUE);
|
||||
}
|
||||
}
|
||||
else if (p_object->IsA("LegoLocomotionAnimPresenter") || p_object->IsA("LegoHideAnimPresenter") || p_object->IsA("LegoLoopingAnimPresenter")) {
|
||||
MxPresenterListCursor cursor(&m_animPresenters);
|
||||
|
||||
if (cursor.Find((MxPresenter*) p_object))
|
||||
cursor.Detach();
|
||||
|
||||
if (p_object->IsA("LegoHideAnimPresenter"))
|
||||
m_hideAnimPresenter = NULL;
|
||||
}
|
||||
else if (p_object->IsA("MxEntity")) {
|
||||
if (p_object->IsA("LegoPathActor"))
|
||||
FUN_1001fc80((IslePathActor*) p_object);
|
||||
|
||||
if (m_entityList) {
|
||||
LegoEntityListCursor cursor(m_entityList);
|
||||
|
||||
if (cursor.Find((LegoEntity*) p_object))
|
||||
cursor.Detach();
|
||||
}
|
||||
}
|
||||
else if (p_object->IsA("LegoCacheSound")) {
|
||||
LegoCacheSoundListCursor cursor(m_cacheSoundList);
|
||||
|
||||
if (cursor.Find((LegoCacheSound*) p_object))
|
||||
cursor.Detach();
|
||||
}
|
||||
else {
|
||||
it = m_set0xa8.find(p_object);
|
||||
if (it != m_set0xa8.end())
|
||||
m_set0xa8.erase(it);
|
||||
}
|
||||
|
||||
it = m_set0xd0.find(p_object);
|
||||
if (it != m_set0xd0.end())
|
||||
m_set0xd0.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100213a0
|
||||
MxPresenter* LegoWorld::FindPresenter(const char* p_presenter, const char* p_name)
|
||||
// FUNCTION: LEGO1 0x100213a0
|
||||
MxCore* LegoWorld::Find(const char* p_class, const char* p_name)
|
||||
{
|
||||
return NULL;
|
||||
if (!strcmp(p_class, "MxControlPresenter")) {
|
||||
MxPresenterListCursor cursor(&m_controlPresenters);
|
||||
MxPresenter* presenter;
|
||||
|
||||
while (cursor.Next(presenter)) {
|
||||
MxDSAction* action = presenter->GetAction();
|
||||
if (!strcmp(action->GetObjectName(), p_name))
|
||||
return presenter;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
else if (!strcmp(p_class, "MxEntity")) {
|
||||
LegoEntityListCursor cursor(m_entityList);
|
||||
LegoEntity* entity;
|
||||
|
||||
while (cursor.Next(entity)) {
|
||||
if (!p_name)
|
||||
return entity;
|
||||
|
||||
LegoROI* roi = entity->GetROI();
|
||||
if (roi && !strcmpi(roi->GetUnknown0xe4(), p_name))
|
||||
return entity;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
else if (!strcmp(p_class, "LegoAnimPresenter")) {
|
||||
MxPresenterListCursor cursor(&m_animPresenters);
|
||||
MxPresenter* presenter;
|
||||
|
||||
while (cursor.Next(presenter)) {
|
||||
if (!strcmpi(((LegoAnimPresenter*) presenter)->GetActionObjectName(), p_name))
|
||||
return presenter;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
else {
|
||||
for (MxCoreSet::iterator it = m_set0xa8.begin(); it != m_set0xa8.end(); it++) {
|
||||
if ((*it)->IsA(p_class) && (*it)->IsA("MxPresenter")) {
|
||||
MxPresenter* presenter = (MxPresenter*) *it;
|
||||
MxDSAction* action = presenter->GetAction();
|
||||
|
||||
if (!strcmp(action->GetObjectName(), p_name))
|
||||
return *it;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10021790
|
||||
MxPresenter* LegoWorld::FUN_10021790(MxAtomId& p_atom, MxS32 p_entityId)
|
||||
// FUNCTION: LEGO1 0x10021790
|
||||
MxCore* LegoWorld::Find(const MxAtomId& p_atom, MxS32 p_entityId)
|
||||
{
|
||||
LegoEntityListCursor entityCursor(m_entityList);
|
||||
LegoEntity* entity;
|
||||
|
||||
while (entityCursor.Next(entity)) {
|
||||
if (entity->GetAtom() == p_atom && entity->GetEntityId() == p_entityId)
|
||||
return entity;
|
||||
}
|
||||
|
||||
MxPresenterListCursor controlPresenterCursor(&m_controlPresenters);
|
||||
MxPresenter* presenter;
|
||||
|
||||
while (controlPresenterCursor.Next(presenter)) {
|
||||
MxDSAction* action = presenter->GetAction();
|
||||
|
||||
if (action->GetAtomId() == p_atom && action->GetObjectId() == p_entityId)
|
||||
return presenter;
|
||||
}
|
||||
|
||||
MxPresenterListCursor animPresenterCursor(&m_animPresenters);
|
||||
|
||||
while (animPresenterCursor.Next(presenter)) {
|
||||
MxDSAction* action = presenter->GetAction();
|
||||
|
||||
if (action && action->GetAtomId() == p_atom && action->GetObjectId() == p_entityId)
|
||||
return presenter;
|
||||
}
|
||||
|
||||
for (MxCoreSet::iterator it = m_set0xa8.begin(); it != m_set0xa8.end(); it++) {
|
||||
MxCore* core = *it;
|
||||
|
||||
if (core->IsA("MxPresenter")) {
|
||||
MxPresenter* presenter = (MxPresenter*) *it;
|
||||
MxDSAction* action = presenter->GetAction();
|
||||
|
||||
if (action->GetAtomId() == p_atom && action->GetObjectId() == p_entityId)
|
||||
return *it;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -184,52 +495,63 @@ void LegoWorld::VTable0x68(MxBool p_add)
|
||||
MxResult LegoWorld::Tickle()
|
||||
{
|
||||
if (!m_worldStarted) {
|
||||
switch (m_unk0xf4) {
|
||||
case 0:
|
||||
switch (m_startupTicks) {
|
||||
case e_start:
|
||||
m_worldStarted = TRUE;
|
||||
SetAppCursor(0);
|
||||
VTable0x50();
|
||||
ReadyWorld();
|
||||
return TRUE;
|
||||
case 2:
|
||||
if (FUN_100220e0() == 1)
|
||||
case e_two:
|
||||
if (PresentersPending())
|
||||
break;
|
||||
default:
|
||||
m_unk0xf4--;
|
||||
m_startupTicks--;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100220e0
|
||||
undefined LegoWorld::FUN_100220e0()
|
||||
// FUNCTION: LEGO1 0x100220e0
|
||||
MxBool LegoWorld::PresentersPending()
|
||||
{
|
||||
return 0;
|
||||
MxPresenterListCursor controlPresenterCursor(&m_controlPresenters);
|
||||
MxPresenter* presenter;
|
||||
|
||||
while (controlPresenterCursor.Next(presenter)) {
|
||||
if (presenter->IsEnabled() && !presenter->HasTickleStatePassed(MxPresenter::e_starting))
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
MxPresenterListCursor animPresenterCursor(&m_animPresenters);
|
||||
|
||||
while (animPresenterCursor.Next(presenter)) {
|
||||
if (presenter->IsEnabled()) {
|
||||
if (presenter->IsA("LegoLocomotionAnimPresenter")) {
|
||||
if (!presenter->HasTickleStatePassed(MxPresenter::e_ready))
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
if (!presenter->HasTickleStatePassed(MxPresenter::e_starting))
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (MxCoreSet::iterator it = m_set0xa8.begin(); it != m_set0xa8.end(); it++) {
|
||||
if ((*it)->IsA("MxPresenter")) {
|
||||
presenter = (MxPresenter*) *it;
|
||||
|
||||
if (presenter->IsEnabled() && !presenter->HasTickleStatePassed(MxPresenter::e_starting))
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10022340
|
||||
void LegoWorld::VTable0x50()
|
||||
void LegoWorld::ReadyWorld()
|
||||
{
|
||||
TickleManager()->UnregisterClient(this);
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100727e0
|
||||
MxBool LegoWorld::FUN_100727e0(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10072980
|
||||
MxBool LegoWorld::FUN_10072980(MxU32, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10073400
|
||||
void LegoWorld::FUN_10073400()
|
||||
{
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10073430
|
||||
void LegoWorld::FUN_10073430()
|
||||
{
|
||||
}
|
||||
|
||||
@ -165,7 +165,7 @@ void LegoWorldPresenter::VTable0x60(MxPresenter* p_presenter)
|
||||
if (!p_presenter->IsA("LegoAnimPresenter") && !p_presenter->IsA("MxControlPresenter") &&
|
||||
!p_presenter->IsA("MxCompositePresenter")) {
|
||||
p_presenter->SendToCompositePresenter(Lego());
|
||||
((LegoWorld*) m_entity)->VTable0x58(p_presenter);
|
||||
((LegoWorld*) m_entity)->Add(p_presenter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ MxLong GasStation::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10004b30
|
||||
void GasStation::VTable0x50()
|
||||
void GasStation::ReadyWorld()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@ MxLong Hospital::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10074a60
|
||||
void Hospital::VTable0x50()
|
||||
void Hospital::ReadyWorld()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -65,9 +65,9 @@ MxLong ElevatorBottom::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100181b0
|
||||
void ElevatorBottom::VTable0x50()
|
||||
void ElevatorBottom::ReadyWorld()
|
||||
{
|
||||
LegoWorld::VTable0x50();
|
||||
LegoWorld::ReadyWorld();
|
||||
PlayMusic(JukeBox::e_informationCenter);
|
||||
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||
}
|
||||
|
||||
@ -298,15 +298,15 @@ MxLong Infocenter::HandleEndAction(MxParam& p_param)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1006f4e0
|
||||
void Infocenter::VTable0x50()
|
||||
void Infocenter::ReadyWorld()
|
||||
{
|
||||
m_infoManDialogueTimer = 0;
|
||||
m_bookAnimationTimer = 0;
|
||||
m_unk0x1d4 = 0;
|
||||
m_unk0x1d6 = 0;
|
||||
|
||||
MxStillPresenter* bg = (MxStillPresenter*) FindPresenter("MxStillPresenter", "Background_Bitmap");
|
||||
MxStillPresenter* bgRed = (MxStillPresenter*) FindPresenter("MxStillPresenter", "BackgroundRed_Bitmap");
|
||||
MxStillPresenter* bg = (MxStillPresenter*) Find("MxStillPresenter", "Background_Bitmap");
|
||||
MxStillPresenter* bgRed = (MxStillPresenter*) Find("MxStillPresenter", "BackgroundRed_Bitmap");
|
||||
|
||||
switch (GameState()->GetUnknown10()) {
|
||||
case 0:
|
||||
@ -365,73 +365,73 @@ void Infocenter::InitializeBitmaps()
|
||||
{
|
||||
m_radio.Initialize(TRUE);
|
||||
|
||||
FUN_10021790(m_atom, c_leftArrowCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_rightArrowCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_infoCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_boatCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_raceCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_pizzaCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_gasCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_medCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_copCtl)->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_leftArrowCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_rightArrowCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_infoCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_boatCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_raceCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_pizzaCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_gasCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_medCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_copCtl))->Enable(TRUE);
|
||||
|
||||
FUN_10021790(m_atom, c_mamaCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_papaCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_pepperCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_nickCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_lauraCtl)->Enable(TRUE);
|
||||
FUN_10021790(m_atom, c_radioCtl)->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_mamaCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_papaCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_pepperCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_nickCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_lauraCtl))->Enable(TRUE);
|
||||
((MxPresenter*) Find(m_atom, c_radioCtl))->Enable(TRUE);
|
||||
|
||||
m_mapAreas[0].m_presenter = (MxStillPresenter*) FindPresenter("MxStillPresenter", "Info_A_Bitmap");
|
||||
m_mapAreas[0].m_presenter = (MxStillPresenter*) Find("MxStillPresenter", "Info_A_Bitmap");
|
||||
m_mapAreas[0].m_unk0x08 = 391;
|
||||
m_mapAreas[0].m_unk0x0c = 182;
|
||||
m_mapAreas[0].m_unk0x10 = 427;
|
||||
m_mapAreas[0].m_unk0x14 = 230;
|
||||
m_mapAreas[0].m_unk0x04 = 3;
|
||||
|
||||
m_mapAreas[1].m_presenter = (MxStillPresenter*) FindPresenter("MxStillPresenter", "Boat_A_Bitmap");
|
||||
m_mapAreas[1].m_presenter = (MxStillPresenter*) Find("MxStillPresenter", "Boat_A_Bitmap");
|
||||
m_mapAreas[1].m_unk0x08 = 304;
|
||||
m_mapAreas[1].m_unk0x0c = 225;
|
||||
m_mapAreas[1].m_unk0x10 = 350;
|
||||
m_mapAreas[1].m_unk0x14 = 268;
|
||||
m_mapAreas[1].m_unk0x04 = 10;
|
||||
|
||||
m_mapAreas[2].m_presenter = (MxStillPresenter*) FindPresenter("MxStillPresenter", "Race_A_Bitmap");
|
||||
m_mapAreas[2].m_presenter = (MxStillPresenter*) Find("MxStillPresenter", "Race_A_Bitmap");
|
||||
m_mapAreas[2].m_unk0x08 = 301;
|
||||
m_mapAreas[2].m_unk0x0c = 133;
|
||||
m_mapAreas[2].m_unk0x10 = 347;
|
||||
m_mapAreas[2].m_unk0x14 = 181;
|
||||
m_mapAreas[2].m_unk0x04 = 11;
|
||||
|
||||
m_mapAreas[3].m_presenter = (MxStillPresenter*) FindPresenter("MxStillPresenter", "Pizza_A_Bitmap");
|
||||
m_mapAreas[3].m_presenter = (MxStillPresenter*) Find("MxStillPresenter", "Pizza_A_Bitmap");
|
||||
m_mapAreas[3].m_unk0x08 = 289;
|
||||
m_mapAreas[3].m_unk0x0c = 182;
|
||||
m_mapAreas[3].m_unk0x10 = 335;
|
||||
m_mapAreas[3].m_unk0x14 = 225;
|
||||
m_mapAreas[3].m_unk0x04 = 12;
|
||||
|
||||
m_mapAreas[4].m_presenter = (MxStillPresenter*) FindPresenter("MxStillPresenter", "Gas_A_Bitmap");
|
||||
m_mapAreas[4].m_presenter = (MxStillPresenter*) Find("MxStillPresenter", "Gas_A_Bitmap");
|
||||
m_mapAreas[4].m_unk0x10 = 391;
|
||||
m_mapAreas[4].m_unk0x08 = 350;
|
||||
m_mapAreas[4].m_unk0x0c = 161;
|
||||
m_mapAreas[4].m_unk0x14 = 209;
|
||||
m_mapAreas[4].m_unk0x04 = 13;
|
||||
|
||||
m_mapAreas[5].m_presenter = (MxStillPresenter*) FindPresenter("MxStillPresenter", "Med_A_Bitmap");
|
||||
m_mapAreas[5].m_presenter = (MxStillPresenter*) Find("MxStillPresenter", "Med_A_Bitmap");
|
||||
m_mapAreas[5].m_unk0x08 = 392;
|
||||
m_mapAreas[5].m_unk0x0c = 130;
|
||||
m_mapAreas[5].m_unk0x10 = 438;
|
||||
m_mapAreas[5].m_unk0x14 = 176;
|
||||
m_mapAreas[5].m_unk0x04 = 14;
|
||||
|
||||
m_mapAreas[6].m_presenter = (MxStillPresenter*) FindPresenter("MxStillPresenter", "Cop_A_Bitmap");
|
||||
m_mapAreas[6].m_presenter = (MxStillPresenter*) Find("MxStillPresenter", "Cop_A_Bitmap");
|
||||
m_mapAreas[6].m_unk0x08 = 396;
|
||||
m_mapAreas[6].m_unk0x0c = 229;
|
||||
m_mapAreas[6].m_unk0x10 = 442;
|
||||
m_mapAreas[6].m_unk0x14 = 272;
|
||||
m_mapAreas[6].m_unk0x04 = 15;
|
||||
|
||||
m_frameHotBitmap = (MxStillPresenter*) FindPresenter("MxStillPresenter", "FrameHot_Bitmap");
|
||||
m_frameHotBitmap = (MxStillPresenter*) Find("MxStillPresenter", "FrameHot_Bitmap");
|
||||
|
||||
FUN_10070dc0(TRUE);
|
||||
}
|
||||
|
||||
@ -53,9 +53,9 @@ MxLong InfocenterDoor::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10037a70
|
||||
void InfocenterDoor::VTable0x50()
|
||||
void InfocenterDoor::ReadyWorld()
|
||||
{
|
||||
LegoWorld::VTable0x50();
|
||||
LegoWorld::ReadyWorld();
|
||||
PlayMusic(JukeBox::e_informationCenter);
|
||||
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ MxLong RegistrationBook::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10077cc0
|
||||
void RegistrationBook::VTable0x50()
|
||||
void RegistrationBook::ReadyWorld()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -129,9 +129,9 @@ MxLong Score::FUN_10001510(MxEndActionNotificationParam& p_param)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10001580
|
||||
void Score::VTable0x50()
|
||||
void Score::ReadyWorld()
|
||||
{
|
||||
LegoWorld::VTable0x50();
|
||||
LegoWorld::ReadyWorld();
|
||||
|
||||
MxDSAction action;
|
||||
action.SetObjectId(0x1f4);
|
||||
|
||||
@ -2,10 +2,14 @@
|
||||
|
||||
#include "legocontrolmanager.h"
|
||||
#include "legoomni.h"
|
||||
#include "legovideomanager.h"
|
||||
#include "mxautolocker.h"
|
||||
#include "roi/legoroi.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(LegoInputManager, 0x338);
|
||||
DECOMP_SIZE_ASSERT(LegoEventQueue, 0x18);
|
||||
DECOMP_SIZE_ASSERT(LegoInputManager, 0x338)
|
||||
DECOMP_SIZE_ASSERT(LegoNotifyList, 0x18)
|
||||
DECOMP_SIZE_ASSERT(LegoNotifyListCursor, 0x10)
|
||||
DECOMP_SIZE_ASSERT(LegoEventQueue, 0x18)
|
||||
|
||||
// GLOBAL: LEGO1 0x100f31b0
|
||||
MxS32 g_unk0x100f31b0 = -1;
|
||||
@ -16,12 +20,12 @@ MxS32 g_unk0x100f31b4 = 0;
|
||||
// FUNCTION: LEGO1 0x1005b790
|
||||
LegoInputManager::LegoInputManager()
|
||||
{
|
||||
m_unk0x5c = NULL;
|
||||
m_keyboardNotifyList = NULL;
|
||||
m_world = NULL;
|
||||
m_camera = NULL;
|
||||
m_eventQueue = NULL;
|
||||
m_unk0x80 = 0;
|
||||
m_timer = 0;
|
||||
m_autoDragTimerID = 0;
|
||||
m_unk0x6c = 0;
|
||||
m_unk0x70 = 0;
|
||||
m_controlManager = NULL;
|
||||
@ -37,10 +41,10 @@ LegoInputManager::LegoInputManager()
|
||||
m_unk0x335 = FALSE;
|
||||
m_unk0x336 = FALSE;
|
||||
m_unk0x74 = 0x19;
|
||||
m_timeout = 1000;
|
||||
m_autoDragTime = 1000;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1005b8b0
|
||||
// FUNCTION: LEGO1 0x1005b8b0
|
||||
MxResult LegoInputManager::Tickle()
|
||||
{
|
||||
ProcessEvents();
|
||||
@ -56,10 +60,25 @@ LegoInputManager::~LegoInputManager()
|
||||
// FUNCTION: LEGO1 0x1005b960
|
||||
MxResult LegoInputManager::Create(HWND p_hwnd)
|
||||
{
|
||||
// TODO
|
||||
if (m_eventQueue == NULL)
|
||||
m_eventQueue = new LegoEventQueue();
|
||||
return SUCCESS;
|
||||
MxResult result = SUCCESS;
|
||||
|
||||
m_controlManager = new LegoControlManager;
|
||||
|
||||
if (!m_keyboardNotifyList)
|
||||
m_keyboardNotifyList = new LegoNotifyList;
|
||||
|
||||
if (!m_eventQueue)
|
||||
m_eventQueue = new LegoEventQueue;
|
||||
|
||||
CreateAndAcquireKeyboard(p_hwnd);
|
||||
GetJoystickId();
|
||||
|
||||
if (!m_keyboardNotifyList || !m_eventQueue || !m_directInputDevice) {
|
||||
Destroy();
|
||||
result = FAILURE;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005bfe0
|
||||
@ -67,9 +86,9 @@ void LegoInputManager::Destroy()
|
||||
{
|
||||
ReleaseDX();
|
||||
|
||||
if (m_unk0x5c)
|
||||
delete m_unk0x5c;
|
||||
m_unk0x5c = NULL;
|
||||
if (m_keyboardNotifyList)
|
||||
delete m_keyboardNotifyList;
|
||||
m_keyboardNotifyList = NULL;
|
||||
|
||||
if (m_eventQueue)
|
||||
delete m_eventQueue;
|
||||
@ -195,16 +214,24 @@ MxResult LegoInputManager::GetJoystickState(
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1005c470
|
||||
void LegoInputManager::Register(MxCore*)
|
||||
// FUNCTION: LEGO1 0x1005c470
|
||||
void LegoInputManager::Register(MxCore* p_notify)
|
||||
{
|
||||
// TODO
|
||||
MxAutoLocker lock(&m_criticalSection);
|
||||
|
||||
LegoNotifyListCursor cursor(m_keyboardNotifyList);
|
||||
if (!cursor.Find(p_notify))
|
||||
m_keyboardNotifyList->Append(p_notify);
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1005c5c0
|
||||
void LegoInputManager::UnRegister(MxCore*)
|
||||
// FUNCTION: LEGO1 0x1005c5c0
|
||||
void LegoInputManager::UnRegister(MxCore* p_notify)
|
||||
{
|
||||
// TODO
|
||||
MxAutoLocker lock(&m_criticalSection);
|
||||
|
||||
LegoNotifyListCursor cursor(m_keyboardNotifyList);
|
||||
if (cursor.Find(p_notify))
|
||||
cursor.Detach();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005c700
|
||||
@ -254,28 +281,142 @@ void LegoInputManager::ProcessEvents()
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1005c9c0
|
||||
// FUNCTION: LEGO1 0x1005c9c0
|
||||
MxBool LegoInputManager::ProcessOneEvent(LegoEventNotificationParam& p_param)
|
||||
{
|
||||
MxBool processRoi;
|
||||
|
||||
if (p_param.GetType() == c_notificationKeyPress) {
|
||||
if (!Lego()->IsTimerRunning() || p_param.GetKey() == 0x13) {
|
||||
if (p_param.GetKey() == 0x10) {
|
||||
if (m_unk0x195) {
|
||||
m_unk0x80 = 0;
|
||||
p_param.SetType(c_notificationDrag);
|
||||
|
||||
if (m_camera) {
|
||||
m_camera->Notify(p_param);
|
||||
}
|
||||
}
|
||||
|
||||
m_unk0x195 = !m_unk0x195;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LegoNotifyListCursor cursor(m_keyboardNotifyList);
|
||||
MxCore* target;
|
||||
|
||||
while (cursor.Next(target)) {
|
||||
if (target->Notify(p_param) != 0) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!Lego()->IsTimerRunning()) {
|
||||
processRoi = TRUE;
|
||||
|
||||
if (m_unk0x335 != 0) {
|
||||
if (p_param.GetType() == c_notificationButtonDown) {
|
||||
LegoEventNotificationParam notification(c_notificationKeyPress, NULL, 0, 0, 0, ' ');
|
||||
LegoNotifyListCursor cursor(m_keyboardNotifyList);
|
||||
MxCore* target;
|
||||
|
||||
while (cursor.Next(target)) {
|
||||
if (target->Notify(notification) != 0) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (m_unk0x195 && p_param.GetType() == c_notificationButtonDown) {
|
||||
m_unk0x195 = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (m_world != NULL && m_world->Notify(p_param) != 0) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (p_param.GetType() == c_notificationButtonDown) {
|
||||
MxPresenter* presenter = VideoManager()->GetPresenterAt(p_param.GetX(), p_param.GetY());
|
||||
|
||||
if (presenter) {
|
||||
if (presenter->GetDisplayZ() < 0) {
|
||||
processRoi = FALSE;
|
||||
|
||||
if (m_controlManager->FUN_10029210(p_param, presenter)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
LegoROI* roi = PickROI(p_param.GetX(), p_param.GetY());
|
||||
|
||||
if (roi == NULL && m_controlManager->FUN_10029210(p_param, presenter)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (p_param.GetType() == c_notificationButtonUp) {
|
||||
if (g_unk0x100f31b0 != -1 || m_controlManager->GetUnknown0x10() ||
|
||||
m_controlManager->GetUnknown0x0c() == 1) {
|
||||
MxBool result = m_controlManager->FUN_10029210(p_param, NULL);
|
||||
StopAutoDragTimer();
|
||||
|
||||
m_unk0x80 = 0;
|
||||
m_unk0x81 = 0;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (FUN_1005cdf0(p_param)) {
|
||||
if (processRoi && p_param.GetType() == c_notificationType11) {
|
||||
LegoROI* roi = PickROI(p_param.GetX(), p_param.GetY());
|
||||
p_param.SetROI(roi);
|
||||
|
||||
if (roi && roi->GetUnk0x0c() == 1) {
|
||||
for (OrientableROI* oroi = roi->GetUnknown0xd4(); oroi; oroi = oroi->GetUnknown0xd4())
|
||||
roi = (LegoROI*) oroi;
|
||||
|
||||
LegoEntity* entity = roi->GetUnknown0x104();
|
||||
if (entity && entity->Notify(p_param) != 0) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_camera && m_camera->Notify(p_param) != 0) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1005cdf0
|
||||
MxBool LegoInputManager::FUN_1005cdf0(LegoEventNotificationParam& p_param)
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005cfb0
|
||||
void LegoInputManager::SetTimer()
|
||||
void LegoInputManager::StartAutoDragTimer()
|
||||
{
|
||||
LegoOmni* omni = LegoOmni::GetInstance();
|
||||
UINT timer = ::SetTimer(omni->GetWindowHandle(), 1, m_timeout, NULL);
|
||||
m_timer = timer;
|
||||
m_autoDragTimerID = ::SetTimer(LegoOmni::GetInstance()->GetWindowHandle(), 1, m_autoDragTime, NULL);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005cfd0
|
||||
void LegoInputManager::KillTimer()
|
||||
void LegoInputManager::StopAutoDragTimer()
|
||||
{
|
||||
if (m_timer != 0) {
|
||||
LegoOmni* omni = LegoOmni::GetInstance();
|
||||
::KillTimer(omni->GetWindowHandle(), m_timer);
|
||||
}
|
||||
if (m_autoDragTimerID)
|
||||
::KillTimer(LegoOmni::GetInstance()->GetWindowHandle(), m_autoDragTimerID);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005cff0
|
||||
|
||||
@ -28,7 +28,7 @@ MxLong HistoryBook::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100826f0
|
||||
void HistoryBook::VTable0x50()
|
||||
void HistoryBook::ReadyWorld()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -153,9 +153,9 @@ MxLong Isle::StopAction(MxParam& p_param)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10030fc0
|
||||
void Isle::VTable0x50()
|
||||
void Isle::ReadyWorld()
|
||||
{
|
||||
LegoWorld::VTable0x50();
|
||||
LegoWorld::ReadyWorld();
|
||||
|
||||
if (m_act1state->GetUnknown21()) {
|
||||
GameState()->HandleAction(2);
|
||||
@ -201,9 +201,9 @@ MxLong Isle::HandleTransitionEnd()
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10032f10
|
||||
void Isle::VTable0x58(MxCore* p_object)
|
||||
void Isle::Add(MxCore* p_object)
|
||||
{
|
||||
LegoWorld::VTable0x58(p_object);
|
||||
LegoWorld::Add(p_object);
|
||||
|
||||
if (p_object->IsA("Pizza")) {
|
||||
m_pizza = (Pizza*) p_object;
|
||||
@ -246,7 +246,7 @@ void Isle::VTable0x58(MxCore* p_object)
|
||||
// FUNCTION: LEGO1 0x10033050
|
||||
void Isle::VTable0x6c(IslePathActor* p_actor)
|
||||
{
|
||||
LegoWorld::EndAction(p_actor);
|
||||
LegoWorld::Remove(p_actor);
|
||||
|
||||
if (p_actor->IsA("Helicopter")) {
|
||||
m_helicopter = NULL;
|
||||
|
||||
@ -35,7 +35,7 @@ MxLong JukeBox::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1005d9f0
|
||||
void JukeBox::VTable0x50()
|
||||
void JukeBox::ReadyWorld()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#include "SkateBoard.h"
|
||||
#include "skateboard.h"
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxnotificationmanager.h"
|
||||
|
||||
@ -179,7 +179,7 @@ IslePathActor* GetCurrentVehicle()
|
||||
// FUNCTION: LEGO1 0x100157a0
|
||||
LegoWorld* GetCurrentWorld()
|
||||
{
|
||||
return LegoOmni::GetInstance()->GetCurrentOmniWorld();
|
||||
return LegoOmni::GetInstance()->GetCurrentWorld();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100157b0
|
||||
@ -219,9 +219,9 @@ void FUN_10015860(const char*, MxU8)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100158c0
|
||||
LegoEntity* FindEntityByAtomIdOrEntityId(const MxAtomId& p_atom, MxS32 p_entityid)
|
||||
LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid)
|
||||
{
|
||||
return LegoOmni::GetInstance()->FindByEntityIdOrAtomId(p_atom, p_entityid);
|
||||
return LegoOmni::GetInstance()->FindWorld(p_atom, p_entityid);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100158e0
|
||||
@ -612,11 +612,11 @@ void LegoOmni::RemoveWorld(const MxAtomId&, MxLong)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005b0c0
|
||||
LegoEntity* LegoOmni::FindByEntityIdOrAtomId(const MxAtomId& p_atom, MxS32 p_entityid)
|
||||
LegoWorld* LegoOmni::FindWorld(const MxAtomId& p_atom, MxS32 p_entityid)
|
||||
{
|
||||
if (m_worldList) {
|
||||
LegoWorld* world;
|
||||
LegoWorldListCursor cursor(m_worldList);
|
||||
LegoWorld* world;
|
||||
|
||||
while (cursor.Next(world)) {
|
||||
if ((p_entityid == -1 || world->GetEntityId() == p_entityid) &&
|
||||
@ -635,21 +635,22 @@ void LegoOmni::DeleteObject(MxDSAction& p_dsAction)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005b2f0
|
||||
MxEntity* LegoOmni::FindWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter)
|
||||
MxEntity* LegoOmni::AddToWorld(const char* p_id, MxS32 p_entityId, MxPresenter* p_presenter)
|
||||
{
|
||||
LegoWorld* foundEntity = NULL;
|
||||
LegoWorld* world = NULL;
|
||||
|
||||
if (strcmpi(p_id, g_current)) {
|
||||
foundEntity = (LegoWorld*) FindByEntityIdOrAtomId(MxAtomId(p_id, e_lowerCase2), p_entityId);
|
||||
world = FindWorld(MxAtomId(p_id, e_lowerCase2), p_entityId);
|
||||
}
|
||||
else {
|
||||
foundEntity = this->m_currentWorld;
|
||||
world = this->m_currentWorld;
|
||||
}
|
||||
|
||||
if (foundEntity != NULL) {
|
||||
foundEntity->VTable0x58(p_presenter);
|
||||
if (world != NULL) {
|
||||
world->Add(p_presenter);
|
||||
}
|
||||
|
||||
return foundEntity;
|
||||
return world;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005b3a0
|
||||
@ -663,7 +664,7 @@ void LegoOmni::NotifyCurrentEntity(MxNotificationParam* p_param)
|
||||
MxBool LegoOmni::DoesEntityExist(MxDSAction& p_dsAction)
|
||||
{
|
||||
if (MxOmni::DoesEntityExist(p_dsAction)) {
|
||||
if (FindByEntityIdOrAtomId(p_dsAction.GetAtomId(), p_dsAction.GetObjectId()) == NULL) {
|
||||
if (FindWorld(p_dsAction.GetAtomId(), p_dsAction.GetObjectId()) == NULL) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@ -673,11 +674,11 @@ MxBool LegoOmni::DoesEntityExist(MxDSAction& p_dsAction)
|
||||
// FUNCTION: LEGO1 0x1005b400
|
||||
MxS32 LegoOmni::GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value)
|
||||
{
|
||||
if (GetCurrentWorld() == NULL) {
|
||||
if (::GetCurrentWorld() == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return GetCurrentWorld()->GetCurrPathInfo(p_path, p_value);
|
||||
return ::GetCurrentWorld()->GetCurrPathInfo(p_path, p_value);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005b4f0
|
||||
|
||||
@ -3,10 +3,3 @@
|
||||
#include "decomp.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(LegoEventNotificationParam, 0x20);
|
||||
|
||||
// STUB: LEGO1 0x10028690
|
||||
MxNotificationParam* LegoEventNotificationParam::Clone()
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -69,9 +69,9 @@ MxLong Police::Notify(MxParam& p_param)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005e530
|
||||
void Police::VTable0x50()
|
||||
void Police::ReadyWorld()
|
||||
{
|
||||
LegoWorld::VTable0x50();
|
||||
LegoWorld::ReadyWorld();
|
||||
PlayMusic(JukeBox::e_policeStation);
|
||||
FUN_10015820(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen);
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@ MxResult CarRace::Create(MxDSAction& p_dsAction)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10016dd0
|
||||
void CarRace::VTable0x50()
|
||||
void CarRace::ReadyWorld()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -172,6 +172,12 @@ void LegoAnimPresenter::Destroy()
|
||||
Destroy(FALSE);
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1006b8f0
|
||||
const char* LegoAnimPresenter::GetActionObjectName()
|
||||
{
|
||||
return m_action->GetObjectName();
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1006bac0
|
||||
void LegoAnimPresenter::ParseExtra()
|
||||
{
|
||||
|
||||
@ -82,7 +82,7 @@ void LegoLocomotionAnimPresenter::ReadyTickle()
|
||||
LegoAnimPresenter::ReadyTickle();
|
||||
|
||||
if (m_currentWorld != NULL && m_currentTickleState == e_starting) {
|
||||
m_currentWorld->VTable0x58(this);
|
||||
m_currentWorld->Add(this);
|
||||
if (m_compositePresenter != NULL) {
|
||||
SendToCompositePresenter(Lego());
|
||||
}
|
||||
|
||||
@ -330,10 +330,19 @@ void LegoVideoManager::DrawFPS()
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1007c080
|
||||
void LegoVideoManager::VTable0x38(undefined4, undefined4)
|
||||
// FUNCTION: LEGO1 0x1007c080
|
||||
MxPresenter* LegoVideoManager::GetPresenterAt(MxS32 p_x, MxS32 p_y)
|
||||
{
|
||||
// TODO
|
||||
MxPresenterListCursor cursor(m_presenters);
|
||||
MxPresenter* presenter;
|
||||
|
||||
while (cursor.Prev(presenter)) {
|
||||
if (presenter->IsHit(p_x, p_y)) {
|
||||
return presenter;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1007c290
|
||||
|
||||
@ -7,10 +7,10 @@ DECOMP_SIZE_ASSERT(LegoROI, 0x10c);
|
||||
// SIZE 0x14
|
||||
typedef struct {
|
||||
const char* m_name;
|
||||
MxS32 m_red;
|
||||
MxS32 m_green;
|
||||
MxS32 m_blue;
|
||||
MxS32 m_unk0x10;
|
||||
int m_red;
|
||||
int m_green;
|
||||
int m_blue;
|
||||
int m_unk0x10;
|
||||
} ROIColorAlias;
|
||||
|
||||
// GLOBAL: LEGO1 0x100dbe28
|
||||
@ -32,7 +32,7 @@ ROIColorAlias g_roiColorAliases[22] = {
|
||||
};
|
||||
|
||||
// GLOBAL: LEGO1 0x10101368
|
||||
MxS32 g_roiConfig = 100;
|
||||
int g_roiConfig = 100;
|
||||
|
||||
// GLOBAL: LEGO1 0x101013ac
|
||||
ROIHandler g_someHandlerFunction = NULL;
|
||||
@ -54,24 +54,24 @@ void LegoROI::FUN_100a58f0(Matrix4& p_transform)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100a81c0
|
||||
void LegoROI::configureLegoROI(MxS32 p_roiConfig)
|
||||
void LegoROI::configureLegoROI(int p_roiConfig)
|
||||
{
|
||||
g_roiConfig = p_roiConfig;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100a9a50
|
||||
LegoROI::LegoROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, MxTime p_time) : ViewROI(p_renderer, p_lodList)
|
||||
LegoROI::LegoROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, int p_time) : ViewROI(p_renderer, p_lodList)
|
||||
{
|
||||
m_time = p_time;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100a9bf0
|
||||
MxBool LegoROI::CallTheHandlerFunction(
|
||||
unsigned char LegoROI::CallTheHandlerFunction(
|
||||
char* p_param,
|
||||
MxFloat& p_red,
|
||||
MxFloat& p_green,
|
||||
MxFloat& p_blue,
|
||||
MxFloat& p_other
|
||||
float& p_red,
|
||||
float& p_green,
|
||||
float& p_blue,
|
||||
float& p_other
|
||||
)
|
||||
{
|
||||
// TODO
|
||||
@ -88,11 +88,11 @@ MxBool LegoROI::CallTheHandlerFunction(
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100a9c50
|
||||
MxBool LegoROI::ColorAliasLookup(char* p_param, MxFloat& p_red, MxFloat& p_green, MxFloat& p_blue, MxFloat& p_other)
|
||||
unsigned char LegoROI::ColorAliasLookup(char* p_param, float& p_red, float& p_green, float& p_blue, float& p_other)
|
||||
{
|
||||
// TODO: this seems awfully hacky for these devs. is there a dynamic way
|
||||
// to represent `the end of this array` that would improve this?
|
||||
MxU32 i = 0;
|
||||
unsigned int i = 0;
|
||||
do {
|
||||
if (strcmpi(g_roiColorAliases[i].m_name, p_param) == 0) {
|
||||
p_red = g_roiColorAliases[i].m_red * g_normalizeByteToFloat;
|
||||
@ -102,7 +102,7 @@ MxBool LegoROI::ColorAliasLookup(char* p_param, MxFloat& p_red, MxFloat& p_green
|
||||
return TRUE;
|
||||
}
|
||||
i++;
|
||||
} while ((MxS32*) &g_roiColorAliases[i] < &g_roiConfig);
|
||||
} while ((int*) &g_roiColorAliases[i] < &g_roiConfig);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@ -114,7 +114,7 @@ void LegoROI::SetSomeHandlerFunction(ROIHandler p_func)
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100a9e10
|
||||
void LegoROI::SetDisplayBB(MxS32 p_displayBB)
|
||||
void LegoROI::SetDisplayBB(int p_displayBB)
|
||||
{
|
||||
// Intentionally empty function
|
||||
}
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
#ifndef LEGOROI_H
|
||||
#define LEGOROI_H
|
||||
|
||||
#include "mxtypes.h"
|
||||
#include "viewmanager/viewroi.h"
|
||||
|
||||
typedef MxBool (*ROIHandler)(char*, char*, MxU32);
|
||||
typedef unsigned char (*ROIHandler)(char*, char*, unsigned int);
|
||||
|
||||
class LegoEntity;
|
||||
|
||||
@ -18,39 +17,43 @@ class AutoROI : public ViewROI {};
|
||||
// SIZE 0x10c
|
||||
class LegoROI : public ViewROI {
|
||||
public:
|
||||
LegoROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, MxTime p_time);
|
||||
LegoROI(Tgl::Renderer* p_renderer, ViewLODList* p_lodList, int p_time);
|
||||
|
||||
virtual float IntrinsicImportance() const override; // vtable+0x4
|
||||
// Note: Actually part of parent class (doesn't exist yet)
|
||||
virtual void UpdateWorldBoundingVolumes() override; // vtable+0x18
|
||||
|
||||
__declspec(dllexport) void SetDisplayBB(MxS32 p_displayBB);
|
||||
__declspec(dllexport) static void configureLegoROI(MxS32 p_roi);
|
||||
void SetDisplayBB(int p_displayBB);
|
||||
static void configureLegoROI(int p_roi);
|
||||
|
||||
static void SetSomeHandlerFunction(ROIHandler p_func);
|
||||
static MxBool CallTheHandlerFunction(
|
||||
static unsigned char CallTheHandlerFunction(
|
||||
char* p_param,
|
||||
MxFloat& p_red,
|
||||
MxFloat& p_green,
|
||||
MxFloat& p_blue,
|
||||
MxFloat& p_other
|
||||
float& p_red,
|
||||
float& p_green,
|
||||
float& p_blue,
|
||||
float& p_other
|
||||
);
|
||||
static MxBool ColorAliasLookup(char* p_param, MxFloat& p_red, MxFloat& p_green, MxFloat& p_blue, MxFloat& p_other);
|
||||
static unsigned char ColorAliasLookup(char* p_param, float& p_red, float& p_green, float& p_blue, float& p_other);
|
||||
|
||||
void WrappedSetLocalTransform(Matrix4& p_transform);
|
||||
void FUN_100a46b0(Matrix4& p_transform);
|
||||
void FUN_100a58f0(Matrix4& p_transform);
|
||||
|
||||
inline const char* GetUnknown0xe4() { return m_unk0xe4; }
|
||||
inline LegoEntity* GetUnknown0x104() { return m_unk0x104; }
|
||||
|
||||
inline void SetUnknown0x104(LegoEntity* p_unk0x104) { m_unk0x104 = p_unk0x104; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100a9ad0
|
||||
// LegoROI::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined m_pad[0x24]; // 0xe0
|
||||
LegoEntity* m_unk0x104; // 0x104
|
||||
MxTime m_time; // 0x108
|
||||
undefined4 m_unk0xe0; // 0xe0
|
||||
const char* m_unk0xe4; // 0xe4
|
||||
undefined m_unk0xe8[0x1c]; // 0xe8
|
||||
LegoEntity* m_unk0x104; // 0x104
|
||||
int m_time; // 0x108
|
||||
};
|
||||
|
||||
#endif // LEGOROI_H
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#include <windows.h>
|
||||
|
||||
// FUNCTION: LEGO1 0x10091ee0
|
||||
__declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -34,9 +34,9 @@ class MxDirectDraw {
|
||||
void* m_unk0x178; // 0x178
|
||||
};
|
||||
|
||||
__declspec(dllexport) int FlipToGDISurface();
|
||||
__declspec(dllexport) static int GetPrimaryBitDepth();
|
||||
__declspec(dllexport) int Pause(int);
|
||||
int FlipToGDISurface();
|
||||
static int GetPrimaryBitDepth();
|
||||
int Pause(int);
|
||||
|
||||
MxDirectDraw();
|
||||
virtual ~MxDirectDraw();
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
#include "mxgeometry3d.h"
|
||||
|
||||
#include "decomp.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(Mx3DPointFloat, 0x14);
|
||||
DECOMP_SIZE_ASSERT(Mx4DPointFloat, 0x18);
|
||||
@ -1,5 +0,0 @@
|
||||
#include "mxmatrix.h"
|
||||
|
||||
#include "decomp.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(MxMatrix, 0x48);
|
||||
@ -14,9 +14,9 @@ enum LookupMode {
|
||||
// SIZE 0x04
|
||||
class MxAtomId {
|
||||
public:
|
||||
__declspec(dllexport) MxAtomId(const char*, LookupMode);
|
||||
__declspec(dllexport) MxAtomId& operator=(const MxAtomId& p_atomId);
|
||||
__declspec(dllexport) ~MxAtomId();
|
||||
MxAtomId(const char*, LookupMode);
|
||||
MxAtomId& operator=(const MxAtomId& p_atomId);
|
||||
~MxAtomId();
|
||||
|
||||
MxAtomId() { this->m_internal = 0; }
|
||||
|
||||
|
||||
@ -34,14 +34,14 @@ struct MxBITMAPINFO {
|
||||
// VTABLE: LEGO1 0x100dc7b0
|
||||
class MxBitmap : public MxCore {
|
||||
public:
|
||||
__declspec(dllexport) MxBitmap();
|
||||
__declspec(dllexport) virtual ~MxBitmap(); // vtable+00
|
||||
MxBitmap();
|
||||
virtual ~MxBitmap(); // vtable+00
|
||||
|
||||
virtual MxResult ImportBitmap(MxBitmap* p_bitmap); // vtable+14
|
||||
virtual MxResult ImportBitmapInfo(MxBITMAPINFO* p_info); // vtable+18
|
||||
virtual MxResult SetSize(MxS32 p_width, MxS32 p_height, MxPalette* p_palette, MxBool); // vtable+1c
|
||||
virtual MxResult LoadFile(HANDLE p_handle); // vtable+20
|
||||
__declspec(dllexport) virtual MxLong Read(const char* p_filename); // vtable+24
|
||||
virtual MxLong Read(const char* p_filename); // vtable+24
|
||||
|
||||
// FUNCTION: LEGO1 0x1004e0d0
|
||||
virtual int VTable0x28(int) { return -1; }; // vtable+28
|
||||
@ -63,10 +63,10 @@ class MxBitmap : public MxCore {
|
||||
MxS32 p_bottom,
|
||||
MxS32 p_width,
|
||||
MxS32 p_height
|
||||
); // vtable+30
|
||||
__declspec(dllexport) virtual MxPalette* CreatePalette(); // vtable+34
|
||||
virtual void ImportPalette(MxPalette* p_palette); // vtable+38
|
||||
virtual MxResult SetBitDepth(MxBool); // vtable+3c
|
||||
); // vtable+30
|
||||
virtual MxPalette* CreatePalette(); // vtable+34
|
||||
virtual void ImportPalette(MxPalette* p_palette); // vtable+38
|
||||
virtual MxResult SetBitDepth(MxBool); // vtable+3c
|
||||
virtual MxResult StretchBits(
|
||||
HDC p_hdc,
|
||||
MxS32 p_xSrc,
|
||||
|
||||
@ -12,9 +12,9 @@ class MxParam;
|
||||
// SIZE 0x8
|
||||
class MxCore {
|
||||
public:
|
||||
__declspec(dllexport) MxCore();
|
||||
__declspec(dllexport) virtual ~MxCore(); // vtable+00
|
||||
__declspec(dllexport) virtual MxLong Notify(MxParam& p_param); // vtable+04
|
||||
MxCore();
|
||||
virtual ~MxCore(); // vtable+00
|
||||
virtual MxLong Notify(MxParam& p_param); // vtable+04
|
||||
|
||||
// FUNCTION: LEGO1 0x10001f70
|
||||
virtual MxResult Tickle() { return SUCCESS; }; // vtable+08
|
||||
|
||||
@ -1,95 +0,0 @@
|
||||
#ifndef MXCORELIST_H
|
||||
#define MXCORELIST_H
|
||||
|
||||
#include "mxlist.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
class MxCore;
|
||||
|
||||
// VTABLE: LEGO1 0x100d63b0
|
||||
// class MxCollection<MxCore *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d63c8
|
||||
// class MxList<MxCore *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d63e0
|
||||
// class MxPtrList<MxCore>
|
||||
|
||||
// VTABLE: LEGO1 0x100d63f8
|
||||
// SIZE 0x18
|
||||
class MxCoreList : public MxPtrList<MxCore> {
|
||||
public:
|
||||
MxCoreList(MxBool p_ownership = FALSE) : MxPtrList<MxCore>(p_ownership) {}
|
||||
|
||||
// FUNCTION: LEGO1 0x1001e650
|
||||
virtual MxS8 Compare(MxCore* p_a, MxCore* p_b) override
|
||||
{
|
||||
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
|
||||
}; // vtable+0x14
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d64a0
|
||||
// class MxListCursor<MxCore *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6500
|
||||
// class MxPtrListCursor<MxCore>
|
||||
|
||||
// VTABLE: LEGO1 0x100d6518
|
||||
// SIZE 0x10
|
||||
class MxCoreListCursor : public MxPtrListCursor<MxCore> {
|
||||
public:
|
||||
MxCoreListCursor(MxCoreList* p_list) : MxPtrListCursor<MxCore>(p_list){};
|
||||
};
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e670
|
||||
// MxCollection<MxCore *>::Compare
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e680
|
||||
// MxCollection<MxCore *>::~MxCollection<MxCore *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e6d0
|
||||
// MxCollection<MxCore *>::Destroy
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e6e0
|
||||
// MxList<MxCore *>::~MxList<MxCore *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e770
|
||||
// MxPtrList<MxCore>::Destroy
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e780
|
||||
// MxCoreList::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x1001e7f0
|
||||
// MxPtrList<MxCore>::~MxPtrList<MxCore>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e840
|
||||
// MxCollection<MxCore *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e8b0
|
||||
// MxList<MxCore *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001e960
|
||||
// MxPtrList<MxCore>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f350
|
||||
// MxCoreListCursor::`scalar deleting destructor'
|
||||
|
||||
// FUNCTION: LEGO1 0x1001f3c0
|
||||
// MxPtrListCursor<MxCore>::~MxPtrListCursor<MxCore>
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f410
|
||||
// MxListCursor<MxCore *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001f480
|
||||
// MxPtrListCursor<MxCore>::`scalar deleting destructor'
|
||||
|
||||
// FUNCTION: LEGO1 0x1001f4f0
|
||||
// MxListCursor<MxCore *>::~MxListCursor<MxCore *>
|
||||
|
||||
// FUNCTION: LEGO1 0x1001f540
|
||||
// MxCoreListCursor::~MxCoreListCursor
|
||||
|
||||
// TEMPLATE: LEGO1 0x10020840
|
||||
// MxListCursor<MxCore *>::MxListCursor<MxCore *>
|
||||
|
||||
#endif // MXCORELIST_H
|
||||
@ -6,9 +6,9 @@
|
||||
// SIZE 0x1c
|
||||
class MxCriticalSection {
|
||||
public:
|
||||
__declspec(dllexport) MxCriticalSection();
|
||||
__declspec(dllexport) ~MxCriticalSection();
|
||||
__declspec(dllexport) static void SetDoMutex();
|
||||
MxCriticalSection();
|
||||
~MxCriticalSection();
|
||||
static void SetDoMutex();
|
||||
void Enter();
|
||||
void Leave();
|
||||
|
||||
|
||||
@ -24,8 +24,8 @@ class MxDSAction : public MxDSObject {
|
||||
c_bit11 = 0x400,
|
||||
};
|
||||
|
||||
__declspec(dllexport) MxDSAction();
|
||||
__declspec(dllexport) virtual ~MxDSAction();
|
||||
MxDSAction();
|
||||
virtual ~MxDSAction();
|
||||
|
||||
void CopyFrom(MxDSAction& p_dsAction);
|
||||
MxDSAction& operator=(MxDSAction& p_dsAction);
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
// VTABLE: LEGO1 0x100dc890
|
||||
class MxDSFile : public MxDSSource {
|
||||
public:
|
||||
__declspec(dllexport) MxDSFile(const char* p_filename, MxULong p_skipReadingChunks);
|
||||
__declspec(dllexport) virtual ~MxDSFile(); // vtable+0x0
|
||||
MxDSFile(const char* p_filename, MxULong p_skipReadingChunks);
|
||||
virtual ~MxDSFile(); // vtable+0x0
|
||||
|
||||
// FUNCTION: LEGO1 0x100c0120
|
||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
||||
@ -27,12 +27,12 @@ class MxDSFile : public MxDSSource {
|
||||
return !strcmp(p_name, MxDSFile::ClassName()) || MxDSSource::IsA(p_name);
|
||||
}
|
||||
|
||||
__declspec(dllexport) virtual MxLong Open(MxULong); // vtable+0x14
|
||||
__declspec(dllexport) virtual MxLong Close(); // vtable+0x18
|
||||
__declspec(dllexport) virtual MxResult Read(unsigned char*, MxULong); // vtable+0x20
|
||||
__declspec(dllexport) virtual MxLong Seek(MxLong, int); // vtable+0x24
|
||||
__declspec(dllexport) virtual MxULong GetBufferSize(); // vtable+0x28
|
||||
__declspec(dllexport) virtual MxULong GetStreamBuffersNum(); // vtable+0x2c
|
||||
virtual MxLong Open(MxULong); // vtable+0x14
|
||||
virtual MxLong Close(); // vtable+0x18
|
||||
virtual MxResult Read(unsigned char*, MxULong); // vtable+0x20
|
||||
virtual MxLong Seek(MxLong, int); // vtable+0x24
|
||||
virtual MxULong GetBufferSize(); // vtable+0x28
|
||||
virtual MxULong GetStreamBuffersNum(); // vtable+0x2c
|
||||
|
||||
inline void SetFileName(const char* p_filename) { m_filename = p_filename; }
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ class MxDSObject : public MxCore {
|
||||
void CopyFrom(MxDSObject& p_dsObject);
|
||||
MxDSObject& operator=(MxDSObject& p_dsObject);
|
||||
|
||||
__declspec(dllexport) void SetObjectName(const char* p_objectName);
|
||||
void SetObjectName(const char* p_objectName);
|
||||
void SetSourceName(const char* p_sourceName);
|
||||
|
||||
// FUNCTION: LEGO1 0x100bf730
|
||||
@ -51,6 +51,7 @@ class MxDSObject : public MxCore {
|
||||
|
||||
inline Type GetType() const { return (Type) this->m_type; }
|
||||
inline const char* GetSourceName() const { return this->m_sourceName; }
|
||||
inline const char* GetObjectName() const { return this->m_objectName; }
|
||||
inline MxU32 GetObjectId() { return this->m_objectId; }
|
||||
inline const MxAtomId& GetAtomId() { return this->m_atomId; }
|
||||
inline MxS16 GetUnknown24() { return this->m_unk0x24; }
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
class MXIOINFO {
|
||||
public:
|
||||
MXIOINFO();
|
||||
__declspec(dllexport) ~MXIOINFO();
|
||||
~MXIOINFO();
|
||||
|
||||
MxU16 Open(const char*, MxULong);
|
||||
MxU16 Close(MxLong);
|
||||
|
||||
@ -48,6 +48,8 @@ class MxNotificationParam : public MxParam {
|
||||
inline MxCore* GetSender() const { return m_sender; }
|
||||
inline NotificationId GetType() const { return m_type; }
|
||||
|
||||
inline void SetType(NotificationId p_type) { m_type = p_type; }
|
||||
|
||||
protected:
|
||||
NotificationId m_type; // 0x04
|
||||
MxCore* m_sender; // 0x08
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user