Merge remote-tracking branch 'upstream/master' into impl/legoomni-deleteobject

This commit is contained in:
Misha 2024-01-28 15:22:27 -05:00
commit ee840f09aa
No known key found for this signature in database
GPG Key ID: 8441D12AEF33FED8
274 changed files with 6229 additions and 1340 deletions

View File

@ -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: |

View File

@ -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
@ -145,6 +145,12 @@ jobs:
run: |
python3 tools/verexp/verexp.py legobin/LEGO1.DLL build/LEGO1.DLL
- name: Check Vtables
shell: bash
run: |
python3 tools/vtable/vtable.py legobin/ISLE.EXE build/ISLE.EXE build/ISLE.PDB .
python3 tools/vtable/vtable.py legobin/LEGO1.DLL build/LEGO1.DLL build/LEGO1.PDB .
- name: Upload Artifact
uses: actions/upload-artifact@master
with:
@ -159,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'

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -4,6 +4,21 @@ option dotname
.model flat, c
assume fs:nothing
public FUN_100bd530
public FUN_100bd580
public FUN_100bd600
public FUN_100bd680
public FUN_100bd6e0
public FUN_100bd760
public FUN_100bd880
public FUN_100bd8a0
public FUN_100bd8f0
public FUN_100bd940
public FUN_100bd960
public FUN_100bda10
public FUN_100bdac0
public FUN_100bdc00
public FUN_100bdc90
public DecodeFLCFrame
; This is so reccmp can detect the end of DecodeFLCFrame
@ -11,7 +26,7 @@ public EndOfSection
.text SEGMENT BYTE PUBLIC 'CODE'
?_25162 LABEL NEAR
FUN_100bd530 LABEL NEAR
mov ax, word ptr [esp+0CH] ; 100BD530 _ 66: 8B. 44 24, 0C
push esi ; 100BD535 _ 56
test ax, ax ; 100BD536 _ 66: 85. C0
@ -43,7 +58,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25164 LABEL NEAR
FUN_100bd580 LABEL NEAR
lea eax, [esp+18H] ; 100BD580 _ 8D. 44 24, 18
push esi ; 100BD584 _ 56
mov si, word ptr [esp+10H] ; 100BD585 _ 66: 8B. 74 24, 10
@ -55,7 +70,7 @@ public EndOfSection
mov edi, dword ptr [esp+14H] ; 100BD595 _ 8B. 7C 24, 14
push edx ; 100BD599 _ 52
push edi ; 100BD59A _ 57
call ?_25168 ; 100BD59B _ E8, 00000060
call FUN_100bd600 ; 100BD59B _ E8, 00000060
add esp, 16 ; 100BD5A0 _ 83. C4, 10
test eax, eax ; 100BD5A3 _ 85. C0
jz ?_25167 ; 100BD5A5 _ 74, 4A
@ -93,7 +108,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH
?_25168 LABEL NEAR
FUN_100bd600 LABEL NEAR
mov ecx, dword ptr [esp+8H] ; 100BD600 _ 8B. 4C 24, 08
push ebx ; 100BD604 _ 53
mov bx, word ptr [ecx] ; 100BD605 _ 66: 8B. 19
@ -150,7 +165,7 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25173 LABEL NEAR
FUN_100bd680 LABEL NEAR
lea eax, [esp+18H] ; 100BD680 _ 8D. 44 24, 18
push esi ; 100BD684 _ 56
lea ecx, [esp+14H] ; 100BD685 _ 8D. 4C 24, 14
@ -160,7 +175,7 @@ public EndOfSection
mov esi, dword ptr [esp+10H] ; 100BD68F _ 8B. 74 24, 10
push edx ; 100BD693 _ 52
push esi ; 100BD694 _ 56
call ?_25168 ; 100BD695 _ E8, FFFFFF66
call FUN_100bd600 ; 100BD695 _ E8, FFFFFF66
add esp, 16 ; 100BD69A _ 83. C4, 10
test eax, eax ; 100BD69D _ 85. C0
jz ?_25175 ; 100BD69F _ 74, 33
@ -188,7 +203,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH
?_25176 LABEL NEAR
FUN_100bd6e0 LABEL NEAR
lea eax, [esp+18H] ; 100BD6E0 _ 8D. 44 24, 18
push ebx ; 100BD6E4 _ 53
lea ecx, [esp+14H] ; 100BD6E5 _ 8D. 4C 24, 14
@ -200,7 +215,7 @@ public EndOfSection
shl word ptr [esp+28H], 1 ; 100BD6F4 _ 66: C1. 64 24, 28, 01
push edx ; 100BD6FA _ 52
push esi ; 100BD6FB _ 56
call ?_25168 ; 100BD6FC _ E8, FFFFFEFF
call FUN_100bd600 ; 100BD6FC _ E8, FFFFFEFF
add esp, 16 ; 100BD701 _ 83. C4, 10
test eax, eax ; 100BD704 _ 85. C0
jz ?_25179 ; 100BD706 _ 74, 52
@ -235,7 +250,7 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH
?_25180 LABEL NEAR
FUN_100bd760 LABEL NEAR
mov eax, dword ptr [esp+18H] ; 100BD760 _ 8B. 44 24, 18
sub esp, 4 ; 100BD764 _ 83. EC, 04
; Note: Length-changing prefix causes delay on Intel processors
@ -267,7 +282,7 @@ public EndOfSection
add ecx, 6 ; 100BD7BA _ 83. C1, 06
push ecx ; 100BD7BD _ 51
push esi ; 100BD7BE _ 56
call ?_25194 ; 100BD7BF _ E8, 000000BC
call FUN_100bd880 ; 100BD7BF _ E8, 000000BC
mov eax, dword ptr [esp+34H] ; 100BD7C4 _ 8B. 44 24, 34
add esp, 8 ; 100BD7C8 _ 83. C4, 08
mov byte ptr [eax], 1 ; 100BD7CB _ C6. 00, 01
@ -279,14 +294,14 @@ public EndOfSection
push ecx ; 100BD7D4 _ 51
push edi ; 100BD7D5 _ 57
push esi ; 100BD7D6 _ 56
call ?_25220 ; 100BD7D7 _ E8, 000002E4
call FUN_100bdac0 ; 100BD7D7 _ E8, 000002E4
jmp ?_25189 ; 100BD7DC _ EB, 4C
?_25184 LABEL NEAR
add ecx, 6 ; 100BD7DE _ 83. C1, 06
push ecx ; 100BD7E1 _ 51
push esi ; 100BD7E2 _ 56
call ?_25202 ; 100BD7E3 _ E8, 00000158
call FUN_100bd940 ; 100BD7E3 _ E8, 00000158
mov eax, dword ptr [esp+34H] ; 100BD7E8 _ 8B. 44 24, 34
add esp, 8 ; 100BD7EC _ 83. C4, 08
mov byte ptr [eax], 1 ; 100BD7EF _ C6. 00, 01
@ -298,7 +313,7 @@ public EndOfSection
push ecx ; 100BD7F8 _ 51
push edi ; 100BD7F9 _ 57
push esi ; 100BD7FA _ 56
call ?_25213 ; 100BD7FB _ E8, 00000210
call FUN_100bda10 ; 100BD7FB _ E8, 00000210
jmp ?_25189 ; 100BD800 _ EB, 28
?_25186 LABEL NEAR
@ -307,7 +322,7 @@ public EndOfSection
push ecx ; 100BD806 _ 51
push edi ; 100BD807 _ 57
push esi ; 100BD808 _ 56
call ?_25227 ; 100BD809 _ E8, 000003F2
call FUN_100bdc00 ; 100BD809 _ E8, 000003F2
jmp ?_25189 ; 100BD80E _ EB, 1A
?_25187 LABEL NEAR
@ -316,7 +331,7 @@ public EndOfSection
push ecx ; 100BD814 _ 51
push edi ; 100BD815 _ 57
push esi ; 100BD816 _ 56
call ?_25203 ; 100BD817 _ E8, 00000144
call FUN_100bd960 ; 100BD817 _ E8, 00000144
jmp ?_25189 ; 100BD81C _ EB, 0C
?_25188 LABEL NEAR
@ -325,7 +340,7 @@ public EndOfSection
push ecx ; 100BD822 _ 51
push edi ; 100BD823 _ 57
push esi ; 100BD824 _ 56
call ?_25231 ; 100BD825 _ E8, 00000466
call FUN_100bdc90 ; 100BD825 _ E8, 00000466
?_25189:add esp, 16 ; 100BD82A _ 83. C4, 10
?_25190 LABEL NEAR
@ -355,12 +370,12 @@ public EndOfSection
?_25193 db 00H, 07H, 07H, 01H, 07H, 07H, 07H, 02H ; 100BD870 _ ........
db 03H, 04H, 07H, 05H, 06H, 0CCH, 0CCH, 0CCH ; 100BD878 _ ........
?_25194 LABEL NEAR
FUN_100bd880 LABEL NEAR
mov eax, dword ptr [esp+8H] ; 100BD880 _ 8B. 44 24, 08
mov ecx, dword ptr [esp+4H] ; 100BD884 _ 8B. 4C 24, 04
push eax ; 100BD888 _ 50
push ecx ; 100BD889 _ 51
call ?_25195 ; 100BD88A _ E8, 00000011
call FUN_100bd8a0 ; 100BD88A _ E8, 00000011
add esp, 8 ; 100BD88F _ 83. C4, 08
ret ; 100BD892 _ C3
@ -369,7 +384,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25195 LABEL NEAR
FUN_100bd8a0 LABEL NEAR
mov eax, dword ptr [esp+8H] ; 100BD8A0 _ 8B. 44 24, 08
push ebx ; 100BD8A4 _ 53
mov bx, word ptr [eax] ; 100BD8A5 _ 66: 8B. 18
@ -395,7 +410,7 @@ public EndOfSection
push edi ; 100BD8D2 _ 57
add si, bp ; 100BD8D3 _ 66: 03. F5
push eax ; 100BD8D6 _ 50
call ?_25199 ; 100BD8D7 _ E8, 00000014
call FUN_100bd8f0 ; 100BD8D7 _ E8, 00000014
movsx eax, bp ; 100BD8DC _ 0F BF. C5
add esp, 16 ; 100BD8DF _ 83. C4, 10
lea ecx, [eax+eax*2] ; 100BD8E2 _ 8D. 0C 40
@ -408,7 +423,7 @@ public EndOfSection
pop ebx ; 100BD8EE _ 5B
ret ; 100BD8EF _ C3
?_25199 LABEL NEAR
FUN_100bd8f0 LABEL NEAR
mov dx, word ptr [esp+10H] ; 100BD8F0 _ 66: 8B. 54 24, 10
push esi ; 100BD8F5 _ 56
movsx ecx, word ptr [esp+10H] ; 100BD8F6 _ 0F BF. 4C 24, 10
@ -440,12 +455,12 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25202 LABEL NEAR
FUN_100bd940 LABEL NEAR
mov eax, dword ptr [esp+8H] ; 100BD940 _ 8B. 44 24, 08
mov ecx, dword ptr [esp+4H] ; 100BD944 _ 8B. 4C 24, 04
push eax ; 100BD948 _ 50
push ecx ; 100BD949 _ 51
call ?_25195 ; 100BD94A _ E8, FFFFFF51
call FUN_100bd8a0 ; 100BD94A _ E8, FFFFFF51
add esp, 8 ; 100BD94F _ 83. C4, 08
ret ; 100BD952 _ C3
@ -454,7 +469,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
?_25203 LABEL NEAR
FUN_100bd960 LABEL NEAR
mov eax, dword ptr [esp+10H] ; 100BD960 _ 8B. 44 24, 10
sub esp, 8 ; 100BD964 _ 83. EC, 08
mov dx, word ptr [eax+8H] ; 100BD967 _ 66: 8B. 50, 08
@ -529,7 +544,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH
?_25213 LABEL NEAR
FUN_100bda10 LABEL NEAR
mov ecx, dword ptr [esp+0CH] ; 100BDA10 _ 8B. 4C 24, 0C
sub esp, 4 ; 100BDA14 _ 83. EC, 04
mov eax, dword ptr [esp+14H] ; 100BDA17 _ 8B. 44 24, 14
@ -572,7 +587,7 @@ public EndOfSection
push edi ; 100BDA70 _ 57
push edx ; 100BDA71 _ 52
push eax ; 100BDA72 _ 50
call ?_25173 ; 100BDA73 _ E8, FFFFFC08
call FUN_100bd680 ; 100BDA73 _ E8, FFFFFC08
add esp, 24 ; 100BDA78 _ 83. C4, 18
jmp ?_25217 ; 100BDA7B _ EB, 23
@ -586,7 +601,7 @@ public EndOfSection
push edi ; 100BDA90 _ 57
push ecx ; 100BDA91 _ 51
push edx ; 100BDA92 _ 52
call ?_25164 ; 100BDA93 _ E8, FFFFFAE8
call FUN_100bd580 ; 100BDA93 _ E8, FFFFFAE8
movsx ecx, bp ; 100BDA98 _ 0F BF. CD
add esp, 24 ; 100BDA9B _ 83. C4, 18
add esi, ecx ; 100BDA9E _ 03. F1
@ -608,7 +623,7 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH
?_25220 LABEL NEAR
FUN_100bdac0 LABEL NEAR
mov edx, dword ptr [esp+10H] ; 100BDAC0 _ 8B. 54 24, 10
sub esp, 8 ; 100BDAC4 _ 83. EC, 08
mov ax, word ptr [edx+8H] ; 100BDAC7 _ 66: 8B. 42, 08
@ -643,7 +658,7 @@ public EndOfSection
push eax ; 100BDB18 _ 50
push ecx ; 100BDB19 _ 51
push edx ; 100BDB1A _ 52
call ?_25162 ; 100BDB1B _ E8, FFFFFA10
call FUN_100bd530 ; 100BDB1B _ E8, FFFFFA10
mov ecx, dword ptr [esp+28H] ; 100BDB20 _ 8B. 4C 24, 28
add esp, 20 ; 100BDB24 _ 83. C4, 14
mov bx, word ptr [ecx] ; 100BDB27 _ 66: 8B. 19
@ -677,7 +692,7 @@ public EndOfSection
push ecx ; 100BDB7F _ 51
add di, bp ; 100BDB80 _ 66: 03. FD
push edx ; 100BDB83 _ 52
call ?_25164 ; 100BDB84 _ E8, FFFFF9F7
call FUN_100bd580 ; 100BDB84 _ E8, FFFFF9F7
movsx ecx, bp ; 100BDB89 _ 0F BF. CD
add dword ptr [esp+2CH], ecx ; 100BDB8C _ 01. 4C 24, 2C
add esp, 24 ; 100BDB90 _ 83. C4, 18
@ -704,7 +719,7 @@ public EndOfSection
add di, bp ; 100BDBCD _ 66: 03. FD
push edx ; 100BDBD0 _ 52
push ecx ; 100BDBD1 _ 51
call ?_25176 ; 100BDBD2 _ E8, FFFFFB09
call FUN_100bd6e0 ; 100BDBD2 _ E8, FFFFFB09
add esp, 24 ; 100BDBD7 _ 83. C4, 18
dec bx ; 100BDBDA _ 66: 4B
jne ?_25224 ; 100BDBDC _ 0F 85, FFFFFF6A
@ -723,7 +738,7 @@ public EndOfSection
; Filler type: INT 3 Debug breakpoint
db 0CCH, 0CCH, 0CCH
?_25227 LABEL NEAR
FUN_100bdc00 LABEL NEAR
mov eax, dword ptr [esp+10H] ; 100BDC00 _ 8B. 44 24, 10
sub esp, 8 ; 100BDC04 _ 83. EC, 08
mov cx, word ptr [eax+8H] ; 100BDC07 _ 66: 8B. 48, 08
@ -755,7 +770,7 @@ public EndOfSection
push 0 ; 100BDC52 _ 6A, 00
push ebx ; 100BDC54 _ 53
push edi ; 100BDC55 _ 57
call ?_25176 ; 100BDC56 _ E8, FFFFFA85
call FUN_100bd6e0 ; 100BDC56 _ E8, FFFFFA85
add esp, 24 ; 100BDC5B _ 83. C4, 18
test si, si ; 100BDC5E _ 66: 85. F6
jz ?_25229 ; 100BDC61 _ 74, 15
@ -766,7 +781,7 @@ public EndOfSection
push eax ; 100BDC6D _ 50
push ebx ; 100BDC6E _ 53
push edi ; 100BDC6F _ 57
call ?_25162 ; 100BDC70 _ E8, FFFFF8BB
call FUN_100bd530 ; 100BDC70 _ E8, FFFFF8BB
add esp, 20 ; 100BDC75 _ 83. C4, 14
?_25229:dec bp ; 100BDC78 _ 66: 4D
jns ?_25228 ; 100BDC7A _ 79, CB
@ -782,7 +797,7 @@ public EndOfSection
db 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH, 0CCH
db 0CCH, 0CCH, 0CCH, 0CCH
?_25231 LABEL NEAR
FUN_100bdc90 LABEL NEAR
mov eax, dword ptr [esp+10H] ; 100BDC90 _ 8B. 44 24, 10
sub esp, 4 ; 100BDC94 _ 83. EC, 04
push ebx ; 100BDC97 _ 53
@ -804,7 +819,7 @@ public EndOfSection
push 0 ; 100BDCBD _ 6A, 00
push eax ; 100BDCBF _ 50
push esi ; 100BDCC0 _ 56
call ?_25164 ; 100BDCC1 _ E8, FFFFF8BA
call FUN_100bd580 ; 100BDCC1 _ E8, FFFFF8BA
add ebp, dword ptr [esp+28H] ; 100BDCC6 _ 03. 6C 24, 28
add esp, 24 ; 100BDCCA _ 83. C4, 18
dec bx ; 100BDCCD _ 66: 4B
@ -836,7 +851,7 @@ DecodeFLCFrame LABEL NEAR
push ecx ; 100BDD02 _ 51
push eax ; 100BDD03 _ 50
push edx ; 100BDD04 _ 52
call ?_25180 ; 100BDD05 _ E8, FFFFFA56
call FUN_100bd760 ; 100BDD05 _ E8, FFFFFA56
add esp, 24 ; 100BDD0A _ 83. C4, 18
?_25235:ret ; 100BDD0D _ C3

BIN
3rdparty/flic/flic.lib vendored

Binary file not shown.

View File

@ -16,136 +16,115 @@ 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(lego1 SHARED
LEGO1/define.cpp
LEGO1/lego/legoomni/src/act1/act1state.cpp
LEGO1/lego/legoomni/src/act2/act2brick.cpp
LEGO1/lego/legoomni/src/act2/act2policestation.cpp
LEGO1/lego/legoomni/src/act2/legoact2state.cpp
LEGO1/lego/legoomni/src/act3/act3.cpp
LEGO1/lego/legoomni/src/act3/act3shark.cpp
LEGO1/lego/legoomni/src/act3/act3state.cpp
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/mxbackgroundaudiomanager.cpp
LEGO1/lego/legoomni/src/build/buildingentity.cpp
LEGO1/lego/legoomni/src/build/dunebuggy.cpp
LEGO1/lego/legoomni/src/build/helicopter.cpp
LEGO1/lego/legoomni/src/build/helicopterstate.cpp
LEGO1/lego/legoomni/src/build/jetski.cpp
LEGO1/lego/legoomni/src/build/legobuildingmanager.cpp
LEGO1/lego/legoomni/src/build/legocarbuild.cpp
LEGO1/lego/legoomni/src/build/legovehiclebuildstate.cpp
LEGO1/lego/legoomni/src/build/racecar.cpp
LEGO1/lego/legoomni/src/common/animstate.cpp
LEGO1/lego/legoomni/src/common/gifmanager.cpp
LEGO1/lego/legoomni/src/common/legoactioncontrolpresenter.cpp
LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp
LEGO1/lego/legoomni/src/common/legofullscreenmovie.cpp
LEGO1/lego/legoomni/src/common/legogamestate.cpp
LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp
LEGO1/lego/legoomni/src/common/legoplantmanager.cpp
LEGO1/lego/legoomni/src/common/legostate.cpp
LEGO1/lego/legoomni/src/common/legostream.cpp
LEGO1/lego/legoomni/src/common/legounksavedatawriter.cpp
LEGO1/lego/legoomni/src/common/legoutil.cpp
LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp
LEGO1/lego/legoomni/src/control/legocontrolmanager.cpp
LEGO1/lego/legoomni/src/control/mxcontrolpresenter.cpp
LEGO1/lego/legoomni/src/entity/legoactor.cpp
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp
LEGO1/lego/legoomni/src/entity/legoanimactor.cpp
LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp
LEGO1/lego/legoomni/src/entity/legoentity.cpp
LEGO1/lego/legoomni/src/entity/legoentitypresenter.cpp
LEGO1/lego/legoomni/src/entity/legojetski.cpp
LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp
LEGO1/lego/legoomni/src/entity/legopathactor.cpp
LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp
LEGO1/lego/legoomni/src/entity/legorace.cpp
LEGO1/lego/legoomni/src/entity/legoworld.cpp
LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp
LEGO1/lego/legoomni/src/gasstation/gasstation.cpp
LEGO1/lego/legoomni/src/gasstation/gasstationentity.cpp
LEGO1/lego/legoomni/src/gasstation/gasstationstate.cpp
LEGO1/lego/legoomni/src/hospital/ambulance.cpp
LEGO1/lego/legoomni/src/hospital/ambulancemissionstate.cpp
LEGO1/lego/legoomni/src/hospital/hospital.cpp
LEGO1/lego/legoomni/src/hospital/hospitalentity.cpp
LEGO1/lego/legoomni/src/hospital/hospitalstate.cpp
LEGO1/lego/legoomni/src/infocenter/elevatorbottom.cpp
LEGO1/lego/legoomni/src/infocenter/infocenter.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterdoor.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterentity.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterstate.cpp
LEGO1/lego/legoomni/src/infocenter/registrationbook.cpp
LEGO1/lego/legoomni/src/infocenter/score.cpp
LEGO1/lego/legoomni/src/infocenter/scorestate.cpp
LEGO1/lego/legoomni/src/input/legoinputmanager.cpp
LEGO1/lego/legoomni/src/isle/beachhouseentity.cpp
LEGO1/lego/legoomni/src/isle/bike.cpp
LEGO1/lego/legoomni/src/isle/bumpbouy.cpp
LEGO1/lego/legoomni/src/isle/historybook.cpp
LEGO1/lego/legoomni/src/isle/isleactor.cpp
LEGO1/lego/legoomni/src/isle/isle.cpp
LEGO1/lego/legoomni/src/isle/islepathactor.cpp
LEGO1/lego/legoomni/src/isle/jukebox.cpp
LEGO1/lego/legoomni/src/isle/jukeboxentity.cpp
LEGO1/lego/legoomni/src/isle/jukeboxstate.cpp
LEGO1/lego/legoomni/src/isle/motocycle.cpp
LEGO1/lego/legoomni/src/isle/radio.cpp
LEGO1/lego/legoomni/src/isle/radiostate.cpp
LEGO1/lego/legoomni/src/isle/skateboard.cpp
LEGO1/lego/legoomni/src/main/legoomni.cpp
LEGO1/lego/legoomni/src/notify/legoeventnotificationparam.cpp
LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp
LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp
LEGO1/lego/legoomni/src/pizzeria/pizza.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzamissionstate.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzeria.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzeriastate.cpp
LEGO1/lego/legoomni/src/police/police.cpp
LEGO1/lego/legoomni/src/police/policeentity.cpp
LEGO1/lego/legoomni/src/police/policestate.cpp
LEGO1/lego/legoomni/src/race/carrace.cpp
LEGO1/lego/legoomni/src/race/jetskirace.cpp
LEGO1/lego/legoomni/src/race/racestandsentity.cpp
LEGO1/lego/legoomni/src/race/racestate.cpp
LEGO1/lego/legoomni/src/towtrack/towtrack.cpp
LEGO1/lego/legoomni/src/towtrack/towtrackmissionstate.cpp
LEGO1/lego/legoomni/src/unknown/legounknown100d7c88.cpp
LEGO1/lego/legoomni/src/video/legoanimationmanager.cpp
LEGO1/lego/legoomni/src/video/legoanimmmpresenter.cpp
LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legocarbuildanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legoflctexturepresenter.cpp
LEGO1/lego/legoomni/src/video/legohideanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legolocomotionanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legometerpresenter.cpp
LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp
LEGO1/lego/legoomni/src/video/legopalettepresenter.cpp
LEGO1/lego/legoomni/src/video/legopartpresenter.cpp
LEGO1/lego/legoomni/src/video/legophonemepresenter.cpp
LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp
LEGO1/lego/legoomni/src/video/legovideomanager.cpp
LEGO1/lego/legoomni/src/video/mxtransitionmanager.cpp
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
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
)
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
@ -227,61 +206,165 @@ add_library(lego1 SHARED
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(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
LEGO1/lego/legoomni/src/act2/act2brick.cpp
LEGO1/lego/legoomni/src/act2/act2policestation.cpp
LEGO1/lego/legoomni/src/act2/legoact2.cpp
LEGO1/lego/legoomni/src/act2/legoact2state.cpp
LEGO1/lego/legoomni/src/act3/act3.cpp
LEGO1/lego/legoomni/src/act3/act3shark.cpp
LEGO1/lego/legoomni/src/act3/act3state.cpp
LEGO1/lego/legoomni/src/audio/lego3dwavepresenter.cpp
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
LEGO1/lego/legoomni/src/build/helicopter.cpp
LEGO1/lego/legoomni/src/build/helicopterstate.cpp
LEGO1/lego/legoomni/src/build/jetski.cpp
LEGO1/lego/legoomni/src/build/legobuildingmanager.cpp
LEGO1/lego/legoomni/src/build/legocarbuild.cpp
LEGO1/lego/legoomni/src/build/legovehiclebuildstate.cpp
LEGO1/lego/legoomni/src/build/racecar.cpp
LEGO1/lego/legoomni/src/common/animstate.cpp
LEGO1/lego/legoomni/src/common/gifmanager.cpp
LEGO1/lego/legoomni/src/common/legoactioncontrolpresenter.cpp
LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp
LEGO1/lego/legoomni/src/common/legofullscreenmovie.cpp
LEGO1/lego/legoomni/src/common/legogamestate.cpp
LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp
LEGO1/lego/legoomni/src/common/legoplantmanager.cpp
LEGO1/lego/legoomni/src/common/legostate.cpp
LEGO1/lego/legoomni/src/common/legounksavedatawriter.cpp
LEGO1/lego/legoomni/src/common/legoutil.cpp
LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp
LEGO1/lego/legoomni/src/control/legocontrolmanager.cpp
LEGO1/lego/legoomni/src/control/mxcontrolpresenter.cpp
LEGO1/lego/legoomni/src/entity/legoactor.cpp
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp
LEGO1/lego/legoomni/src/entity/legoanimactor.cpp
LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp
LEGO1/lego/legoomni/src/entity/legocarraceactor.cpp
LEGO1/lego/legoomni/src/entity/legoentity.cpp
LEGO1/lego/legoomni/src/entity/legoentitypresenter.cpp
LEGO1/lego/legoomni/src/entity/legojetski.cpp
LEGO1/lego/legoomni/src/entity/legojetskiraceactor.cpp
LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp
LEGO1/lego/legoomni/src/entity/legopathactor.cpp
LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp
LEGO1/lego/legoomni/src/entity/legorace.cpp
LEGO1/lego/legoomni/src/entity/legoraceactor.cpp
LEGO1/lego/legoomni/src/entity/legoracecar.cpp
LEGO1/lego/legoomni/src/entity/legoworld.cpp
LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp
LEGO1/lego/legoomni/src/gasstation/gasstation.cpp
LEGO1/lego/legoomni/src/gasstation/gasstationentity.cpp
LEGO1/lego/legoomni/src/gasstation/gasstationstate.cpp
LEGO1/lego/legoomni/src/hospital/ambulance.cpp
LEGO1/lego/legoomni/src/hospital/ambulancemissionstate.cpp
LEGO1/lego/legoomni/src/hospital/hospital.cpp
LEGO1/lego/legoomni/src/hospital/hospitalentity.cpp
LEGO1/lego/legoomni/src/hospital/hospitalstate.cpp
LEGO1/lego/legoomni/src/infocenter/elevatorbottom.cpp
LEGO1/lego/legoomni/src/infocenter/infocenter.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterdoor.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterentity.cpp
LEGO1/lego/legoomni/src/infocenter/infocenterstate.cpp
LEGO1/lego/legoomni/src/infocenter/registrationbook.cpp
LEGO1/lego/legoomni/src/infocenter/score.cpp
LEGO1/lego/legoomni/src/infocenter/scorestate.cpp
LEGO1/lego/legoomni/src/input/legoinputmanager.cpp
LEGO1/lego/legoomni/src/isle/beachhouseentity.cpp
LEGO1/lego/legoomni/src/isle/bike.cpp
LEGO1/lego/legoomni/src/isle/bumpbouy.cpp
LEGO1/lego/legoomni/src/isle/doors.cpp
LEGO1/lego/legoomni/src/isle/historybook.cpp
LEGO1/lego/legoomni/src/isle/isleactor.cpp
LEGO1/lego/legoomni/src/isle/isle.cpp
LEGO1/lego/legoomni/src/isle/islepathactor.cpp
LEGO1/lego/legoomni/src/isle/jukebox.cpp
LEGO1/lego/legoomni/src/isle/jukeboxentity.cpp
LEGO1/lego/legoomni/src/isle/jukeboxstate.cpp
LEGO1/lego/legoomni/src/isle/motocycle.cpp
LEGO1/lego/legoomni/src/isle/radio.cpp
LEGO1/lego/legoomni/src/isle/radiostate.cpp
LEGO1/lego/legoomni/src/isle/skateboard.cpp
LEGO1/lego/legoomni/src/main/legoomni.cpp
LEGO1/lego/legoomni/src/notify/legoeventnotificationparam.cpp
LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp
LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp
LEGO1/lego/legoomni/src/pizzeria/pizza.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzamissionstate.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzeria.cpp
LEGO1/lego/legoomni/src/pizzeria/pizzeriastate.cpp
LEGO1/lego/legoomni/src/police/police.cpp
LEGO1/lego/legoomni/src/police/policeentity.cpp
LEGO1/lego/legoomni/src/police/policestate.cpp
LEGO1/lego/legoomni/src/race/carrace.cpp
LEGO1/lego/legoomni/src/race/jetskirace.cpp
LEGO1/lego/legoomni/src/race/racestandsentity.cpp
LEGO1/lego/legoomni/src/race/racestate.cpp
LEGO1/lego/legoomni/src/towtrack/towtrack.cpp
LEGO1/lego/legoomni/src/towtrack/towtrackmissionstate.cpp
LEGO1/lego/legoomni/src/unknown/legounknown100d7c88.cpp
LEGO1/lego/legoomni/src/video/legoanimationmanager.cpp
LEGO1/lego/legoomni/src/video/legoanimmmpresenter.cpp
LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legocarbuildanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legoflctexturepresenter.cpp
LEGO1/lego/legoomni/src/video/legohideanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legolocomotionanimpresenter.cpp
LEGO1/lego/legoomni/src/video/legoloopinganimpresenter.cpp
LEGO1/lego/legoomni/src/video/legometerpresenter.cpp
LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp
LEGO1/lego/legoomni/src/video/legopalettepresenter.cpp
LEGO1/lego/legoomni/src/video/legopartpresenter.cpp
LEGO1/lego/legoomni/src/video/legophonemepresenter.cpp
LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp
LEGO1/lego/legoomni/src/video/legovideomanager.cpp
LEGO1/lego/legoomni/src/video/mxtransitionmanager.cpp
LEGO1/main.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)
@ -295,19 +378,8 @@ if (ISLE_BUILD_APP)
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)
@ -323,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()
@ -350,8 +426,13 @@ if (MSVC_FOR_DECOMP)
# They ensure a recompilation that can be byte/instruction accurate to the original binaries.
if (ISLE_BUILD_APP)
target_compile_options(isle PRIVATE "/MT$<$<CONFIG:Debug>:d>")
target_link_options(isle PRIVATE "/OPT:REF")
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\"")
@ -365,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")
@ -373,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()

View File

@ -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
View 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
View 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_

View File

@ -22,6 +22,9 @@ class Act1State : public LegoState {
return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name);
};
virtual MxBool SetFlag() override; // vtable+0x18
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x18 = p_unk0x18; }
inline MxU32 GetUnknown18() { return m_unk0x18; }
inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x21 = p_unk0x21; }

View File

@ -26,6 +26,8 @@ class Act2Brick : public LegoPathActor {
return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name);
}
virtual MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x1007a450
// Act2Brick::`scalar deleting destructor'
};

View File

@ -11,6 +11,9 @@ class Act3 : public LegoWorld {
virtual ~Act3() override; // vtable+00
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
virtual MxResult Tickle() override; // vtable+0x8
// FUNCTION: LEGO1 0x10072510
inline virtual const char* ClassName() const override // vtable+0x0c
{
@ -24,12 +27,25 @@ class Act3 : public LegoWorld {
return !strcmp(p_name, Act3::ClassName()) || LegoWorld::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual void VTable0x60() override; // vtable+0x60
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; }
inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; }
// 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

View File

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

View File

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

View File

@ -22,6 +22,8 @@ class AmbulanceMissionState : public LegoState {
return !strcmp(p_name, AmbulanceMissionState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline MxU16 GetColor(MxU8 p_id)
{
switch (p_id) {

View File

@ -23,8 +23,8 @@ class AnimState : public LegoState {
return !strcmp(p_name, AnimState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxBool SetFlag() override; // vtable+0x18
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1C
virtual MxBool SetFlag() override; // vtable+0x18
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1C
// SYNTHETIC: LEGO1 0x10065130
// AnimState::`scalar deleting destructor'

View File

@ -23,6 +23,11 @@ class Bike : public IslePathActor {
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10076880
// Bike::`scalar deleting destructor'

View File

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

View File

@ -23,6 +23,14 @@ class CarRace : public LegoRace {
return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
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
virtual undefined4 VTable0x74(undefined4) override; // vtable+0x74
virtual undefined4 VTable0x78(undefined4) override; // vtable+0x78
// SYNTHETIC: LEGO1 0x10016c70
// CarRace::`scalar deleting destructor'

View File

@ -20,6 +20,10 @@ class Doors : public LegoPathActor {
return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name);
}
virtual void ParseAction(char*) override; // vtable+0x20
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x1000e580
// Doors::`scalar deleting destructor'
};

View File

@ -23,6 +23,13 @@ class DuneBuggy : public IslePathActor {
return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x10067dc0
// DuneBuggy::`scalar deleting destructor'

View File

@ -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

View File

@ -29,6 +29,12 @@ class GasStation : public LegoWorld {
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
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
// SYNTHETIC: LEGO1 0x100048a0
// GasStation::`scalar deleting destructor'

View File

@ -22,6 +22,8 @@ class GasStationState : public LegoState {
return !strcmp(p_name, GasStationState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x10006290
// GasStationState::`scalar deleting destructor'

View File

@ -38,8 +38,8 @@ class Helicopter : public IslePathActor {
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8

View File

@ -21,6 +21,16 @@ class HelicopterState : public LegoState {
return !strcmp(p_name, HelicopterState::ClassName()) || LegoState::IsA(p_name);
}
// 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; }

View File

@ -25,6 +25,10 @@ class HistoryBook : public LegoWorld {
return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x64() override; // vtable+0x64
// SYNTHETIC: LEGO1 0x100824b0
// HistoryBook::`scalar deleting destructor'
};

View File

@ -12,6 +12,7 @@ class Hospital : public LegoWorld {
virtual ~Hospital() override; // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
virtual MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x100746b0
inline virtual const char* ClassName() const override // vtable+0x0c
@ -26,6 +27,12 @@ class Hospital : public LegoWorld {
return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
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
// SYNTHETIC: LEGO1 0x100747d0
// Hospital::`scalar deleting destructor'

View File

@ -23,6 +23,8 @@ class HospitalState : public LegoState {
return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x100764c0
// HospitalState::`scalar deleting destructor'

View File

@ -5,13 +5,19 @@
#include "radio.h"
class InfocenterState;
class MxStillPresenter;
// SIZE 0x18
struct InfocenterUnkDataEntry {
struct InfocenterMapEntry {
// FUNCTION: LEGO1 0x1006ec80
InfocenterUnkDataEntry() {}
InfocenterMapEntry() {}
undefined m_pad[0x18];
MxStillPresenter* m_presenter; // 0x00
undefined4 m_unk0x04; // 0x04
undefined4 m_unk0x08; // 0x08
undefined4 m_unk0x0c; // 0x0c
undefined4 m_unk0x10; // 0x10
undefined4 m_unk0x14; // 0x14
};
// VTABLE: LEGO1 0x100d9338
@ -31,6 +37,22 @@ class Infocenter : public LegoWorld {
enum InfomainScript {
c_noInfomain = -1,
c_leftArrowCtl = 1,
c_rightArrowCtl = 2,
c_infoCtl = 3,
c_boatCtl = 10,
c_raceCtl = 11,
c_pizzaCtl = 12,
c_gasCtl = 13,
c_medCtl = 14,
c_copCtl = 15,
c_radioCtl = 18,
c_mamaCtl = 21,
c_papaCtl = 22,
c_pepperCtl = 23,
c_nickCtl = 24,
c_lauraCtl = 25,
c_welcomeDialogue = 500,
c_goodJobDialogue = 501,
@ -127,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
@ -167,9 +189,9 @@ class Infocenter : public LegoWorld {
Cutscene m_currentCutscene; // 0x108
Radio m_radio; // 0x10c
undefined4 m_unk0x11c; // 0x11c
InfocenterUnkDataEntry m_entries[7]; // 0x120
InfocenterMapEntry m_mapAreas[7]; // 0x120
MxS16 m_unk0x1c8; // 0x1c8
undefined4 m_unk0x1cc; // 0x1cc
MxStillPresenter* m_frameHotBitmap; // 0x1cc
MxS16 m_infoManDialogueTimer; // 0x1d0
MxS16 m_bookAnimationTimer; // 0x1d2
MxU16 m_unk0x1d4; // 0x1d4

View File

@ -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

View File

@ -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

View File

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

View File

@ -17,6 +17,8 @@ class IslePathActor : public LegoPathActor {
// FUNCTION: LEGO1 0x10002e10
inline virtual ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x10002ea0
inline virtual const char* ClassName() const override // vtable+0x0c
{

View File

@ -3,6 +3,7 @@
#include "decomp.h"
#include "islepathactor.h"
#include "mxtype17notificationparam.h"
// VTABLE: LEGO1 0x100d9ec8
// SIZE 0x164
@ -23,6 +24,12 @@ class Jetski : public IslePathActor {
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam&) override; // vtable+0xd4
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x1007e5c0
// Jetski::`scalar deleting destructor'

View File

@ -10,6 +10,9 @@ class JukeBox : public LegoWorld {
public:
JukeBox();
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
virtual MxResult Tickle() override; // vtable+0x8
// FUNCTION: LEGO1 0x1005d6f0
inline virtual const char* ClassName() const override // vtable+0x0c
{
@ -23,6 +26,12 @@ class JukeBox : public LegoWorld {
return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
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
// SYNTHETIC: LEGO1 0x1005d810
// JukeBox::`scalar deleting destructor'
enum JukeBoxScript {

View File

@ -10,6 +10,8 @@ class JukeBoxEntity : public LegoEntity {
JukeBoxEntity();
virtual ~JukeBoxEntity() override; // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x10085cc0
inline virtual const char* ClassName() const override // vtable+0x0c
{

View File

@ -20,6 +20,11 @@ class Lego3DWavePresenter : public MxWavePresenter {
return !strcmp(p_name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(p_name);
}
virtual void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
// SYNTHETIC: LEGO1 0x1000f4b0
// Lego3DWavePresenter::`scalar deleting destructor'
};

View File

@ -3,10 +3,21 @@
#include "legocarraceactor.h"
#include "legopathactor.h"
#include "legoworld.h"
// VTABLE: LEGO1 0x100d82e0
// SIZE 0x1154
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 ReadyWorld() override; // vtable+0x50
virtual MxBool VTable0x5c() override; // vtable+0x5c
virtual void VTable0x60() override; // vtable+0x60
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x1004fe20
// LegoAct2::`scalar deleting destructor'
};

View File

@ -20,6 +20,8 @@ class LegoAct2State : public LegoState {
return !strcmp(p_name, LegoAct2State::ClassName()) || LegoState::IsA(p_name);
}
virtual MxBool VTable0x14() override; // vtable+0x14
// SYNTHETIC: LEGO1 0x1000e040
// LegoAct2State::`scalar deleting destructor'
};

View File

@ -24,6 +24,9 @@ class LegoActor : public LegoEntity {
return !strcmp(p_name, LegoActor::ClassName()) || LegoEntity::IsA(p_name);
}
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
// FUNCTION: LEGO1 0x10002cc0
virtual MxFloat VTable0x50() { return m_unk0x68; } // vtable+0x50
// FUNCTION: LEGO1 0x10002cd0

View File

@ -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'

View File

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

View File

@ -1,11 +1,12 @@
#ifndef LEGOANIMPRESENTER_H
#define LEGOANIMPRESENTER_H
#include "lego/sources/misc/legostorage.h"
#include "lego/sources/misc/legotree.h"
#include "mxgeometry/mxgeometry3d.h"
#include "mxvideopresenter.h"
class LegoWorld;
class LegoMemoryStream;
class LegoAnimClass;
// VTABLE: LEGO1 0x100d90c8
@ -31,16 +32,20 @@ class LegoAnimPresenter : public MxVideoPresenter {
virtual void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20
virtual void DoneTickle() override; // vtable+0x2c
virtual void ParseExtra() override; // vtable+0x30
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
virtual void EndAction() override; // vtable+0x40
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; }
private:
const char* GetActionObjectName();
protected:
void Init();
void Destroy(MxBool p_fromDestructor);
@ -71,34 +76,20 @@ class LegoAnimPresenter : public MxVideoPresenter {
// SYNTHETIC: LEGO1 0x10068650
// LegoAnimPresenter::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db768
// SIZE 0x08
class LegoAnimClassBase {
public:
LegoAnimClassBase();
virtual ~LegoAnimClassBase();
virtual void VTable0x4(); // vtable+0x04
virtual void VTable0x8(); // vtable+0x08
virtual void VTable0xc(); // vtable+0x0c
undefined4 m_unk0x4; // 0x04
};
// SYNTHETIC: LEGO1 0x10099de0
// LegoAnimClassBase::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db8d8
// SIZE 0x18
class LegoAnimClass : public LegoAnimClassBase {
class LegoAnimClass : public LegoTree {
public:
LegoAnimClass();
virtual ~LegoAnimClass() override;
virtual void VTable0x8() override; // vtable+0x08
virtual void VTable0xc() override; // vtable+0x0c
virtual MxResult VTable0x10(LegoMemoryStream* p_stream, MxS32); // vtable+0x10
virtual LegoResult Write(LegoStorage* p_storage) override; // vtable+0x08
virtual LegoTreeNodeData* CreateData() override; // vtable+0x0c
virtual MxResult VTable0x10(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

View File

@ -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:

View File

@ -10,6 +10,8 @@ class LegoBuildingManager : public MxCore {
LegoBuildingManager();
virtual ~LegoBuildingManager() override;
virtual MxResult Tickle() override; // vtable+0x08
// FUNCTION: LEGO1 0x1002f930
inline virtual const char* ClassName() const override // vtable+0x0c
{
@ -17,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'

View File

@ -1,6 +1,7 @@
#ifndef LEGOCACHESOUND_H
#define LEGOCACHESOUND_H
#include "decomp.h"
#include "mxcore.h"
// VTABLE: LEGO1 0x100d4718
@ -28,6 +29,8 @@ class LegoCacheSound : public MxCore {
private:
void Init();
undefined m_padding0x08[0x80]; // 0x08
};
#endif // LEGOCACHESOUND_H

View 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

View File

@ -26,6 +26,12 @@ class LegoCarBuild : public LegoWorld {
return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
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
// SYNTHETIC: LEGO1 0x10022a60
// LegoCarBuild::`scalar deleting destructor'
};

View File

@ -23,6 +23,12 @@ class LegoCarBuildAnimPresenter : public LegoAnimPresenter {
return !strcmp(p_name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(p_name);
}
virtual void ReadyTickle() override; // vtable+0x18
virtual void StreamingTickle() override; // vtable+0x20
virtual void RepeatingTickle() override; // vtable+0x24
virtual void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c
// SYNTHETIC: LEGO1 0x10078660
// LegoCarBuildAnimPresenter::`scalar deleting destructor'
};

View File

@ -19,6 +19,14 @@ class LegoCarRaceActor : public LegoRaceActor {
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
}
virtual void VTable0x68() override; // vtable+0x68
virtual void VTable0x6c() override; // vtable+0x6c
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxS32 VTable0x90() override; // vtable+0x90
virtual MxS32 VTable0x94() override; // vtable+0x94
virtual void VTable0x98() override; // vtable+0x98
virtual void VTable0x9c() override; // vtable+0x9c
// SYNTHETIC: LEGO1 0x10081610
// LegoCarRaceActor::`scalar deleting destructor'
};

View File

@ -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

View File

@ -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();

View File

@ -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

View File

@ -3,6 +3,7 @@
#include "mxnotificationparam.h"
#include "mxtypes.h"
#include "roi/legoroi.h"
#include <stdlib.h>
@ -10,6 +11,15 @@
// SIZE 0x20
class LegoEventNotificationParam : public MxNotificationParam {
public:
// 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(
NotificationId p_type,
@ -19,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

View File

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

View File

@ -2,10 +2,11 @@
#define LEGOGAMESTATE_H
#include "decomp.h"
#include "lego/sources/misc/legostorage.h"
#include "legobackgroundcolor.h"
#include "legofullscreenmovie.h"
#include "legostream.h"
#include "mxtypes.h"
#include "mxvariabletable.h"
class LegoState;
class MxVariable;
@ -19,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);
@ -47,7 +48,7 @@ class LegoGameState {
struct ScoreStruct {
void WriteScoreHistory();
void FUN_1003ccf0(LegoFileStream&);
void FUN_1003ccf0(LegoFile&);
MxU16 m_unk0x00;
undefined m_unk0x02[0x2c][20];
@ -55,7 +56,9 @@ class LegoGameState {
private:
void RegisterState(LegoState* p_state);
MxResult WriteEndOfVariables(LegoStream* p_stream);
MxResult WriteVariable(LegoStorage* p_stream, MxVariableTable* p_from, const char* p_variableName);
MxResult WriteEndOfVariables(LegoStorage* p_stream);
MxS32 ReadVariable(LegoStorage* p_stream, MxVariableTable* p_to);
void SetROIHandlerFunction();
char* m_savePath; // 0x0

View File

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

View File

@ -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,20 +68,23 @@ 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
// FUNCTION: LEGO1 0x1005b8c0
virtual MxResult PutData() override { return SUCCESS; }; // vtable+0x4c
MxResult Create(HWND p_hwnd);
void Destroy();
void CreateAndAcquireKeyboard(HWND p_hwnd);
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();
@ -70,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

View File

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

View File

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

View File

@ -4,6 +4,8 @@
#include "decomp.h"
#include "mxwavepresenter.h"
class LegoCacheSound;
// VTABLE: LEGO1 0x100d5fa8
// SIZE 0x90
class LegoLoadCacheSoundPresenter : public MxWavePresenter {
@ -18,16 +20,21 @@ class LegoLoadCacheSoundPresenter : public MxWavePresenter {
return "LegoLoadCacheSoundPresenter";
}
virtual void ReadyTickle() override; // vtable+0x18
virtual void StreamingTickle() override; // vtable+0x20
virtual void DoneTickle() override; // vtable+0x2c
virtual MxResult PutData() override; // vtable+0x4c
private:
void Init();
void Destroy(MxBool p_fromDestructor);
undefined4* m_unk0x6c; // 0x6c
undefined4* m_unk0x70; // 0x70
undefined4 m_unk0x74; // 0x74
undefined4 m_unk0x78; // 0x78
undefined m_unk0x7c; // 0x7c
undefined4 m_unk0x80[4]; // 0x80
LegoCacheSound* m_cacheSound; // 0x6c
undefined* m_unk0x70; // 0x70
undefined* m_unk0x74; // 0x74
undefined4 m_unk0x78; // 0x78
undefined m_unk0x7c; // 0x7c
PCMWAVEFORMAT m_pcmWaveFormat; // 0x7d
};
// SYNTHETIC: LEGO1 0x10018460

View File

@ -4,9 +4,11 @@
#include "legoloopinganimpresenter.h"
// VTABLE: LEGO1 0x100d9170
// SIZE 0xd8
class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
public:
LegoLocomotionAnimPresenter();
virtual ~LegoLocomotionAnimPresenter() override;
// FUNCTION: LEGO1 0x1006ce50
inline const char* ClassName() const override // vtable+0xc
@ -21,11 +23,36 @@ class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
return !strcmp(p_name, ClassName()) || LegoLoopingAnimPresenter::IsA(p_name);
}
virtual void ReadyTickle() override; // vtable+0x18
virtual void StartingTickle() override; // vtable+0x1c
virtual void StreamingTickle() override; // vtable+0x20
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
virtual void EndAction() override; // vtable+0x40
virtual void PutFrame() override; // vtable+0x6c
virtual MxResult VTable0x88(MxStreamChunk* p_chunk) override; // vtable+0x88
// 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);
undefined4 m_unk0xc0; // 0xc0
undefined4* m_unk0xc4; // 0xc4
MxCore* m_unk0xc8; // 0xc8
MxS32 m_unk0xcc; // 0xcc
MxS32 m_unk0xd0; // 0xd0
undefined2 m_unk0xd4; // 0xd4
};
#endif // LEGOLOCOMOTIONANIMPRESENTER_H

View File

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

View File

@ -3,11 +3,13 @@
#include "mxvideopresenter.h"
class AutoROI;
// VTABLE: LEGO1 0x100d4e50
// 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
@ -33,7 +35,7 @@ class LegoModelPresenter : public MxVideoPresenter {
void Destroy(MxBool p_fromDestructor);
private:
undefined4 m_unk0x64; // 0x64
AutoROI* m_unk0x64; // 0x64
MxBool m_addedToView; // 0x68
};

View File

@ -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,
@ -37,7 +37,8 @@ class LegoNavController : public MxCore {
);
LegoNavController();
virtual ~LegoNavController() override; // vtable+0x0
virtual ~LegoNavController() override; // vtable+0x0
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
// FUNCTION: LEGO1 0x10054b80
inline const char* ClassName() const override // vtable+0xc

View File

@ -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 DeleteEntity(LegoEntity* p_entity);
void FUN_1005b4f0(MxBool p_disable, MxU16 p_flags);
@ -112,7 +112,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; }
@ -154,16 +154,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();
@ -175,7 +175,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);

View File

@ -20,7 +20,11 @@ class LegoPartPresenter : public MxMediaPresenter {
return !strcmp(p_name, LegoPartPresenter::ClassName()) || MxMediaPresenter::IsA(p_name);
}
__declspec(dllexport) static void configureLegoPartPresenter(MxS32, MxS32);
virtual void ReadyTickle() override; // vtable+0x18
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
static void configureLegoPartPresenter(MxS32, MxS32);
// SYNTHETIC: LEGO1 0x1000d060
// LegoPartPresenter::`scalar deleting destructor'

View File

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

View File

@ -48,6 +48,9 @@ class LegoPathControllerList : public MxPtrList<LegoPathController> {
// TEMPLATE: LEGO1 0x1001d3c0
// MxPtrList<LegoPathController>::Destroy
// TEMPLATE: LEGO1 0x1001d440
// MxPtrList<LegoPathController>::~MxPtrList<LegoPathController>
// SYNTHETIC: LEGO1 0x1001d490
// MxCollection<LegoPathController *>::`scalar deleting destructor'
@ -57,4 +60,7 @@ class LegoPathControllerList : public MxPtrList<LegoPathController> {
// SYNTHETIC: LEGO1 0x1001d5b0
// MxPtrList<LegoPathController>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1001d620
// LegoPathControllerList::~LegoPathControllerList
#endif // LEGOPATHCONTROLLERLIST_H

View File

@ -20,6 +20,11 @@ class LegoPhonemePresenter : public MxFlcPresenter {
return "LegoPhonemePresenter";
}
virtual void StartingTickle() override; // vtable+0x1c
virtual void EndAction() override; // vtable+0x40
virtual void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
virtual void PutFrame() override; // vtable+0x6c
// SYNTHETIC: LEGO1 0x1004e320
// LegoPhonemePresenter::`scalar deleting destructor'

View File

@ -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'

View File

@ -2,6 +2,7 @@
#define LEGORACEACTOR_H
#include "legoanimactor.h"
#include "realtime/matrix.h"
// VTABLE: LEGO1 0x100d5b88
class LegoRaceActor : public LegoAnimActor {
@ -19,6 +20,14 @@ class LegoRaceActor : public LegoAnimActor {
return !strcmp(p_name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(p_name);
}
virtual void ParseAction(char*) override; // vtable+0x20
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
virtual void VTable0x68() override; // vtable+0x68
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
virtual MxS32 VTable0x90() override; // vtable+0x90
virtual MxS32 VTable0x94() override; // vtable+0x94
// SYNTHETIC: LEGO1 0x10014ab0
// LegoRaceActor::`scalar deleting destructor'
};

View File

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

View File

@ -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

View File

@ -2,7 +2,7 @@
#define LEGOSTATE_H
#include "decomp.h"
#include "legostream.h"
#include "lego/sources/misc/legostorage.h"
#include "mxcore.h"
#include "mxstring.h"
@ -24,9 +24,9 @@ class LegoState : public MxCore {
return !strcmp(p_name, LegoState::ClassName()) || MxCore::IsA(p_name);
}
virtual MxBool VTable0x14(); // vtable+0x14
virtual MxBool SetFlag(); // vtable+0x18
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream); // vtable+0x1C
virtual MxBool VTable0x14(); // vtable+0x14
virtual MxBool SetFlag(); // vtable+0x18
virtual MxResult VTable0x1c(LegoFile* p_legoFile); // vtable+0x1C
// SYNTHETIC: LEGO1 0x10006160
// LegoState::`scalar deleting destructor'

View File

@ -1,91 +0,0 @@
#ifndef LEGOSTREAM_H
#define LEGOSTREAM_H
#include "compat.h"
#include "decomp.h"
#include "mxstring.h"
#include "mxtypes.h"
#pragma warning(disable : 4237)
#include <iosfwd>
#define LEGOSTREAM_MODE_READ 1
#define LEGOSTREAM_MODE_WRITE 2
class MxVariableTable;
// VTABLE: LEGO1 0x100d7d80
class LegoStream {
public:
LegoStream() : m_mode(0) {}
// FUNCTION: LEGO1 0x10045ad0
inline virtual ~LegoStream() {}
virtual MxResult Read(void* p_buffer, MxU32 p_size) = 0;
virtual MxResult Write(const void* p_buffer, MxU32 p_size) = 0;
virtual MxResult Tell(MxU32* p_offset) = 0;
virtual MxResult Seek(MxU32 p_offset) = 0;
virtual MxBool IsWriteMode();
virtual MxBool IsReadMode();
enum OpenFlags {
c_readBit = 1,
c_writeBit = 2,
c_binaryBit = 4,
};
static MxResult __stdcall WriteVariable(LegoStream* p_stream, MxVariableTable* p_from, const char* p_variableName);
static MxS32 __stdcall ReadVariable(LegoStream* p_stream, MxVariableTable* p_to);
protected:
MxU8 m_mode;
};
// SYNTHETIC: LEGO1 0x10045b00
// LegoStream::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db730
class LegoFileStream : public LegoStream {
public:
LegoFileStream();
virtual ~LegoFileStream() override;
MxResult Read(void* p_buffer, MxU32 p_size) override;
MxResult Write(const void* p_buffer, MxU32 p_size) override;
MxResult Tell(MxU32* p_offset) override;
MxResult Seek(MxU32 p_offset) override;
MxResult Open(const char* p_filename, OpenFlags p_mode);
LegoFileStream* FUN_10006030(MxString p_str);
private:
FILE* m_hFile;
};
// SYNTHETIC: LEGO1 0x10099230
// LegoFileStream::`scalar deleting destructor'
// VTABLE: LEGO1 0x100db710
class LegoMemoryStream : public LegoStream {
public:
LegoMemoryStream(char* p_buffer);
MxResult Read(void* p_buffer, MxU32 p_size) override;
MxResult Write(const void* p_buffer, MxU32 p_size) override;
MxResult Tell(MxU32* p_offset) override;
MxResult Seek(MxU32 p_offset) override;
private:
char* m_buffer;
MxU32 m_offset;
};
// SYNTHETIC: LEGO1 0x10045a80
// LegoMemoryStream::~LegoMemoryStream
// SYNTHETIC: LEGO1 0x100990f0
// LegoMemoryStream::`scalar deleting destructor'
#endif // LEGOSTREAM_H

View 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

View File

@ -2,10 +2,11 @@
#define LEGOUNKSAVEDATAWRITER_H
#include "decomp.h"
#include "lego/sources/misc/legostorage.h"
#include "mxtypes.h"
class AutoROI;
class LegoROI;
class LegoStream;
struct LegoSaveDataEntry3 {
char* m_name;
@ -34,7 +35,8 @@ struct LegoSaveDataEntry3 {
class LegoUnkSaveDataWriter {
public:
MxResult WriteSaveData3(LegoStream* p_stream);
MxResult WriteSaveData3(LegoStorage* p_stream);
AutoROI* FUN_10083500(undefined4, undefined4);
void FUN_10083db0(LegoROI* p_roi);
};

View File

@ -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);

View File

@ -23,6 +23,8 @@ class LegoVehicleBuildState : public LegoState {
return !strcmp(p_name, this->m_className.GetData()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x100260a0
// LegoVehicleBuildState::`scalar deleting destructor'

View File

@ -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,8 +31,9 @@ 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
// FUNCTION: LGEO1 0x1007ab10
virtual MxPresenter* GetPresenterAt(MxS32 p_x, MxS32 p_y); // vtable+0x38
// FUNCTION: LEGO1 0x1007ab10
virtual LegoUnknown100d9d00* VTable0x3c() { return m_unk0x100d9d00; } // vtable+0x3c
void SetSkyColor(float p_red, float p_green, float p_blue);
@ -72,8 +73,8 @@ class LegoVideoManager : public MxVideoManager {
MxS32 m_cursorYCopy; // 0x508
MxS32 m_cursorX; // 0x50c
MxS32 m_cursorY; // 0x510
LPDIRECTDRAWSURFACE m_unk0x514; // 0x514
RECT m_unk0x518; // 0x518
LPDIRECTDRAWSURFACE m_cursorSurface; // 0x514
RECT m_cursorRect; // 0x518
undefined4 m_unk0x528; // 0x528
MxBool m_drawFPS; // 0x52c
RECT m_fpsRect; // 0x530

View File

@ -1,23 +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 CoreSetCompare {
MxS32 operator()(MxCore* const& p_a, MxCore* const& p_b) const { return (MxS32) p_a < (MxS32) p_b; }
};
typedef set<MxCore*, CoreSetCompare> MxCoreSet;
// VTABLE: LEGO1 0x100d6280
// SIZE 0xf8
class LegoWorld : public LegoEntity {
public:
__declspec(dllexport) LegoWorld();
__declspec(dllexport) virtual ~LegoWorld(); // 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
@ -37,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
@ -51,55 +67,96 @@ 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);
MxCore* FUN_10021790(const MxAtomId& p_atom, MxS32 p_objectId);
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[0x14]; // 0xa4
MxPresenterList m_list0xb8; // 0xb8
undefined m_unk0xd0[0x1c]; // 0xd0
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
};
// SYNTHETIC: LEGO1 0x1001eed0
// MxPresenterListCursor::`scalar deleting destructor'
// clang-format off
// TEMPLATE: LEGO1 0x1001d780
// _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 0x1001ef40
// MxPtrListCursor<MxPresenter>::~MxPtrListCursor<MxPresenter>
// TEMPLATE: LEGO1 0x1001d850
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::iterator::_Inc
// SYNTHETIC: LEGO1 0x1001ef90
// MxListCursor<MxPresenter *>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1001d890
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::erase
// SYNTHETIC: LEGO1 0x1001f000
// MxPtrListCursor<MxPresenter>::`scalar deleting destructor'
// TEMPLATE: LEGO1 0x1001dcf0
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Erase
// TEMPLATE: LEGO1 0x1001f070
// MxListCursor<MxPresenter *>::~MxListCursor<MxPresenter *>
// TEMPLATE: LEGO1 0x1001dd30
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Init
// FUNCTION: LEGO1 0x1001f0c0
// MxPresenterListCursor::~MxPresenterListCursor
// TEMPLATE: LEGO1 0x1001ddf0
// list<AutoROI *,allocator<AutoROI *> >::~list<AutoROI *,allocator<AutoROI *> >
// TEMPLATE: LEGO1 0x10020760
// MxListCursor<MxPresenter *>::MxListCursor<MxPresenter *>
// TEMPLATE: LEGO1 0x1001df50
// List<AutoROI *>::~List<AutoROI *>
// TEMPLATE: LEGO1 0x1001de60
// list<AutoROI *,allocator<AutoROI *> >::_Buynode
// TEMPLATE: LEGO1 0x1001de90
// set<MxCore *,CoreSetCompare,allocator<MxCore *> >::~set<MxCore *,CoreSetCompare,allocator<MxCore *> >
// TEMPLATE: LEGO1 0x1001df00
// Set<MxCore *,CoreSetCompare>::~Set<MxCore *,CoreSetCompare>
// TEMPLATE: LEGO1 0x1001f590
// list<AutoROI *,allocator<AutoROI *> >::erase
// TEMPLATE: LEGO1 0x100208b0
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::insert
// TEMPLATE: LEGO1 0x10020b20
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::iterator::_Dec
// XTEMPLATE LEGO1 0x10020b70
// TEMPLATE: LEGO1 0x10020bb0
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Buynode
// TEMPLATE: LEGO1 0x10020bd0
// _Tree<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Insert
// 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<MxCore *,MxCore *,set<MxCore *,CoreSetCompare,allocator<MxCore *> >::_Kfn,CoreSetCompare,allocator<MxCore *> >::_Nil
// clang-format on
#endif // LEGOWORLD_H

View File

@ -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

View File

@ -23,6 +23,13 @@ class Motocycle : public IslePathActor {
return !strcmp(p_name, Motocycle::ClassName()) || IslePathActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual void VTable0x70(float p_float) override; // vtable+0x70
virtual MxU32 VTable0xcc() override; // vtable+0xcc
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
virtual MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
virtual void VTable0xe4() override; // vtable+0xe4
// SYNTHETIC: LEGO1 0x100359d0
// Motocycle::`scalar deleting destructor'

View File

@ -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();

View File

@ -41,12 +41,12 @@ class MxControlPresenter : public MxCompositePresenter {
MxBool FUN_10044480(undefined4, undefined4*);
void FUN_10044540(undefined2);
undefined2 m_unk0x4c; // 0x4c
MxS16 m_unk0x4e; // 0x4e
MxBool m_unk0x50; // 0x50
undefined2 m_unk0x52; // 0x52
undefined2 m_unk0x54; // 0x54
undefined4* m_unk0x58; // 0x58
undefined2 m_unk0x4c; // 0x4c
MxS16 m_unk0x4e; // 0x4e
MxBool m_unk0x50; // 0x50
undefined2 m_unk0x52; // 0x52
undefined2 m_unk0x54; // 0x54
MxS16* m_unk0x58; // 0x58
};
// SYNTHETIC: LEGO1 0x100440f0

View File

@ -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

View File

@ -15,21 +15,23 @@ class Pizza : public IsleActor {
Pizza();
virtual ~Pizza() override;
virtual MxResult Tickle() override; // vtable+08
virtual MxResult Tickle() override; // vtable+0x8
// FUNCTION: LEGO1 0x10037f90
inline const char* ClassName() const // vtable+0c
inline const char* ClassName() const // vtable+0xc
{
// STRING: LEGO1 0x100f038c
return "Pizza";
}
// FUNCTION: LEGO1 0x10037fa0
inline MxBool IsA(const char* p_name) const override // vtable+10
inline MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, Pizza::ClassName()) || IsleActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
// SYNTHETIC: LEGO1 0x100380e0
// Pizza::`scalar deleting destructor'

View File

@ -28,6 +28,8 @@ class PizzaMissionState : public LegoState {
return !strcmp(p_name, PizzaMissionState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; }
// SYNTHETIC: LEGO1 0x10039350

View File

@ -20,6 +20,8 @@ class Pizzeria : public IsleActor {
return !strcmp(p_name, Pizzeria::ClassName()) || IsleActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
// SYNTHETIC: LEGO1 0x1000e8d0
// Pizzeria::`scalar deleting destructor'
};

View File

@ -22,6 +22,8 @@ class PizzeriaState : public LegoState {
return !strcmp(p_name, PizzeriaState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x10017ce0
// PizzeriaState::`scalar deleting destructor'
};

View File

@ -1,7 +1,11 @@
#ifndef POLICE_H
#define POLICE_H
#include "decomp.h"
#include "legoworld.h"
#include "mxdsaction.h"
#include "policestate.h"
#include "radio.h"
// VTABLE: LEGO1 0x100d8a80
// SIZE 0x110
@ -26,8 +30,19 @@ class Police : public LegoWorld {
return !strcmp(p_name, Police::ClassName()) || LegoWorld::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
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
// SYNTHETIC: LEGO1 0x1005e300
// Police::`scalar deleting destructor'
private:
Radio m_radio; // 0xf8
PoliceState* m_policeState; // 0x108
undefined4 m_unk0x10c; // 0x10c
};
#endif // POLICE_H

View File

@ -23,6 +23,8 @@ class PoliceState : public LegoState {
return !strcmp(p_name, PoliceState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x1005e920
// PoliceState::`scalar deleting destructor'

View File

@ -24,6 +24,9 @@ class RaceCar : public IslePathActor {
return !strcmp(p_name, RaceCar::ClassName()) || IslePathActor::IsA(p_name);
}
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
virtual MxU32 VTable0xcc() override; // vtable+0xcc
// SYNTHETIC: LEGO1 0x10028400
// RaceCar::`scalar deleting destructor'

View File

@ -6,6 +6,19 @@
// VTABLE: LEGO1 0x100d48a8
// SIZE 0x68
class RaceStandsEntity : public BuildingEntity {
// FUNCTION: LEGO1 0x1000efa0
inline virtual const char* ClassName() const override // vtable+0x0c
{
// STRING: LEGO1 0x100f0300
return "RaceStandsEntity";
}
// FUNCTION: LEGO1 0x1000efb0
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, RaceStandsEntity::ClassName()) || BuildingEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f9e0
// RaceStandsEntity::`scalar deleting destructor'
};

View File

@ -30,6 +30,8 @@ class RaceState : public LegoState {
return !strcmp(p_name, RaceState::ClassName()) || LegoState::IsA(p_name);
}
virtual MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; }
// SYNTHETIC: LEGO1 0x100160d0

View File

@ -10,6 +10,8 @@ class Radio : public MxCore {
Radio();
virtual ~Radio() override;
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
// FUNCTION: LEGO1 0x1002c8e0
inline virtual const char* ClassName() const override // vtable+0x0c
{
@ -23,6 +25,8 @@ class Radio : public MxCore {
return !strcmp(p_name, Radio::ClassName()) || MxCore::IsA(p_name);
}
void Initialize(MxBool p_und);
// SYNTHETIC: LEGO1 0x1002c970
// Radio::`scalar deleting destructor'

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