mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 18:51:16 +00:00
Merge branch 'master' into flic
This commit is contained in:
commit
17713d2791
@ -30,6 +30,7 @@ QualifierOrder:
|
|||||||
- const
|
- const
|
||||||
- volatile
|
- volatile
|
||||||
- type
|
- type
|
||||||
|
RemoveSemicolon: true
|
||||||
SpaceAfterCStyleCast: true
|
SpaceAfterCStyleCast: true
|
||||||
TabWidth: 4
|
TabWidth: 4
|
||||||
UseTab: ForContinuationAndIndentation
|
UseTab: ForContinuationAndIndentation
|
||||||
|
|||||||
6
.clang-tidy
Normal file
6
.clang-tidy
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Checks: >
|
||||||
|
-*,
|
||||||
|
readability-braces-around-statements,
|
||||||
|
modernize-use-override
|
||||||
|
WarningsAsErrors: '-*,readability-braces-around-statements,modernize-use-override'
|
||||||
|
HeaderFilterRegex: ".*"
|
||||||
30
.github/workflows/analyze.yml
vendored
30
.github/workflows/analyze.yml
vendored
@ -4,31 +4,23 @@ on: [push, pull_request]
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
decomplint-isle:
|
decomplint-isle:
|
||||||
name: 'ISLE annotations'
|
name: '${{ matrix.who }} annotations'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
who:
|
||||||
|
- CONFIG
|
||||||
|
- ISLE
|
||||||
|
- LEGO1
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install python libraries
|
- name: Install python libraries
|
||||||
run: |
|
run: |
|
||||||
pip install -r tools/requirements.txt
|
python -m pip install -r tools/requirements.txt
|
||||||
|
|
||||||
- name: Run decomplint.py
|
- name: Run decomplint.py
|
||||||
run: |
|
run: |
|
||||||
python3 tools/decomplint/decomplint.py ISLE --module ISLE --warnfail
|
tools/decomplint/decomplint.py ${{ matrix.who }} --module ${{ matrix.who }} --warnfail
|
||||||
|
|
||||||
decomplint-lego1:
|
|
||||||
name: 'LEGO1 annotations'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Install python libraries
|
|
||||||
run: |
|
|
||||||
pip install -r tools/requirements.txt
|
|
||||||
|
|
||||||
- name: Run decomplint.py
|
|
||||||
run: |
|
|
||||||
python3 tools/decomplint/decomplint.py LEGO1 --module LEGO1 --warnfail
|
|
||||||
|
|||||||
71
.github/workflows/build.yml
vendored
71
.github/workflows/build.yml
vendored
@ -3,6 +3,10 @@ name: Build
|
|||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
fetch-deps:
|
||||||
|
name: Download original binaries
|
||||||
|
uses: ./.github/workflows/legobin.yml
|
||||||
|
|
||||||
build-current-toolchain:
|
build-current-toolchain:
|
||||||
name: 'Current ${{ matrix.toolchain.name }}'
|
name: 'Current ${{ matrix.toolchain.name }}'
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
@ -14,18 +18,20 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
toolchain:
|
toolchain:
|
||||||
- { name: 'MSVC', shell: 'sh', setup-cmake: true, setup-ninja: true, setup-msvc: true }
|
- { name: 'MSVC', shell: 'sh', setup-cmake: true, setup-ninja: true, setup-msvc: true }
|
||||||
- { name: 'msys2 mingw32', shell: 'msys2 {0}', setup-msys2: true }
|
- { name: 'msys2 mingw32', shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686, clang-tidy: true, werror: true }
|
||||||
|
- { name: 'msys2 clang32', shell: 'msys2 {0}', msystem: clang32, msys-env: mingw-w64-clang-i686, clang-tidy: true, werror: true, no-dx5-libs: true }
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set up MSYS2
|
- name: Set up MSYS2
|
||||||
if: matrix.toolchain.setup-msys2
|
if: ${{ !!matrix.toolchain.msystem }}
|
||||||
uses: msys2/setup-msys2@v2
|
uses: msys2/setup-msys2@v2
|
||||||
with:
|
with:
|
||||||
msystem: mingw32
|
msystem: ${{ matrix.toolchain.msystem }}
|
||||||
install: >-
|
install: >-
|
||||||
mingw-w64-i686-cc
|
${{ matrix.toolchain.msys-env }}-cc
|
||||||
mingw-w64-i686-cmake
|
${{ matrix.toolchain.msys-env }}-cmake
|
||||||
mingw-w64-i686-ninja
|
${{ matrix.toolchain.msys-env }}-ninja
|
||||||
|
${{ matrix.toolchain.msys-env }}-clang-tools-extra
|
||||||
|
|
||||||
- name: Setup cmake
|
- name: Setup cmake
|
||||||
if: matrix.toolchain.setup-cmake
|
if: matrix.toolchain.setup-cmake
|
||||||
@ -41,21 +47,26 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
arch: amd64_x86 # Use the 64-bit x64-native cross tools to build 32-bit x86 code
|
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
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -GNinja -Werror=dev
|
cmake -S . -B build -GNinja \
|
||||||
cmake --build build
|
-DCMAKE_BUILD_TYPE=Debug \
|
||||||
|
-DISLE_USE_DX5_LIBS=${{ !matrix.toolchain.no-dx5-libs }} \
|
||||||
|
-DENABLE_CLANG_TIDY=${{ !!matrix.toolchain.clang-tidy }} \
|
||||||
|
-DISLE_WERROR=${{ !!matrix.toolchain.werror }} \
|
||||||
|
-Werror=dev
|
||||||
|
cmake --build build -- -k0
|
||||||
|
|
||||||
build:
|
build:
|
||||||
name: 'MSVC 4.20'
|
name: 'MSVC 4.20'
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: 'itsmattkc/msvc420'
|
repository: 'itsmattkc/msvc420'
|
||||||
path: msvc420
|
path: msvc420
|
||||||
@ -64,11 +75,11 @@ jobs:
|
|||||||
uses: jwlawson/actions-setup-cmake@v1.13
|
uses: jwlawson/actions-setup-cmake@v1.13
|
||||||
with:
|
with:
|
||||||
# Use minimum supported version
|
# Use minimum supported version
|
||||||
cmake-version: '3.13.x'
|
cmake-version: '3.15.x'
|
||||||
|
|
||||||
- name: Patch MSVC 4.2
|
- name: Patch MSVC 4.2
|
||||||
run: |
|
run: |
|
||||||
python tools/patch_c2.py msvc420/bin/C2.EXE
|
tools/patch_c2.py msvc420/bin/C2.EXE
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
shell: cmd
|
shell: cmd
|
||||||
@ -82,6 +93,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: Win32
|
name: Win32
|
||||||
path: |
|
path: |
|
||||||
|
build/CONFIG.EXE
|
||||||
|
build/CONFIG.PDB
|
||||||
build/ISLE.EXE
|
build/ISLE.EXE
|
||||||
build/ISLE.PDB
|
build/ISLE.PDB
|
||||||
build/LEGO1.DLL
|
build/LEGO1.DLL
|
||||||
@ -89,7 +102,7 @@ jobs:
|
|||||||
|
|
||||||
compare:
|
compare:
|
||||||
name: 'Compare with master'
|
name: 'Compare with master'
|
||||||
needs: build
|
needs: [build, fetch-deps]
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@master
|
- uses: actions/checkout@master
|
||||||
@ -103,19 +116,7 @@ jobs:
|
|||||||
id: cache-original-binaries
|
id: cache-original-binaries
|
||||||
uses: actions/cache/restore@v3
|
uses: actions/cache/restore@v3
|
||||||
with:
|
with:
|
||||||
path: legobin
|
enableCrossOsArchive: true
|
||||||
key: legobin
|
|
||||||
|
|
||||||
- name: Download original island binares
|
|
||||||
if: ${{ !steps.cache-original-binaries.outputs.cache-hit }}
|
|
||||||
run: |
|
|
||||||
C:\msys64\usr\bin\wget.exe https://legoisland.org/download/ISLE.EXE --directory-prefix=legobin
|
|
||||||
C:\msys64\usr\bin\wget.exe https://legoisland.org/download/LEGO1.DLL --directory-prefix=legobin
|
|
||||||
|
|
||||||
- name: Cache original binaries
|
|
||||||
if: ${{ !steps.cache-original-binaries.outputs.cache-hit }}
|
|
||||||
uses: actions/cache/save@v3
|
|
||||||
with:
|
|
||||||
path: legobin
|
path: legobin
|
||||||
key: legobin
|
key: legobin
|
||||||
|
|
||||||
@ -127,6 +128,7 @@ jobs:
|
|||||||
- name: Summarize Accuracy
|
- name: Summarize Accuracy
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
python3 tools/reccmp/reccmp.py -S CONFIGPROGRESS.SVG --svg-icon tools/reccmp/config.png -H CONFIGPROGRESS.HTML legobin/CONFIG.EXE build/CONFIG.EXE build/CONFIG.PDB . | tee CONFIGPROGRESS.TXT
|
||||||
python3 tools/reccmp/reccmp.py -S ISLEPROGRESS.SVG --svg-icon tools/reccmp/isle.png -H ISLEPROGRESS.HTML legobin/ISLE.EXE build/ISLE.EXE build/ISLE.PDB . | tee ISLEPROGRESS.TXT
|
python3 tools/reccmp/reccmp.py -S ISLEPROGRESS.SVG --svg-icon tools/reccmp/isle.png -H ISLEPROGRESS.HTML legobin/ISLE.EXE build/ISLE.EXE build/ISLE.PDB . | tee ISLEPROGRESS.TXT
|
||||||
python3 tools/reccmp/reccmp.py -S LEGO1PROGRESS.SVG -T 4252 --svg-icon tools/reccmp/lego1.png -H LEGO1PROGRESS.HTML legobin/LEGO1.DLL build/LEGO1.DLL build/LEGO1.PDB . | tee LEGO1PROGRESS.TXT
|
python3 tools/reccmp/reccmp.py -S LEGO1PROGRESS.SVG -T 4252 --svg-icon tools/reccmp/lego1.png -H LEGO1PROGRESS.HTML legobin/LEGO1.DLL build/LEGO1.DLL build/LEGO1.PDB . | tee LEGO1PROGRESS.TXT
|
||||||
|
|
||||||
@ -134,20 +136,23 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
# Compare with current master
|
# Compare with current master
|
||||||
curl -fLSs -o ISLEPROGRESS-OLD.TXT https://github.com/isledecomp/isle/releases/download/continuous/ISLEPROGRESS.TXT
|
curl -fLSs -o CONFIGPROGRESS-OLD.TXT https://github.com/isledecomp/isle/releases/download/continuous/CONFIGPROGRESS.TXT || echo "" >CONFIGPROGRESS-OLD.TXT
|
||||||
curl -fLSs -o LEGO1PROGRESS-OLD.TXT https://github.com/isledecomp/isle/releases/download/continuous/LEGO1PROGRESS.TXT
|
curl -fLSs -o ISLEPROGRESS-OLD.TXT https://github.com/isledecomp/isle/releases/download/continuous/ISLEPROGRESS.TXT || echo "" >ISLEPROGRESS-OLD.TXT
|
||||||
|
curl -fLSs -o LEGO1PROGRESS-OLD.TXT https://github.com/isledecomp/isle/releases/download/continuous/LEGO1PROGRESS.TXT || echo "" >LEGO1PROGRESS-OLD.TXT
|
||||||
|
|
||||||
|
diff -u0 CONFIGPROGRESS-OLD.TXT CONFIGPROGRESS.TXT || true
|
||||||
diff -u0 ISLEPROGRESS-OLD.TXT ISLEPROGRESS.TXT || true
|
diff -u0 ISLEPROGRESS-OLD.TXT ISLEPROGRESS.TXT || true
|
||||||
diff -u0 LEGO1PROGRESS-OLD.TXT LEGO1PROGRESS.TXT || true
|
diff -u0 LEGO1PROGRESS-OLD.TXT LEGO1PROGRESS.TXT || true
|
||||||
|
|
||||||
- name: Test Exports
|
- name: Test Exports
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
python3 tools/verexp/verexp.py legobin/LEGO1.DLL build/LEGO1.DLL
|
tools/verexp/verexp.py legobin/LEGO1.DLL build/LEGO1.DLL
|
||||||
|
|
||||||
- name: Check Vtables
|
- name: Check Vtables
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
python3 tools/vtable/vtable.py legobin/CONFIG.EXE build/CONFIG.EXE build/CONFIG.PDB .
|
||||||
python3 tools/vtable/vtable.py legobin/ISLE.EXE build/ISLE.EXE build/ISLE.PDB .
|
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 .
|
python3 tools/vtable/vtable.py legobin/LEGO1.DLL build/LEGO1.DLL build/LEGO1.PDB .
|
||||||
|
|
||||||
@ -156,6 +161,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: Accuracy Report
|
name: Accuracy Report
|
||||||
path: |
|
path: |
|
||||||
|
CONFIGPROGRESS.*
|
||||||
ISLEPROGRESS.*
|
ISLEPROGRESS.*
|
||||||
LEGO1PROGRESS.*
|
LEGO1PROGRESS.*
|
||||||
|
|
||||||
@ -165,7 +171,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'isledecomp/isle' }}
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'isledecomp/isle' }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
repository: 'probonopd/uploadtool'
|
repository: 'probonopd/uploadtool'
|
||||||
|
|
||||||
@ -184,10 +190,13 @@ jobs:
|
|||||||
UPLOAD_KEY: ${{ secrets.UPLOAD_KEY }}
|
UPLOAD_KEY: ${{ secrets.UPLOAD_KEY }}
|
||||||
run: |
|
run: |
|
||||||
./upload.sh \
|
./upload.sh \
|
||||||
|
build/CONFIG.EXE \
|
||||||
build/ISLE.EXE \
|
build/ISLE.EXE \
|
||||||
build/LEGO1.DLL \
|
build/LEGO1.DLL \
|
||||||
|
CONFIGPROGRESS.* \
|
||||||
ISLEPROGRESS.* \
|
ISLEPROGRESS.* \
|
||||||
LEGO1PROGRESS.*
|
LEGO1PROGRESS.*
|
||||||
|
|
||||||
|
curl -X POST -F key=$UPLOAD_KEY -F 'file=@CONFIGPROGRESS.SVG' https://legoisland.org/progress/
|
||||||
curl -X POST -F key=$UPLOAD_KEY -F 'file=@ISLEPROGRESS.SVG' https://legoisland.org/progress/
|
curl -X POST -F key=$UPLOAD_KEY -F 'file=@ISLEPROGRESS.SVG' https://legoisland.org/progress/
|
||||||
curl -X POST -F key=$UPLOAD_KEY -F 'file=@LEGO1PROGRESS.SVG' https://legoisland.org/progress/
|
curl -X POST -F key=$UPLOAD_KEY -F 'file=@LEGO1PROGRESS.SVG' https://legoisland.org/progress/
|
||||||
|
|||||||
11
.github/workflows/format.yml
vendored
11
.github/workflows/format.yml
vendored
@ -8,28 +8,27 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Run clang-format
|
- name: Run clang-format
|
||||||
run: |
|
run: |
|
||||||
find LEGO1 ISLE -iname '*.h' -o -iname '*.cpp' | xargs \
|
find CONFIG LEGO1 ISLE -iname '*.h' -o -iname '*.cpp' | xargs \
|
||||||
pipx run "clang-format>=17,<18" \
|
pipx run "clang-format>=17,<18" \
|
||||||
--Werror \
|
|
||||||
--dry-run \
|
|
||||||
--style=file \
|
--style=file \
|
||||||
-i
|
-i
|
||||||
|
git diff --exit-code
|
||||||
|
|
||||||
python-format:
|
python-format:
|
||||||
name: 'Python'
|
name: 'Python'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install python libraries
|
- name: Install python libraries
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
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
|
- name: Run pylint and black
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
32
.github/workflows/legobin.yml
vendored
Normal file
32
.github/workflows/legobin.yml
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
name: Download legobin
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
fetch:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Restore cached original binaries
|
||||||
|
id: cache-original-binaries
|
||||||
|
uses: actions/cache/restore@v3
|
||||||
|
with:
|
||||||
|
enableCrossOsArchive: true
|
||||||
|
path: legobin
|
||||||
|
key: legobin
|
||||||
|
|
||||||
|
- name: Download original island binaries
|
||||||
|
if: ${{ !steps.cache-original-binaries.outputs.cache-hit }}
|
||||||
|
run: |
|
||||||
|
wget https://legoisland.org/download/CONFIG.EXE --directory-prefix=legobin
|
||||||
|
wget https://legoisland.org/download/ISLE.EXE --directory-prefix=legobin
|
||||||
|
wget https://legoisland.org/download/LEGO1.DLL --directory-prefix=legobin
|
||||||
|
|
||||||
|
- name: Cache original binaries
|
||||||
|
if: ${{ !steps.cache-original-binaries.outputs.cache-hit }}
|
||||||
|
uses: actions/cache/save@v3
|
||||||
|
with:
|
||||||
|
enableCrossOsArchive: true
|
||||||
|
path: legobin
|
||||||
|
key: legobin
|
||||||
2
.github/workflows/naming.yml
vendored
2
.github/workflows/naming.yml
vendored
@ -8,7 +8,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install LLVM and Clang
|
- name: Install LLVM and Clang
|
||||||
uses: KyleMayes/install-llvm-action@v1
|
uses: KyleMayes/install-llvm-action@v1
|
||||||
|
|||||||
30
.github/workflows/unittest.yml
vendored
30
.github/workflows/unittest.yml
vendored
@ -3,12 +3,25 @@ name: Test
|
|||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
fetch-deps:
|
||||||
|
name: Download original binaries
|
||||||
|
uses: ./.github/workflows/legobin.yml
|
||||||
|
|
||||||
pytest-win:
|
pytest-win:
|
||||||
name: 'Python Windows'
|
name: 'Python Windows'
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
needs: fetch-deps
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Restore cached original binaries
|
||||||
|
id: cache-original-binaries
|
||||||
|
uses: actions/cache/restore@v3
|
||||||
|
with:
|
||||||
|
enableCrossOsArchive: true
|
||||||
|
path: legobin
|
||||||
|
key: legobin
|
||||||
|
|
||||||
- name: Install python libraries
|
- name: Install python libraries
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -18,14 +31,23 @@ jobs:
|
|||||||
- name: Run python unit tests (Windows)
|
- name: Run python unit tests (Windows)
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
pytest tools/isledecomp
|
pytest tools/isledecomp --lego1=legobin/LEGO1.DLL
|
||||||
|
|
||||||
pytest-ubuntu:
|
pytest-ubuntu:
|
||||||
name: 'Python Linux'
|
name: 'Python Linux'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
needs: fetch-deps
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Restore cached original binaries
|
||||||
|
id: cache-original-binaries
|
||||||
|
uses: actions/cache/restore@v3
|
||||||
|
with:
|
||||||
|
enableCrossOsArchive: true
|
||||||
|
path: legobin
|
||||||
|
key: legobin
|
||||||
|
|
||||||
- name: Install python libraries
|
- name: Install python libraries
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -35,4 +57,4 @@ jobs:
|
|||||||
- name: Run python unit tests (Ubuntu)
|
- name: Run python unit tests (Ubuntu)
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
pytest tools/isledecomp
|
pytest tools/isledecomp --lego1=legobin/LEGO1.DLL
|
||||||
|
|||||||
494
CMakeLists.txt
494
CMakeLists.txt
@ -1,7 +1,22 @@
|
|||||||
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
|
cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
|
||||||
|
|
||||||
|
# MSVC runtime library flags are selected by an abstraction
|
||||||
|
cmake_policy(SET CMP0091 NEW)
|
||||||
|
|
||||||
project(isle CXX)
|
project(isle CXX)
|
||||||
|
|
||||||
|
include(CheckCXXSourceCompiles)
|
||||||
|
include(CMakeDependentOption)
|
||||||
|
include(CMakePushCheckState)
|
||||||
|
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
|
||||||
|
option(ENABLE_CLANG_TIDY "Enable clang-tidy")
|
||||||
|
if (ENABLE_CLANG_TIDY)
|
||||||
|
find_program(CLANG_TIDY_BIN NAMES "clang-tidy")
|
||||||
|
set(CMAKE_C_CLANG_TIDY "${CLANG_TIDY_BIN}")
|
||||||
|
set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_BIN}")
|
||||||
|
endif()
|
||||||
|
|
||||||
math(EXPR bits "8 * ${CMAKE_SIZEOF_VOID_P}")
|
math(EXPR bits "8 * ${CMAKE_SIZEOF_VOID_P}")
|
||||||
message(STATUS "Building ${bits}-bit LEGO Island")
|
message(STATUS "Building ${bits}-bit LEGO Island")
|
||||||
if (NOT bits EQUAL 32)
|
if (NOT bits EQUAL 32)
|
||||||
@ -16,11 +31,239 @@ if (MSVC)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(lego1_targets)
|
||||||
|
macro(register_lego1_target __target)
|
||||||
|
list(APPEND lego1_targets ${__target})
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
function(add_cxx_warning WARNING)
|
||||||
|
if(ISLE_WERROR)
|
||||||
|
set(compiler_option "-Werror=${WARNING}")
|
||||||
|
else()
|
||||||
|
set(compiler_option "-W${WARNING}")
|
||||||
|
endif()
|
||||||
|
string(MAKE_C_IDENTIFIER "COMPILER_SUPPORTS${compiler_option}" varname)
|
||||||
|
|
||||||
|
cmake_push_check_state(RESET)
|
||||||
|
set(CMAKE_REQUIRED_FLAGS "${compiler_option} ")
|
||||||
|
if(MSVC)
|
||||||
|
string(APPEND CMAKE_REQUIRED_FLAGS "/WX")
|
||||||
|
else()
|
||||||
|
string(APPEND CMAKE_REQUIRED_FLAGS "-Werror")
|
||||||
|
endif()
|
||||||
|
check_cxx_source_compiles("int main() { return 0; }" ${varname})
|
||||||
|
cmake_pop_check_state()
|
||||||
|
|
||||||
|
if(${varname})
|
||||||
|
add_compile_options(${compiler_option})
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
message(STATUS "MSVC for decompilation: ${MSVC_FOR_DECOMP}")
|
message(STATUS "MSVC for decompilation: ${MSVC_FOR_DECOMP}")
|
||||||
|
|
||||||
|
option(ISLE_WERROR "Treat warnings as errors" OFF)
|
||||||
option(ISLE_BUILD_APP "Build ISLE.EXE application" ON)
|
option(ISLE_BUILD_APP "Build ISLE.EXE application" ON)
|
||||||
|
cmake_dependent_option(ISLE_BUILD_CONFIG "Build CONFIG.EXE application" ON "NOT MINGW" OFF)
|
||||||
option(ISLE_USE_SMARTHEAP "Build with SmartHeap" ${MSVC_FOR_DECOMP})
|
option(ISLE_USE_SMARTHEAP "Build with SmartHeap" ${MSVC_FOR_DECOMP})
|
||||||
option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" ON)
|
option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" ON)
|
||||||
|
cmake_dependent_option(ISLE_USE_DX5_LIBS "Build with internal DirectX 5 SDK Libraries" ON ISLE_USE_DX5 OFF)
|
||||||
|
|
||||||
|
add_cxx_warning(parentheses)
|
||||||
|
|
||||||
|
add_library(DirectX5::DirectX5 INTERFACE IMPORTED)
|
||||||
|
target_include_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
|
||||||
|
if(ISLE_USE_DX5_LIBS)
|
||||||
|
target_link_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
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}/LEGO1/lego/sources" "${CMAKE_SOURCE_DIR}/util")
|
||||||
|
target_link_libraries(roi PRIVATE)
|
||||||
|
|
||||||
|
add_library(anim STATIC
|
||||||
|
LEGO1/lego/sources/anim/legoanim.cpp
|
||||||
|
)
|
||||||
|
register_lego1_target(anim)
|
||||||
|
set_property(TARGET anim PROPERTY ARCHIVE_OUTPUT_NAME "anim$<$<CONFIG:Debug>:d>")
|
||||||
|
target_include_directories(anim PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources" "${CMAKE_SOURCE_DIR}/util")
|
||||||
|
target_link_libraries(anim PRIVATE)
|
||||||
|
|
||||||
|
add_library(misc STATIC
|
||||||
|
LEGO1/lego/sources/misc/legocontainer.cpp
|
||||||
|
LEGO1/lego/sources/misc/legoimage.cpp
|
||||||
|
LEGO1/lego/sources/misc/legostorage.cpp
|
||||||
|
LEGO1/lego/sources/misc/legotexture.cpp
|
||||||
|
LEGO1/lego/sources/misc/legotree.cpp
|
||||||
|
)
|
||||||
|
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}/LEGO1" "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources" "${CMAKE_SOURCE_DIR}/util")
|
||||||
|
target_link_libraries(misc PRIVATE)
|
||||||
|
|
||||||
|
add_library(3dmanager STATIC
|
||||||
|
LEGO1/lego/sources/3dmanager/lego3dmanager.cpp
|
||||||
|
LEGO1/lego/sources/3dmanager/lego3dview.cpp
|
||||||
|
LEGO1/lego/sources/3dmanager/legoview1.cpp
|
||||||
|
LEGO1/lego/sources/3dmanager/tglsurface.cpp
|
||||||
|
)
|
||||||
|
register_lego1_target(3dmanager)
|
||||||
|
set_property(TARGET 3dmanager PROPERTY ARCHIVE_OUTPUT_NAME "3dmanager$<$<CONFIG:Debug>:d>")
|
||||||
|
target_include_directories(3dmanager PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
|
||||||
|
target_link_libraries(3dmanager PRIVATE Vec::Vec)
|
||||||
|
|
||||||
|
add_library(omni STATIC
|
||||||
|
LEGO1/omni/src/action/mxdsaction.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsanim.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsevent.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsmediaaction.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsmultiaction.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsobjectaction.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsobject.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsparallelaction.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsselectaction.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsserialaction.cpp
|
||||||
|
LEGO1/omni/src/action/mxdssound.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsstill.cpp
|
||||||
|
LEGO1/omni/src/action/mxdsstreamingaction.cpp
|
||||||
|
LEGO1/omni/src/audio/mxaudiomanager.cpp
|
||||||
|
LEGO1/omni/src/audio/mxaudiopresenter.cpp
|
||||||
|
LEGO1/omni/src/audio/mxloopingmidipresenter.cpp
|
||||||
|
LEGO1/omni/src/audio/mxmidipresenter.cpp
|
||||||
|
LEGO1/omni/src/audio/mxmusicmanager.cpp
|
||||||
|
LEGO1/omni/src/audio/mxmusicpresenter.cpp
|
||||||
|
LEGO1/omni/src/audio/mxsoundmanager.cpp
|
||||||
|
LEGO1/omni/src/audio/mxsoundpresenter.cpp
|
||||||
|
LEGO1/omni/src/audio/mxwavepresenter.cpp
|
||||||
|
LEGO1/omni/src/common/mxatomidcounter.cpp
|
||||||
|
LEGO1/omni/src/common/mxatomid.cpp
|
||||||
|
LEGO1/omni/src/common/mxcompositepresenter.cpp
|
||||||
|
LEGO1/omni/src/common/mxcore.cpp
|
||||||
|
LEGO1/omni/src/common/mxmediamanager.cpp
|
||||||
|
LEGO1/omni/src/common/mxmediapresenter.cpp
|
||||||
|
LEGO1/omni/src/common/mxobjectfactory.cpp
|
||||||
|
LEGO1/omni/src/common/mxpresenter.cpp
|
||||||
|
LEGO1/omni/src/common/mxstring.cpp
|
||||||
|
LEGO1/omni/src/common/mxticklemanager.cpp
|
||||||
|
LEGO1/omni/src/common/mxtimer.cpp
|
||||||
|
LEGO1/omni/src/common/mxutil.cpp
|
||||||
|
LEGO1/omni/src/common/mxvariable.cpp
|
||||||
|
LEGO1/omni/src/common/mxvariabletable.cpp
|
||||||
|
LEGO1/omni/src/entity/mxentity.cpp
|
||||||
|
LEGO1/omni/src/event/mxeventmanager.cpp
|
||||||
|
LEGO1/omni/src/event/mxeventpresenter.cpp
|
||||||
|
LEGO1/omni/src/main/mxomni.cpp
|
||||||
|
LEGO1/omni/src/main/mxomnicreateflags.cpp
|
||||||
|
LEGO1/omni/src/main/mxomnicreateparam.cpp
|
||||||
|
LEGO1/omni/src/notify/mxactionnotificationparam.cpp
|
||||||
|
LEGO1/omni/src/notify/mxnotificationmanager.cpp
|
||||||
|
LEGO1/omni/src/notify/mxnotificationparam.cpp
|
||||||
|
LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp
|
||||||
|
LEGO1/omni/src/stream/mxdiskstreamprovider.cpp
|
||||||
|
LEGO1/omni/src/stream/mxdsbuffer.cpp
|
||||||
|
LEGO1/omni/src/stream/mxdschunk.cpp
|
||||||
|
LEGO1/omni/src/stream/mxdsfile.cpp
|
||||||
|
LEGO1/omni/src/stream/mxdssource.cpp
|
||||||
|
LEGO1/omni/src/stream/mxdssubscriber.cpp
|
||||||
|
LEGO1/omni/src/stream/mxioinfo.cpp
|
||||||
|
LEGO1/omni/src/stream/mxramstreamcontroller.cpp
|
||||||
|
LEGO1/omni/src/stream/mxramstreamprovider.cpp
|
||||||
|
LEGO1/omni/src/stream/mxstreamchunk.cpp
|
||||||
|
LEGO1/omni/src/stream/mxstreamcontroller.cpp
|
||||||
|
LEGO1/omni/src/stream/mxstreamer.cpp
|
||||||
|
LEGO1/omni/src/stream/mxstreamlist.cpp
|
||||||
|
LEGO1/omni/src/stream/mxstreamprovider.cpp
|
||||||
|
LEGO1/omni/src/system/mxautolocker.cpp
|
||||||
|
LEGO1/omni/src/system/mxcriticalsection.cpp
|
||||||
|
LEGO1/omni/src/system/mxscheduler.cpp
|
||||||
|
LEGO1/omni/src/system/mxsemaphore.cpp
|
||||||
|
LEGO1/omni/src/system/mxthread.cpp
|
||||||
|
LEGO1/omni/src/video/mxbitmap.cpp
|
||||||
|
LEGO1/omni/src/video/mxdisplaysurface.cpp
|
||||||
|
LEGO1/omni/src/video/mxflcpresenter.cpp
|
||||||
|
LEGO1/omni/src/video/mxloopingflcpresenter.cpp
|
||||||
|
LEGO1/omni/src/video/mxloopingsmkpresenter.cpp
|
||||||
|
LEGO1/omni/src/video/mxpalette.cpp
|
||||||
|
LEGO1/omni/src/video/mxregion.cpp
|
||||||
|
LEGO1/omni/src/video/mxregioncursor.cpp
|
||||||
|
LEGO1/omni/src/video/mxsmack.cpp
|
||||||
|
LEGO1/omni/src/video/mxsmkpresenter.cpp
|
||||||
|
LEGO1/omni/src/video/mxstillpresenter.cpp
|
||||||
|
LEGO1/omni/src/video/mxvideomanager.cpp
|
||||||
|
LEGO1/omni/src/video/mxvideoparam.cpp
|
||||||
|
LEGO1/omni/src/video/mxvideoparamflags.cpp
|
||||||
|
LEGO1/omni/src/video/mxvideopresenter.cpp
|
||||||
|
)
|
||||||
|
register_lego1_target(omni)
|
||||||
|
set_property(TARGET omni PROPERTY ARCHIVE_OUTPUT_NAME "omni$<$<CONFIG:Debug>:d>")
|
||||||
|
target_include_directories(omni PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include" "${CMAKE_SOURCE_DIR}/LEGO1" "${CMAKE_SOURCE_DIR}/util")
|
||||||
|
target_link_libraries(omni PRIVATE dsound winmm FLIC::FLIC Smacker::Smacker)
|
||||||
|
|
||||||
add_library(lego1 SHARED
|
add_library(lego1 SHARED
|
||||||
LEGO1/define.cpp
|
LEGO1/define.cpp
|
||||||
@ -36,6 +279,8 @@ add_library(lego1 SHARED
|
|||||||
LEGO1/lego/legoomni/src/audio/legocachesound.cpp
|
LEGO1/lego/legoomni/src/audio/legocachesound.cpp
|
||||||
LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp
|
LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp
|
||||||
LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp
|
LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp
|
||||||
|
LEGO1/lego/legoomni/src/audio/legounknown100d5778.cpp
|
||||||
|
LEGO1/lego/legoomni/src/audio/legounknown100d6b4c.cpp
|
||||||
LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp
|
LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp
|
||||||
LEGO1/lego/legoomni/src/build/buildingentity.cpp
|
LEGO1/lego/legoomni/src/build/buildingentity.cpp
|
||||||
LEGO1/lego/legoomni/src/build/dunebuggy.cpp
|
LEGO1/lego/legoomni/src/build/dunebuggy.cpp
|
||||||
@ -47,7 +292,6 @@ add_library(lego1 SHARED
|
|||||||
LEGO1/lego/legoomni/src/build/legovehiclebuildstate.cpp
|
LEGO1/lego/legoomni/src/build/legovehiclebuildstate.cpp
|
||||||
LEGO1/lego/legoomni/src/build/racecar.cpp
|
LEGO1/lego/legoomni/src/build/racecar.cpp
|
||||||
LEGO1/lego/legoomni/src/common/animstate.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/legoactioncontrolpresenter.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp
|
LEGO1/lego/legoomni/src/common/legobackgroundcolor.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legofullscreenmovie.cpp
|
LEGO1/lego/legoomni/src/common/legofullscreenmovie.cpp
|
||||||
@ -55,9 +299,10 @@ add_library(lego1 SHARED
|
|||||||
LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp
|
LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legoplantmanager.cpp
|
LEGO1/lego/legoomni/src/common/legoplantmanager.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legostate.cpp
|
LEGO1/lego/legoomni/src/common/legostate.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legostream.cpp
|
LEGO1/lego/legoomni/src/common/legotextureinfo.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legounksavedatawriter.cpp
|
LEGO1/lego/legoomni/src/common/legounksavedatawriter.cpp
|
||||||
LEGO1/lego/legoomni/src/common/legoutil.cpp
|
LEGO1/lego/legoomni/src/common/legoutil.cpp
|
||||||
|
LEGO1/lego/legoomni/src/common/legovariables.cpp
|
||||||
LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp
|
LEGO1/lego/legoomni/src/common/mxcompositemediapresenter.cpp
|
||||||
LEGO1/lego/legoomni/src/control/legocontrolmanager.cpp
|
LEGO1/lego/legoomni/src/control/legocontrolmanager.cpp
|
||||||
LEGO1/lego/legoomni/src/control/mxcontrolpresenter.cpp
|
LEGO1/lego/legoomni/src/control/mxcontrolpresenter.cpp
|
||||||
@ -144,153 +389,37 @@ add_library(lego1 SHARED
|
|||||||
LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp
|
LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp
|
||||||
LEGO1/lego/legoomni/src/video/legovideomanager.cpp
|
LEGO1/lego/legoomni/src/video/legovideomanager.cpp
|
||||||
LEGO1/lego/legoomni/src/video/mxtransitionmanager.cpp
|
LEGO1/lego/legoomni/src/video/mxtransitionmanager.cpp
|
||||||
LEGO1/lego/sources/3dmanager/lego3dmanager.cpp
|
|
||||||
LEGO1/lego/sources/3dmanager/lego3dview.cpp
|
|
||||||
LEGO1/lego/sources/3dmanager/legoview1.cpp
|
|
||||||
LEGO1/lego/sources/3dmanager/tglsurface.cpp
|
|
||||||
LEGO1/lego/sources/roi/legoroi.cpp
|
|
||||||
LEGO1/main.cpp
|
LEGO1/main.cpp
|
||||||
LEGO1/mxdirectx/mxdirect3d.cpp
|
|
||||||
LEGO1/mxdirectx/mxdirectdraw.cpp
|
|
||||||
LEGO1/mxgeometry/mxgeometry3d.cpp
|
|
||||||
LEGO1/mxgeometry/mxmatrix.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsaction.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsanim.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsevent.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsmediaaction.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsmultiaction.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsobjectaction.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsobject.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsparallelaction.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsselectaction.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsserialaction.cpp
|
|
||||||
LEGO1/omni/src/action/mxdssound.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsstill.cpp
|
|
||||||
LEGO1/omni/src/action/mxdsstreamingaction.cpp
|
|
||||||
LEGO1/omni/src/audio/mxaudiomanager.cpp
|
|
||||||
LEGO1/omni/src/audio/mxaudiopresenter.cpp
|
|
||||||
LEGO1/omni/src/audio/mxloopingmidipresenter.cpp
|
|
||||||
LEGO1/omni/src/audio/mxmidipresenter.cpp
|
|
||||||
LEGO1/omni/src/audio/mxmusicmanager.cpp
|
|
||||||
LEGO1/omni/src/audio/mxmusicpresenter.cpp
|
|
||||||
LEGO1/omni/src/audio/mxsoundmanager.cpp
|
|
||||||
LEGO1/omni/src/audio/mxsoundpresenter.cpp
|
|
||||||
LEGO1/omni/src/audio/mxwavepresenter.cpp
|
|
||||||
LEGO1/omni/src/common/mxatomidcounter.cpp
|
|
||||||
LEGO1/omni/src/common/mxatomid.cpp
|
|
||||||
LEGO1/omni/src/common/mxcompositepresenter.cpp
|
|
||||||
LEGO1/omni/src/common/mxcore.cpp
|
|
||||||
LEGO1/omni/src/common/mxmediamanager.cpp
|
|
||||||
LEGO1/omni/src/common/mxmediapresenter.cpp
|
|
||||||
LEGO1/omni/src/common/mxobjectfactory.cpp
|
|
||||||
LEGO1/omni/src/common/mxpresenter.cpp
|
|
||||||
LEGO1/omni/src/common/mxstring.cpp
|
|
||||||
LEGO1/omni/src/common/mxticklemanager.cpp
|
|
||||||
LEGO1/omni/src/common/mxtimer.cpp
|
|
||||||
LEGO1/omni/src/common/mxutil.cpp
|
|
||||||
LEGO1/omni/src/common/mxvariable.cpp
|
|
||||||
LEGO1/omni/src/common/mxvariabletable.cpp
|
|
||||||
LEGO1/omni/src/entity/mxentity.cpp
|
|
||||||
LEGO1/omni/src/event/mxeventmanager.cpp
|
|
||||||
LEGO1/omni/src/event/mxeventpresenter.cpp
|
|
||||||
LEGO1/omni/src/main/mxomni.cpp
|
|
||||||
LEGO1/omni/src/main/mxomnicreateflags.cpp
|
|
||||||
LEGO1/omni/src/main/mxomnicreateparam.cpp
|
|
||||||
LEGO1/omni/src/notify/mxactionnotificationparam.cpp
|
|
||||||
LEGO1/omni/src/notify/mxnotificationmanager.cpp
|
|
||||||
LEGO1/omni/src/notify/mxnotificationparam.cpp
|
|
||||||
LEGO1/omni/src/notify/mxtype17notificationparam.cpp
|
|
||||||
LEGO1/omni/src/stream/mxdiskstreamcontroller.cpp
|
|
||||||
LEGO1/omni/src/stream/mxdiskstreamprovider.cpp
|
|
||||||
LEGO1/omni/src/stream/mxdsbuffer.cpp
|
|
||||||
LEGO1/omni/src/stream/mxdschunk.cpp
|
|
||||||
LEGO1/omni/src/stream/mxdsfile.cpp
|
|
||||||
LEGO1/omni/src/stream/mxdssource.cpp
|
|
||||||
LEGO1/omni/src/stream/mxdssubscriber.cpp
|
|
||||||
LEGO1/omni/src/stream/mxioinfo.cpp
|
|
||||||
LEGO1/omni/src/stream/mxramstreamcontroller.cpp
|
|
||||||
LEGO1/omni/src/stream/mxramstreamprovider.cpp
|
|
||||||
LEGO1/omni/src/stream/mxstreamchunk.cpp
|
|
||||||
LEGO1/omni/src/stream/mxstreamcontroller.cpp
|
|
||||||
LEGO1/omni/src/stream/mxstreamer.cpp
|
|
||||||
LEGO1/omni/src/stream/mxstreamlist.cpp
|
|
||||||
LEGO1/omni/src/stream/mxstreamprovider.cpp
|
|
||||||
LEGO1/omni/src/system/mxautolocker.cpp
|
|
||||||
LEGO1/omni/src/system/mxcriticalsection.cpp
|
|
||||||
LEGO1/omni/src/system/mxscheduler.cpp
|
|
||||||
LEGO1/omni/src/system/mxsemaphore.cpp
|
|
||||||
LEGO1/omni/src/system/mxthread.cpp
|
|
||||||
LEGO1/omni/src/video/mxbitmap.cpp
|
|
||||||
LEGO1/omni/src/video/mxdisplaysurface.cpp
|
|
||||||
LEGO1/omni/src/video/mxflcpresenter.cpp
|
|
||||||
LEGO1/omni/src/video/mxloopingflcpresenter.cpp
|
|
||||||
LEGO1/omni/src/video/mxloopingsmkpresenter.cpp
|
|
||||||
LEGO1/omni/src/video/mxpalette.cpp
|
|
||||||
LEGO1/omni/src/video/mxregion.cpp
|
|
||||||
LEGO1/omni/src/video/mxregioncursor.cpp
|
|
||||||
LEGO1/omni/src/video/mxsmack.cpp
|
|
||||||
LEGO1/omni/src/video/mxsmkpresenter.cpp
|
|
||||||
LEGO1/omni/src/video/mxstillpresenter.cpp
|
|
||||||
LEGO1/omni/src/video/mxvideomanager.cpp
|
|
||||||
LEGO1/omni/src/video/mxvideoparam.cpp
|
|
||||||
LEGO1/omni/src/video/mxvideoparamflags.cpp
|
|
||||||
LEGO1/omni/src/video/mxvideopresenter.cpp
|
|
||||||
LEGO1/realtime/matrix.cpp
|
|
||||||
LEGO1/realtime/orientableroi.cpp
|
|
||||||
LEGO1/realtime/realtime.cpp
|
|
||||||
LEGO1/realtime/realtimeview.cpp
|
|
||||||
LEGO1/realtime/vector.cpp
|
|
||||||
LEGO1/tgl/d3drm/camera.cpp
|
|
||||||
LEGO1/tgl/d3drm/device.cpp
|
|
||||||
LEGO1/tgl/d3drm/group.cpp
|
|
||||||
LEGO1/tgl/d3drm/light.cpp
|
|
||||||
LEGO1/tgl/d3drm/mesh.cpp
|
|
||||||
LEGO1/tgl/d3drm/renderer.cpp
|
|
||||||
LEGO1/tgl/d3drm/texture.cpp
|
|
||||||
LEGO1/tgl/d3drm/unk.cpp
|
|
||||||
LEGO1/tgl/d3drm/view.cpp
|
|
||||||
LEGO1/viewmanager/viewlodlist.cpp
|
|
||||||
LEGO1/viewmanager/viewmanager.cpp
|
|
||||||
LEGO1/viewmanager/viewroi.cpp
|
|
||||||
LEGO1/flic.cpp
|
|
||||||
)
|
)
|
||||||
|
register_lego1_target(lego1)
|
||||||
|
|
||||||
if (MINGW)
|
if (MINGW)
|
||||||
target_compile_definitions(lego1 PRIVATE DIRECTINPUT_VERSION=0x0500)
|
target_compile_definitions(lego1 PRIVATE DIRECTINPUT_VERSION=0x0500)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/util")
|
if (MSVC)
|
||||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1")
|
target_sources(lego1 PRIVATE LEGO1/LegoOmni.def)
|
||||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/omni/include")
|
else()
|
||||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources")
|
target_sources(lego1 PRIVATE LEGO1/LegoOmni.mingw.def)
|
||||||
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)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Use internal DirectX 5 if required
|
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/util")
|
||||||
if (ISLE_USE_DX5)
|
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1")
|
||||||
target_include_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
|
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/omni/include")
|
||||||
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
|
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/sources")
|
||||||
endif()
|
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include")
|
||||||
|
|
||||||
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/smacker")
|
|
||||||
target_link_directories(lego1 PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/flic")
|
|
||||||
|
|
||||||
# Link libraries
|
# 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 anim 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
|
# Make sure filenames are ALL CAPS
|
||||||
set_property(TARGET lego1 PROPERTY OUTPUT_NAME LEGO1)
|
set_property(TARGET lego1 PROPERTY OUTPUT_NAME LEGO1)
|
||||||
@ -301,22 +430,12 @@ if (ISLE_BUILD_APP)
|
|||||||
add_executable(isle WIN32
|
add_executable(isle WIN32
|
||||||
ISLE/res/isle.rc
|
ISLE/res/isle.rc
|
||||||
ISLE/isleapp.cpp
|
ISLE/isleapp.cpp
|
||||||
ISLE/define.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
target_compile_definitions(isle PRIVATE ISLE_APP)
|
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
|
# Use internal DirectX 5 if required
|
||||||
if (ISLE_USE_DX5)
|
target_link_libraries(isle PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5>)
|
||||||
target_include_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
|
|
||||||
target_link_directories(isle PRIVATE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ISLE_USE_SMARTHEAP)
|
if (ISLE_USE_SMARTHEAP)
|
||||||
target_link_libraries(isle PRIVATE SmartHeap::SmartHeap)
|
target_link_libraries(isle PRIVATE SmartHeap::SmartHeap)
|
||||||
@ -330,26 +449,63 @@ if (ISLE_BUILD_APP)
|
|||||||
set_property(TARGET isle PROPERTY SUFFIX ".EXE")
|
set_property(TARGET isle PROPERTY SUFFIX ".EXE")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (ISLE_BUILD_CONFIG)
|
||||||
|
add_executable(config WIN32
|
||||||
|
LEGO1/mxdirectx/mxdirect3d.cpp
|
||||||
|
CONFIG/config.cpp
|
||||||
|
CONFIG/ConfigCommandLineInfo.cpp
|
||||||
|
CONFIG/AboutDlg.cpp
|
||||||
|
CONFIG/MainDlg.cpp
|
||||||
|
CONFIG/detectdx5.cpp
|
||||||
|
CONFIG/StdAfx.cpp
|
||||||
|
CONFIG/res/config.rc
|
||||||
|
)
|
||||||
|
target_compile_definitions(config PRIVATE _AFXDLL MXDIRECTX_FOR_CONFIG)
|
||||||
|
target_include_directories(config PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/util" "${CMAKE_CURRENT_SOURCE_DIR}/LEGO1")
|
||||||
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
|
||||||
|
target_link_libraries(config PRIVATE DirectX5::DirectX5)
|
||||||
|
endif()
|
||||||
|
target_compile_definitions(config PRIVATE DIRECT3D_VERSION=0x500)
|
||||||
|
target_link_libraries(config PRIVATE ddraw dxguid)
|
||||||
|
set_property(TARGET config PROPERTY OUTPUT_NAME "CONFIG")
|
||||||
|
set_property(TARGET config PROPERTY SUFFIX ".EXE")
|
||||||
|
set_property(TARGET config PROPERTY MSVC_RUNTIME_LIBRARY MultiThreaded$<$<CONFIG:Debug>:Debug>DLL)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15")
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15")
|
||||||
target_compile_definitions(lego1 PRIVATE _CRT_SECURE_NO_WARNINGS)
|
set_property(TARGET ${lego1_targets} APPEND PROPERTY COMPILE_DEFINITIONS "_CRT_SECURE_NO_WARNINGS")
|
||||||
if (ISLE_BUILD_APP)
|
if (TARGET isle)
|
||||||
target_compile_definitions(isle PRIVATE "_CRT_SECURE_NO_WARNINGS")
|
target_compile_definitions(isle PRIVATE "_CRT_SECURE_NO_WARNINGS")
|
||||||
endif()
|
endif()
|
||||||
|
if (TARGET config)
|
||||||
|
target_compile_definitions(config PRIVATE "_CRT_SECURE_NO_WARNINGS")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
# Visual Studio 2017 version 15.7 needs "/Zc:__cplusplus" for __cplusplus
|
# Visual Studio 2017 version 15.7 needs "/Zc:__cplusplus" for __cplusplus
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.14.26428")
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.14.26428")
|
||||||
target_compile_options(lego1 PRIVATE "-Zc:__cplusplus")
|
foreach(tgt IN LISTS lego1_targets)
|
||||||
if (ISLE_BUILD_APP)
|
target_compile_options(${tgt} PRIVATE "-Zc:__cplusplus")
|
||||||
|
endforeach()
|
||||||
|
if (TARGET isle)
|
||||||
target_compile_options(isle PRIVATE "-Zc:__cplusplus")
|
target_compile_options(isle PRIVATE "-Zc:__cplusplus")
|
||||||
endif()
|
endif()
|
||||||
|
if (TARGET config)
|
||||||
|
target_compile_options(config PRIVATE "-Zc:__cplusplus")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (MSVC_FOR_DECOMP)
|
if (MSVC_FOR_DECOMP)
|
||||||
target_compile_definitions(lego1 PRIVATE "ENABLE_DECOMP_ASSERTS")
|
foreach(tgt IN LISTS lego1_targets)
|
||||||
if (ISLE_BUILD_APP)
|
target_compile_definitions(${tgt} PRIVATE "ENABLE_DECOMP_ASSERTS")
|
||||||
target_compile_definitions(isle PRIVATE "ENABLE_DECOMP_ASSERTS")
|
endforeach()
|
||||||
|
|
||||||
|
if (TARGET isle)
|
||||||
|
target_compile_definitions(isle PRIVATE "ENABLE_DECOMP_ASSERTS")
|
||||||
|
endif()
|
||||||
|
if (TARGET config)
|
||||||
|
target_compile_definitions(config PRIVATE "ENABLE_DECOMP_ASSERTS")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -359,8 +515,11 @@ if (MSVC_FOR_DECOMP)
|
|||||||
# They ensure a recompilation that can be byte/instruction accurate to the original binaries.
|
# They ensure a recompilation that can be byte/instruction accurate to the original binaries.
|
||||||
if (ISLE_BUILD_APP)
|
if (ISLE_BUILD_APP)
|
||||||
target_compile_options(isle PRIVATE "/MT$<$<CONFIG:Debug>:d>")
|
target_compile_options(isle PRIVATE "/MT$<$<CONFIG:Debug>:d>")
|
||||||
|
target_link_options(isle PRIVATE "/OPT:REF")
|
||||||
endif()
|
endif()
|
||||||
target_compile_options(lego1 PRIVATE "/MT$<$<CONFIG:Debug>:d>")
|
|
||||||
|
# Equivalent to target_compile_options(... PRIVATE "/MT$<$<CONFIG:Debug>:d>")
|
||||||
|
set_property(TARGET lego1 ${lego1_targets} PROPERTY MSVC_RUNTIME_LIBRARY MultiThreaded$<$<CONFIG:Debug>:Debug>)
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "/W3 /GX /D \"WIN32\" /D \"_WINDOWS\"")
|
set(CMAKE_CXX_FLAGS "/W3 /GX /D \"WIN32\" /D \"_WINDOWS\"")
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "/Gm /Zi /Od /D \"_DEBUG\"")
|
set(CMAKE_CXX_FLAGS_DEBUG "/Gm /Zi /Od /D \"_DEBUG\"")
|
||||||
@ -374,6 +533,8 @@ if (MSVC_FOR_DECOMP)
|
|||||||
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/incremental:no /debug")
|
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/incremental:no /debug")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/incremental:no")
|
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 "/machine:I386")
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/incremental:yes /debug")
|
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/incremental:yes /debug")
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/incremental:no")
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/incremental:no")
|
||||||
@ -382,12 +543,17 @@ if (MSVC_FOR_DECOMP)
|
|||||||
|
|
||||||
# Older MSVC versions don't support building in parallel.
|
# 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.
|
# 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)
|
if (CMAKE_CXX_COMPILER_ID VERSION_LESS 12)
|
||||||
set_property(GLOBAL PROPERTY JOB_POOLS "msvc_lego=1;msvc_lego1=1")
|
foreach(tgt IN LISTS lego1_targets)
|
||||||
set_property(TARGET isle PROPERTY JOB_POOL_COMPILE msvc_lego)
|
set_property(GLOBAL APPEND PROPERTY JOB_POOLS "msvc_${tgt}=1;msvc_lego1=1")
|
||||||
set_property(TARGET isle PROPERTY JOB_POOL_LINK msvc_lego)
|
set_property(TARGET ${tgt} PROPERTY JOB_POOL_COMPILE msvc_${tgt})
|
||||||
set_property(TARGET lego1 PROPERTY JOB_POOL_COMPILE msvc_lego1)
|
set_property(TARGET ${tgt} PROPERTY JOB_POOL_LINK msvc_${tgt})
|
||||||
set_property(TARGET lego1 PROPERTY JOB_POOL_LINK msvc_lego1)
|
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()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
19
CONFIG/AboutDlg.cpp
Normal file
19
CONFIG/AboutDlg.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "AboutDlg.h"
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(CDialog, 0x60)
|
||||||
|
DECOMP_SIZE_ASSERT(CAboutDialog, 0x60)
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403c20
|
||||||
|
CAboutDialog::CAboutDialog() : CDialog(IDD)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403d20
|
||||||
|
void CAboutDialog::DoDataExchange(CDataExchange* pDX)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CAboutDialog, CDialog)
|
||||||
|
END_MESSAGE_MAP()
|
||||||
36
CONFIG/AboutDlg.h
Normal file
36
CONFIG/AboutDlg.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#if !defined(AFX_ABOUTDLG_H)
|
||||||
|
#define AFX_ABOUTDLG_H
|
||||||
|
|
||||||
|
#include "StdAfx.h"
|
||||||
|
#include "compat.h"
|
||||||
|
#include "res/resource.h"
|
||||||
|
|
||||||
|
// VTABLE: CONFIG 0x00406308
|
||||||
|
// SIZE 0x60
|
||||||
|
class CAboutDialog : public CDialog {
|
||||||
|
public:
|
||||||
|
CAboutDialog();
|
||||||
|
enum {
|
||||||
|
IDD = IDD_ABOUT
|
||||||
|
};
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void DoDataExchange(CDataExchange* pDX) override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
};
|
||||||
|
|
||||||
|
// SYNTHETIC: CONFIG 0x00403cb0
|
||||||
|
// CAboutDialog::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403d40
|
||||||
|
// CAboutDialog::GetMessageMap
|
||||||
|
|
||||||
|
// GLOBAL: CONFIG 0x00406100
|
||||||
|
// CAboutDialog::messageMap
|
||||||
|
|
||||||
|
// GLOBAL: CONFIG 0x00406108
|
||||||
|
// CAboutDialog::_messageEntries
|
||||||
|
|
||||||
|
#endif // !defined(AFX_ABOUTDLG_H)
|
||||||
22
CONFIG/ConfigCommandLineInfo.cpp
Normal file
22
CONFIG/ConfigCommandLineInfo.cpp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#include "ConfigCommandLineInfo.h"
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(CCommandLineInfo, 0x24)
|
||||||
|
DECOMP_SIZE_ASSERT(CConfigCommandLineInfo, 0x24)
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403b10
|
||||||
|
CConfigCommandLineInfo::CConfigCommandLineInfo()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_run_config_dialog = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403bf0
|
||||||
|
void CConfigCommandLineInfo::ParseParam(LPCSTR pszParam, BOOL bFlag, BOOL bLast)
|
||||||
|
{
|
||||||
|
if (bFlag) {
|
||||||
|
if (lstrcmpiA(pszParam, "config") == 0) {
|
||||||
|
currentConfigApp->m_run_config_dialog = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
21
CONFIG/ConfigCommandLineInfo.h
Normal file
21
CONFIG/ConfigCommandLineInfo.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#if !defined(AFX_CONFIGCOMMANDLINEINFO_H)
|
||||||
|
#define AFX_CONFIGCOMMANDLINEINFO_H
|
||||||
|
|
||||||
|
#include "StdAfx.h"
|
||||||
|
#include "compat.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
// VTABLE: CONFIG 0x004060e8
|
||||||
|
// SIZE 0x24
|
||||||
|
class CConfigCommandLineInfo : public CCommandLineInfo {
|
||||||
|
public:
|
||||||
|
CConfigCommandLineInfo();
|
||||||
|
|
||||||
|
void ParseParam(LPCSTR pszParam, BOOL bFlag, BOOL bLast) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
// SYNTHETIC: CONFIG 0x00403b80
|
||||||
|
// CConfigCommandLineInfo::`scalar deleting destructor'
|
||||||
|
|
||||||
|
#endif // !defined(AFX_CONFIGCOMMANDLINEINFO_H)
|
||||||
345
CONFIG/MainDlg.cpp
Normal file
345
CONFIG/MainDlg.cpp
Normal file
@ -0,0 +1,345 @@
|
|||||||
|
#include "MainDlg.h"
|
||||||
|
|
||||||
|
#include "AboutDlg.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include "res/resource.h"
|
||||||
|
|
||||||
|
#include <mxdirectx/mxdirect3d.h>
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(CDialog, 0x60)
|
||||||
|
DECOMP_SIZE_ASSERT(CMainDialog, 0x70)
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403d50
|
||||||
|
CMainDialog::CMainDialog(CWnd* pParent) : CDialog(IDD, pParent)
|
||||||
|
{
|
||||||
|
afxCurrentWinApp;
|
||||||
|
m_icon = LoadIconA(AfxFindResourceHandle(MAKEINTRESOURCE(IDI_CONFIG), RT_GROUP_ICON), MAKEINTRESOURCE(IDI_CONFIG));
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403e50
|
||||||
|
void CMainDialog::DoDataExchange(CDataExchange* pDX)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CMainDialog, CDialog)
|
||||||
|
ON_WM_SYSCOMMAND()
|
||||||
|
ON_WM_PAINT()
|
||||||
|
ON_WM_QUERYDRAGICON()
|
||||||
|
ON_COMMAND(IDC_CHK_FLIP_VIDEO_MEM_PAGES, OnCheckboxFlipVideoMemPages)
|
||||||
|
ON_LBN_SELCHANGE(IDC_LIST_3DDEVICES, OnList3DevicesSelectionChanged)
|
||||||
|
ON_COMMAND(IDC_RAD_PALETTE_16BIT, OnRadiobuttonPalette16bit)
|
||||||
|
ON_COMMAND(IDC_RAD_PALETTE_256, OnRadiobuttonPalette256)
|
||||||
|
ON_COMMAND(IDC_CHK_3D_VIDEO_MEMORY, OnCheckbox3DVideoMemory)
|
||||||
|
ON_WM_DESTROY() // FIXME: CONFIG.EXE calls Default
|
||||||
|
ON_COMMAND(IDABORT, OnButtonCancel)
|
||||||
|
ON_COMMAND(IDC_CHK_3DSOUND, OnCheckbox3DSound)
|
||||||
|
ON_COMMAND(IDC_RAD_MODEL_QUALITY_LOW, OnRadiobuttonModelLowQuality)
|
||||||
|
ON_COMMAND(IDC_RAD_MODEL_QUALITY_HIGH, OnRadiobuttonModelHighQuality)
|
||||||
|
ON_COMMAND(IDC_RAD_TEXTURE_QUALITY_LOW, OnRadiobuttonTextureLowQuality)
|
||||||
|
ON_COMMAND(IDC_RAD_TEXTURE_QUALITY_HIGH, OnRadiobuttonTextureHighQuality)
|
||||||
|
ON_COMMAND(IDC_CHK_JOYSTICK, OnCheckboxJoystick)
|
||||||
|
ON_COMMAND(IDC_BTN_ADVANCED, OnButtonAdvanced)
|
||||||
|
ON_COMMAND(IDC_CHK_DRAW_CURSOR, OnCheckboxDrawCursor)
|
||||||
|
ON_COMMAND(IDC_CHK_MUSIC, OnCheckboxMusic)
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403e80
|
||||||
|
BOOL CMainDialog::OnInitDialog()
|
||||||
|
{
|
||||||
|
CDialog::OnInitDialog();
|
||||||
|
SwitchToAdvanced(FALSE);
|
||||||
|
CMenu* system_menu = CMenu::FromHandle(::GetSystemMenu(m_hWnd, FALSE));
|
||||||
|
CString about_text;
|
||||||
|
about_text.LoadString(IDS_ABOUT);
|
||||||
|
if (system_menu) {
|
||||||
|
AppendMenuA(system_menu->m_hMenu, MF_SEPARATOR, 0, NULL);
|
||||||
|
AppendMenuA(system_menu->m_hMenu, MF_STRING, 16, (LPCTSTR) about_text);
|
||||||
|
}
|
||||||
|
SendMessage(WM_SETICON, ICON_BIG, (LPARAM) m_icon);
|
||||||
|
SendMessage(WM_SETICON, ICON_SMALL, (LPARAM) m_icon);
|
||||||
|
MxDeviceEnumerate* enumerator = currentConfigApp->m_device_enumerator;
|
||||||
|
enumerator->FUN_1009d210();
|
||||||
|
m_modified = currentConfigApp->ReadRegisterSettings();
|
||||||
|
CWnd* list_3d_devices = GetDlgItem(IDC_LIST_3DDEVICES);
|
||||||
|
int driver_i = 0;
|
||||||
|
int device_i = 0;
|
||||||
|
int selected = 0;
|
||||||
|
char device_name[256];
|
||||||
|
const list<MxDriver>& driver_list = enumerator->GetDriverList();
|
||||||
|
for (list<MxDriver>::const_iterator it_driver = driver_list.begin(); it_driver != driver_list.end(); it_driver++) {
|
||||||
|
const MxDriver& driver = *it_driver;
|
||||||
|
for (list<Direct3DDeviceInfo>::const_iterator it_device = driver.m_devices.begin();
|
||||||
|
it_device != driver.m_devices.end();
|
||||||
|
it_device++) {
|
||||||
|
const Direct3DDeviceInfo& device = *it_device;
|
||||||
|
if (&device == currentConfigApp->m_device) {
|
||||||
|
selected = device_i;
|
||||||
|
}
|
||||||
|
device_i += 1;
|
||||||
|
sprintf(
|
||||||
|
device_name,
|
||||||
|
driver_i == 0 ? "%s ( Primary Device )" : "%s ( Secondary Device )",
|
||||||
|
device.m_deviceName
|
||||||
|
);
|
||||||
|
::SendMessage(list_3d_devices->m_hWnd, LB_ADDSTRING, 0, (LPARAM) device_name);
|
||||||
|
}
|
||||||
|
driver_i += 1;
|
||||||
|
}
|
||||||
|
::SendMessage(list_3d_devices->m_hWnd, LB_SETCURSEL, selected, 0);
|
||||||
|
UpdateInterface();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404080
|
||||||
|
void CMainDialog::OnSysCommand(UINT nID, LPARAM lParam)
|
||||||
|
{
|
||||||
|
if ((nID & 0xfff0) == 0x10) {
|
||||||
|
CAboutDialog about_dialog;
|
||||||
|
about_dialog.DoModal();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Default();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404150
|
||||||
|
void CMainDialog::OnPaint()
|
||||||
|
{
|
||||||
|
if (IsIconic()) {
|
||||||
|
CPaintDC painter(this);
|
||||||
|
::SendMessage(m_hWnd, WM_ICONERASEBKGND, (WPARAM) painter.m_hDC, 0);
|
||||||
|
RECT dim;
|
||||||
|
GetClientRect(&dim);
|
||||||
|
DrawIcon(
|
||||||
|
painter.m_hDC,
|
||||||
|
(dim.right - dim.left - GetSystemMetrics(SM_CXICON) + 1) / 2,
|
||||||
|
(dim.bottom - dim.top - GetSystemMetrics(SM_CYICON) + 1) / 2,
|
||||||
|
m_icon
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Default();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404230
|
||||||
|
HCURSOR CMainDialog::OnQueryDragIcon()
|
||||||
|
{
|
||||||
|
return m_icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404240
|
||||||
|
void CMainDialog::OnList3DevicesSelectionChanged()
|
||||||
|
{
|
||||||
|
MxDeviceEnumerate* device_enumerator = currentConfigApp->m_device_enumerator;
|
||||||
|
int selected = ::SendMessage(GetDlgItem(IDC_LIST_3DDEVICES)->m_hWnd, LB_GETCURSEL, 0, 0);
|
||||||
|
device_enumerator->GetDevice(selected, currentConfigApp->m_driver, currentConfigApp->m_device);
|
||||||
|
if (currentConfigApp->GetHardwareDeviceColorModel()) {
|
||||||
|
GetDlgItem(IDC_CHK_DRAW_CURSOR)->EnableWindow(TRUE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
currentConfigApp->m_3d_video_ram = FALSE;
|
||||||
|
currentConfigApp->m_flip_surfaces = FALSE;
|
||||||
|
CheckDlgButton(IDC_CHK_3D_VIDEO_MEMORY, currentConfigApp->m_3d_video_ram);
|
||||||
|
CheckDlgButton(IDC_CHK_FLIP_VIDEO_MEM_PAGES, currentConfigApp->m_flip_surfaces);
|
||||||
|
}
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404320
|
||||||
|
void CMainDialog::OnCancel()
|
||||||
|
{
|
||||||
|
CDialog::OnCancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404330
|
||||||
|
void CMainDialog::OnDestroy()
|
||||||
|
{
|
||||||
|
CDialog::Default();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404340
|
||||||
|
void CMainDialog::OnButtonCancel()
|
||||||
|
{
|
||||||
|
if (m_modified) {
|
||||||
|
currentConfigApp->WriteRegisterSettings();
|
||||||
|
}
|
||||||
|
OnCancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404360
|
||||||
|
void CMainDialog::UpdateInterface()
|
||||||
|
{
|
||||||
|
currentConfigApp->ValidateSettings();
|
||||||
|
GetDlgItem(IDC_CHK_3D_VIDEO_MEMORY)
|
||||||
|
->EnableWindow(!currentConfigApp->m_flip_surfaces && !currentConfigApp->GetHardwareDeviceColorModel());
|
||||||
|
CheckDlgButton(IDC_CHK_FLIP_VIDEO_MEM_PAGES, currentConfigApp->m_flip_surfaces);
|
||||||
|
CheckDlgButton(IDC_CHK_3D_VIDEO_MEMORY, currentConfigApp->m_3d_video_ram);
|
||||||
|
BOOL full_screen = currentConfigApp->m_full_screen;
|
||||||
|
currentConfigApp->FUN_00403810();
|
||||||
|
if (currentConfigApp->GetHardwareDeviceColorModel()) {
|
||||||
|
CheckDlgButton(IDC_CHK_DRAW_CURSOR, TRUE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CheckDlgButton(IDC_CHK_DRAW_CURSOR, FALSE);
|
||||||
|
currentConfigApp->m_draw_cursor = FALSE;
|
||||||
|
GetDlgItem(IDC_CHK_DRAW_CURSOR)->EnableWindow(FALSE);
|
||||||
|
}
|
||||||
|
if (full_screen) {
|
||||||
|
CheckRadioButton(
|
||||||
|
IDC_RAD_PALETTE_256,
|
||||||
|
IDC_RAD_PALETTE_16BIT,
|
||||||
|
currentConfigApp->m_display_bit_depth == 8 ? IDC_RAD_PALETTE_256 : IDC_RAD_PALETTE_16BIT
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CheckDlgButton(IDC_RAD_PALETTE_256, 0);
|
||||||
|
CheckDlgButton(IDC_RAD_PALETTE_16BIT, 0);
|
||||||
|
currentConfigApp->m_display_bit_depth = 0;
|
||||||
|
}
|
||||||
|
GetDlgItem(IDC_RAD_PALETTE_256)->EnableWindow(full_screen && currentConfigApp->FUN_004037a0());
|
||||||
|
GetDlgItem(IDC_RAD_PALETTE_16BIT)->EnableWindow(full_screen && currentConfigApp->FUN_004037e0());
|
||||||
|
CheckDlgButton(IDC_CHK_3DSOUND, currentConfigApp->m_3d_sound);
|
||||||
|
CheckDlgButton(IDC_CHK_DRAW_CURSOR, currentConfigApp->m_draw_cursor);
|
||||||
|
switch (currentConfigApp->m_model_quality) {
|
||||||
|
case 1:
|
||||||
|
CheckRadioButton(IDC_RAD_MODEL_QUALITY_LOW, IDC_RAD_MODEL_QUALITY_HIGH, IDC_RAD_MODEL_QUALITY_LOW);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
CheckRadioButton(IDC_RAD_MODEL_QUALITY_LOW, IDC_RAD_MODEL_QUALITY_HIGH, IDC_RAD_MODEL_QUALITY_HIGH);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
CheckRadioButton(
|
||||||
|
IDC_RAD_TEXTURE_QUALITY_LOW,
|
||||||
|
IDC_RAD_TEXTURE_QUALITY_HIGH,
|
||||||
|
currentConfigApp->m_texture_quality == 0 ? IDC_RAD_TEXTURE_QUALITY_LOW : IDC_RAD_TEXTURE_QUALITY_HIGH
|
||||||
|
);
|
||||||
|
CheckDlgButton(IDC_CHK_JOYSTICK, currentConfigApp->m_use_joystick);
|
||||||
|
CheckDlgButton(IDC_CHK_MUSIC, currentConfigApp->m_music);
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004045e0
|
||||||
|
void CMainDialog::OnCheckbox3DSound()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_3d_sound = IsDlgButtonChecked(IDC_CHK_3DSOUND);
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404610
|
||||||
|
void CMainDialog::OnCheckbox3DVideoMemory()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_3d_video_ram = IsDlgButtonChecked(IDC_CHK_3D_VIDEO_MEMORY);
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404640
|
||||||
|
void CMainDialog::OnRadiobuttonPalette16bit()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_display_bit_depth = 16;
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404670
|
||||||
|
void CMainDialog::OnRadiobuttonPalette256()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_display_bit_depth = 8;
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004046a0
|
||||||
|
void CMainDialog::OnCheckboxFlipVideoMemPages()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_flip_surfaces = IsDlgButtonChecked(IDC_CHK_FLIP_VIDEO_MEM_PAGES);
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004046d0
|
||||||
|
void CMainDialog::OnRadiobuttonModelLowQuality()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_model_quality = 1;
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404700
|
||||||
|
void CMainDialog::OnRadiobuttonModelHighQuality()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_model_quality = 2;
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404730
|
||||||
|
void CMainDialog::OnRadiobuttonTextureLowQuality()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_texture_quality = 0;
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404760
|
||||||
|
void CMainDialog::OnRadiobuttonTextureHighQuality()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_texture_quality = 1;
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404790
|
||||||
|
void CMainDialog::OnCheckboxJoystick()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_use_joystick = IsDlgButtonChecked(IDC_CHK_JOYSTICK);
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004047c0
|
||||||
|
void CMainDialog::OnButtonAdvanced()
|
||||||
|
{
|
||||||
|
SwitchToAdvanced(!m_advanced);
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004047d0
|
||||||
|
void CMainDialog::SwitchToAdvanced(BOOL p_advanced)
|
||||||
|
{
|
||||||
|
RECT dialog_rect;
|
||||||
|
RECT grp_advanced_rect;
|
||||||
|
::GetWindowRect(m_hWnd, &dialog_rect);
|
||||||
|
::GetWindowRect(GetDlgItem(IDC_GRP_ADVANCED)->m_hWnd, &grp_advanced_rect);
|
||||||
|
CWnd* button_advanced = GetDlgItem(IDC_BTN_ADVANCED);
|
||||||
|
m_advanced = p_advanced;
|
||||||
|
int height;
|
||||||
|
if (p_advanced) {
|
||||||
|
height = grp_advanced_rect.bottom - dialog_rect.top + 10;
|
||||||
|
GetDlgItem(IDC_BMP_SHARK)->EnableWindow(TRUE);
|
||||||
|
button_advanced->SetWindowText("Basic");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
height = grp_advanced_rect.top - dialog_rect.top;
|
||||||
|
GetDlgItem(IDC_BMP_SHARK)->EnableWindow(FALSE);
|
||||||
|
button_advanced->SetWindowText("Advanced");
|
||||||
|
}
|
||||||
|
SetWindowPos(&wndTop, 0, 0, dialog_rect.right - dialog_rect.left, height, SWP_NOMOVE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404890
|
||||||
|
void CMainDialog::OnCheckboxDrawCursor()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_draw_cursor = IsDlgButtonChecked(IDC_CHK_DRAW_CURSOR);
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004048c0
|
||||||
|
void CMainDialog::OnCheckboxMusic()
|
||||||
|
{
|
||||||
|
currentConfigApp->m_music = IsDlgButtonChecked(IDC_CHK_MUSIC);
|
||||||
|
m_modified = TRUE;
|
||||||
|
UpdateInterface();
|
||||||
|
}
|
||||||
67
CONFIG/MainDlg.h
Normal file
67
CONFIG/MainDlg.h
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#if !defined(AFX_MAINDLG_H)
|
||||||
|
#define AFX_MAINDLG_H
|
||||||
|
|
||||||
|
#include "StdAfx.h"
|
||||||
|
#include "compat.h"
|
||||||
|
#include "decomp.h"
|
||||||
|
#include "res/resource.h"
|
||||||
|
|
||||||
|
// VTABLE: CONFIG 0x004063e0
|
||||||
|
// SIZE 0x70
|
||||||
|
class CMainDialog : public CDialog {
|
||||||
|
public:
|
||||||
|
CMainDialog(CWnd* pParent);
|
||||||
|
enum {
|
||||||
|
IDD = IDD_MAIN
|
||||||
|
};
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void DoDataExchange(CDataExchange* pDX) override;
|
||||||
|
void UpdateInterface();
|
||||||
|
void SwitchToAdvanced(BOOL p_advanced);
|
||||||
|
|
||||||
|
undefined m_unk0x60[4]; // 0x60
|
||||||
|
HCURSOR m_icon; // 0x64
|
||||||
|
BOOL m_modified; // 0x68
|
||||||
|
BOOL m_advanced; // 0x6c
|
||||||
|
// Implementation
|
||||||
|
|
||||||
|
protected:
|
||||||
|
BOOL OnInitDialog() override;
|
||||||
|
void OnSysCommand(UINT nID, LPARAM lParam);
|
||||||
|
void OnPaint();
|
||||||
|
HCURSOR OnQueryDragIcon();
|
||||||
|
void OnList3DevicesSelectionChanged();
|
||||||
|
void OnCancel();
|
||||||
|
void OnDestroy();
|
||||||
|
void OnButtonCancel();
|
||||||
|
void OnCheckbox3DSound();
|
||||||
|
void OnCheckbox3DVideoMemory();
|
||||||
|
void OnRadiobuttonPalette16bit();
|
||||||
|
void OnRadiobuttonPalette256();
|
||||||
|
void OnCheckboxFlipVideoMemPages();
|
||||||
|
void OnRadiobuttonModelLowQuality();
|
||||||
|
void OnRadiobuttonModelHighQuality();
|
||||||
|
void OnRadiobuttonTextureLowQuality();
|
||||||
|
void OnRadiobuttonTextureHighQuality();
|
||||||
|
void OnCheckboxJoystick();
|
||||||
|
void OnButtonAdvanced();
|
||||||
|
void OnCheckboxDrawCursor();
|
||||||
|
void OnCheckboxMusic();
|
||||||
|
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
};
|
||||||
|
|
||||||
|
// SYNTHETIC: CONFIG 0x00403de0
|
||||||
|
// CMainDialog::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403e70
|
||||||
|
// CMainDialog::GetMessageMap
|
||||||
|
|
||||||
|
// GLOBAL: CONFIG 0x00406120
|
||||||
|
// CMainDialog::messageMap
|
||||||
|
|
||||||
|
// GLOBAL: CONFIG 0x00406128
|
||||||
|
// CMainDialog::_messageEntries
|
||||||
|
|
||||||
|
#endif // !defined(AFX_MAINDLG_H)
|
||||||
5
CONFIG/StdAfx.cpp
Normal file
5
CONFIG/StdAfx.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
// stdafx.cpp : source file that includes just the standard includes
|
||||||
|
// simple.pch will be the pre-compiled header
|
||||||
|
// stdafx.obj will contain the pre-compiled type information
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
31
CONFIG/StdAfx.h
Normal file
31
CONFIG/StdAfx.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#if !defined(AFX_STDAFX_H)
|
||||||
|
#define AFX_STDAFX_H
|
||||||
|
|
||||||
|
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
||||||
|
|
||||||
|
#include <afxext.h> // MFC extensions
|
||||||
|
#include <afxwin.h> // MFC core and standard components
|
||||||
|
#ifndef _AFX_NO_AFXCMN_SUPPORT
|
||||||
|
#include <afxcmn.h> // MFC support for Windows Common Controls
|
||||||
|
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x402ca0
|
||||||
|
// CObject::Serialize
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x402cb0
|
||||||
|
// CObject::AssertValid
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x402cc0
|
||||||
|
// CObject::Dump
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403c90
|
||||||
|
// CWnd::BeginModalState
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403ca0
|
||||||
|
// CWnd::EndModalState
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // !defined(AFX_STDAFX_H)
|
||||||
434
CONFIG/config.cpp
Normal file
434
CONFIG/config.cpp
Normal file
@ -0,0 +1,434 @@
|
|||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "ConfigCommandLineInfo.h"
|
||||||
|
#include "MainDlg.h"
|
||||||
|
#include "detectdx5.h"
|
||||||
|
|
||||||
|
#include <direct.h> // _chdir
|
||||||
|
#include <mxdirectx/mxdirect3d.h>
|
||||||
|
#include <process.h> // _spawnl
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(CWinApp, 0xc4)
|
||||||
|
DECOMP_SIZE_ASSERT(CConfigApp, 0x108)
|
||||||
|
|
||||||
|
DECOMP_STATIC_ASSERT(offsetof(CConfigApp, m_display_bit_depth) == 0xd0)
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP(CConfigApp, CWinApp)
|
||||||
|
ON_COMMAND(ID_HELP, OnHelp)
|
||||||
|
END_MESSAGE_MAP()
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00402c40
|
||||||
|
CConfigApp::CConfigApp()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MiB (1024 * 1024)
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00402dc0
|
||||||
|
BOOL CConfigApp::InitInstance()
|
||||||
|
{
|
||||||
|
if (!IsLegoNotRunning()) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (!DetectDirectX5()) {
|
||||||
|
AfxMessageBox(
|
||||||
|
"\"LEGO\xae Island\" is not detecting DirectX 5 or later. Please quit all other applications and try "
|
||||||
|
"again."
|
||||||
|
);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#ifdef _AFXDLL
|
||||||
|
Enable3dControls();
|
||||||
|
#else
|
||||||
|
Enable3dControlsStatic();
|
||||||
|
#endif
|
||||||
|
CConfigCommandLineInfo cmdInfo;
|
||||||
|
ParseCommandLine(cmdInfo);
|
||||||
|
if (_stricmp(afxCurrentAppName, "config") == 0) {
|
||||||
|
m_run_config_dialog = TRUE;
|
||||||
|
}
|
||||||
|
m_device_enumerator = new MxDeviceEnumerate;
|
||||||
|
if (m_device_enumerator->DoEnumerate()) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
m_driver = NULL;
|
||||||
|
m_device = NULL;
|
||||||
|
m_full_screen = TRUE;
|
||||||
|
m_wide_view_angle = TRUE;
|
||||||
|
m_use_joystick = FALSE;
|
||||||
|
m_music = TRUE;
|
||||||
|
m_flip_surfaces = FALSE;
|
||||||
|
m_3d_video_ram = FALSE;
|
||||||
|
m_joystick_index = -1;
|
||||||
|
m_display_bit_depth = 16;
|
||||||
|
MEMORYSTATUS memory_status;
|
||||||
|
memory_status.dwLength = sizeof(memory_status);
|
||||||
|
GlobalMemoryStatus(&memory_status);
|
||||||
|
if (memory_status.dwTotalPhys < 12 * MiB) {
|
||||||
|
m_3d_sound = FALSE;
|
||||||
|
m_model_quality = 0;
|
||||||
|
m_texture_quality = 1;
|
||||||
|
}
|
||||||
|
else if (memory_status.dwTotalPhys < 20 * MiB) {
|
||||||
|
m_3d_sound = FALSE;
|
||||||
|
m_model_quality = 1;
|
||||||
|
m_texture_quality = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_model_quality = 2;
|
||||||
|
m_3d_sound = TRUE;
|
||||||
|
m_texture_quality = 1;
|
||||||
|
}
|
||||||
|
if (!m_run_config_dialog) {
|
||||||
|
ReadRegisterSettings();
|
||||||
|
ValidateSettings();
|
||||||
|
WriteRegisterSettings();
|
||||||
|
delete m_device_enumerator;
|
||||||
|
m_device_enumerator = NULL;
|
||||||
|
m_driver = NULL;
|
||||||
|
m_device = NULL;
|
||||||
|
char password[256];
|
||||||
|
ReadReg("password", password, sizeof(password));
|
||||||
|
const char* exe = _stricmp("ogel", password) == 0 ? "isled.exe" : "isle.exe";
|
||||||
|
char diskpath[1024];
|
||||||
|
if (ReadReg("diskpath", diskpath, sizeof(diskpath))) {
|
||||||
|
_chdir(diskpath);
|
||||||
|
}
|
||||||
|
_spawnl(_P_NOWAIT, exe, exe, "/diskstream", "/script", "\\lego\\scripts\\isle\\isle.si", NULL);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
CMainDialog main_dialog(NULL);
|
||||||
|
main_dialog.DoModal();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403100
|
||||||
|
BOOL CConfigApp::IsLegoNotRunning()
|
||||||
|
{
|
||||||
|
HWND hWnd = FindWindowA("Lego Island MainNoM App", "LEGO\xae");
|
||||||
|
if (_stricmp(afxCurrentAppName, "config") == 0 || !hWnd) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
if (SetForegroundWindow(hWnd)) {
|
||||||
|
ShowWindow(hWnd, SW_RESTORE);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004031b0
|
||||||
|
BOOL CConfigApp::WriteReg(const char* p_key, const char* p_value) const
|
||||||
|
{
|
||||||
|
HKEY hKey;
|
||||||
|
DWORD pos;
|
||||||
|
|
||||||
|
if (RegCreateKeyExA(
|
||||||
|
HKEY_LOCAL_MACHINE,
|
||||||
|
"SOFTWARE\\Mindscape\\LEGO Island",
|
||||||
|
0,
|
||||||
|
"string",
|
||||||
|
0,
|
||||||
|
KEY_READ | KEY_WRITE,
|
||||||
|
NULL,
|
||||||
|
&hKey,
|
||||||
|
&pos
|
||||||
|
) == ERROR_SUCCESS) {
|
||||||
|
if (RegSetValueExA(hKey, p_key, 0, REG_SZ, (LPBYTE) p_value, strlen(p_value)) == ERROR_SUCCESS) {
|
||||||
|
if (RegCloseKey(hKey) == ERROR_SUCCESS) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403240
|
||||||
|
BOOL CConfigApp::ReadReg(LPCSTR p_key, LPCSTR p_value, DWORD p_size) const
|
||||||
|
{
|
||||||
|
HKEY hKey;
|
||||||
|
DWORD valueType;
|
||||||
|
|
||||||
|
BOOL out = FALSE;
|
||||||
|
DWORD size = p_size;
|
||||||
|
if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Mindscape\\LEGO Island", 0, KEY_READ, &hKey) == ERROR_SUCCESS) {
|
||||||
|
if (RegQueryValueExA(hKey, p_key, NULL, &valueType, (LPBYTE) p_value, &size) == ERROR_SUCCESS) {
|
||||||
|
if (RegCloseKey(hKey) == ERROR_SUCCESS) {
|
||||||
|
out = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004032b0
|
||||||
|
BOOL CConfigApp::ReadRegBool(LPCSTR p_key, BOOL* p_bool) const
|
||||||
|
{
|
||||||
|
char buffer[256];
|
||||||
|
|
||||||
|
BOOL read = ReadReg(p_key, buffer, sizeof(buffer));
|
||||||
|
if (read) {
|
||||||
|
if (strcmp("YES", buffer) == 0) {
|
||||||
|
*p_bool = TRUE;
|
||||||
|
return read;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp("NO", buffer) == 0) {
|
||||||
|
*p_bool = FALSE;
|
||||||
|
return read;
|
||||||
|
}
|
||||||
|
|
||||||
|
read = FALSE;
|
||||||
|
}
|
||||||
|
return read;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403380
|
||||||
|
BOOL CConfigApp::ReadRegInt(LPCSTR p_key, int* p_value) const
|
||||||
|
{
|
||||||
|
char buffer[256];
|
||||||
|
|
||||||
|
BOOL read = ReadReg(p_key, buffer, sizeof(buffer));
|
||||||
|
if (read) {
|
||||||
|
*p_value = atoi(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
return read;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004033d0
|
||||||
|
BOOL CConfigApp::FUN_004033d0() const
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* BUG: should be:
|
||||||
|
* return !GetHardwareDeviceColorModel() && (m_device->m_HELDesc.dcmColorModel & D3DCOLOR_RGB);
|
||||||
|
*/
|
||||||
|
return !GetHardwareDeviceColorModel() && m_device->m_HELDesc.dcmColorModel == D3DCOLOR_RGB;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403400
|
||||||
|
D3DCOLORMODEL CConfigApp::GetHardwareDeviceColorModel() const
|
||||||
|
{
|
||||||
|
return m_device->m_HWDesc.dcmColorModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403410
|
||||||
|
BOOL CConfigApp::IsPrimaryDriver() const
|
||||||
|
{
|
||||||
|
return m_driver == &m_device_enumerator->GetDriverList().front();
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403430
|
||||||
|
BOOL CConfigApp::ReadRegisterSettings()
|
||||||
|
{
|
||||||
|
char buffer[256];
|
||||||
|
BOOL is_modified = FALSE;
|
||||||
|
int tmp = -1;
|
||||||
|
|
||||||
|
if (ReadReg("3D Device ID", buffer, sizeof(buffer))) {
|
||||||
|
tmp = m_device_enumerator->ParseDeviceName(buffer);
|
||||||
|
if (tmp >= 0) {
|
||||||
|
tmp = m_device_enumerator->GetDevice(tmp, m_driver, m_device);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tmp != 0) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
m_device_enumerator->FUN_1009d210();
|
||||||
|
tmp = m_device_enumerator->FUN_1009d0d0();
|
||||||
|
m_device_enumerator->GetDevice(tmp, m_driver, m_device);
|
||||||
|
}
|
||||||
|
if (!ReadRegInt("Display Bit Depth", &m_display_bit_depth)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegBool("Flip Surfaces", &m_flip_surfaces)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegBool("Full Screen", &m_full_screen)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegBool("Back Buffers in Video RAM", &m_3d_video_ram)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegBool("Wide View Angle", &m_wide_view_angle)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegBool("3DSound", &m_3d_sound)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegBool("Draw Cursor", &m_draw_cursor)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegInt("Island Quality", &m_model_quality)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegInt("Island Texture", &m_texture_quality)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegBool("UseJoystick", &m_use_joystick)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegBool("Music", &m_music)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!ReadRegInt("JoystickIndex", &m_joystick_index)) {
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
return is_modified;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403630
|
||||||
|
BOOL CConfigApp::ValidateSettings()
|
||||||
|
{
|
||||||
|
BOOL is_modified = FALSE;
|
||||||
|
|
||||||
|
if (!IsPrimaryDriver() && !m_full_screen) {
|
||||||
|
m_full_screen = TRUE;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (FUN_004033d0()) {
|
||||||
|
if (m_3d_video_ram) {
|
||||||
|
m_3d_video_ram = FALSE;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (m_flip_surfaces) {
|
||||||
|
m_flip_surfaces = FALSE;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (m_display_bit_depth != 16) {
|
||||||
|
m_display_bit_depth = 16;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!GetHardwareDeviceColorModel()) {
|
||||||
|
m_draw_cursor = FALSE;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!m_3d_video_ram) {
|
||||||
|
m_3d_video_ram = TRUE;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (m_full_screen && !m_flip_surfaces) {
|
||||||
|
m_flip_surfaces = TRUE;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_flip_surfaces) {
|
||||||
|
if (!m_3d_video_ram) {
|
||||||
|
m_3d_video_ram = TRUE;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (!m_full_screen) {
|
||||||
|
m_full_screen = TRUE;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((m_display_bit_depth != 8 && m_display_bit_depth != 16) && (m_display_bit_depth != 0 || m_full_screen)) {
|
||||||
|
m_display_bit_depth = 8;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (m_model_quality < 0 || m_model_quality > 2) {
|
||||||
|
m_model_quality = 1;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
if (m_texture_quality < 0 || m_texture_quality > 1) {
|
||||||
|
m_texture_quality = 0;
|
||||||
|
is_modified = TRUE;
|
||||||
|
}
|
||||||
|
return is_modified;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004037a0
|
||||||
|
DWORD CConfigApp::FUN_004037a0() const
|
||||||
|
{
|
||||||
|
if (FUN_004033d0()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (GetHardwareDeviceColorModel()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return m_device->m_HELDesc.dwDeviceRenderBitDepth & 0x800;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004037e0
|
||||||
|
DWORD CConfigApp::FUN_004037e0() const
|
||||||
|
{
|
||||||
|
if (GetHardwareDeviceColorModel()) {
|
||||||
|
return m_device->m_HWDesc.dwDeviceRenderBitDepth & 0x400;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return m_device->m_HELDesc.dwDeviceRenderBitDepth & 0x400;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403810
|
||||||
|
BOOL CConfigApp::FUN_00403810()
|
||||||
|
{
|
||||||
|
if (m_display_bit_depth == 8) {
|
||||||
|
if (FUN_004037a0()) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (m_display_bit_depth == 16) {
|
||||||
|
if (FUN_004037e0()) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (FUN_004037a0()) {
|
||||||
|
m_display_bit_depth = 8;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
if (FUN_004037e0()) {
|
||||||
|
m_display_bit_depth = 16;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
m_display_bit_depth = 8;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 00403890
|
||||||
|
void CConfigApp::WriteRegisterSettings() const
|
||||||
|
|
||||||
|
{
|
||||||
|
char buffer[128];
|
||||||
|
|
||||||
|
#define WriteRegBool(NAME, VALUE) WriteReg(NAME, VALUE ? "YES" : "NO")
|
||||||
|
#define WriteRegInt(NAME, VALUE) \
|
||||||
|
do { \
|
||||||
|
sprintf(buffer, "%d", VALUE); \
|
||||||
|
WriteReg(NAME, buffer); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
m_device_enumerator->FormatDeviceName(buffer, m_driver, m_device);
|
||||||
|
WriteReg("3D Device ID", buffer);
|
||||||
|
WriteReg("3D Device Name", m_device->m_deviceName);
|
||||||
|
WriteRegInt("Display Bit Depth", m_display_bit_depth);
|
||||||
|
WriteRegBool("Flip Surfaces", m_flip_surfaces);
|
||||||
|
WriteRegBool("Full Screen", m_full_screen);
|
||||||
|
WriteRegBool("Back Buffers in Video RAM", m_3d_video_ram);
|
||||||
|
WriteRegBool("Wide View Angle", m_wide_view_angle);
|
||||||
|
WriteRegBool("3DSound", m_3d_sound);
|
||||||
|
WriteRegBool("Draw Cursor", m_draw_cursor);
|
||||||
|
WriteRegInt("Island Quality", m_model_quality);
|
||||||
|
WriteRegInt("Island Texture", m_texture_quality);
|
||||||
|
WriteRegBool("UseJoystick", m_use_joystick);
|
||||||
|
WriteRegBool("Music", m_music);
|
||||||
|
WriteRegInt("JoystickIndex", m_joystick_index);
|
||||||
|
|
||||||
|
#undef WriteRegBool
|
||||||
|
#undef WriteRegInt
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00403a90
|
||||||
|
int CConfigApp::ExitInstance()
|
||||||
|
{
|
||||||
|
if (m_device_enumerator) {
|
||||||
|
delete m_device_enumerator;
|
||||||
|
m_device_enumerator = NULL;
|
||||||
|
}
|
||||||
|
return CWinApp::ExitInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
// GLOBAL: CONFIG 0x00408e50
|
||||||
|
CConfigApp g_theApp;
|
||||||
88
CONFIG/config.h
Normal file
88
CONFIG/config.h
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#if !defined(AFX_CONFIG_H)
|
||||||
|
#define AFX_CONFIG_H
|
||||||
|
|
||||||
|
#include "StdAfx.h"
|
||||||
|
#include "compat.h"
|
||||||
|
#include "decomp.h"
|
||||||
|
|
||||||
|
#include <d3d.h>
|
||||||
|
|
||||||
|
class MxDeviceEnumerate;
|
||||||
|
struct Direct3DDeviceInfo;
|
||||||
|
struct MxDriver;
|
||||||
|
|
||||||
|
#define currentConfigApp ((CConfigApp*) afxCurrentWinApp)
|
||||||
|
|
||||||
|
// VTABLE: CONFIG 0x00406040
|
||||||
|
// SIZE 0x108
|
||||||
|
class CConfigApp : public CWinApp {
|
||||||
|
public:
|
||||||
|
CConfigApp();
|
||||||
|
|
||||||
|
// Overrides
|
||||||
|
// ClassWizard generated virtual function overrides
|
||||||
|
//{{AFX_VIRTUAL(CConfigApp)
|
||||||
|
|
||||||
|
public:
|
||||||
|
BOOL InitInstance() override;
|
||||||
|
int ExitInstance() override;
|
||||||
|
//}}AFX_VIRTUAL
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
|
||||||
|
BOOL WriteReg(const char* p_key, const char* p_value) const;
|
||||||
|
BOOL ReadReg(LPCSTR p_key, LPCSTR p_value, DWORD p_size) const;
|
||||||
|
BOOL ReadRegBool(LPCSTR p_key, BOOL* p_bool) const;
|
||||||
|
BOOL ReadRegInt(LPCSTR p_key, int* p_value) const;
|
||||||
|
BOOL FUN_004033d0() const;
|
||||||
|
D3DCOLORMODEL GetHardwareDeviceColorModel() const;
|
||||||
|
BOOL IsPrimaryDriver() const;
|
||||||
|
BOOL ReadRegisterSettings();
|
||||||
|
BOOL ValidateSettings();
|
||||||
|
DWORD FUN_004037a0() const;
|
||||||
|
DWORD FUN_004037e0() const;
|
||||||
|
BOOL FUN_00403810();
|
||||||
|
void CConfigApp::WriteRegisterSettings() const;
|
||||||
|
|
||||||
|
//{{AFX_MSG(CConfigApp)
|
||||||
|
// NOTE - the ClassWizard will add and remove member functions here.
|
||||||
|
// DO NOT EDIT what you see in these blocks of generated code !
|
||||||
|
//}}AFX_MSG
|
||||||
|
DECLARE_MESSAGE_MAP()
|
||||||
|
|
||||||
|
private:
|
||||||
|
BOOL IsLegoNotRunning();
|
||||||
|
|
||||||
|
public:
|
||||||
|
MxDeviceEnumerate* m_device_enumerator; // 0x0c4
|
||||||
|
MxDriver* m_driver; // 0x0c8
|
||||||
|
Direct3DDeviceInfo* m_device; // 0x0cc
|
||||||
|
int m_display_bit_depth; // 0x0d0
|
||||||
|
BOOL m_flip_surfaces; // 0x0d4
|
||||||
|
BOOL m_full_screen; // 0x0d8
|
||||||
|
BOOL m_3d_video_ram; // 0x0dc
|
||||||
|
BOOL m_wide_view_angle; // 0x0e0
|
||||||
|
BOOL m_3d_sound; // 0x0e4
|
||||||
|
BOOL m_draw_cursor; // 0x0e8
|
||||||
|
BOOL m_use_joystick; // 0x0ec
|
||||||
|
int m_joystick_index; // 0x0f0
|
||||||
|
BOOL m_run_config_dialog; // 0x0f4
|
||||||
|
int m_model_quality; // 0x0f8
|
||||||
|
int m_texture_quality; // 0x0fc
|
||||||
|
undefined m_unk0x100[4]; // 0x100
|
||||||
|
BOOL m_music; // 0x104
|
||||||
|
};
|
||||||
|
|
||||||
|
// SYNTHETIC: CONFIG 0x00402cd0
|
||||||
|
// CConfigApp::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x402c30
|
||||||
|
// CConfigApp::GetMessageMap
|
||||||
|
|
||||||
|
// GLOBAL: CONFIG 0x406008
|
||||||
|
// CConfigApp::messageMap
|
||||||
|
|
||||||
|
// GLOBAL: CONFIG 0x406010
|
||||||
|
// CConfigApp::_messageEntries
|
||||||
|
|
||||||
|
#endif // !defined(AFX_CONFIG_H)
|
||||||
142
CONFIG/detectdx5.cpp
Normal file
142
CONFIG/detectdx5.cpp
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
#include "detectdx5.h"
|
||||||
|
|
||||||
|
#include <ddraw.h>
|
||||||
|
#include <dinput.h>
|
||||||
|
|
||||||
|
typedef HRESULT WINAPI DirectDrawCreate_fn(GUID FAR* lpGUID, LPDIRECTDRAW FAR* lplpDD, IUnknown FAR* pUnkOuter);
|
||||||
|
typedef HRESULT WINAPI
|
||||||
|
DirectInputCreateA_fn(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA* ppDI, LPUNKNOWN punkOuter);
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x004048f0
|
||||||
|
BOOL DetectDirectX5()
|
||||||
|
{
|
||||||
|
unsigned int version;
|
||||||
|
BOOL found;
|
||||||
|
DetectDirectX(&version, &found);
|
||||||
|
return version >= 0x500;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: CONFIG 0x00404920
|
||||||
|
void DetectDirectX(unsigned int* p_version, BOOL* p_found)
|
||||||
|
{
|
||||||
|
OSVERSIONINFOA os_version;
|
||||||
|
|
||||||
|
os_version.dwOSVersionInfoSize = sizeof(os_version);
|
||||||
|
if (!GetVersionExA(&os_version)) {
|
||||||
|
*p_version = 0;
|
||||||
|
*p_found = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (os_version.dwPlatformId == 2) {
|
||||||
|
*p_found = 2;
|
||||||
|
if (os_version.dwMajorVersion < 4) {
|
||||||
|
*p_found = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (os_version.dwMajorVersion != 4) {
|
||||||
|
*p_version = 0x501;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*p_version = 0x200;
|
||||||
|
HMODULE dinput_module = LoadLibraryA("DINPUT.DLL");
|
||||||
|
if (!dinput_module) {
|
||||||
|
OutputDebugStringA("Couldn't LoadLibrary DInput\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DirectInputCreateA_fn* func_DirectInputCreateA =
|
||||||
|
(DirectInputCreateA_fn*) GetProcAddress(dinput_module, "DirectInputCreateA");
|
||||||
|
FreeLibrary(dinput_module);
|
||||||
|
if (!func_DirectInputCreateA) {
|
||||||
|
OutputDebugStringA("Couldn't GetProcAddress DInputCreate\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*p_version = 0x300;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*p_found = 1;
|
||||||
|
if (LOWORD(os_version.dwBuildNumber) >= 0x550) {
|
||||||
|
*p_version = 0x501;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
HMODULE ddraw_module = LoadLibraryA("DDRAW.DLL");
|
||||||
|
if (!ddraw_module) {
|
||||||
|
*p_version = 0;
|
||||||
|
*p_found = 0;
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DirectDrawCreate_fn* func_DirectDrawCreate =
|
||||||
|
(DirectDrawCreate_fn*) GetProcAddress(ddraw_module, "DirectDrawCreate");
|
||||||
|
if (!func_DirectDrawCreate) {
|
||||||
|
*p_version = 0;
|
||||||
|
*p_found = 0;
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
OutputDebugStringA("Couldn't LoadLibrary DDraw\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LPDIRECTDRAW ddraw;
|
||||||
|
if (FAILED(func_DirectDrawCreate(NULL, &ddraw, NULL))) {
|
||||||
|
*p_version = 0;
|
||||||
|
*p_found = 0;
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
OutputDebugStringA("Couldn't create DDraw\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*p_version = 0x100;
|
||||||
|
LPDIRECTDRAW2 ddraw2;
|
||||||
|
if (FAILED(ddraw->QueryInterface(IID_IDirectDraw2, (LPVOID*) &ddraw2))) {
|
||||||
|
ddraw->Release();
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
OutputDebugStringA("Couldn't QI DDraw2\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ddraw->Release();
|
||||||
|
*p_version = 0x200;
|
||||||
|
HMODULE dinput_module = LoadLibraryA("DINPUT.DLL");
|
||||||
|
if (!dinput_module) {
|
||||||
|
OutputDebugStringA("Couldn't LoadLibrary DInput\r\n");
|
||||||
|
ddraw2->Release();
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DirectInputCreateA_fn* func_DirectInputCreateA =
|
||||||
|
(DirectInputCreateA_fn*) GetProcAddress(dinput_module, "DirectInputCreateA");
|
||||||
|
FreeLibrary(dinput_module);
|
||||||
|
if (!func_DirectInputCreateA) {
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
ddraw2->Release();
|
||||||
|
OutputDebugStringA("Couldn't GetProcAddress DInputCreate\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*p_version = 0x300;
|
||||||
|
DDSURFACEDESC surface_desc;
|
||||||
|
memset(&surface_desc, 0, sizeof(surface_desc));
|
||||||
|
surface_desc.dwSize = sizeof(surface_desc);
|
||||||
|
surface_desc.dwFlags = DDSD_CAPS;
|
||||||
|
surface_desc.ddsCaps.dwCaps = DDCAPS2_NONLOCALVIDMEM;
|
||||||
|
if (FAILED(ddraw2->SetCooperativeLevel(NULL, DISCL_BACKGROUND))) {
|
||||||
|
ddraw2->Release();
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
*p_version = 0;
|
||||||
|
OutputDebugStringA("Couldn't Set coop level\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LPDIRECTDRAWSURFACE surface;
|
||||||
|
if (FAILED(ddraw2->CreateSurface(&surface_desc, &surface, NULL))) {
|
||||||
|
ddraw2->Release();
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
*p_version = 0;
|
||||||
|
OutputDebugStringA("Couldn't CreateSurface\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LPDIRECTDRAWSURFACE3 surface3;
|
||||||
|
if (FAILED(surface->QueryInterface(IID_IDirectDrawSurface3, (LPVOID*) &surface3))) {
|
||||||
|
ddraw2->Release();
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*p_version = 0x500;
|
||||||
|
surface3->Release();
|
||||||
|
ddraw2->Release();
|
||||||
|
FreeLibrary(ddraw_module);
|
||||||
|
}
|
||||||
10
CONFIG/detectdx5.h
Normal file
10
CONFIG/detectdx5.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#if !defined(AFX_DETECTDX5_H)
|
||||||
|
#define AFX_DETECTDX5_H
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
extern BOOL DetectDirectX5();
|
||||||
|
|
||||||
|
extern void DetectDirectX(unsigned int* p_version, BOOL* p_found);
|
||||||
|
|
||||||
|
#endif // !defined(AFX_DETECTDX5_H)
|
||||||
82
CONFIG/res/config.rc
Normal file
82
CONFIG/res/config.rc
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#include "resource.h"
|
||||||
|
#include "afxres.h"
|
||||||
|
|
||||||
|
IDI_CONFIG ICON "lego.ico"
|
||||||
|
|
||||||
|
IDB_SHARK BITMAP "shark.bmp"
|
||||||
|
|
||||||
|
IDD_ABOUT DIALOG 0, 0, 217, 55
|
||||||
|
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "About Configure LEGO\xAE Island"
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
FONT 8, "MS Sans Serif"
|
||||||
|
BEGIN
|
||||||
|
CONTROL IDI_CONFIG, -1, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 11, 17, 18, 20
|
||||||
|
CONTROL "Configure LEGO Island Version 1.0", -1, "STATIC", SS_LEFT | SS_NOPREFIX | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 10, 119, 8
|
||||||
|
CONTROL "Copyright \xA9 1997 mindscape", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 25, 119, 8
|
||||||
|
CONTROL "OK", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 178, 7, 32, 14
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
BEGIN
|
||||||
|
IDS_ABOUT, "&About Config..."
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_MAIN DIALOGEX 0, 0, 289, 247
|
||||||
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
|
EXSTYLE WS_EX_APPWINDOW
|
||||||
|
CAPTION "Configure LEGO Island"
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
FONT 8, "MS Sans Serif"
|
||||||
|
BEGIN
|
||||||
|
CONTROL "OK", IDABORT, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 172, 125, 44, 14
|
||||||
|
CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 238, 125, 44, 14
|
||||||
|
CONTROL "Fast", IDC_RAD_MODEL_QUALITY_LOW, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 124, 18, 42, 10
|
||||||
|
CONTROL "High", IDC_RAD_MODEL_QUALITY_HIGH, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 192, 18, 69, 10
|
||||||
|
CONTROL "Fast", IDC_RAD_TEXTURE_QUALITY_LOW, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 124, 49, 43, 10
|
||||||
|
CONTROL "High", IDC_RAD_TEXTURE_QUALITY_HIGH, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 192, 49, 69, 10
|
||||||
|
CONTROL "256 Color", IDC_RAD_PALETTE_256, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 124, 80, 50, 10
|
||||||
|
CONTROL "High Color(16 bit)", IDC_RAD_PALETTE_16BIT, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 192, 80, 76, 10
|
||||||
|
CONTROL "Use Joystick", IDC_CHK_JOYSTICK, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 192, 104, 60, 10
|
||||||
|
CONTROL "", IDC_LIST_3DDEVICES, "LISTBOX", LBS_NOTIFY | LBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL, 115, 168, 161, 36 , WS_EX_TRANSPARENT
|
||||||
|
CONTROL "Flip Video Memory Pages", IDC_CHK_FLIP_VIDEO_MEM_PAGES, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 116, 224, 96, 15
|
||||||
|
CONTROL "Draw 3D to Video Memory", IDC_CHK_3D_VIDEO_MEMORY, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 116, 210, 99, 10
|
||||||
|
CONTROL "Color Palette", -1, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 107, 69, 175, 26
|
||||||
|
CONTROL "Direct 3D Devices", -1, "STATIC", SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 123, 158, 143, 10
|
||||||
|
CONTROL "3D Sound", IDC_CHK_3DSOUND, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 220, 210, 45, 10
|
||||||
|
CONTROL "Island Model Quality", -1, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 107, 7, 175, 26
|
||||||
|
CONTROL "Island Texture Quality", -1, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 107, 38, 175, 26
|
||||||
|
CONTROL "Advanced Settings", IDC_GRP_ADVANCED, "BUTTON", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 107, 147, 175, 93
|
||||||
|
CONTROL "Advanced", IDC_BTN_ADVANCED, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE, 109, 124, 44, 14
|
||||||
|
CONTROL IDB_SHARK, IDC_BMP_SHARK, "STATIC", SS_BITMAP | WS_CHILD | WS_VISIBLE, 7, 7, 83, 249
|
||||||
|
CONTROL "Draw Cursor", IDC_CHK_DRAW_CURSOR, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 219, 227, 54, 10
|
||||||
|
CONTROL "Music", IDC_CHK_MUSIC, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 124, 104, 35, 10
|
||||||
|
END
|
||||||
|
|
||||||
|
1 VERSIONINFO
|
||||||
|
FILEVERSION 1,1,0,0
|
||||||
|
PRODUCTVERSION 1,1,0,0
|
||||||
|
FILEOS 0x4
|
||||||
|
FILETYPE 0x1
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", "Mindscape, Inc."
|
||||||
|
VALUE "FileDescription", "LEGOIsland & Configuration application"
|
||||||
|
VALUE "FileVersion", "1, 1, 0, 0"
|
||||||
|
VALUE "InternalName", "LEGOISLE.EXE"
|
||||||
|
VALUE "LegalCopyright", "Copyright \xA9 1997"
|
||||||
|
VALUE "OriginalFilename", "CONFIG.EXE"
|
||||||
|
VALUE "ProductName", "LEGO Island"
|
||||||
|
VALUE "ProductVersion", "1, 1, 0, 0"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x0409, 0x04B0 // U.S. English, Unicode
|
||||||
|
END
|
||||||
|
END
|
||||||
BIN
CONFIG/res/lego.ico
Normal file
BIN
CONFIG/res/lego.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
25
CONFIG/res/resource.h
Normal file
25
CONFIG/res/resource.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#define IDI_CONFIG 128
|
||||||
|
|
||||||
|
#define IDD_ABOUT 100
|
||||||
|
#define IDS_ABOUT 101
|
||||||
|
|
||||||
|
#define IDD_MAIN 102
|
||||||
|
|
||||||
|
#define IDC_LIST_3DDEVICES 1000
|
||||||
|
#define IDC_CHK_FLIP_VIDEO_MEM_PAGES 1001
|
||||||
|
#define IDC_CHK_3D_VIDEO_MEMORY 1003
|
||||||
|
#define IDC_RAD_PALETTE_256 1004
|
||||||
|
#define IDC_RAD_PALETTE_16BIT 1005
|
||||||
|
#define IDC_CHK_3DSOUND 1006
|
||||||
|
#define IDC_CHK_DRAW_CURSOR 1008
|
||||||
|
#define IDC_RAD_MODEL_QUALITY_LOW 1010
|
||||||
|
#define IDC_RAD_MODEL_QUALITY_HIGH 1011
|
||||||
|
#define IDC_RAD_TEXTURE_QUALITY_LOW 1013
|
||||||
|
#define IDC_RAD_TEXTURE_QUALITY_HIGH 1014
|
||||||
|
#define IDC_CHK_JOYSTICK 1015
|
||||||
|
#define IDC_GRP_ADVANCED 1017
|
||||||
|
#define IDC_BTN_ADVANCED 1020
|
||||||
|
#define IDC_BMP_SHARK 1023
|
||||||
|
#define IDC_CHK_MUSIC 1024
|
||||||
|
|
||||||
|
#define IDB_SHARK 135
|
||||||
BIN
CONFIG/res/shark.bmp
Normal file
BIN
CONFIG/res/shark.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
@ -1,8 +1,10 @@
|
|||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
## Learning Decompilation
|
## Important Note
|
||||||
|
|
||||||
Generally, decompilation is a fairly advanced skill. If you aren't already familiar with it, it will likely take you months, or even years, to learn the skills necessary to do it (depending on your current proficiency with C/C++ and x86 assembly). If you're still interested, [part 1 of the decompilation vlog](https://www.youtube.com/watch?v=MToTEqoVv3I) covers the overall process and should give you a starting point that you can dive in from.
|
While we're thrilled that there is so much interest in reverse engineering LEGO Island and are happy to accept contributions from anyone who would like to help progress us further to our goal of a complete codebase, proposed changes to this repository must adhere to a certain degree of engineering quality. While the established contributors here are more than happy to provide code reviews and constructive criticism, it is not their job to teach potential contributors C++ or decompilation fundamentals. As a project that is largely an artifact of the free time of its contributors, the more of that (often scarce) resource that can be dedicated to efficient work, the faster the decompilation will progress. Unfortunately, this results in well-intentioned but poorly constructed contributions actually hurting progress in the long-term. While we are greatly appreciative of the sentiment, if you aren't very confident in your decompilation abilities, it is generally in the project's best interest that you return when you have a better grasp over the process.
|
||||||
|
|
||||||
|
Generally, decompilation is a fairly advanced skill. Depending on your current proficiency with C/C++ and x86 assembly, it could take you months or even years to learn the skills necessary to do it adequately. If you're still interested in learning, [part 1 of the decompilation vlog](https://www.youtube.com/watch?v=MToTEqoVv3I) covers the overall process and should give you a starting point that you can dive in from. Once again, please make yourself familiar with this process before attempting to contribute code to this project.
|
||||||
|
|
||||||
## Ghidra Server
|
## Ghidra Server
|
||||||
|
|
||||||
@ -15,7 +17,7 @@ To access the Ghidra repository, use the following details:
|
|||||||
|
|
||||||
## General Guidelines
|
## General Guidelines
|
||||||
|
|
||||||
If you have contributions, feel free to create a pull request! Someone will review and merge it (or provide feedback) as soon as possible.
|
If you feel fit to contribute, feel free to create a pull request! Someone will review and merge it (or provide feedback) as soon as possible.
|
||||||
|
|
||||||
Please keep your pull requests small and understandable; you may be able to shoot ahead and make a lot of progress in a short amount of time, but this is a collaborative project, so you must allow others to catch up and follow along. Large pull requests become significantly more unwieldy to review, and as such make it exponentially more likely for a mistake or error to go undetected. They also make it harder to merge other pull requests because the more files you modify, the more likely it is for a merge conflict to occur. A general guideline is to keep submissions limited to one class at a time. Sometimes two or more classes may be too interlinked for this to be feasible, so this is not a hard rule, however if your PR is starting to modify more than 10 or so files, it's probably getting too big.
|
Please keep your pull requests small and understandable; you may be able to shoot ahead and make a lot of progress in a short amount of time, but this is a collaborative project, so you must allow others to catch up and follow along. Large pull requests become significantly more unwieldy to review, and as such make it exponentially more likely for a mistake or error to go undetected. They also make it harder to merge other pull requests because the more files you modify, the more likely it is for a merge conflict to occur. A general guideline is to keep submissions limited to one class at a time. Sometimes two or more classes may be too interlinked for this to be feasible, so this is not a hard rule, however if your PR is starting to modify more than 10 or so files, it's probably getting too big.
|
||||||
|
|
||||||
|
|||||||
@ -1,40 +0,0 @@
|
|||||||
#include "define.h"
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x410030
|
|
||||||
IsleApp* g_isle = 0;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x410034
|
|
||||||
unsigned char g_mousedown = 0;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x410038
|
|
||||||
unsigned char g_mousemoved = 0;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x41003c
|
|
||||||
int g_closed = 0;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x410040
|
|
||||||
RECT g_windowRect = {0, 0, 640, 480};
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x410050
|
|
||||||
int g_rmDisabled = 0;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x410054
|
|
||||||
int g_waitingForTargetDepth = 1;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x410058
|
|
||||||
int g_targetWidth = 640;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x41005c
|
|
||||||
int g_targetHeight = 480;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x410060
|
|
||||||
int g_targetDepth = 16;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x410064
|
|
||||||
int g_reqEnableRMDevice = 0;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x4101bc
|
|
||||||
int g_startupDelay = 200;
|
|
||||||
|
|
||||||
// GLOBAL: ISLE 0x4101c0
|
|
||||||
MxLong g_lastFrameTime = 0;
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
#ifndef DEFINE_H
|
|
||||||
#define DEFINE_H
|
|
||||||
|
|
||||||
#include <mxtypes.h>
|
|
||||||
#include <windows.h>
|
|
||||||
|
|
||||||
class IsleApp;
|
|
||||||
|
|
||||||
extern IsleApp* g_isle;
|
|
||||||
extern int g_closed;
|
|
||||||
// STRING: ISLE 0x4101c4
|
|
||||||
#define WNDCLASS_NAME "Lego Island MainNoM App"
|
|
||||||
// STRING: ISLE 0x4101dc
|
|
||||||
#define WINDOW_TITLE "LEGO\xAE"
|
|
||||||
extern unsigned char g_mousedown;
|
|
||||||
extern unsigned char g_mousemoved;
|
|
||||||
extern RECT g_windowRect;
|
|
||||||
extern int g_rmDisabled;
|
|
||||||
extern int g_waitingForTargetDepth;
|
|
||||||
extern int g_targetWidth;
|
|
||||||
extern int g_targetHeight;
|
|
||||||
extern int g_targetDepth;
|
|
||||||
extern int g_reqEnableRMDevice;
|
|
||||||
extern int g_startupDelay;
|
|
||||||
extern MxLong g_lastFrameTime;
|
|
||||||
|
|
||||||
#endif // DEFINE_H
|
|
||||||
157
ISLE/isleapp.cpp
157
ISLE/isleapp.cpp
@ -1,6 +1,6 @@
|
|||||||
#include "isleapp.h"
|
#include "isleapp.h"
|
||||||
|
|
||||||
#include "define.h"
|
#include "decomp.h"
|
||||||
#include "legoanimationmanager.h"
|
#include "legoanimationmanager.h"
|
||||||
#include "legobuildingmanager.h"
|
#include "legobuildingmanager.h"
|
||||||
#include "legogamestate.h"
|
#include "legogamestate.h"
|
||||||
@ -23,9 +23,50 @@
|
|||||||
|
|
||||||
#include <dsound.h>
|
#include <dsound.h>
|
||||||
|
|
||||||
|
DECOMP_SIZE_ASSERT(IsleApp, 0x8c)
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x410030
|
||||||
|
IsleApp* g_isle = NULL;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x410034
|
||||||
|
unsigned char g_mousedown = 0;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x410038
|
||||||
|
unsigned char g_mousemoved = 0;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x41003c
|
||||||
|
BOOL g_closed = FALSE;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x410040
|
||||||
|
RECT g_windowRect = {0, 0, 640, 480};
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x410050
|
||||||
|
BOOL g_rmDisabled = FALSE;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x410054
|
||||||
|
BOOL g_waitingForTargetDepth = TRUE;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x410058
|
||||||
|
int g_targetWidth = 640;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x41005c
|
||||||
|
int g_targetHeight = 480;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x410060
|
||||||
|
int g_targetDepth = 16;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x410064
|
||||||
|
BOOL g_reqEnableRMDevice = FALSE;
|
||||||
|
|
||||||
|
// STRING: ISLE 0x4101c4
|
||||||
|
#define WNDCLASS_NAME "Lego Island MainNoM App"
|
||||||
|
|
||||||
|
// STRING: ISLE 0x4101dc
|
||||||
|
#define WINDOW_TITLE "LEGO\xAE"
|
||||||
|
|
||||||
// Might be static functions of IsleApp
|
// Might be static functions of IsleApp
|
||||||
BOOL FindExistingInstance(void);
|
BOOL FindExistingInstance();
|
||||||
BOOL StartDirectSound(void);
|
BOOL StartDirectSound();
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x401000
|
// FUNCTION: ISLE 0x401000
|
||||||
IsleApp::IsleApp()
|
IsleApp::IsleApp()
|
||||||
@ -34,25 +75,33 @@ IsleApp::IsleApp()
|
|||||||
m_cdPath = NULL;
|
m_cdPath = NULL;
|
||||||
m_deviceId = NULL;
|
m_deviceId = NULL;
|
||||||
m_savePath = NULL;
|
m_savePath = NULL;
|
||||||
m_fullScreen = 1;
|
m_fullScreen = TRUE;
|
||||||
m_flipSurfaces = 0;
|
m_flipSurfaces = FALSE;
|
||||||
m_backBuffersInVram = 1;
|
m_backBuffersInVram = TRUE;
|
||||||
m_using8bit = 0;
|
m_using8bit = FALSE;
|
||||||
m_using16bit = 1;
|
m_using16bit = TRUE;
|
||||||
m_unk0x24 = 0;
|
m_unk0x24 = 0;
|
||||||
m_drawCursor = 0;
|
m_drawCursor = FALSE;
|
||||||
m_use3dSound = 1;
|
m_use3dSound = TRUE;
|
||||||
m_useMusic = 1;
|
m_useMusic = TRUE;
|
||||||
m_useJoystick = 0;
|
m_useJoystick = FALSE;
|
||||||
m_joystickIndex = 0;
|
m_joystickIndex = 0;
|
||||||
m_wideViewAngle = 1;
|
m_wideViewAngle = TRUE;
|
||||||
m_islandQuality = 1;
|
m_islandQuality = 1;
|
||||||
m_islandTexture = 1;
|
m_islandTexture = 1;
|
||||||
m_gameStarted = 0;
|
m_gameStarted = FALSE;
|
||||||
m_frameDelta = 10;
|
m_frameDelta = 10;
|
||||||
m_windowActive = 1;
|
m_windowActive = TRUE;
|
||||||
|
|
||||||
|
#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());
|
m_videoParam = MxVideoParam(MxRect32(0, 0, 639, 479), NULL, 1, MxVideoParamFlags());
|
||||||
|
#endif
|
||||||
m_videoParam.Flags().Set16Bit(MxDirectDraw::GetPrimaryBitDepth() == 16);
|
m_videoParam.Flags().Set16Bit(MxDirectDraw::GetPrimaryBitDepth() == 16);
|
||||||
|
|
||||||
m_windowHandle = NULL;
|
m_windowHandle = NULL;
|
||||||
@ -227,8 +276,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||||||
|
|
||||||
// Get reference to window
|
// Get reference to window
|
||||||
HWND window;
|
HWND window;
|
||||||
if (g_isle->m_windowHandle) {
|
if (g_isle->GetWindowHandle()) {
|
||||||
window = g_isle->m_windowHandle;
|
window = g_isle->GetWindowHandle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load accelerators (this call actually achieves nothing - there is no "AppAccel" resource in the original - but
|
// Load accelerators (this call actually achieves nothing - there is no "AppAccel" resource in the original - but
|
||||||
@ -258,16 +307,16 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||||||
}
|
}
|
||||||
|
|
||||||
MSG nextMsg;
|
MSG nextMsg;
|
||||||
if (!g_isle || !g_isle->m_windowHandle || msg.message != WM_MOUSEMOVE ||
|
if (!g_isle || !g_isle->GetWindowHandle() || msg.message != WM_MOUSEMOVE ||
|
||||||
!PeekMessageA(&nextMsg, NULL, 0, 0, PM_NOREMOVE) || nextMsg.message != WM_MOUSEMOVE) {
|
!PeekMessageA(&nextMsg, NULL, 0, 0, PM_NOREMOVE) || nextMsg.message != WM_MOUSEMOVE) {
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessageA(&msg);
|
DispatchMessageA(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_reqEnableRMDevice) {
|
if (g_reqEnableRMDevice) {
|
||||||
g_reqEnableRMDevice = 0;
|
g_reqEnableRMDevice = FALSE;
|
||||||
VideoManager()->EnableRMDevice();
|
VideoManager()->EnableRMDevice();
|
||||||
g_rmDisabled = 0;
|
g_rmDisabled = FALSE;
|
||||||
Lego()->StopTimer();
|
Lego()->StopTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,7 +340,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x401ca0
|
// FUNCTION: ISLE 0x401ca0
|
||||||
BOOL FindExistingInstance(void)
|
BOOL FindExistingInstance()
|
||||||
{
|
{
|
||||||
HWND hWnd = FindWindowA(WNDCLASS_NAME, WINDOW_TITLE);
|
HWND hWnd = FindWindowA(WNDCLASS_NAME, WINDOW_TITLE);
|
||||||
if (hWnd) {
|
if (hWnd) {
|
||||||
@ -304,7 +353,7 @@ BOOL FindExistingInstance(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x401ce0
|
// FUNCTION: ISLE 0x401ce0
|
||||||
BOOL StartDirectSound(void)
|
BOOL StartDirectSound()
|
||||||
{
|
{
|
||||||
LPDIRECTSOUND lpDS = NULL;
|
LPDIRECTSOUND lpDS = NULL;
|
||||||
HRESULT ret = DirectSoundCreate(NULL, &lpDS, NULL);
|
HRESULT ret = DirectSoundCreate(NULL, &lpDS, NULL);
|
||||||
@ -333,7 +382,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
case WM_ACTIVATEAPP:
|
case WM_ACTIVATEAPP:
|
||||||
if (g_isle) {
|
if (g_isle) {
|
||||||
if ((wParam != 0) && (g_isle->m_fullScreen)) {
|
if ((wParam != 0) && (g_isle->GetFullScreen())) {
|
||||||
MoveWindow(
|
MoveWindow(
|
||||||
hWnd,
|
hWnd,
|
||||||
g_windowRect.left,
|
g_windowRect.left,
|
||||||
@ -343,7 +392,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
TRUE
|
TRUE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
g_isle->m_windowActive = wParam;
|
g_isle->SetWindowActive(wParam);
|
||||||
}
|
}
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
@ -368,41 +417,41 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
if (wParam == SC_SCREENSAVE) {
|
if (wParam == SC_SCREENSAVE) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (wParam == SC_CLOSE && g_closed == 0) {
|
if (wParam == SC_CLOSE && g_closed == FALSE) {
|
||||||
if (g_isle) {
|
if (g_isle) {
|
||||||
if (g_rmDisabled) {
|
if (g_rmDisabled) {
|
||||||
ShowWindow(g_isle->m_windowHandle, SW_RESTORE);
|
ShowWindow(g_isle->GetWindowHandle(), SW_RESTORE);
|
||||||
}
|
}
|
||||||
PostMessageA(g_isle->m_windowHandle, WM_CLOSE, 0, 0);
|
PostMessageA(g_isle->GetWindowHandle(), WM_CLOSE, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (g_isle && g_isle->m_fullScreen && (wParam == SC_MOVE || wParam == SC_KEYMENU)) {
|
else if (g_isle && g_isle->GetFullScreen() && (wParam == SC_MOVE || wParam == SC_KEYMENU)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
case WM_EXITMENULOOP:
|
case WM_EXITMENULOOP:
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
case WM_MOVING:
|
case WM_MOVING:
|
||||||
if (g_isle && g_isle->m_fullScreen) {
|
if (g_isle && g_isle->GetFullScreen()) {
|
||||||
GetWindowRect(hWnd, (LPRECT) lParam);
|
GetWindowRect(hWnd, (LPRECT) lParam);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
case WM_NCPAINT:
|
case WM_NCPAINT:
|
||||||
if (g_isle && g_isle->m_fullScreen) {
|
if (g_isle && g_isle->GetFullScreen()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA(hWnd, uMsg, wParam, lParam);
|
||||||
case WM_DISPLAYCHANGE:
|
case WM_DISPLAYCHANGE:
|
||||||
if (g_isle && VideoManager() && g_isle->m_fullScreen && VideoManager()->GetDirect3D()) {
|
if (g_isle && VideoManager() && g_isle->GetFullScreen() && VideoManager()->GetDirect3D()) {
|
||||||
if (VideoManager()->GetDirect3D()->GetAssignedDevice()) {
|
if (VideoManager()->GetDirect3D()->AssignedDevice()) {
|
||||||
int targetDepth = wParam;
|
int targetDepth = wParam;
|
||||||
int targetWidth = LOWORD(lParam);
|
int targetWidth = LOWORD(lParam);
|
||||||
int targetHeight = HIWORD(lParam);
|
int targetHeight = HIWORD(lParam);
|
||||||
|
|
||||||
if (g_waitingForTargetDepth) {
|
if (g_waitingForTargetDepth) {
|
||||||
g_waitingForTargetDepth = 0;
|
g_waitingForTargetDepth = FALSE;
|
||||||
g_targetDepth = targetDepth;
|
g_targetDepth = targetDepth;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -415,11 +464,11 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
|
|
||||||
if (g_rmDisabled) {
|
if (g_rmDisabled) {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
g_reqEnableRMDevice = 1;
|
g_reqEnableRMDevice = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!valid) {
|
else if (!valid) {
|
||||||
g_rmDisabled = 1;
|
g_rmDisabled = TRUE;
|
||||||
Lego()->StartTimer();
|
Lego()->StartTimer();
|
||||||
VideoManager()->DisableRMDevice();
|
VideoManager()->DisableRMDevice();
|
||||||
}
|
}
|
||||||
@ -458,9 +507,9 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WM_SETCURSOR:
|
case WM_SETCURSOR:
|
||||||
if (g_isle && (g_isle->m_cursorCurrent == g_isle->m_cursorBusy ||
|
if (g_isle && (g_isle->GetCursorCurrent() == g_isle->GetCursorBusy() ||
|
||||||
g_isle->m_cursorCurrent == g_isle->m_cursorNo || !g_isle->m_cursorCurrent)) {
|
g_isle->GetCursorCurrent() == g_isle->GetCursorNo() || !g_isle->GetCursorCurrent())) {
|
||||||
SetCursor(g_isle->m_cursorCurrent);
|
SetCursor(g_isle->GetCursorCurrent());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -472,7 +521,7 @@ LRESULT WINAPI WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||||||
if (InputManager()) {
|
if (InputManager()) {
|
||||||
InputManager()->QueueEvent(type, wParam, LOWORD(lParam), HIWORD(lParam), keyCode);
|
InputManager()->QueueEvent(type, wParam, LOWORD(lParam), HIWORD(lParam), keyCode);
|
||||||
}
|
}
|
||||||
if (g_isle && g_isle->m_drawCursor && type == c_notificationMouseMove) {
|
if (g_isle && g_isle->GetDrawCursor() && type == c_notificationMouseMove) {
|
||||||
int x = LOWORD(lParam);
|
int x = LOWORD(lParam);
|
||||||
int y = HIWORD(lParam);
|
int y = HIWORD(lParam);
|
||||||
if (x >= 640) {
|
if (x >= 640) {
|
||||||
@ -654,7 +703,7 @@ BOOL IsleApp::ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x4027b0
|
// FUNCTION: ISLE 0x4027b0
|
||||||
int IsleApp::ReadRegBool(LPCSTR name, BOOL* out)
|
BOOL IsleApp::ReadRegBool(LPCSTR name, BOOL* out)
|
||||||
{
|
{
|
||||||
char buffer[256];
|
char buffer[256];
|
||||||
|
|
||||||
@ -676,7 +725,7 @@ int IsleApp::ReadRegBool(LPCSTR name, BOOL* out)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x402880
|
// FUNCTION: ISLE 0x402880
|
||||||
int IsleApp::ReadRegInt(LPCSTR name, int* out)
|
BOOL IsleApp::ReadRegInt(LPCSTR name, int* out)
|
||||||
{
|
{
|
||||||
char buffer[256];
|
char buffer[256];
|
||||||
|
|
||||||
@ -757,24 +806,33 @@ void IsleApp::LoadConfig()
|
|||||||
// FUNCTION: ISLE 0x402c20
|
// FUNCTION: ISLE 0x402c20
|
||||||
inline void IsleApp::Tick(BOOL sleepIfNotNextFrame)
|
inline void IsleApp::Tick(BOOL sleepIfNotNextFrame)
|
||||||
{
|
{
|
||||||
if (!this->m_windowActive) {
|
// GLOBAL: ISLE 0x4101c0
|
||||||
|
static MxLong g_lastFrameTime = 0;
|
||||||
|
|
||||||
|
// GLOBAL: ISLE 0x4101bc
|
||||||
|
static int g_startupDelay = 200;
|
||||||
|
|
||||||
|
if (!m_windowActive) {
|
||||||
Sleep(0);
|
Sleep(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Lego())
|
if (!Lego()) {
|
||||||
return;
|
return;
|
||||||
if (!TickleManager())
|
}
|
||||||
|
if (!TickleManager()) {
|
||||||
return;
|
return;
|
||||||
if (!Timer())
|
}
|
||||||
|
if (!Timer()) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
MxLong currentTime = Timer()->GetRealTime();
|
MxLong currentTime = Timer()->GetRealTime();
|
||||||
if (currentTime < g_lastFrameTime) {
|
if (currentTime < g_lastFrameTime) {
|
||||||
g_lastFrameTime = -this->m_frameDelta;
|
g_lastFrameTime = -m_frameDelta;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->m_frameDelta + g_lastFrameTime < currentTime) {
|
if (m_frameDelta + g_lastFrameTime < currentTime) {
|
||||||
if (!Lego()->IsTimerRunning()) {
|
if (!Lego()->IsTimerRunning()) {
|
||||||
TickleManager()->Tickle();
|
TickleManager()->Tickle();
|
||||||
}
|
}
|
||||||
@ -817,11 +875,12 @@ inline void IsleApp::Tick(BOOL sleepIfNotNextFrame)
|
|||||||
if (Start(&ds) != SUCCESS) {
|
if (Start(&ds) != SUCCESS) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this->m_gameStarted = 1;
|
m_gameStarted = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sleepIfNotNextFrame != 0)
|
else if (sleepIfNotNextFrame != 0) {
|
||||||
Sleep(0);
|
Sleep(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: ISLE 0x402e80
|
// FUNCTION: ISLE 0x402e80
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
|
// SIZE 0x8c
|
||||||
class IsleApp {
|
class IsleApp {
|
||||||
public:
|
public:
|
||||||
IsleApp();
|
IsleApp();
|
||||||
@ -28,56 +29,51 @@ class IsleApp {
|
|||||||
MxResult SetupWindow(HINSTANCE hInstance, LPSTR lpCmdLine);
|
MxResult SetupWindow(HINSTANCE hInstance, LPSTR lpCmdLine);
|
||||||
|
|
||||||
BOOL ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize);
|
BOOL ReadReg(LPCSTR name, LPSTR outValue, DWORD outSize);
|
||||||
int ReadRegBool(LPCSTR name, BOOL* out);
|
BOOL ReadRegBool(LPCSTR name, BOOL* out);
|
||||||
int ReadRegInt(LPCSTR name, int* out);
|
BOOL ReadRegInt(LPCSTR name, int* out);
|
||||||
|
|
||||||
void LoadConfig();
|
void LoadConfig();
|
||||||
void Tick(BOOL sleepIfNotNextFrame);
|
void Tick(BOOL sleepIfNotNextFrame);
|
||||||
void SetupCursor(WPARAM wParam);
|
void SetupCursor(WPARAM wParam);
|
||||||
|
|
||||||
// private:
|
inline HWND GetWindowHandle() { return m_windowHandle; }
|
||||||
// 0
|
inline MxLong GetFrameDelta() { return m_frameDelta; }
|
||||||
LPSTR m_hdPath;
|
inline BOOL GetFullScreen() { return m_fullScreen; }
|
||||||
LPSTR m_cdPath;
|
inline HCURSOR GetCursorCurrent() { return m_cursorCurrent; }
|
||||||
LPSTR m_deviceId;
|
inline HCURSOR GetCursorBusy() { return m_cursorBusy; }
|
||||||
LPSTR m_savePath;
|
inline HCURSOR GetCursorNo() { return m_cursorNo; }
|
||||||
|
inline BOOL GetDrawCursor() { return m_drawCursor; }
|
||||||
|
|
||||||
// 10
|
inline void SetWindowActive(BOOL p_windowActive) { m_windowActive = p_windowActive; }
|
||||||
BOOL m_fullScreen;
|
|
||||||
BOOL m_flipSurfaces;
|
|
||||||
BOOL m_backBuffersInVram;
|
|
||||||
BOOL m_using8bit;
|
|
||||||
|
|
||||||
// 20
|
private:
|
||||||
BOOL m_using16bit;
|
LPSTR m_hdPath; // 0x00
|
||||||
int m_unk0x24;
|
LPSTR m_cdPath; // 0x04
|
||||||
BOOL m_use3dSound;
|
LPSTR m_deviceId; // 0x08
|
||||||
BOOL m_useMusic;
|
LPSTR m_savePath; // 0x0c
|
||||||
|
BOOL m_fullScreen; // 0x10
|
||||||
// 30
|
BOOL m_flipSurfaces; // 0x14
|
||||||
BOOL m_useJoystick;
|
BOOL m_backBuffersInVram; // 0x18
|
||||||
int m_joystickIndex;
|
BOOL m_using8bit; // 0x1c
|
||||||
BOOL m_wideViewAngle;
|
BOOL m_using16bit; // 0x20
|
||||||
int m_islandQuality;
|
int m_unk0x24; // 0x24
|
||||||
|
BOOL m_use3dSound; // 0x28
|
||||||
// 40
|
BOOL m_useMusic; // 0x2c
|
||||||
int m_islandTexture;
|
BOOL m_useJoystick; // 0x30
|
||||||
int m_gameStarted;
|
int m_joystickIndex; // 0x34
|
||||||
MxLong m_frameDelta;
|
BOOL m_wideViewAngle; // 0x38
|
||||||
|
int m_islandQuality; // 0x3c
|
||||||
// 4c
|
int m_islandTexture; // 0x40
|
||||||
MxVideoParam m_videoParam;
|
BOOL m_gameStarted; // 0x44
|
||||||
|
MxLong m_frameDelta; // 0x48
|
||||||
// 70
|
MxVideoParam m_videoParam; // 0x4c
|
||||||
BOOL m_windowActive;
|
BOOL m_windowActive; // 0x70
|
||||||
HWND m_windowHandle;
|
HWND m_windowHandle; // 0x74
|
||||||
BOOL m_drawCursor;
|
BOOL m_drawCursor; // 0x78
|
||||||
HCURSOR m_cursorArrow;
|
HCURSOR m_cursorArrow; // 0x7c
|
||||||
|
HCURSOR m_cursorBusy; // 0x80
|
||||||
// 80
|
HCURSOR m_cursorNo; // 0x84
|
||||||
HCURSOR m_cursorBusy;
|
HCURSOR m_cursorCurrent; // 0x88
|
||||||
HCURSOR m_cursorNo;
|
|
||||||
HCURSOR m_cursorCurrent;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ISLEAPP_H
|
#endif // ISLEAPP_H
|
||||||
|
|||||||
138
LEGO1/LegoOmni.def
Normal file
138
LEGO1/LegoOmni.def
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
; LegoOmni.def : Declares the module paarameters for the LEGO1.DLL.
|
||||||
|
|
||||||
|
DESCRIPTION "Lego OMNI Windows Dynamic Link Library"
|
||||||
|
|
||||||
|
EXPORTS
|
||||||
|
|
||||||
|
; EXPORTs really required only.
|
||||||
|
|
||||||
|
??0LegoBackgroundColor@@QAE@PBD0@Z
|
||||||
|
??0LegoGameState@@QAE@XZ
|
||||||
|
??0LegoWorld@@QAE@XZ
|
||||||
|
??0MxAtomId@@QAE@PBDW4LookupMode@@@Z
|
||||||
|
??0MxBitmap@@QAE@XZ
|
||||||
|
??0MxCore@@QAE@XZ
|
||||||
|
??0MxCriticalSection@@QAE@XZ
|
||||||
|
??0MxDSAction@@QAE@XZ
|
||||||
|
??0MxDSFile@@QAE@PBDK@Z
|
||||||
|
??0MxOmniCreateFlags@@QAE@XZ
|
||||||
|
??0MxOmniCreateParam@@QAE@PBDPAUHWND__@@AAVMxVideoParam@@VMxOmniCreateFlags@@@Z
|
||||||
|
??0MxString@@QAE@ABV0@@Z
|
||||||
|
??0MxVideoParam@@QAE@AAV0@@Z
|
||||||
|
??0MxVideoParam@@QAE@AAVMxRect32@@PAVMxPalette@@KAAVMxVideoParamFlags@@@Z
|
||||||
|
??0MxVideoParam@@QAE@XZ
|
||||||
|
??0MxVideoParamFlags@@QAE@XZ
|
||||||
|
??1LegoEntity@@UAE@XZ
|
||||||
|
??1LegoGameState@@QAE@XZ
|
||||||
|
??1LegoWorld@@UAE@XZ
|
||||||
|
??1MXIOINFO@@QAE@XZ
|
||||||
|
??1MxAtomId@@QAE@XZ
|
||||||
|
??1MxBitmap@@UAE@XZ
|
||||||
|
??1MxCore@@UAE@XZ
|
||||||
|
??1MxCriticalSection@@QAE@XZ
|
||||||
|
??1MxDSAction@@UAE@XZ
|
||||||
|
??1MxDSFile@@UAE@XZ
|
||||||
|
??1MxPresenter@@UAE@XZ
|
||||||
|
??1MxString@@UAE@XZ
|
||||||
|
??1MxVideoParam@@QAE@XZ
|
||||||
|
??4MxAtomId@@QAEAAV0@ABV0@@Z
|
||||||
|
??4MxString@@QAEABV0@PBD@Z
|
||||||
|
??4MxVideoParam@@QAEAAV0@ABV0@@Z
|
||||||
|
??8MxPalette@@QAEEAAV0@@Z
|
||||||
|
?BackgroundAudioManager@@YAPAVMxBackgroundAudioManager@@XZ
|
||||||
|
?Close@MxDSFile@@UAEJXZ
|
||||||
|
?Close@MxStreamer@@QAEJPBD@Z
|
||||||
|
?CreateBackgroundAudio@LegoOmni@@QAEXXZ
|
||||||
|
?CreateInstance@LegoOmni@@SAXXZ
|
||||||
|
?CreatePalette@MxBitmap@@UAEPAVMxPalette@@XZ
|
||||||
|
?CreateStreamObject@@YAPAVMxDSObject@@PAVMxDSFile@@F@Z
|
||||||
|
?DestroyInstance@MxOmni@@SAXXZ
|
||||||
|
?Detach@MxPalette@@QAEXXZ
|
||||||
|
?DisableRMDevice@LegoVideoManager@@QAEHXZ
|
||||||
|
?DoneTickle@MxPresenter@@MAEXXZ
|
||||||
|
?Enable@MxBackgroundAudioManager@@QAEXE@Z
|
||||||
|
?Enable@MxPresenter@@UAEXE@Z
|
||||||
|
?EnableFullScreenMovie@LegoVideoManager@@QAEXEE@Z
|
||||||
|
?EnableRMDevice@LegoVideoManager@@QAEHXZ
|
||||||
|
?EndAction@MxPresenter@@UAEXXZ
|
||||||
|
?EventManager@@YAPAVMxEventManager@@XZ
|
||||||
|
?FlipToGDISurface@MxDirectDraw@@QAEHXZ
|
||||||
|
?GameState@@YAPAVLegoGameState@@XZ
|
||||||
|
?GetBufferSize@MxDSFile@@UAEKXZ
|
||||||
|
?GetCD@MxOmni@@SAPBDXZ
|
||||||
|
?GetCurrPathInfo@LegoOmni@@SAHPAPAVLegoPathBoundary@@AAH@Z
|
||||||
|
?GetDefaults@LegoNavController@@SAXPAHPAM11111111PAE@Z
|
||||||
|
?GetHD@MxOmni@@SAPBDXZ
|
||||||
|
?GetInstance@LegoOmni@@SAPAV1@XZ
|
||||||
|
?GetInstance@MxOmni@@SAPAV1@XZ
|
||||||
|
?GetInstance@MxScheduler@@SAPAV1@XZ
|
||||||
|
?GetNoCD_SourceName@@YAPBDXZ
|
||||||
|
?GetPartsThreshold@RealtimeView@@SAMXZ
|
||||||
|
?GetPrimaryBitDepth@MxDirectDraw@@SAHXZ
|
||||||
|
?GetRealTime@MxTimer@@QAEJXZ
|
||||||
|
?GetStreamBuffersNum@MxDSFile@@UAEKXZ
|
||||||
|
?GetUserMaxLOD@RealtimeView@@SAMXZ
|
||||||
|
?GetVariable@MxVariableTable@@QAEPBDPBD@Z
|
||||||
|
?Init@MxPresenter@@IAEXXZ
|
||||||
|
?InputManager@@YAPAVLegoInputManager@@XZ
|
||||||
|
?InvalidateRect@MxVideoManager@@QAEXAAVMxRect32@@@Z
|
||||||
|
?IsSound3D@MxOmni@@SAEXZ
|
||||||
|
?Lego@@YAPAVLegoOmni@@XZ
|
||||||
|
?Load@LegoGameState@@QAEJK@Z
|
||||||
|
?MSoundManager@@YAPAVMxSoundManager@@XZ
|
||||||
|
?MakeSourceName@@YAXPADPBD@Z
|
||||||
|
?MoveCursor@LegoVideoManager@@QAEXHH@Z
|
||||||
|
?MusicManager@@YAPAVMxMusicManager@@XZ
|
||||||
|
?NotificationManager@@YAPAVMxNotificationManager@@XZ
|
||||||
|
?Notify@MxCore@@UAEJAAVMxParam@@@Z
|
||||||
|
?Open@MxDSFile@@UAEJK@Z
|
||||||
|
?Open@MxStreamer@@QAEPAVMxStreamController@@PBDG@Z
|
||||||
|
?ParseExtra@MxPresenter@@MAEXXZ
|
||||||
|
?Pause@MxDirectDraw@@QAEHH@Z
|
||||||
|
?PickEntity@@YAPAVLegoEntity@@JJ@Z
|
||||||
|
?PickROI@@YAPAVLegoROI@@JJ@Z
|
||||||
|
?QueueEvent@LegoInputManager@@QAEXW4NotificationId@@EJJE@Z
|
||||||
|
?Read@MxBitmap@@UAEJPBD@Z
|
||||||
|
?Read@MxDSFile@@UAEJPAEK@Z
|
||||||
|
?RealizePalette@MxVideoManager@@UAEJPAVMxPalette@@@Z
|
||||||
|
?Register@LegoInputManager@@QAEXPAVMxCore@@@Z
|
||||||
|
?RemoveAll@ViewManager@@QAEXPAVViewROI@@@Z
|
||||||
|
?RemoveWorld@LegoOmni@@QAEXABVMxAtomId@@J@Z
|
||||||
|
?Save@LegoGameState@@QAEJK@Z
|
||||||
|
?Seek@MxDSFile@@UAEJJH@Z
|
||||||
|
?SerializePlayersInfo@LegoGameState@@QAEXF@Z
|
||||||
|
?SerializeScoreHistory@LegoGameState@@QAEXF@Z
|
||||||
|
?SetCD@MxOmni@@SAXPBD@Z
|
||||||
|
?SetDefaults@LegoNavController@@SAXHMMMMMMMMME@Z
|
||||||
|
?SetDeviceName@MxVideoParam@@QAEXPAD@Z
|
||||||
|
?SetDisplayBB@LegoROI@@QAEXH@Z
|
||||||
|
?SetDoMutex@MxCriticalSection@@SAXXZ
|
||||||
|
?SetHD@MxOmni@@SAXPBD@Z
|
||||||
|
?SetObjectName@MxDSObject@@QAEXPBD@Z
|
||||||
|
?SetOmniUserMessage@@YAXP6AXPBDH@Z@Z
|
||||||
|
?SetPartsThreshold@RealtimeView@@SAXM@Z
|
||||||
|
?SetSavePath@LegoGameState@@QAEXPAD@Z
|
||||||
|
?SetSound3D@MxOmni@@SAXE@Z
|
||||||
|
?SetUserMaxLOD@RealtimeView@@SAXM@Z
|
||||||
|
?SetVariable@MxVariableTable@@QAEXPAVMxVariable@@@Z
|
||||||
|
?SetVariable@MxVariableTable@@QAEXPBD0@Z
|
||||||
|
?SetWaitIndicator@MxTransitionManager@@QAEXPAVMxVideoPresenter@@@Z
|
||||||
|
?SoundManager@@YAPAVLegoSoundManager@@XZ
|
||||||
|
?Start@@YAJPAVMxDSAction@@@Z
|
||||||
|
?StartAction@MxPresenter@@UAEJPAVMxStreamController@@PAVMxDSAction@@@Z
|
||||||
|
?StartMultiTasking@MxScheduler@@QAEXK@Z
|
||||||
|
?Streamer@@YAPAVMxStreamer@@XZ
|
||||||
|
?Tickle@MxPresenter@@UAEJXZ
|
||||||
|
?TickleManager@@YAPAVMxTickleManager@@XZ
|
||||||
|
?Timer@@YAPAVMxTimer@@XZ
|
||||||
|
?TransitionManager@@YAPAVMxTransitionManager@@XZ
|
||||||
|
?UnRegister@LegoInputManager@@QAEXPAVMxCore@@@Z
|
||||||
|
?VariableTable@@YAPAVMxVariableTable@@XZ
|
||||||
|
?VideoManager@@YAPAVLegoVideoManager@@XZ
|
||||||
|
?configureLegoAnimationManager@LegoAnimationManager@@SAXH@Z
|
||||||
|
?configureLegoBuildingManager@LegoBuildingManager@@SAXH@Z
|
||||||
|
?configureLegoModelPresenter@LegoModelPresenter@@SAXH@Z
|
||||||
|
?configureLegoPartPresenter@LegoPartPresenter@@SAXHH@Z
|
||||||
|
?configureLegoROI@LegoROI@@SAXH@Z
|
||||||
|
?configureLegoWorldPresenter@LegoWorldPresenter@@SAXH@Z
|
||||||
|
_DllMain@12
|
||||||
164
LEGO1/LegoOmni.mingw.def
Normal file
164
LEGO1/LegoOmni.mingw.def
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
; 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
|
||||||
|
_ZN10MxDSActionC1Ev
|
||||||
|
_ZN10MxDSActionC2Ev
|
||||||
|
_ZN10MxDSActionD0Ev
|
||||||
|
_ZN10MxDSActionD1Ev
|
||||||
|
_ZN10MxDSActionD2Ev
|
||||||
|
_ZN10MxDSObject13SetObjectNameEPKc
|
||||||
|
_ZN10MxStreamer4OpenEPKct
|
||||||
|
_ZN10MxStreamer5CloseEPKc
|
||||||
|
_ZN11MxPresenter10DoneTickleEv
|
||||||
|
_ZN11MxPresenter10ParseExtraEv
|
||||||
|
_ZN11MxPresenter11StartActionEP18MxStreamControllerP10MxDSAction
|
||||||
|
_ZN11MxPresenter4InitEv
|
||||||
|
_ZN11MxPresenter6EnableEh
|
||||||
|
_ZN11MxPresenter6TickleEv
|
||||||
|
_ZN11MxPresenter9EndActionEv
|
||||||
|
_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_
|
||||||
@ -2,49 +2,124 @@
|
|||||||
#define ACT1STATE_H
|
#define ACT1STATE_H
|
||||||
|
|
||||||
#include "legostate.h"
|
#include "legostate.h"
|
||||||
|
#include "legoutil.h"
|
||||||
|
#include "roi/legoroi.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d7028
|
// VTABLE: LEGO1 0x100d7028
|
||||||
// SIZE 0x26c
|
// SIZE 0x26c
|
||||||
class Act1State : public LegoState {
|
class Act1State : public LegoState {
|
||||||
public:
|
public:
|
||||||
|
enum {
|
||||||
|
e_unk953 = 953,
|
||||||
|
e_unk954 = 954,
|
||||||
|
e_unk955 = 955,
|
||||||
|
};
|
||||||
|
|
||||||
Act1State();
|
Act1State();
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100338a0
|
// FUNCTION: LEGO1 0x100338a0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0154
|
// STRING: LEGO1 0x100f0154
|
||||||
return "Act1State";
|
return "Act1State";
|
||||||
};
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100338b0
|
// FUNCTION: LEGO1 0x100338b0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, Act1State::ClassName()) || LegoState::IsA(p_name);
|
||||||
};
|
}
|
||||||
|
|
||||||
virtual MxBool SetFlag() override; // vtable+0x18
|
MxBool SetFlag() override; // vtable+0x18
|
||||||
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1c
|
MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
|
||||||
|
|
||||||
inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x18 = p_unk0x18; }
|
inline void SetUnknown18(MxU32 p_unk0x18) { m_unk0x018 = p_unk0x18; }
|
||||||
inline MxU32 GetUnknown18() { return m_unk0x18; }
|
inline MxU32 GetUnknown18() { return m_unk0x018; }
|
||||||
inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x21 = p_unk0x21; }
|
inline MxU32 GetUnknown1c() { return m_unk0x01c; }
|
||||||
inline MxS16 GetUnknown21() { return m_unk0x21; }
|
inline MxS16 GetUnknown21() { return m_unk0x021; }
|
||||||
|
|
||||||
|
inline void SetUnknown1c(MxU32 p_unk0x1c) { m_unk0x01c = p_unk0x1c; }
|
||||||
|
inline void SetUnknown21(MxS16 p_unk0x21) { m_unk0x021 = p_unk0x21; }
|
||||||
|
|
||||||
void FUN_10034d00();
|
void FUN_10034d00();
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10033960
|
// SYNTHETIC: LEGO1 0x10033960
|
||||||
// Act1State::`scalar deleting destructor'
|
// Act1State::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// SIZE 0x4c
|
||||||
|
class NamedPlane {
|
||||||
|
public:
|
||||||
|
// FUNCTION: LEGO1 0x10033800
|
||||||
|
NamedPlane() {}
|
||||||
|
|
||||||
|
inline void SetName(const char* p_name) { m_name = p_name; }
|
||||||
|
inline const MxString* GetName() const { return &m_name; }
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x100344d0
|
||||||
|
MxResult Serialize(LegoFile* p_file)
|
||||||
|
{
|
||||||
|
if (p_file->IsWriteMode()) {
|
||||||
|
p_file->FUN_10006030(m_name);
|
||||||
|
p_file->WriteVector3(m_point1);
|
||||||
|
p_file->WriteVector3(m_point2);
|
||||||
|
p_file->WriteVector3(m_point3);
|
||||||
|
}
|
||||||
|
else if (p_file->IsReadMode()) {
|
||||||
|
p_file->ReadString(m_name);
|
||||||
|
p_file->ReadVector3(m_point1);
|
||||||
|
p_file->ReadVector3(m_point2);
|
||||||
|
p_file->ReadVector3(m_point3);
|
||||||
|
}
|
||||||
|
|
||||||
|
return SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
MxString m_name; // 0x00
|
||||||
|
Mx3DPointFloat m_point1; // 0x10
|
||||||
|
Mx3DPointFloat m_point2; // 0x24
|
||||||
|
Mx3DPointFloat m_point3; // 0x38
|
||||||
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
undefined m_unk0x8[0x10]; // 0x8
|
MxS32* m_unk0x008; // 0x008
|
||||||
MxU32 m_unk0x18; // 0x18
|
// FIXME: count for m_unk0x008
|
||||||
undefined2 m_unk0x1c; // 0x1c
|
MxS16 m_unk0x00c; // 0x00c
|
||||||
undefined m_unk0x1e; // 0x1e
|
undefined2 m_unk0x00e; // 0x00e
|
||||||
undefined m_unk0x1f; // 0x1f
|
undefined2 m_unk0x010; // 0x010
|
||||||
undefined m_unk0x20; // 0x20
|
undefined m_unk0x012; // 0x012
|
||||||
MxBool m_unk0x21; // 0x21
|
MxS32 m_unk0x014; // 0x014
|
||||||
undefined m_unk0x22; // 0x22
|
MxU32 m_unk0x018; // 0x018
|
||||||
// TODO
|
MxU16 m_unk0x01c; // 0x01c
|
||||||
|
undefined m_unk0x01e; // 0x01e
|
||||||
|
undefined m_unk0x01f; // 0x01f
|
||||||
|
undefined m_unk0x020; // 0x020
|
||||||
|
undefined m_unk0x021; // 0x021
|
||||||
|
undefined m_unk0x022; // 0x022
|
||||||
|
undefined m_unk0x023; // 0x023
|
||||||
|
NamedPlane m_unk0x024; // 0x024
|
||||||
|
NamedPlane m_unk0x070; // 0x070
|
||||||
|
NamedPlane m_unk0x0bc; // 0x0bc
|
||||||
|
NamedPlane m_unk0x108; // 0x108
|
||||||
|
NamedTexture* m_unk0x154; // 0x154
|
||||||
|
NamedTexture* m_unk0x158; // 0x158
|
||||||
|
NamedTexture* m_unk0x15c; // 0x15c
|
||||||
|
MxCore* m_unk0x160; // 0x160
|
||||||
|
NamedPlane m_unk0x164; // 0x164
|
||||||
|
NamedTexture* m_unk0x1b0; // 0x1b0
|
||||||
|
NamedTexture* m_unk0x1b4; // 0x1b4
|
||||||
|
MxCore* m_unk0x1b8; // 0x1b8
|
||||||
|
NamedPlane m_unk0x1bc; // 0x1bc
|
||||||
|
NamedTexture* m_unk0x208; // 0x208
|
||||||
|
MxCore* m_unk0x20c; // 0x20c
|
||||||
|
NamedPlane m_unk0x210; // 0x210
|
||||||
|
NamedTexture* m_unk0x25c; // 0x25c
|
||||||
|
NamedTexture* m_unk0x260; // 0x260
|
||||||
|
NamedTexture* m_unk0x264; // 0x264
|
||||||
|
MxCore* m_unk0x268; // 0x268
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x10033a70
|
||||||
|
// Act1State::NamedPlane::~NamedPlane
|
||||||
|
|
||||||
#endif // ACT1STATE_H
|
#endif // ACT1STATE_H
|
||||||
|
|||||||
@ -8,25 +8,25 @@
|
|||||||
class Act2Brick : public LegoPathActor {
|
class Act2Brick : public LegoPathActor {
|
||||||
public:
|
public:
|
||||||
Act2Brick();
|
Act2Brick();
|
||||||
virtual ~Act2Brick() override; // vtable+0x0
|
~Act2Brick() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x08
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1007a360
|
// FUNCTION: LEGO1 0x1007a360
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0438
|
// STRING: LEGO1 0x100f0438
|
||||||
return "Act2Brick";
|
return "Act2Brick";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1007a370
|
// FUNCTION: LEGO1 0x1007a370
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name);
|
return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxS32 VTable0x94() override; // vtable+0x94
|
MxS32 VTable0x94() override; // vtable+0x94
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1007a450
|
// SYNTHETIC: LEGO1 0x1007a450
|
||||||
// Act2Brick::`scalar deleting destructor'
|
// Act2Brick::`scalar deleting destructor'
|
||||||
|
|||||||
@ -7,17 +7,17 @@
|
|||||||
// SIZE 0x68
|
// SIZE 0x68
|
||||||
class Act2PoliceStation : public LegoEntity {
|
class Act2PoliceStation : public LegoEntity {
|
||||||
public:
|
public:
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000e200
|
// FUNCTION: LEGO1 0x1000e200
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f03fc
|
// STRING: LEGO1 0x100f03fc
|
||||||
return "Act2PoliceStation";
|
return "Act2PoliceStation";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000e210
|
// FUNCTION: LEGO1 0x1000e210
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Act2PoliceStation::ClassName()) || LegoEntity::IsA(p_name);
|
return !strcmp(p_name, Act2PoliceStation::ClassName()) || LegoEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,31 +9,31 @@ class Act3 : public LegoWorld {
|
|||||||
public:
|
public:
|
||||||
Act3();
|
Act3();
|
||||||
|
|
||||||
virtual ~Act3() override; // vtable+00
|
~Act3() override; // vtable+00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x8
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10072510
|
// FUNCTION: LEGO1 0x10072510
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f013c
|
// STRING: LEGO1 0x100f013c
|
||||||
return "Act3";
|
return "Act3";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10072520
|
// FUNCTION: LEGO1 0x10072520
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Act3::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, Act3::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
MxBool VTable0x5c() override; // vtable+0x5c
|
||||||
virtual void VTable0x60() override; // vtable+0x60
|
void VTable0x60() override; // vtable+0x60
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||||
|
|
||||||
inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; }
|
inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; }
|
||||||
inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; }
|
inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; }
|
||||||
@ -41,6 +41,11 @@ class Act3 : public LegoWorld {
|
|||||||
// SYNTHETIC: LEGO1 0x10072630
|
// SYNTHETIC: LEGO1 0x10072630
|
||||||
// Act3::`scalar deleting destructor'
|
// 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:
|
protected:
|
||||||
undefined m_unk0xf8[0x4114]; // 0xf8
|
undefined m_unk0xf8[0x4114]; // 0xf8
|
||||||
MxEntity* m_unk0x420c; // 0x420c
|
MxEntity* m_unk0x420c; // 0x420c
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
class Act3Actor : public MxCore {
|
class Act3Actor : public MxCore {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x100431b0
|
// FUNCTION: LEGO1 0x100431b0
|
||||||
inline virtual const char* ClassName() const override
|
inline const char* ClassName() const override
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f03ac
|
// STRING: LEGO1 0x100f03ac
|
||||||
return "Act3Actor";
|
return "Act3Actor";
|
||||||
|
|||||||
@ -7,22 +7,22 @@
|
|||||||
class Act3Shark : public LegoAnimActor {
|
class Act3Shark : public LegoAnimActor {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x100430c0
|
// FUNCTION: LEGO1 0x100430c0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f03a0
|
// STRING: LEGO1 0x100f03a0
|
||||||
return "Act3Shark";
|
return "Act3Shark";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001a130
|
// FUNCTION: LEGO1 0x1001a130
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Act3Shark::ClassName()) || LegoAnimActor::IsA(p_name);
|
return !strcmp(p_name, Act3Shark::ClassName()) || LegoAnimActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ParseAction(char*) override; // vtable+0x20
|
void ParseAction(char*) override; // vtable+0x20
|
||||||
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
||||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10043020
|
// SYNTHETIC: LEGO1 0x10043020
|
||||||
// Act3Shark::`scalar deleting destructor'
|
// Act3Shark::`scalar deleting destructor'
|
||||||
|
|||||||
@ -4,32 +4,33 @@
|
|||||||
#include "legostate.h"
|
#include "legostate.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d4fc8
|
// VTABLE: LEGO1 0x100d4fc8
|
||||||
// SIZE 0xc
|
// SIZE 0x0c
|
||||||
class Act3State : public LegoState {
|
class Act3State : public LegoState {
|
||||||
public:
|
public:
|
||||||
inline Act3State() { m_unk0x08 = 0; }
|
inline Act3State() { m_unk0x08 = 0; }
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000e300
|
// FUNCTION: LEGO1 0x1000e300
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f03f0
|
// STRING: LEGO1 0x100f03f0
|
||||||
return "Act3State";
|
return "Act3State";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000e310
|
// FUNCTION: LEGO1 0x1000e310
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Act3State::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, Act3State::ClassName()) || LegoState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxBool VTable0x14() override;
|
MxBool VTable0x14() override;
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000e3c0
|
// SYNTHETIC: LEGO1 0x1000e3c0
|
||||||
// Act3State::`scalar deleting destructor'
|
// Act3State::`scalar deleting destructor'
|
||||||
|
|
||||||
|
inline undefined4 GetUnknown0x08() { return m_unk0x08; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// FIXME: May be part of LegoState? Uncertain...
|
undefined4 m_unk0x08; // 0x08
|
||||||
MxU32 m_unk0x08;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ACT3STATE_H
|
#endif // ACT3STATE_H
|
||||||
|
|||||||
@ -9,29 +9,29 @@ class Ambulance : public IslePathActor {
|
|||||||
public:
|
public:
|
||||||
Ambulance();
|
Ambulance();
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x08
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10035fa0
|
// FUNCTION: LEGO1 0x10035fa0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f03c4
|
// STRING: LEGO1 0x100f03c4
|
||||||
return "Ambulance";
|
return "Ambulance";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10035fb0
|
// FUNCTION: LEGO1 0x10035fb0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
|
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
virtual MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||||
virtual void VTable0xe4() override; // vtable+0xe4
|
void VTable0xe4() override; // vtable+0xe4
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10036130
|
// SYNTHETIC: LEGO1 0x10036130
|
||||||
// Ambulance::`scalar deleting destructor'
|
// Ambulance::`scalar deleting destructor'
|
||||||
|
|||||||
@ -10,19 +10,19 @@ class AmbulanceMissionState : public LegoState {
|
|||||||
AmbulanceMissionState();
|
AmbulanceMissionState();
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10037600
|
// FUNCTION: LEGO1 0x10037600
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f00e8
|
// STRING: LEGO1 0x100f00e8
|
||||||
return "AmbulanceMissionState";
|
return "AmbulanceMissionState";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10037610
|
// FUNCTION: LEGO1 0x10037610
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, AmbulanceMissionState::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, AmbulanceMissionState::ClassName()) || LegoState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1c
|
MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
|
||||||
|
|
||||||
inline MxU16 GetColor(MxU8 p_id)
|
inline MxU16 GetColor(MxU8 p_id)
|
||||||
{
|
{
|
||||||
@ -46,18 +46,18 @@ class AmbulanceMissionState : public LegoState {
|
|||||||
// AmbulanceMissionState::`scalar deleting destructor'
|
// AmbulanceMissionState::`scalar deleting destructor'
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
undefined4 m_unk0x8; // 0x08
|
undefined4 m_unk0x08; // 0x08
|
||||||
undefined4 m_unk0xc; // 0x0c
|
undefined4 m_unk0x0c; // 0x0c
|
||||||
MxU16 m_unk0x10; // 0x10
|
MxU16 m_unk0x10; // 0x10
|
||||||
MxU16 m_unk0x12; // 0x12
|
MxU16 m_unk0x12; // 0x12
|
||||||
MxU16 m_unk0x14; // 0x14
|
MxU16 m_unk0x14; // 0x14
|
||||||
MxU16 m_unk0x16; // 0x16
|
MxU16 m_unk0x16; // 0x16
|
||||||
MxU16 m_unk0x18; // 0x18
|
MxU16 m_unk0x18; // 0x18
|
||||||
MxU16 m_color1; // 0x1a
|
MxU16 m_color1; // 0x1a
|
||||||
MxU16 m_color2; // 0x1c
|
MxU16 m_color2; // 0x1c
|
||||||
MxU16 m_color3; // 0x1e
|
MxU16 m_color3; // 0x1e
|
||||||
MxU16 m_color4; // 0x20
|
MxU16 m_color4; // 0x20
|
||||||
MxU16 m_color5; // 0x22
|
MxU16 m_color5; // 0x22
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // AMBULANCEMISSIONSTATE_H
|
#endif // AMBULANCEMISSIONSTATE_H
|
||||||
|
|||||||
@ -8,33 +8,33 @@
|
|||||||
class AnimState : public LegoState {
|
class AnimState : public LegoState {
|
||||||
public:
|
public:
|
||||||
AnimState();
|
AnimState();
|
||||||
virtual ~AnimState() override; // vtable+0x0
|
~AnimState() override; // vtable+0x00
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10065070
|
// FUNCTION: LEGO1 0x10065070
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0460
|
// STRING: LEGO1 0x100f0460
|
||||||
return "AnimState";
|
return "AnimState";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10065080
|
// FUNCTION: LEGO1 0x10065080
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, AnimState::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, AnimState::ClassName()) || LegoState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxBool SetFlag() override; // vtable+0x18
|
MxBool SetFlag() override; // vtable+0x18
|
||||||
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1C
|
MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10065130
|
// SYNTHETIC: LEGO1 0x10065130
|
||||||
// AnimState::`scalar deleting destructor'
|
// AnimState::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
undefined4 m_unk0x8;
|
undefined4 m_unk0x08; // 0x08
|
||||||
undefined4 m_unk0xc;
|
undefined4 m_unk0x0c; // 0x0c
|
||||||
void* m_unk0x10;
|
void* m_unk0x10; // 0x10
|
||||||
undefined4 m_unk0x14;
|
undefined4 m_unk0x14; // 0x14
|
||||||
void* m_unk0x18;
|
void* m_unk0x18; // 0x18
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ANIMSTATE_H
|
#endif // ANIMSTATE_H
|
||||||
|
|||||||
@ -8,14 +8,14 @@
|
|||||||
class BeachHouseEntity : public BuildingEntity {
|
class BeachHouseEntity : public BuildingEntity {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000ee80
|
// FUNCTION: LEGO1 0x1000ee80
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0314
|
// STRING: LEGO1 0x100f0314
|
||||||
return "BeachHouseEntity";
|
return "BeachHouseEntity";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000ee90
|
// FUNCTION: LEGO1 0x1000ee90
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
return !strcmp(p_name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,22 +11,22 @@ class Bike : public IslePathActor {
|
|||||||
Bike();
|
Bike();
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100766f0
|
// FUNCTION: LEGO1 0x100766f0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f03d0
|
// STRING: LEGO1 0x100f03d0
|
||||||
return "Bike";
|
return "Bike";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10076700
|
// FUNCTION: LEGO1 0x10076700
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
|
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
virtual void VTable0xe4() override; // vtable+0xe4
|
void VTable0xe4() override; // vtable+0xe4
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10076880
|
// SYNTHETIC: LEGO1 0x10076880
|
||||||
// Bike::`scalar deleting destructor'
|
// Bike::`scalar deleting destructor'
|
||||||
|
|||||||
@ -8,19 +8,19 @@
|
|||||||
class BuildingEntity : public LegoEntity {
|
class BuildingEntity : public LegoEntity {
|
||||||
public:
|
public:
|
||||||
BuildingEntity();
|
BuildingEntity();
|
||||||
virtual ~BuildingEntity() override; // vtable+0x0
|
~BuildingEntity() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10014f20
|
// FUNCTION: LEGO1 0x10014f20
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f07e8
|
// STRING: LEGO1 0x100f07e8
|
||||||
return "BuildingEntity";
|
return "BuildingEntity";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10014f30
|
// FUNCTION: LEGO1 0x10014f30
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, BuildingEntity::ClassName()) || LegoEntity::IsA(p_name);
|
return !strcmp(p_name, BuildingEntity::ClassName()) || LegoEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,25 +7,25 @@
|
|||||||
// VTABLE: LEGO1 0x100d6790
|
// VTABLE: LEGO1 0x100d6790
|
||||||
class BumpBouy : public LegoAnimActor {
|
class BumpBouy : public LegoAnimActor {
|
||||||
public:
|
public:
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100274e0
|
// FUNCTION: LEGO1 0x100274e0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0394
|
// STRING: LEGO1 0x100f0394
|
||||||
return "BumpBouy";
|
return "BumpBouy";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10027500
|
// FUNCTION: LEGO1 0x10027500
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, BumpBouy::ClassName()) || LegoAnimActor::IsA(p_name);
|
return !strcmp(p_name, BumpBouy::ClassName()) || LegoAnimActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ParseAction(char*) override; // vtable+0x20
|
void ParseAction(char*) override; // vtable+0x20
|
||||||
virtual void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
|
||||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10027490
|
// SYNTHETIC: LEGO1 0x10027490
|
||||||
// BumpBouy::`scalar deleting destructor'
|
// BumpBouy::`scalar deleting destructor'
|
||||||
|
|||||||
@ -11,25 +11,25 @@ class CarRace : public LegoRace {
|
|||||||
CarRace();
|
CarRace();
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10016b20
|
// FUNCTION: LEGO1 0x10016b20
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0528
|
// STRING: LEGO1 0x100f0528
|
||||||
return "CarRace";
|
return "CarRace";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10016b30
|
// FUNCTION: LEGO1 0x10016b30
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name);
|
return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual undefined4 VTable0x6c(undefined4) override; // vtable+0x6c
|
undefined4 VTable0x6c(undefined4) override; // vtable+0x6c
|
||||||
virtual undefined4 VTable0x70(undefined4) override; // vtable+0x70
|
undefined4 VTable0x70(undefined4) override; // vtable+0x70
|
||||||
virtual undefined4 VTable0x74(undefined4) override; // vtable+0x74
|
undefined4 VTable0x74(undefined4) override; // vtable+0x74
|
||||||
virtual undefined4 VTable0x78(undefined4) override; // vtable+0x78
|
undefined4 VTable0x78(undefined4) override; // vtable+0x78
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10016c70
|
// SYNTHETIC: LEGO1 0x10016c70
|
||||||
// CarRace::`scalar deleting destructor'
|
// CarRace::`scalar deleting destructor'
|
||||||
|
|||||||
@ -8,14 +8,14 @@
|
|||||||
class CarRaceState : public RaceState {
|
class CarRaceState : public RaceState {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000dd30
|
// FUNCTION: LEGO1 0x1000dd30
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f009c
|
// STRING: LEGO1 0x100f009c
|
||||||
return "CarRaceState";
|
return "CarRaceState";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000dd40
|
// FUNCTION: LEGO1 0x1000dd40
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, CarRaceState::ClassName()) || RaceState::IsA(p_name);
|
return !strcmp(p_name, CarRaceState::ClassName()) || RaceState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|||||||
10
LEGO1/lego/legoomni/include/caveentity.h
Normal file
10
LEGO1/lego/legoomni/include/caveentity.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#ifndef CAVEENTITY_H
|
||||||
|
#define CAVEENTITY_H
|
||||||
|
|
||||||
|
#include "racestandsentity.h"
|
||||||
|
|
||||||
|
// No overrides, uses vtable from RaceStandsEntity
|
||||||
|
// SIZE 0x68
|
||||||
|
class CaveEntity : public RaceStandsEntity {};
|
||||||
|
|
||||||
|
#endif // CAVEENTITY_H
|
||||||
@ -8,21 +8,21 @@
|
|||||||
class Doors : public LegoPathActor {
|
class Doors : public LegoPathActor {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000e430
|
// FUNCTION: LEGO1 0x1000e430
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f03e8
|
// STRING: LEGO1 0x100f03e8
|
||||||
return "Doors";
|
return "Doors";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000e440
|
// FUNCTION: LEGO1 0x1000e440
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name);
|
return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ParseAction(char*) override; // vtable+0x20
|
void ParseAction(char*) override; // vtable+0x20
|
||||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
virtual MxS32 VTable0x94() override; // vtable+0x94
|
MxS32 VTable0x94() override; // vtable+0x94
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000e580
|
// SYNTHETIC: LEGO1 0x1000e580
|
||||||
// Doors::`scalar deleting destructor'
|
// Doors::`scalar deleting destructor'
|
||||||
|
|||||||
@ -11,24 +11,24 @@ class DuneBuggy : public IslePathActor {
|
|||||||
DuneBuggy();
|
DuneBuggy();
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10067c30
|
// FUNCTION: LEGO1 0x10067c30
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0410
|
// STRING: LEGO1 0x100f0410
|
||||||
return "DuneBuggy";
|
return "DuneBuggy";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10067c40
|
// FUNCTION: LEGO1 0x10067c40
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name);
|
return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
virtual MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
||||||
virtual void VTable0xe4() override; // vtable+0xe4
|
void VTable0xe4() override; // vtable+0xe4
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10067dc0
|
// SYNTHETIC: LEGO1 0x10067dc0
|
||||||
// DuneBuggy::`scalar deleting destructor'
|
// DuneBuggy::`scalar deleting destructor'
|
||||||
|
|||||||
@ -2,46 +2,49 @@
|
|||||||
#define ELEVATORBOTTOM_H
|
#define ELEVATORBOTTOM_H
|
||||||
|
|
||||||
#include "decomp.h"
|
#include "decomp.h"
|
||||||
|
#include "legogamestate.h"
|
||||||
#include "legoworld.h"
|
#include "legoworld.h"
|
||||||
|
|
||||||
|
class LegoControlManagerEvent;
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d5f20
|
// VTABLE: LEGO1 0x100d5f20
|
||||||
// SIZE: 0xfc (from inlined ctor at 0x1000a8aa)
|
// SIZE: 0xfc (from inlined ctor at 0x1000a8aa)
|
||||||
class ElevatorBottom : public LegoWorld {
|
class ElevatorBottom : public LegoWorld {
|
||||||
public:
|
public:
|
||||||
ElevatorBottom();
|
ElevatorBottom();
|
||||||
virtual ~ElevatorBottom() override; // vtable+0x0
|
~ElevatorBottom() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10017f20
|
// FUNCTION: LEGO1 0x10017f20
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f04ac
|
// STRING: LEGO1 0x100f04ac
|
||||||
return "ElevatorBottom";
|
return "ElevatorBottom";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10017f30
|
// FUNCTION: LEGO1 0x10017f30
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, ElevatorBottom::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, ElevatorBottom::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10017f10
|
// FUNCTION: LEGO1 0x10017f10
|
||||||
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
||||||
|
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10018040
|
// SYNTHETIC: LEGO1 0x10018040
|
||||||
// ElevatorBottom::`scalar deleting destructor'
|
// ElevatorBottom::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
undefined4 m_unk0xf8; // 0xf8
|
LegoGameState::Area m_unk0xf8; // 0xf8
|
||||||
|
|
||||||
MxLong HandleNotification17(MxParam& p_param);
|
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ELEVATORBOTTOM_H
|
#endif // ELEVATORBOTTOM_H
|
||||||
|
|||||||
@ -2,55 +2,61 @@
|
|||||||
#define GASSTATION_H
|
#define GASSTATION_H
|
||||||
|
|
||||||
#include "decomp.h"
|
#include "decomp.h"
|
||||||
|
#include "gasstationstate.h"
|
||||||
|
#include "legogamestate.h"
|
||||||
#include "legoworld.h"
|
#include "legoworld.h"
|
||||||
#include "radio.h"
|
#include "radio.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d4650
|
// VTABLE: LEGO1 0x100d4650
|
||||||
// SIZE 0x128
|
// SIZE 0x128
|
||||||
// Radio variable at 0x46, in constructor
|
|
||||||
class GasStation : public LegoWorld {
|
class GasStation : public LegoWorld {
|
||||||
public:
|
public:
|
||||||
GasStation();
|
GasStation();
|
||||||
virtual ~GasStation() override; // vtable+0x0
|
~GasStation() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x8
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10004780
|
// FUNCTION: LEGO1 0x10004780
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0168
|
// STRING: LEGO1 0x100f0168
|
||||||
return "GasStation";
|
return "GasStation";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10004790
|
// FUNCTION: LEGO1 0x10004790
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
MxBool VTable0x5c() override; // vtable+0x5c
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||||
|
virtual MxLong HandleClick(LegoControlManagerEvent& p_param); // vtable+0x6c
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100048a0
|
// SYNTHETIC: LEGO1 0x100048a0
|
||||||
// GasStation::`scalar deleting destructor'
|
// GasStation::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
undefined2 m_unk0xf8; // 0xf8
|
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
|
||||||
undefined2 m_unk0xfa; // 0xfa
|
MxLong HandleKeyPress(MxS8 p_key);
|
||||||
undefined4 m_unk0xfc; // 0xfc
|
MxLong HandleButtonDown(LegoControlManagerEvent& p_param);
|
||||||
undefined4 m_unk0x100; // 0x100
|
|
||||||
undefined2 m_unk0x104; // 0x104
|
undefined2 m_unk0xf8; // 0xf8
|
||||||
undefined2 m_unk0x106; // 0x106
|
undefined2 m_unk0xfa; // 0xfa
|
||||||
undefined4 m_unk0x108; // 0x108
|
LegoGameState::Area m_transitionDestination; // 0xfc
|
||||||
undefined4 m_unk0x10c; // 0x10c
|
GasStationState* m_state; // 0x100
|
||||||
undefined4 m_unk0x110; // 0x110
|
undefined2 m_unk0x104; // 0x104
|
||||||
undefined m_unk0x114; // 0x114
|
undefined2 m_unk0x106; // 0x106
|
||||||
undefined m_unk0x115; // 0x115
|
undefined4 m_unk0x108; // 0x108
|
||||||
Radio m_radio; // 0x118
|
undefined4 m_unk0x10c; // 0x10c
|
||||||
|
undefined4 m_unk0x110; // 0x110
|
||||||
|
undefined m_unk0x114; // 0x114
|
||||||
|
undefined m_unk0x115; // 0x115
|
||||||
|
Radio m_radio; // 0x118
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GASSTATION_H
|
#endif // GASSTATION_H
|
||||||
|
|||||||
@ -8,14 +8,14 @@
|
|||||||
class GasStationEntity : public BuildingEntity {
|
class GasStationEntity : public BuildingEntity {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000eb20
|
// FUNCTION: LEGO1 0x1000eb20
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0348
|
// STRING: LEGO1 0x100f0348
|
||||||
return "GasStationEntity";
|
return "GasStationEntity";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000eb30
|
// FUNCTION: LEGO1 0x1000eb30
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, GasStationEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
return !strcmp(p_name, GasStationEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,34 +7,45 @@
|
|||||||
// SIZE 0x24
|
// SIZE 0x24
|
||||||
class GasStationState : public LegoState {
|
class GasStationState : public LegoState {
|
||||||
public:
|
public:
|
||||||
|
// SIZE 0x04
|
||||||
|
struct Unknown0x14 {
|
||||||
|
inline void SetUnknown0x00(undefined4 p_unk0x00) { m_unk0x00 = p_unk0x00; }
|
||||||
|
inline undefined4 GetUnknown0x00() { return m_unk0x00; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
undefined4 m_unk0x00; // 0x00
|
||||||
|
};
|
||||||
|
|
||||||
GasStationState();
|
GasStationState();
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100061d0
|
// FUNCTION: LEGO1 0x100061d0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0174
|
// STRING: LEGO1 0x100f0174
|
||||||
return "GasStationState";
|
return "GasStationState";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100061e0
|
// FUNCTION: LEGO1 0x100061e0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, GasStationState::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, GasStationState::ClassName()) || LegoState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1c
|
MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10006290
|
// SYNTHETIC: LEGO1 0x10006290
|
||||||
// GasStationState::`scalar deleting destructor'
|
// GasStationState::`scalar deleting destructor'
|
||||||
|
|
||||||
|
inline Unknown0x14& GetUnknown0x14() { return m_unk0x14; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
undefined4 m_unk0x08[3];
|
undefined4 m_unk0x08[3]; // 0x08
|
||||||
undefined4 m_unk0x14;
|
Unknown0x14 m_unk0x14; // 0x14
|
||||||
undefined2 m_unk0x18;
|
undefined2 m_unk0x18; // 0x18
|
||||||
undefined2 m_unk0x1a;
|
undefined2 m_unk0x1a; // 0x1a
|
||||||
undefined2 m_unk0x1c;
|
undefined2 m_unk0x1c; // 0x1c
|
||||||
undefined2 m_unk0x1e;
|
undefined2 m_unk0x1e; // 0x1e
|
||||||
undefined2 m_unk0x20;
|
undefined2 m_unk0x20; // 0x20
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GASSTATIONSTATE_H
|
#endif // GASSTATIONSTATE_H
|
||||||
|
|||||||
@ -1,141 +0,0 @@
|
|||||||
#ifndef GIFMANAGER_H
|
|
||||||
#define GIFMANAGER_H
|
|
||||||
|
|
||||||
#include "compat.h"
|
|
||||||
#include "decomp.h"
|
|
||||||
#include "mxstl/stlcompat.h"
|
|
||||||
#include "mxtypes.h"
|
|
||||||
|
|
||||||
#include <d3drmobj.h>
|
|
||||||
#include <ddraw.h>
|
|
||||||
|
|
||||||
#pragma warning(disable : 4237)
|
|
||||||
|
|
||||||
// SIZE 0x14
|
|
||||||
struct GifData {
|
|
||||||
public:
|
|
||||||
char* m_name; // 0x00
|
|
||||||
LPDIRECTDRAWSURFACE m_surface; // 0x04
|
|
||||||
LPDIRECTDRAWPALETTE m_palette; // 0x08
|
|
||||||
LPDIRECT3DRMTEXTURE2 m_texture; // 0x0c
|
|
||||||
MxU8* m_data; // 0x10
|
|
||||||
|
|
||||||
~GifData();
|
|
||||||
};
|
|
||||||
|
|
||||||
struct GifMapComparator {
|
|
||||||
bool operator()(const char* const& p_key0, const char* const& p_key1) const { return strcmp(p_key0, p_key1) > 0; }
|
|
||||||
};
|
|
||||||
|
|
||||||
// SIZE 0x10
|
|
||||||
class GifMap : public map<const char*, GifData*, GifMapComparator> {
|
|
||||||
// SYNTHETIC: LEGO1 0x1005a400
|
|
||||||
// GifMap::~GifMap
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef list<GifData*> GifList;
|
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d86d4
|
|
||||||
// SIZE 0x18
|
|
||||||
class GifManagerBase {
|
|
||||||
public:
|
|
||||||
// FUNCTION: LEGO1 0x1005b660
|
|
||||||
virtual ~GifManagerBase()
|
|
||||||
{
|
|
||||||
GifMap::iterator it;
|
|
||||||
for (it = m_map.begin(); it != m_map.end(); it++) {
|
|
||||||
// DECOMP: Use of const_cast here matches ~ViewLODListManager from 96 source.
|
|
||||||
const char* const& key = (*it).first;
|
|
||||||
delete[] const_cast<char*>(key);
|
|
||||||
|
|
||||||
if (m_ownership) {
|
|
||||||
delete (*it).second; // GifData*
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline GifData* Get(const char* p_name)
|
|
||||||
{
|
|
||||||
GifMap::iterator it = m_map.find(p_name);
|
|
||||||
if (it != m_map.end()) {
|
|
||||||
return (*it).second;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1005a310
|
|
||||||
// GifManagerBase::`scalar deleting destructor'
|
|
||||||
|
|
||||||
protected:
|
|
||||||
MxBool m_ownership; // 0x04
|
|
||||||
GifMap m_map; // 0x08
|
|
||||||
};
|
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d86fc
|
|
||||||
// SIZE 0x24
|
|
||||||
class GifManager : public GifManagerBase {
|
|
||||||
public:
|
|
||||||
GifManager() { m_ownership = TRUE; };
|
|
||||||
virtual ~GifManager() override;
|
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1005a580
|
|
||||||
// GifManager::`scalar deleting destructor'
|
|
||||||
|
|
||||||
void FUN_10099cc0(GifData* p_data);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
GifList m_list; // 0x18
|
|
||||||
};
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x10059c50
|
|
||||||
// allocator<GifData *>::_Charalloc
|
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
// TEMPLATE: LEGO1 0x10001cc0
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Lbound
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1004f9b0
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Insert
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x10059c70
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Color
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x10059c80
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Left
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x10059c90
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Parent
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x10059ca0
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Right
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x10059cb0
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::~_Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x10059d80
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::iterator::_Inc
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x10059dc0
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::erase
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1005a210
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Erase
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1005a250
|
|
||||||
// list<GifData *,allocator<GifData *> >::~list<GifData *,allocator<GifData *> >
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1005a2c0
|
|
||||||
// map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::~map<char const *,GifData *,GifMapComparator,allocator<GifData *> >
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1005a450
|
|
||||||
// Map<char const *,GifData *,GifMapComparator>::~Map<char const *,GifData *,GifMapComparator>
|
|
||||||
|
|
||||||
// TEMPLATE: LEGO1 0x1005a5a0
|
|
||||||
// List<GifData *>::~List<GifData *>
|
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f0100
|
|
||||||
// _Tree<char const *,pair<char const * const,GifData *>,map<char const *,GifData *,GifMapComparator,allocator<GifData *> >::_Kfn,GifMapComparator,allocator<GifData *> >::_Nil
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
#endif // GIFMANAGER_H
|
|
||||||
@ -12,7 +12,7 @@ class HelicopterSubclass {
|
|||||||
MxResult FUN_100040a0(Vector4& p_v, float p_f);
|
MxResult FUN_100040a0(Vector4& p_v, float p_f);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Mx4DPointFloat m_unk0x0; // 0x0
|
Mx4DPointFloat m_unk0x00; // 0x00
|
||||||
Mx4DPointFloat m_unk0x18; // 0x18
|
Mx4DPointFloat m_unk0x18; // 0x18
|
||||||
undefined4 m_unk0x30; // 0x30
|
undefined4 m_unk0x30; // 0x30
|
||||||
};
|
};
|
||||||
@ -22,28 +22,28 @@ class HelicopterSubclass {
|
|||||||
class Helicopter : public IslePathActor {
|
class Helicopter : public IslePathActor {
|
||||||
public:
|
public:
|
||||||
Helicopter();
|
Helicopter();
|
||||||
virtual ~Helicopter() override; // vtable+0x0
|
~Helicopter() override; // vtable+0x00
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10003070
|
// FUNCTION: LEGO1 0x10003070
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0130
|
// STRING: LEGO1 0x100f0130
|
||||||
return "Helicopter";
|
return "Helicopter";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10003080
|
// FUNCTION: LEGO1 0x10003080
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Helicopter::ClassName()) || IslePathActor::IsA(p_name);
|
return !strcmp(p_name, Helicopter::ClassName()) || IslePathActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
virtual void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||||
virtual MxU32 VTable0xd4(MxType17NotificationParam& p_param) override; // vtable+0xd4
|
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
virtual MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8
|
MxU32 VTable0xd8(MxType18NotificationParam& p_param) override; // vtable+0xd8
|
||||||
virtual void VTable0xe4() override; // vtable+0xe4
|
void VTable0xe4() override; // vtable+0xe4
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10003210
|
// SYNTHETIC: LEGO1 0x10003210
|
||||||
// Helicopter::`scalar deleting destructor'
|
// Helicopter::`scalar deleting destructor'
|
||||||
|
|||||||
@ -5,33 +5,40 @@
|
|||||||
#include "legostate.h"
|
#include "legostate.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d5418
|
// VTABLE: LEGO1 0x100d5418
|
||||||
// SIZE 0xc
|
// SIZE 0x0c
|
||||||
class HelicopterState : public LegoState {
|
class HelicopterState : public LegoState {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000e0d0
|
// FUNCTION: LEGO1 0x1000e0d0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0144
|
// STRING: LEGO1 0x100f0144
|
||||||
return "HelicopterState";
|
return "HelicopterState";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000e0e0
|
// FUNCTION: LEGO1 0x1000e0e0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, HelicopterState::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, HelicopterState::ClassName()) || LegoState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxBool VTable0x14() override; // vtable+0x14
|
// FUNCTION: LEGO1 0x1000e0b0
|
||||||
virtual MxBool SetFlag() override; // vtable+0x18
|
MxBool VTable0x14() override { return FALSE; } // vtable+0x14
|
||||||
|
|
||||||
inline void SetUnknown8(MxU32 p_unk0x8) { m_unk0x8 = p_unk0x8; }
|
// FUNCTION: LEGO1 0x1000e0c0
|
||||||
inline MxU32 GetUnkown8() { return m_unk0x8; }
|
MxBool SetFlag() override
|
||||||
|
{
|
||||||
|
m_unk0x08 = 0;
|
||||||
|
return TRUE;
|
||||||
|
} // vtable+0x18
|
||||||
|
|
||||||
|
inline void SetUnknown8(MxU32 p_unk0x08) { m_unk0x08 = p_unk0x08; }
|
||||||
|
inline MxU32 GetUnkown8() { return m_unk0x08; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000e190
|
// SYNTHETIC: LEGO1 0x1000e190
|
||||||
// HelicopterState::`scalar deleting destructor'
|
// HelicopterState::`scalar deleting destructor'
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
MxU32 m_unk0x8; // 0x8
|
MxU32 m_unk0x08; // 0x08
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // HELICOPTERSTATE_H
|
#endif // HELICOPTERSTATE_H
|
||||||
|
|||||||
@ -1,36 +1,45 @@
|
|||||||
#ifndef HISTORYBOOK_H
|
#ifndef HISTORYBOOK_H
|
||||||
#define HISTORYBOOK_H
|
#define HISTORYBOOK_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
|
#include "legogamestate.h"
|
||||||
#include "legoworld.h"
|
#include "legoworld.h"
|
||||||
|
#include "mxstillpresenter.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100da328
|
// VTABLE: LEGO1 0x100da328
|
||||||
// SIZE 0x3e4
|
// SIZE 0x3e4
|
||||||
class HistoryBook : public LegoWorld {
|
class HistoryBook : public LegoWorld {
|
||||||
public:
|
public:
|
||||||
HistoryBook();
|
HistoryBook();
|
||||||
virtual ~HistoryBook() override; // vtable+0x0
|
~HistoryBook() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10082390
|
// FUNCTION: LEGO1 0x10082390
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f04bc
|
// STRING: LEGO1 0x100f04bc
|
||||||
return "HistoryBook";
|
return "HistoryBook";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100823a0
|
// FUNCTION: LEGO1 0x100823a0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100824b0
|
// SYNTHETIC: LEGO1 0x100824b0
|
||||||
// HistoryBook::`scalar deleting destructor'
|
// HistoryBook::`scalar deleting destructor'
|
||||||
|
|
||||||
|
private:
|
||||||
|
LegoGameState::Area m_transitionDestination; // 0xf8
|
||||||
|
MxStillPresenter* m_alphabet[26]; // 0xfc
|
||||||
|
MxStillPresenter* m_names[20][7]; // 0x164
|
||||||
|
MxStillPresenter* m_scores[20]; // 0x394
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // HISTORYBOOK_H
|
#endif // HISTORYBOOK_H
|
||||||
|
|||||||
@ -9,29 +9,29 @@
|
|||||||
class Hospital : public LegoWorld {
|
class Hospital : public LegoWorld {
|
||||||
public:
|
public:
|
||||||
Hospital();
|
Hospital();
|
||||||
virtual ~Hospital() override; // vtable+0x0
|
~Hospital() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x08
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100746b0
|
// FUNCTION: LEGO1 0x100746b0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0490
|
// STRING: LEGO1 0x100f0490
|
||||||
return "Hospital";
|
return "Hospital";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100746c0
|
// FUNCTION: LEGO1 0x100746c0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
MxBool VTable0x5c() override; // vtable+0x5c
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100747d0
|
// SYNTHETIC: LEGO1 0x100747d0
|
||||||
// Hospital::`scalar deleting destructor'
|
// Hospital::`scalar deleting destructor'
|
||||||
|
|||||||
@ -8,14 +8,14 @@
|
|||||||
class HospitalEntity : public BuildingEntity {
|
class HospitalEntity : public BuildingEntity {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000ec40
|
// FUNCTION: LEGO1 0x1000ec40
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0338
|
// STRING: LEGO1 0x100f0338
|
||||||
return "HospitalEntity";
|
return "HospitalEntity";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000ec50
|
// FUNCTION: LEGO1 0x1000ec50
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, HospitalEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
return !strcmp(p_name, HospitalEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,33 +9,34 @@
|
|||||||
class HospitalState : public LegoState {
|
class HospitalState : public LegoState {
|
||||||
public:
|
public:
|
||||||
HospitalState();
|
HospitalState();
|
||||||
|
~HospitalState() override {}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10076400
|
// FUNCTION: LEGO1 0x10076400
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0480
|
// STRING: LEGO1 0x100f0480
|
||||||
return "HospitalState";
|
return "HospitalState";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10076410
|
// FUNCTION: LEGO1 0x10076410
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1c
|
MxResult VTable0x1c(LegoFile* p_legoFile) override; // vtable+0x1c
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100764c0
|
// SYNTHETIC: LEGO1 0x100764c0
|
||||||
// HospitalState::`scalar deleting destructor'
|
// HospitalState::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
undefined m_unk0x8[4]; // 0x8
|
undefined m_unk0x08[4]; // 0x08
|
||||||
undefined2 m_unk0xc; // 0xc
|
undefined2 m_unk0x0c; // 0x0c
|
||||||
undefined2 m_unk0xe; // 0xe
|
undefined2 m_unk0x0e; // 0x0e
|
||||||
undefined2 m_unk0x10; // 0x10
|
undefined2 m_unk0x10; // 0x10
|
||||||
undefined2 m_unk0x12; // 0x12
|
undefined2 m_unk0x12; // 0x12
|
||||||
undefined2 m_unk0x14; // 0x14
|
undefined2 m_unk0x14; // 0x14
|
||||||
undefined2 m_unk0x16; // 0x16
|
undefined2 m_unk0x16; // 0x16
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // HOSPITALSTATE_H
|
#endif // HOSPITALSTATE_H
|
||||||
|
|||||||
@ -1,17 +1,23 @@
|
|||||||
#ifndef INFOCENTER_H
|
#ifndef INFOCENTER_H
|
||||||
#define INFOCENTER_H
|
#define INFOCENTER_H
|
||||||
|
|
||||||
|
#include "legogamestate.h"
|
||||||
#include "legoworld.h"
|
#include "legoworld.h"
|
||||||
|
#include "mxrect32.h"
|
||||||
#include "radio.h"
|
#include "radio.h"
|
||||||
|
|
||||||
class InfocenterState;
|
class InfocenterState;
|
||||||
|
class MxStillPresenter;
|
||||||
|
class LegoControlManagerEvent;
|
||||||
|
|
||||||
// SIZE 0x18
|
// SIZE 0x18
|
||||||
struct InfocenterUnkDataEntry {
|
struct InfocenterMapEntry {
|
||||||
// FUNCTION: LEGO1 0x1006ec80
|
// FUNCTION: LEGO1 0x1006ec80
|
||||||
InfocenterUnkDataEntry() {}
|
InfocenterMapEntry() {}
|
||||||
|
|
||||||
undefined m_pad[0x18];
|
MxStillPresenter* m_presenter; // 0x00
|
||||||
|
undefined4 m_unk0x04; // 0x04
|
||||||
|
MxRect32 m_area; // 0x08
|
||||||
};
|
};
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d9338
|
// VTABLE: LEGO1 0x100d9338
|
||||||
@ -28,9 +34,54 @@ class Infocenter : public LegoWorld {
|
|||||||
e_goodEndMovie
|
e_goodEndMovie
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum Character {
|
||||||
|
e_noCharacter = 0,
|
||||||
|
e_pepper,
|
||||||
|
e_mama,
|
||||||
|
e_papa,
|
||||||
|
e_nick,
|
||||||
|
e_laura
|
||||||
|
};
|
||||||
|
|
||||||
enum InfomainScript {
|
enum InfomainScript {
|
||||||
c_noInfomain = -1,
|
c_noInfomain = -1,
|
||||||
|
|
||||||
|
c_leftArrowCtl = 1,
|
||||||
|
c_rightArrowCtl = 2,
|
||||||
|
c_infoCtl = 3,
|
||||||
|
c_doorCtl = 4,
|
||||||
|
c_boatCtl = 10,
|
||||||
|
c_raceCtl = 11,
|
||||||
|
c_pizzaCtl = 12,
|
||||||
|
c_gasCtl = 13,
|
||||||
|
c_medCtl = 14,
|
||||||
|
c_copCtl = 15,
|
||||||
|
c_bigInfoCtl = 16,
|
||||||
|
c_bookCtl = 17,
|
||||||
|
c_radioCtl = 18,
|
||||||
|
c_mamaCtl = 21,
|
||||||
|
c_papaCtl = 22,
|
||||||
|
c_pepperCtl = 23,
|
||||||
|
c_nickCtl = 24,
|
||||||
|
c_lauraCtl = 25,
|
||||||
|
|
||||||
|
c_mamaSelected = 30,
|
||||||
|
c_papaSelected = 31,
|
||||||
|
c_pepperSelected = 32,
|
||||||
|
c_nickSelected = 33,
|
||||||
|
c_lauraSelected = 34,
|
||||||
|
|
||||||
|
c_mamaMovie = 40,
|
||||||
|
c_papaMovie = 41,
|
||||||
|
c_pepperMovie = 42,
|
||||||
|
c_nickMovie = 43,
|
||||||
|
c_lauraMovie = 44,
|
||||||
|
|
||||||
|
c_goToRegBook = 70,
|
||||||
|
c_goToRegBookRed = 71,
|
||||||
|
|
||||||
|
c_unk499 = 499,
|
||||||
|
|
||||||
c_welcomeDialogue = 500,
|
c_welcomeDialogue = 500,
|
||||||
c_goodJobDialogue = 501,
|
c_goodJobDialogue = 501,
|
||||||
|
|
||||||
@ -92,11 +143,28 @@ class Infocenter : public LegoWorld {
|
|||||||
c_noCDDialogueUnused1 = 552,
|
c_noCDDialogueUnused1 = 552,
|
||||||
c_noCDDialogueUnused2 = 553,
|
c_noCDDialogueUnused2 = 553,
|
||||||
|
|
||||||
|
c_gasCtlDescription = 555,
|
||||||
|
c_medCtlDescription = 556,
|
||||||
|
c_infoCtlDescription = 557,
|
||||||
|
c_boatCtlDescription = 558,
|
||||||
|
c_copCtlDescription = 559,
|
||||||
|
c_pizzaCtlDescription = 560,
|
||||||
|
c_raceCtlDescription = 561,
|
||||||
|
|
||||||
c_leaveInfoCenterDialogue1 = 562,
|
c_leaveInfoCenterDialogue1 = 562,
|
||||||
c_leaveInfoCenterDialogue2 = 563,
|
c_leaveInfoCenterDialogue2 = 563,
|
||||||
c_leaveInfoCenterDialogue3 = 564,
|
c_leaveInfoCenterDialogue3 = 564,
|
||||||
c_leaveInfoCenterDialogue4 = 565,
|
c_leaveInfoCenterDialogue4 = 565,
|
||||||
|
|
||||||
|
c_unk566 = 566,
|
||||||
|
c_unk567 = 567,
|
||||||
|
c_unk568 = 568,
|
||||||
|
|
||||||
|
c_unk569 = 569,
|
||||||
|
c_unk570 = 570,
|
||||||
|
c_unk571 = 571,
|
||||||
|
c_unk572 = 572,
|
||||||
|
|
||||||
c_registerToContinueDialogue = 573,
|
c_registerToContinueDialogue = 573,
|
||||||
|
|
||||||
c_bricksterDialogue = 574,
|
c_bricksterDialogue = 574,
|
||||||
@ -108,29 +176,29 @@ class Infocenter : public LegoWorld {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Infocenter();
|
Infocenter();
|
||||||
virtual ~Infocenter() override;
|
~Infocenter() override;
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x8
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1006eb40
|
// FUNCTION: LEGO1 0x1006eb40
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f04ec
|
// STRING: LEGO1 0x100f04ec
|
||||||
return "Infocenter";
|
return "Infocenter";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1006eb50
|
// FUNCTION: LEGO1 0x1006eb50
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Infocenter::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, Infocenter::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
MxBool VTable0x5c() override; // vtable+0x5c
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1006ec60
|
// SYNTHETIC: LEGO1 0x1006ec60
|
||||||
// Infocenter::`scalar deleting destructor'
|
// Infocenter::`scalar deleting destructor'
|
||||||
@ -141,16 +209,18 @@ class Infocenter : public LegoWorld {
|
|||||||
MxLong HandleKeyPress(MxS8 p_key);
|
MxLong HandleKeyPress(MxS8 p_key);
|
||||||
MxU8 HandleMouseMove(MxS32 p_x, MxS32 p_y);
|
MxU8 HandleMouseMove(MxS32 p_x, MxS32 p_y);
|
||||||
MxU8 HandleButtonUp(MxS32 p_x, MxS32 p_y);
|
MxU8 HandleButtonUp(MxS32 p_x, MxS32 p_y);
|
||||||
MxU8 HandleNotification17(MxParam&);
|
MxU8 HandleClick(LegoControlManagerEvent& p_param);
|
||||||
MxLong HandleEndAction(MxParam& p_param);
|
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
|
||||||
MxLong HandleNotification0(MxParam&);
|
MxLong HandleNotification0(MxNotificationParam& p_param);
|
||||||
|
|
||||||
void FUN_10070dc0(MxBool);
|
void UpdateFrameHot(MxBool p_display);
|
||||||
void FUN_10070e90();
|
void Reset();
|
||||||
|
|
||||||
void PlayCutscene(Cutscene p_entityId, MxBool p_scale);
|
void PlayCutscene(Cutscene p_entityId, MxBool p_scale);
|
||||||
void StopCutscene();
|
void StopCutscene();
|
||||||
|
|
||||||
|
void FUN_10070d10(MxS32 p_x, MxS32 p_y);
|
||||||
|
|
||||||
void StartCredits();
|
void StartCredits();
|
||||||
void StopCredits();
|
void StopCredits();
|
||||||
|
|
||||||
@ -160,20 +230,20 @@ class Infocenter : public LegoWorld {
|
|||||||
void PlayBookAnimation();
|
void PlayBookAnimation();
|
||||||
void StopBookAnimation();
|
void StopBookAnimation();
|
||||||
|
|
||||||
InfomainScript m_currentInfomainScript; // 0xf8
|
InfomainScript m_currentInfomainScript; // 0xf8
|
||||||
MxS16 m_unk0xfc; // 0xfc
|
MxS16 m_selectedCharacter; // 0xfc
|
||||||
InfocenterState* m_infocenterState; // 0x100
|
InfocenterState* m_infocenterState; // 0x100
|
||||||
undefined4 m_unk0x104; // 0x104
|
LegoGameState::Area m_transitionDestination; // 0x104
|
||||||
Cutscene m_currentCutscene; // 0x108
|
Cutscene m_currentCutscene; // 0x108
|
||||||
Radio m_radio; // 0x10c
|
Radio m_radio; // 0x10c
|
||||||
undefined4 m_unk0x11c; // 0x11c
|
MxStillPresenter* m_unk0x11c; // 0x11c
|
||||||
InfocenterUnkDataEntry m_entries[7]; // 0x120
|
InfocenterMapEntry m_mapAreas[7]; // 0x120
|
||||||
MxS16 m_unk0x1c8; // 0x1c8
|
MxS16 m_unk0x1c8; // 0x1c8
|
||||||
undefined4 m_unk0x1cc; // 0x1cc
|
MxStillPresenter* m_frameHotBitmap; // 0x1cc
|
||||||
MxS16 m_infoManDialogueTimer; // 0x1d0
|
MxS16 m_infoManDialogueTimer; // 0x1d0
|
||||||
MxS16 m_bookAnimationTimer; // 0x1d2
|
MxS16 m_bookAnimationTimer; // 0x1d2
|
||||||
MxU16 m_unk0x1d4; // 0x1d4
|
MxU16 m_unk0x1d4; // 0x1d4
|
||||||
MxS16 m_unk0x1d6; // 0x1d6
|
MxS16 m_unk0x1d6; // 0x1d6
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INFOCENTER_H
|
#endif // INFOCENTER_H
|
||||||
|
|||||||
@ -1,44 +1,49 @@
|
|||||||
#ifndef INFOCENTERDOOR_H
|
#ifndef INFOCENTERDOOR_H
|
||||||
#define INFOCENTERDOOR_H
|
#define INFOCENTERDOOR_H
|
||||||
|
|
||||||
|
#include "legogamestate.h"
|
||||||
#include "legoworld.h"
|
#include "legoworld.h"
|
||||||
|
|
||||||
|
class LegoControlManagerEvent;
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d72d8
|
// VTABLE: LEGO1 0x100d72d8
|
||||||
// SIZE 0xfc
|
// SIZE 0xfc
|
||||||
class InfocenterDoor : public LegoWorld {
|
class InfocenterDoor : public LegoWorld {
|
||||||
public:
|
public:
|
||||||
InfocenterDoor();
|
InfocenterDoor();
|
||||||
virtual ~InfocenterDoor(); // vtable+0x0
|
~InfocenterDoor() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100377b0
|
// FUNCTION: LEGO1 0x100377b0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f049c
|
// STRING: LEGO1 0x100f049c
|
||||||
return "InfocenterDoor";
|
return "InfocenterDoor";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100377c0
|
// FUNCTION: LEGO1 0x100377c0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, InfocenterDoor::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, InfocenterDoor::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100377a0
|
// FUNCTION: LEGO1 0x100377a0
|
||||||
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
||||||
|
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100378d0
|
// SYNTHETIC: LEGO1 0x100378d0
|
||||||
// InfocenterDoor::`scalar deleting destructor'
|
// InfocenterDoor::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxS32 m_unk0xf8; // 0xf8
|
LegoGameState::Area m_unk0xf8; // 0xf8
|
||||||
|
|
||||||
|
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INFOCENTERDOOR_H
|
#endif // INFOCENTERDOOR_H
|
||||||
|
|||||||
@ -8,14 +8,14 @@
|
|||||||
class InfoCenterEntity : public BuildingEntity {
|
class InfoCenterEntity : public BuildingEntity {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000ea00
|
// FUNCTION: LEGO1 0x1000ea00
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f035c
|
// STRING: LEGO1 0x100f035c
|
||||||
return "InfoCenterEntity";
|
return "InfoCenterEntity";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000ea10
|
// FUNCTION: LEGO1 0x1000ea10
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
return !strcmp(p_name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
#define INFOCENTERSTATE_H
|
#define INFOCENTERSTATE_H
|
||||||
|
|
||||||
#include "decomp.h"
|
#include "decomp.h"
|
||||||
|
#include "legogamestate.h"
|
||||||
#include "legostate.h"
|
#include "legostate.h"
|
||||||
#include "mxstillpresenter.h"
|
#include "mxstillpresenter.h"
|
||||||
|
|
||||||
@ -10,26 +11,32 @@
|
|||||||
class InfocenterState : public LegoState {
|
class InfocenterState : public LegoState {
|
||||||
public:
|
public:
|
||||||
InfocenterState();
|
InfocenterState();
|
||||||
virtual ~InfocenterState();
|
~InfocenterState() override;
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10071840
|
// FUNCTION: LEGO1 0x10071840
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f04dc
|
// STRING: LEGO1 0x100f04dc
|
||||||
return "InfocenterState";
|
return "InfocenterState";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10071850
|
// FUNCTION: LEGO1 0x10071850
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, InfocenterState::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, InfocenterState::ClassName()) || LegoState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10071830
|
// FUNCTION: LEGO1 0x10071830
|
||||||
virtual MxBool VTable0x14() override { return FALSE; } // vtable+0x14
|
MxBool VTable0x14() override { return FALSE; } // vtable+0x14
|
||||||
|
|
||||||
inline MxS16 GetInfocenterBufferSize() { return sizeof(m_buffer) / sizeof(m_buffer[0]); }
|
inline MxS16 GetMaxNameLength() { return _countof(m_letters); }
|
||||||
inline MxStillPresenter* GetInfocenterBufferElement(MxS32 p_index) { return m_buffer[p_index]; }
|
inline MxStillPresenter* GetNameLetter(MxS32 p_index) { return m_letters[p_index]; }
|
||||||
|
inline MxBool HasRegistered() { return m_letters[0] != NULL; }
|
||||||
|
inline Playlist& GetExitDialogueAct1() { return m_exitDialogueAct1; }
|
||||||
|
inline Playlist& GetExitDialogueAct23() { return m_exitDialogueAct23; }
|
||||||
|
inline Playlist& GetReturnDialogue(LegoGameState::Act p_act) { return m_returnDialogue[p_act]; }
|
||||||
|
inline Playlist& GetLeaveDialogue(LegoGameState::Act p_act) { return m_leaveDialogue[p_act]; }
|
||||||
|
inline Playlist& GetBricksterDialogue() { return m_bricksterDialogue; }
|
||||||
inline MxU32 GetUnknown0x74() { return m_unk0x74; }
|
inline MxU32 GetUnknown0x74() { return m_unk0x74; }
|
||||||
|
|
||||||
inline void SetUnknown0x74(MxU32 p_unk0x74) { m_unk0x74 = p_unk0x74; }
|
inline void SetUnknown0x74(MxU32 p_unk0x74) { m_unk0x74 = p_unk0x74; }
|
||||||
@ -38,37 +45,13 @@ class InfocenterState : public LegoState {
|
|||||||
// InfocenterState::`scalar deleting destructor'
|
// InfocenterState::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Members should be renamed with their offsets before use
|
Playlist m_exitDialogueAct1; // 0x08
|
||||||
/*
|
Playlist m_exitDialogueAct23; // 0x14
|
||||||
struct UnkStruct
|
Playlist m_returnDialogue[3]; // 0x20
|
||||||
{
|
Playlist m_leaveDialogue[3]; // 0x44
|
||||||
undefined4 unk1;
|
Playlist m_bricksterDialogue; // 0x68
|
||||||
undefined2 unk2;
|
MxU32 m_unk0x74; // 0x74
|
||||||
undefined2 unk3;
|
MxStillPresenter* m_letters[7]; // 0x78
|
||||||
undefined2 unk4;
|
|
||||||
};
|
|
||||||
|
|
||||||
undefined2 unk1;
|
|
||||||
undefined2 unk2;
|
|
||||||
undefined4 unk3;
|
|
||||||
undefined4 padding1;
|
|
||||||
void *unk4;
|
|
||||||
undefined2 unk5;
|
|
||||||
undefined2 unk6;
|
|
||||||
undefined2 unk7;
|
|
||||||
undefined2 padding2;
|
|
||||||
void *unk8;
|
|
||||||
undefined2 unk9;
|
|
||||||
undefined2 unk10;
|
|
||||||
undefined2 unk11;
|
|
||||||
undefined2 padding3;
|
|
||||||
UnkStruct unk12[6];
|
|
||||||
undefined4 unk13;
|
|
||||||
*/
|
|
||||||
|
|
||||||
undefined m_pad[0x6c];
|
|
||||||
MxU32 m_unk0x74; // 0x74
|
|
||||||
MxStillPresenter* m_buffer[7]; // 0x78
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INFOCENTERSTATE_H
|
#endif // INFOCENTERSTATE_H
|
||||||
|
|||||||
@ -20,35 +20,34 @@ class Act1State;
|
|||||||
|
|
||||||
// VTABLE: LEGO1 0x100d6fb8
|
// VTABLE: LEGO1 0x100d6fb8
|
||||||
// SIZE 0x140
|
// SIZE 0x140
|
||||||
// Radio at 0x12c
|
|
||||||
class Isle : public LegoWorld {
|
class Isle : public LegoWorld {
|
||||||
public:
|
public:
|
||||||
Isle();
|
Isle();
|
||||||
virtual ~Isle() override;
|
~Isle() override;
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10030910
|
// FUNCTION: LEGO1 0x10030910
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0458
|
// STRING: LEGO1 0x100f0458
|
||||||
return "Isle";
|
return "Isle";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10030920
|
// FUNCTION: LEGO1 0x10030920
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Isle::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, Isle::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+50
|
void ReadyWorld() override; // vtable+50
|
||||||
virtual void VTable0x58(MxCore* p_object) override; // vtable+58
|
void Add(MxCore* p_object) override; // vtable+58
|
||||||
// FUNCTION: LEGO1 0x10030900
|
// FUNCTION: LEGO1 0x10030900
|
||||||
virtual MxBool VTable0x5c() override { return TRUE; } // vtable+5c
|
MxBool VTable0x5c() override { return TRUE; } // vtable+5c
|
||||||
// FUNCTION: LEGO1 0x10033170
|
// FUNCTION: LEGO1 0x10033170
|
||||||
virtual void VTable0x60() override {} // vtable+60
|
void VTable0x60() override {} // vtable+60
|
||||||
virtual MxBool VTable0x64() override; // vtable+64
|
MxBool VTable0x64() override; // vtable+64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+68
|
void Enable(MxBool p_enable) override; // vtable+68
|
||||||
virtual void VTable0x6c(IslePathActor* p_actor); // vtable+6c
|
virtual void VTable0x6c(IslePathActor* p_actor); // vtable+6c
|
||||||
|
|
||||||
inline void SetUnknown13c(MxU32 p_unk0x13c) { m_unk0x13c = p_unk0x13c; }
|
inline void SetUnknown13c(MxU32 p_unk0x13c) { m_unk0x13c = p_unk0x13c; }
|
||||||
|
|||||||
@ -6,22 +6,22 @@
|
|||||||
// VTABLE: LEGO1 0x100d5178
|
// VTABLE: LEGO1 0x100d5178
|
||||||
class IsleActor : public LegoActor {
|
class IsleActor : public LegoActor {
|
||||||
public:
|
public:
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000e660
|
// FUNCTION: LEGO1 0x1000e660
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f07dc
|
// STRING: LEGO1 0x100f07dc
|
||||||
return "IsleActor";
|
return "IsleActor";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000e670
|
// FUNCTION: LEGO1 0x1000e670
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, IsleActor::ClassName()) || LegoActor::IsA(p_name);
|
return !strcmp(p_name, IsleActor::ClassName()) || LegoActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
};
|
};
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000e940
|
// SYNTHETIC: LEGO1 0x1000e940
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
#ifndef ISLEPATHACTOR_H
|
#ifndef ISLEPATHACTOR_H
|
||||||
#define ISLEPATHACTOR_H
|
#define ISLEPATHACTOR_H
|
||||||
|
|
||||||
|
#include "legocontrolmanager.h"
|
||||||
#include "legopathactor.h"
|
#include "legopathactor.h"
|
||||||
#include "legoworld.h"
|
#include "legoworld.h"
|
||||||
#include "mxtype17notificationparam.h"
|
|
||||||
#include "mxtype18notificationparam.h"
|
#include "mxtype18notificationparam.h"
|
||||||
#include "mxtype19notificationparam.h"
|
#include "mxtype19notificationparam.h"
|
||||||
#include "mxtypes.h"
|
#include "mxtypes.h"
|
||||||
@ -15,31 +15,31 @@ class IslePathActor : public LegoPathActor {
|
|||||||
IslePathActor();
|
IslePathActor();
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002e10
|
// FUNCTION: LEGO1 0x10002e10
|
||||||
inline virtual ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x0
|
inline ~IslePathActor() override { IslePathActor::Destroy(TRUE); } // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002ea0
|
// FUNCTION: LEGO1 0x10002ea0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0104
|
// STRING: LEGO1 0x100f0104
|
||||||
return "IslePathActor";
|
return "IslePathActor";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002eb0
|
// FUNCTION: LEGO1 0x10002eb0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, IslePathActor::ClassName()) || LegoPathActor::IsA(p_name);
|
return !strcmp(p_name, IslePathActor::ClassName()) || LegoPathActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||||
// FUNCTION: LEGO1 0x10002e70
|
// FUNCTION: LEGO1 0x10002e70
|
||||||
virtual MxU32 VTable0xcc() { return 0; } // vtable+0xcc
|
virtual MxU32 VTable0xcc() { return 0; } // vtable+0xcc
|
||||||
// FUNCTION: LEGO1 0x10002df0
|
// FUNCTION: LEGO1 0x10002df0
|
||||||
virtual MxU32 VTable0xd0() { return 0; } // vtable+0xd0
|
virtual MxU32 VTable0xd0() { return 0; } // vtable+0xd0
|
||||||
// FUNCTION: LEGO1 0x10002e80
|
// FUNCTION: LEGO1 0x10002e80
|
||||||
virtual MxU32 VTable0xd4(MxType17NotificationParam&) { return 0; } // vtable+0xd4
|
virtual MxU32 VTable0xd4(LegoControlManagerEvent&) { return 0; } // vtable+0xd4
|
||||||
// FUNCTION: LEGO1 0x10002e90
|
// FUNCTION: LEGO1 0x10002e90
|
||||||
virtual MxU32 VTable0xd8(MxType18NotificationParam&) { return 0; } // vtable+0xd8
|
virtual MxU32 VTable0xd8(MxType18NotificationParam&) { return 0; } // vtable+0xd8
|
||||||
// FUNCTION: LEGO1 0x10002e00
|
// FUNCTION: LEGO1 0x10002e00
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "decomp.h"
|
#include "decomp.h"
|
||||||
#include "islepathactor.h"
|
#include "islepathactor.h"
|
||||||
#include "mxtype17notificationparam.h"
|
#include "legocontrolmanager.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d9ec8
|
// VTABLE: LEGO1 0x100d9ec8
|
||||||
// SIZE 0x164
|
// SIZE 0x164
|
||||||
@ -12,23 +12,23 @@ class Jetski : public IslePathActor {
|
|||||||
Jetski();
|
Jetski();
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1007e430
|
// FUNCTION: LEGO1 0x1007e430
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f03d8
|
// STRING: LEGO1 0x100f03d8
|
||||||
return "Jetski";
|
return "Jetski";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1007e440
|
// FUNCTION: LEGO1 0x1007e440
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
|
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
virtual MxU32 VTable0xcc() override; // vtable+0xcc
|
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||||
virtual MxU32 VTable0xd4(MxType17NotificationParam&) override; // vtable+0xd4
|
MxU32 VTable0xd4(LegoControlManagerEvent&) override; // vtable+0xd4
|
||||||
virtual void VTable0xe4() override; // vtable+0xe4
|
void VTable0xe4() override; // vtable+0xe4
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1007e5c0
|
// SYNTHETIC: LEGO1 0x1007e5c0
|
||||||
// Jetski::`scalar deleting destructor'
|
// Jetski::`scalar deleting destructor'
|
||||||
|
|||||||
@ -8,17 +8,27 @@
|
|||||||
class JetskiRace : public LegoRace {
|
class JetskiRace : public LegoRace {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000daf0
|
// FUNCTION: LEGO1 0x1000daf0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0530
|
// STRING: LEGO1 0x100f0530
|
||||||
return "JetskiRace";
|
return "JetskiRace";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000db00
|
// FUNCTION: LEGO1 0x1000db00
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, JetskiRace::ClassName()) || LegoRace::IsA(p_name);
|
return !strcmp(p_name, JetskiRace::ClassName()) || LegoRace::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
|
void ReadyWorld() override; // vtable+0x50
|
||||||
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
|
undefined4 VTable0x6c(undefined4) override; // vtable+0x6c
|
||||||
|
undefined4 VTable0x70(undefined4) override; // vtable+0x70
|
||||||
|
undefined4 VTable0x74(undefined4) override; // vtable+0x74
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// SYNTHETIC: LEGO1 0x1000f530
|
||||||
|
// JetskiRace::`scalar deleting destructor'
|
||||||
|
|
||||||
#endif // JETSKIRACE_H
|
#endif // JETSKIRACE_H
|
||||||
|
|||||||
@ -8,14 +8,14 @@
|
|||||||
class JetskiRaceState : public RaceState {
|
class JetskiRaceState : public RaceState {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000dc40
|
// FUNCTION: LEGO1 0x1000dc40
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f00ac
|
// STRING: LEGO1 0x100f00ac
|
||||||
return "JetskiRaceState";
|
return "JetskiRaceState";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000dc50
|
// FUNCTION: LEGO1 0x1000dc50
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, JetskiRaceState::ClassName()) || RaceState::IsA(p_name);
|
return !strcmp(p_name, JetskiRaceState::ClassName()) || RaceState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,30 +10,31 @@ class JukeBox : public LegoWorld {
|
|||||||
public:
|
public:
|
||||||
JukeBox();
|
JukeBox();
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x8
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1005d6f0
|
// FUNCTION: LEGO1 0x1005d6f0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f02cc
|
// STRING: LEGO1 0x100f02cc
|
||||||
return "JukeBox";
|
return "JukeBox";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1005d700
|
// FUNCTION: LEGO1 0x1005d700
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
MxBool VTable0x5c() override; // vtable+0x5c
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1005d810
|
// SYNTHETIC: LEGO1 0x1005d810
|
||||||
// JukeBox::`scalar deleting destructor'
|
// JukeBox::`scalar deleting destructor'
|
||||||
|
|
||||||
enum JukeBoxScript {
|
enum JukeBoxScript {
|
||||||
e_mamaPapaBrickolini,
|
e_mamaPapaBrickolini,
|
||||||
e_jailUnused,
|
e_jailUnused,
|
||||||
@ -65,29 +66,18 @@ class JukeBox : public LegoWorld {
|
|||||||
e_legoRadioReminder2,
|
e_legoRadioReminder2,
|
||||||
|
|
||||||
e_legoRadioRacingAd,
|
e_legoRadioRacingAd,
|
||||||
|
|
||||||
e_legoRadioNews1,
|
e_legoRadioNews1,
|
||||||
e_legoRadioNews2,
|
e_legoRadioNews2,
|
||||||
|
|
||||||
e_legoRadioPizzaAd1,
|
e_legoRadioPizzaAd1,
|
||||||
|
|
||||||
e_legoRadioBricksterPSA,
|
e_legoRadioBricksterPSA,
|
||||||
|
|
||||||
e_legoRadioSports1,
|
e_legoRadioSports1,
|
||||||
|
|
||||||
e_legoRadioIntermission1,
|
e_legoRadioIntermission1,
|
||||||
e_legoRadioIntermission2,
|
e_legoRadioIntermission2,
|
||||||
|
|
||||||
e_legoRadioPizzaAd2,
|
e_legoRadioPizzaAd2,
|
||||||
|
|
||||||
e_legoRadioWeatherReport,
|
e_legoRadioWeatherReport,
|
||||||
|
|
||||||
e_legoRadioSports2,
|
e_legoRadioSports2,
|
||||||
|
|
||||||
e_legoRadioPizzaAd3,
|
e_legoRadioPizzaAd3,
|
||||||
|
|
||||||
e_legoRadioIntermission3,
|
e_legoRadioIntermission3,
|
||||||
|
|
||||||
e_legoRadioSuperStoreAd,
|
e_legoRadioSuperStoreAd,
|
||||||
|
|
||||||
e_legoRadioLuckyYou,
|
e_legoRadioLuckyYou,
|
||||||
|
|||||||
@ -8,25 +8,33 @@
|
|||||||
class JukeBoxEntity : public LegoEntity {
|
class JukeBoxEntity : public LegoEntity {
|
||||||
public:
|
public:
|
||||||
JukeBoxEntity();
|
JukeBoxEntity();
|
||||||
virtual ~JukeBoxEntity() override; // vtable+0x0
|
~JukeBoxEntity() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10085cc0
|
// FUNCTION: LEGO1 0x10085cc0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f02f0
|
// STRING: LEGO1 0x100f02f0
|
||||||
return "JukeBoxEntity";
|
return "JukeBoxEntity";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10085cd0
|
// FUNCTION: LEGO1 0x10085cd0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, JukeBoxEntity::ClassName()) || LegoEntity::IsA(p_name);
|
return !strcmp(p_name, JukeBoxEntity::ClassName()) || LegoEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StartAction();
|
||||||
|
void StopAction(MxU32 p_state);
|
||||||
|
|
||||||
|
inline MxBool IsBackgroundAudioEnabled() { return m_audioEnabled; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10085db0
|
// SYNTHETIC: LEGO1 0x10085db0
|
||||||
// JukeBoxEntity::`scalar deleting destructor'
|
// JukeBoxEntity::`scalar deleting destructor'
|
||||||
|
|
||||||
|
protected:
|
||||||
|
MxBool m_audioEnabled; // 0x68
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // JUKEBOXENTITY_H
|
#endif // JUKEBOXENTITY_H
|
||||||
|
|||||||
@ -8,22 +8,30 @@
|
|||||||
class JukeBoxState : public LegoState {
|
class JukeBoxState : public LegoState {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000f310
|
// FUNCTION: LEGO1 0x1000f310
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f02bc
|
// STRING: LEGO1 0x100f02bc
|
||||||
return "JukeBoxState";
|
return "JukeBoxState";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000f320
|
// FUNCTION: LEGO1 0x1000f320
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, JukeBoxState::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, JukeBoxState::ClassName()) || LegoState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxBool VTable0x14() override; // vtable+0x14
|
MxBool VTable0x14() override; // vtable+0x14
|
||||||
|
|
||||||
|
inline MxU32 IsActive() { return m_active; }
|
||||||
|
inline void SetActive(MxU32 p_active) { m_active = p_active; }
|
||||||
|
inline MxU32 GetState() { return m_state; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000f3d0
|
// SYNTHETIC: LEGO1 0x1000f3d0
|
||||||
// JukeBoxState::`scalar deleting destructor'
|
// JukeBoxState::`scalar deleting destructor'
|
||||||
|
|
||||||
|
protected:
|
||||||
|
MxU32 m_state; // 0x08
|
||||||
|
MxU32 m_active; // 0x0c
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // JUKEBOXSTATE_H
|
#endif // JUKEBOXSTATE_H
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
#ifndef LEGO3DWAVEPRESENTER_H
|
#ifndef LEGO3DWAVEPRESENTER_H
|
||||||
#define LEGO3DWAVEPRESENTER_H
|
#define LEGO3DWAVEPRESENTER_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
|
#include "legounknown100d5778.h"
|
||||||
#include "mxwavepresenter.h"
|
#include "mxwavepresenter.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d52b0
|
// VTABLE: LEGO1 0x100d52b0
|
||||||
@ -8,25 +10,29 @@
|
|||||||
class Lego3DWavePresenter : public MxWavePresenter {
|
class Lego3DWavePresenter : public MxWavePresenter {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1000d890
|
// FUNCTION: LEGO1 0x1000d890
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f058c
|
// STRING: LEGO1 0x100f058c
|
||||||
return "Lego3DWavePresenter";
|
return "Lego3DWavePresenter";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000d8a0
|
// FUNCTION: LEGO1 0x1000d8a0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(p_name);
|
return !strcmp(p_name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void StartingTickle() override; // vtable+0x1c
|
void StartingTickle() override; // vtable+0x1c
|
||||||
virtual void StreamingTickle() override; // vtable+0x20
|
void StreamingTickle() override; // vtable+0x20
|
||||||
virtual MxResult AddToManager() override; // vtable+0x34
|
MxResult AddToManager() override; // vtable+0x34
|
||||||
virtual void Destroy() override; // vtable+0x38
|
void Destroy() override; // vtable+0x38
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000f4b0
|
// SYNTHETIC: LEGO1 0x1000f4b0
|
||||||
// Lego3DWavePresenter::`scalar deleting destructor'
|
// Lego3DWavePresenter::`scalar deleting destructor'
|
||||||
|
|
||||||
|
private:
|
||||||
|
undefined m_unk0x6c[4]; // 0x6c
|
||||||
|
LegoUnknown100d5778 m_unk0x70; // 0x70
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGO3DWAVEPRESENTER_H
|
#endif // LEGO3DWAVEPRESENTER_H
|
||||||
|
|||||||
@ -9,14 +9,14 @@
|
|||||||
// SIZE 0x1154
|
// SIZE 0x1154
|
||||||
class LegoAct2 : public LegoWorld {
|
class LegoAct2 : public LegoWorld {
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x08
|
MxResult Tickle() override; // vtable+0x08
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
MxBool VTable0x5c() override; // vtable+0x5c
|
||||||
virtual void VTable0x60() override; // vtable+0x60
|
void VTable0x60() override; // vtable+0x60
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1004fe20
|
// SYNTHETIC: LEGO1 0x1004fe20
|
||||||
// LegoAct2::`scalar deleting destructor'
|
// LegoAct2::`scalar deleting destructor'
|
||||||
|
|||||||
@ -7,23 +7,31 @@
|
|||||||
// SIZE 0x10
|
// SIZE 0x10
|
||||||
class LegoAct2State : public LegoState {
|
class LegoAct2State : public LegoState {
|
||||||
public:
|
public:
|
||||||
|
~LegoAct2State() override {}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000df80
|
// FUNCTION: LEGO1 0x1000df80
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0428
|
// STRING: LEGO1 0x100f0428
|
||||||
return "LegoAct2State";
|
return "LegoAct2State";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000df90
|
// FUNCTION: LEGO1 0x1000df90
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoAct2State::ClassName()) || LegoState::IsA(p_name);
|
return !strcmp(p_name, LegoAct2State::ClassName()) || LegoState::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxBool VTable0x14() override; // vtable+0x14
|
MxBool VTable0x14() override; // vtable+0x14
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000e040
|
// SYNTHETIC: LEGO1 0x1000e040
|
||||||
// LegoAct2State::`scalar deleting destructor'
|
// LegoAct2State::`scalar deleting destructor'
|
||||||
|
|
||||||
|
inline undefined4 GetUnknown0x08() { return m_unk0x08; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
undefined4 m_unk0x08; // 0x08
|
||||||
|
undefined4 m_unk0x0c; // 0x0c
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGOACT2STATE_H
|
#endif // LEGOACT2STATE_H
|
||||||
|
|||||||
@ -10,25 +10,25 @@
|
|||||||
class LegoActionControlPresenter : public MxMediaPresenter {
|
class LegoActionControlPresenter : public MxMediaPresenter {
|
||||||
public:
|
public:
|
||||||
inline LegoActionControlPresenter() { m_unk0x50 = Extra::ActionType::e_none; }
|
inline LegoActionControlPresenter() { m_unk0x50 = Extra::ActionType::e_none; }
|
||||||
virtual ~LegoActionControlPresenter() override { Destroy(TRUE); }; // vtable+0x00
|
~LegoActionControlPresenter() override { Destroy(TRUE); } // vtable+0x00
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000d0e0
|
// FUNCTION: LEGO1 0x1000d0e0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f05bc
|
// STRING: LEGO1 0x100f05bc
|
||||||
return "LegoActionControlPresenter";
|
return "LegoActionControlPresenter";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000d0f0
|
// FUNCTION: LEGO1 0x1000d0f0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoActionControlPresenter::ClassName()) || MxMediaPresenter::IsA(p_name);
|
return !strcmp(p_name, LegoActionControlPresenter::ClassName()) || MxMediaPresenter::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ReadyTickle() override; // vtable+0x18
|
void ReadyTickle() override; // vtable+0x18
|
||||||
virtual void RepeatingTickle() override; // vtable+0x24
|
void RepeatingTickle() override; // vtable+0x24
|
||||||
virtual void ParseExtra() override; // vtable+0x30
|
void ParseExtra() override; // vtable+0x30
|
||||||
virtual MxResult AddToManager() override; // vtable+0x34
|
MxResult AddToManager() override; // vtable+0x34
|
||||||
virtual void Destroy(MxBool p_fromDestructor); // vtable+0x5c
|
virtual void Destroy(MxBool p_fromDestructor); // vtable+0x5c
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
#define LEGOACTOR_H
|
#define LEGOACTOR_H
|
||||||
|
|
||||||
#include "decomp.h"
|
#include "decomp.h"
|
||||||
|
#include "legocachesound.h"
|
||||||
#include "legoentity.h"
|
#include "legoentity.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d6d68
|
// VTABLE: LEGO1 0x100d6d68
|
||||||
@ -9,42 +10,47 @@
|
|||||||
class LegoActor : public LegoEntity {
|
class LegoActor : public LegoEntity {
|
||||||
public:
|
public:
|
||||||
LegoActor();
|
LegoActor();
|
||||||
virtual ~LegoActor() override;
|
~LegoActor() override;
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1002d210
|
// FUNCTION: LEGO1 0x1002d210
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0124
|
// STRING: LEGO1 0x100f0124
|
||||||
return "LegoActor";
|
return "LegoActor";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1002d220
|
// FUNCTION: LEGO1 0x1002d220
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoActor::ClassName()) || LegoEntity::IsA(p_name);
|
return !strcmp(p_name, LegoActor::ClassName()) || LegoEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ParseAction(char*) override; // vtable+0x20
|
void ParseAction(char*) override; // vtable+0x20
|
||||||
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
|
void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002cc0
|
// FUNCTION: LEGO1 0x10002cc0
|
||||||
virtual MxFloat VTable0x50() { return m_unk0x68; } // vtable+0x50
|
virtual MxFloat VTable0x50() { return m_unk0x68; } // vtable+0x50
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002cd0
|
// FUNCTION: LEGO1 0x10002cd0
|
||||||
virtual void VTable0x54(MxFloat p_unk0x68) { m_unk0x68 = p_unk0x68; } // vtable+0x54
|
virtual void VTable0x54(MxFloat p_unk0x68) { m_unk0x68 = p_unk0x68; } // vtable+0x54
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002ce0
|
// FUNCTION: LEGO1 0x10002ce0
|
||||||
virtual void VTable0x58(MxFloat p_unk0x70) { m_unk0x70 = p_unk0x70; } // vtable+0x58
|
virtual void VTable0x58(MxFloat p_unk0x70) { m_unk0x70 = p_unk0x70; } // vtable+0x58
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002cf0
|
// FUNCTION: LEGO1 0x10002cf0
|
||||||
virtual MxFloat VTable0x5c() { return m_unk0x70; } // vtable+0x5c
|
virtual MxFloat VTable0x5c() { return m_unk0x70; } // vtable+0x5c
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002d00
|
// FUNCTION: LEGO1 0x10002d00
|
||||||
virtual MxU8 VTable0x60() { return m_unk0x74; } // vtable+0x60
|
virtual MxU8 VTable0x60() { return m_unk0x74; } // vtable+0x60
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10002d10
|
// FUNCTION: LEGO1 0x10002d10
|
||||||
virtual void VTable0x64(MxU8 p_unk0x74) { m_unk0x74 = p_unk0x74; } // vtable+0x64
|
virtual void VTable0x64(MxU8 p_unk0x74) { m_unk0x74 = p_unk0x74; } // vtable+0x64
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxFloat m_unk0x68; // 0x68
|
MxFloat m_unk0x68; // 0x68
|
||||||
undefined4 m_unk0x6c; // 0x6c
|
LegoCacheSound* m_sound; // 0x6c
|
||||||
MxFloat m_unk0x70; // 0x70
|
MxFloat m_unk0x70; // 0x70
|
||||||
MxU8 m_unk0x74; // 0x74
|
MxU8 m_unk0x74; // 0x74
|
||||||
};
|
};
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1002d300
|
// SYNTHETIC: LEGO1 0x1002d300
|
||||||
|
|||||||
@ -7,24 +7,24 @@
|
|||||||
// SIZE 0x50
|
// SIZE 0x50
|
||||||
class LegoActorPresenter : public LegoEntityPresenter {
|
class LegoActorPresenter : public LegoEntityPresenter {
|
||||||
public:
|
public:
|
||||||
virtual ~LegoActorPresenter() override{};
|
~LegoActorPresenter() override{};
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000cb10
|
// FUNCTION: LEGO1 0x1000cb10
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f06a4
|
// STRING: LEGO1 0x100f06a4
|
||||||
return "LegoActorPresenter";
|
return "LegoActorPresenter";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000cb20
|
// FUNCTION: LEGO1 0x1000cb20
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoActorPresenter::ClassName()) || LegoEntityPresenter::IsA(p_name);
|
return !strcmp(p_name, LegoActorPresenter::ClassName()) || LegoEntityPresenter::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ReadyTickle() override; // vtable+0x18
|
void ReadyTickle() override; // vtable+0x18
|
||||||
virtual void StartingTickle() override; // vtable+0x1c
|
void StartingTickle() override; // vtable+0x1c
|
||||||
virtual void ParseExtra() override; // vtable+0x30
|
void ParseExtra() override; // vtable+0x30
|
||||||
};
|
};
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000cc30
|
// SYNTHETIC: LEGO1 0x1000cc30
|
||||||
|
|||||||
@ -9,36 +9,41 @@
|
|||||||
class LegoAnimationManager : public MxCore {
|
class LegoAnimationManager : public MxCore {
|
||||||
public:
|
public:
|
||||||
LegoAnimationManager();
|
LegoAnimationManager();
|
||||||
virtual ~LegoAnimationManager() override; // vtable+0x0
|
~LegoAnimationManager() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x8
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1005ec80
|
// FUNCTION: LEGO1 0x1005ec80
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f7508
|
// STRING: LEGO1 0x100f7508
|
||||||
return "LegoAnimationManager";
|
return "LegoAnimationManager";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1005ec90
|
// FUNCTION: LEGO1 0x1005ec90
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name);
|
return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FUN_1005ee80(MxBool);
|
||||||
void FUN_1005ef10();
|
void FUN_1005ef10();
|
||||||
|
void FUN_1005f0b0();
|
||||||
void FUN_1005f6d0(MxBool);
|
void FUN_1005f6d0(MxBool);
|
||||||
void FUN_1005f720(undefined4);
|
void FUN_1005f720(MxS32 p_scriptIndex);
|
||||||
|
void FUN_10061010(undefined4);
|
||||||
void FUN_10064670(MxBool);
|
void FUN_10064670(MxBool);
|
||||||
|
|
||||||
__declspec(dllexport) static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig);
|
static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig);
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1005ed10
|
// SYNTHETIC: LEGO1 0x1005ed10
|
||||||
// LegoAnimationManager::`scalar deleting destructor'
|
// LegoAnimationManager::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
|
undefined m_unk0x08[0x4f8]; // 0x08
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGOANIMATIONMANAGER_H
|
#endif // LEGOANIMATIONMANAGER_H
|
||||||
|
|||||||
@ -9,30 +9,30 @@ class LegoAnimMMPresenter : public MxCompositePresenter {
|
|||||||
public:
|
public:
|
||||||
LegoAnimMMPresenter();
|
LegoAnimMMPresenter();
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1004a950
|
// FUNCTION: LEGO1 0x1004a950
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f046c
|
// STRING: LEGO1 0x100f046c
|
||||||
return "LegoAnimMMPresenter";
|
return "LegoAnimMMPresenter";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1004a960
|
// FUNCTION: LEGO1 0x1004a960
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(p_name);
|
return !strcmp(p_name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ReadyTickle() override; // vtable+0x18
|
void ReadyTickle() override; // vtable+0x18
|
||||||
virtual void StartingTickle() override; // vtable+0x1c
|
void StartingTickle() override; // vtable+0x1c
|
||||||
virtual void StreamingTickle() override; // vtable+0x20
|
void StreamingTickle() override; // vtable+0x20
|
||||||
virtual void RepeatingTickle() override; // vtable+0x24
|
void RepeatingTickle() override; // vtable+0x24
|
||||||
virtual void DoneTickle() override; // vtable+0x2c
|
void DoneTickle() override; // vtable+0x2c
|
||||||
virtual void ParseExtra() override; // vtable+0x30
|
void ParseExtra() override; // vtable+0x30
|
||||||
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
||||||
virtual void EndAction() override; // vtable+0x40
|
void EndAction() override; // vtable+0x40
|
||||||
virtual void VTable0x60(MxPresenter* p_presenter) override; // vtable+0x60
|
void VTable0x60(MxPresenter* p_presenter) override; // vtable+0x60
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1004aa40
|
// SYNTHETIC: LEGO1 0x1004aa40
|
||||||
// LegoAnimMMPresenter::`scalar deleting destructor'
|
// LegoAnimMMPresenter::`scalar deleting destructor'
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
#ifndef LEGOANIMPRESENTER_H
|
#ifndef LEGOANIMPRESENTER_H
|
||||||
#define LEGOANIMPRESENTER_H
|
#define LEGOANIMPRESENTER_H
|
||||||
|
|
||||||
|
#include "anim/legoanim.h"
|
||||||
#include "mxgeometry/mxgeometry3d.h"
|
#include "mxgeometry/mxgeometry3d.h"
|
||||||
#include "mxvideopresenter.h"
|
#include "mxvideopresenter.h"
|
||||||
|
|
||||||
class LegoWorld;
|
class LegoWorld;
|
||||||
class LegoMemoryStream;
|
|
||||||
class LegoAnimClass;
|
class LegoAnimClass;
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d90c8
|
// VTABLE: LEGO1 0x100d90c8
|
||||||
@ -13,40 +13,42 @@ class LegoAnimClass;
|
|||||||
class LegoAnimPresenter : public MxVideoPresenter {
|
class LegoAnimPresenter : public MxVideoPresenter {
|
||||||
public:
|
public:
|
||||||
LegoAnimPresenter();
|
LegoAnimPresenter();
|
||||||
virtual ~LegoAnimPresenter() override;
|
~LegoAnimPresenter() override;
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10068530
|
// FUNCTION: LEGO1 0x10068530
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f071c
|
// STRING: LEGO1 0x100f071c
|
||||||
return "LegoAnimPresenter";
|
return "LegoAnimPresenter";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10068540
|
// FUNCTION: LEGO1 0x10068540
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoAnimPresenter::ClassName()) || MxVideoPresenter::IsA(p_name);
|
return !strcmp(p_name, LegoAnimPresenter::ClassName()) || MxVideoPresenter::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ReadyTickle() override; // vtable+0x18
|
void ReadyTickle() override; // vtable+0x18
|
||||||
virtual void StartingTickle() override; // vtable+0x1c
|
void StartingTickle() override; // vtable+0x1c
|
||||||
virtual void StreamingTickle() override; // vtable+0x20
|
void StreamingTickle() override; // vtable+0x20
|
||||||
virtual void DoneTickle() override; // vtable+0x2c
|
void DoneTickle() override; // vtable+0x2c
|
||||||
virtual void ParseExtra() override; // vtable+0x30
|
void ParseExtra() override; // vtable+0x30
|
||||||
virtual MxResult AddToManager() override; // vtable+0x34
|
MxResult AddToManager() override; // vtable+0x34
|
||||||
virtual void Destroy() override; // vtable+0x38
|
void Destroy() override; // vtable+0x38
|
||||||
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
||||||
virtual void EndAction() override; // vtable+0x40
|
void EndAction() override; // vtable+0x40
|
||||||
virtual void PutFrame() override; // vtable+0x6c
|
void PutFrame() override; // vtable+0x6c
|
||||||
virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88
|
virtual MxResult VTable0x88(MxStreamChunk* p_chunk); // vtable+0x88
|
||||||
|
|
||||||
// 6 more virtual functions here
|
inline LegoAnim* GetAnimation() { return m_anim; }
|
||||||
|
|
||||||
private:
|
const char* GetActionObjectName();
|
||||||
|
|
||||||
|
protected:
|
||||||
void Init();
|
void Init();
|
||||||
void Destroy(MxBool p_fromDestructor);
|
void Destroy(MxBool p_fromDestructor);
|
||||||
|
|
||||||
LegoAnimClass* m_unk0x64; // 0x64
|
LegoAnim* m_anim; // 0x64
|
||||||
undefined4 m_unk0x68; // 0x68
|
undefined4 m_unk0x68; // 0x68
|
||||||
undefined4 m_unk0x6c; // 0x6c
|
undefined4 m_unk0x6c; // 0x6c
|
||||||
undefined4 m_unk0x70; // 0x70
|
undefined4 m_unk0x70; // 0x70
|
||||||
@ -73,41 +75,4 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
|||||||
// SYNTHETIC: LEGO1 0x10068650
|
// SYNTHETIC: LEGO1 0x10068650
|
||||||
// LegoAnimPresenter::`scalar deleting destructor'
|
// 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 {
|
|
||||||
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
|
|
||||||
|
|
||||||
MxLong m_unk0x8; // 0x08
|
|
||||||
undefined4 m_unk0xc; // 0x0c
|
|
||||||
undefined4 m_unk0x10; // 0x10
|
|
||||||
undefined4 m_unk0x14; // 0x14
|
|
||||||
};
|
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100a0ba0
|
|
||||||
// LegoAnimClass::`scalar deleting destructor'
|
|
||||||
|
|
||||||
#endif // LEGOANIMPRESENTER_H
|
#endif // LEGOANIMPRESENTER_H
|
||||||
|
|||||||
@ -7,8 +7,8 @@
|
|||||||
// SIZE 0x30
|
// SIZE 0x30
|
||||||
class LegoBackgroundColor : public MxVariable {
|
class LegoBackgroundColor : public MxVariable {
|
||||||
public:
|
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;
|
void SetValue(const char* p_colorString) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
float m_h;
|
float m_h;
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
#ifndef LEGOBUILDINGMANAGER_H
|
#ifndef LEGOBUILDINGMANAGER_H
|
||||||
#define LEGOBUILDINGMANAGER_H
|
#define LEGOBUILDINGMANAGER_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "mxcore.h"
|
#include "mxcore.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d6f50
|
// VTABLE: LEGO1 0x100d6f50
|
||||||
@ -8,26 +9,33 @@
|
|||||||
class LegoBuildingManager : public MxCore {
|
class LegoBuildingManager : public MxCore {
|
||||||
public:
|
public:
|
||||||
LegoBuildingManager();
|
LegoBuildingManager();
|
||||||
virtual ~LegoBuildingManager() override;
|
~LegoBuildingManager() override;
|
||||||
|
|
||||||
virtual MxResult Tickle() override; // vtable+0x08
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1002f930
|
// FUNCTION: LEGO1 0x1002f930
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f37d0
|
// STRING: LEGO1 0x100f37d0
|
||||||
return "LegoBuildingManager";
|
return "LegoBuildingManager";
|
||||||
}
|
}
|
||||||
|
|
||||||
__declspec(dllexport) static void configureLegoBuildingManager(MxS32);
|
static void configureLegoBuildingManager(MxS32);
|
||||||
|
static void SetCustomizeAnimFile(const char* p_value);
|
||||||
|
|
||||||
void FUN_1002fa00();
|
void FUN_1002fa00();
|
||||||
|
void FUN_1002fb30();
|
||||||
|
void FUN_10030590();
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1002f940
|
// SYNTHETIC: LEGO1 0x1002f940
|
||||||
// LegoBuildingManager::`scalar deleting destructor'
|
// LegoBuildingManager::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
static char* g_customizeAnimFile;
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
|
undefined m_unk0x08[0x28]; // 0x08
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGOBUILDINGMANAGER_H
|
#endif // LEGOBUILDINGMANAGER_H
|
||||||
|
|||||||
@ -1,33 +1,63 @@
|
|||||||
#ifndef LEGOCACHESOUND_H
|
#ifndef LEGOCACHESOUND_H
|
||||||
#define LEGOCACHESOUND_H
|
#define LEGOCACHESOUND_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
|
#include "legounknown100d5778.h"
|
||||||
#include "mxcore.h"
|
#include "mxcore.h"
|
||||||
|
#include "mxstring.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d4718
|
// VTABLE: LEGO1 0x100d4718
|
||||||
// SIZE 0x88
|
// SIZE 0x88
|
||||||
class LegoCacheSound : public MxCore {
|
class LegoCacheSound : public MxCore {
|
||||||
public:
|
public:
|
||||||
LegoCacheSound();
|
LegoCacheSound();
|
||||||
virtual ~LegoCacheSound() override; // vtable+0x0
|
~LegoCacheSound() override; // vtable+0x00
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10006580
|
// FUNCTION: LEGO1 0x10006580
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f01c4
|
// STRING: LEGO1 0x100f01c4
|
||||||
return "LegoCacheSound";
|
return "LegoCacheSound";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10006590
|
// FUNCTION: LEGO1 0x10006590
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoCacheSound::ClassName()) || MxCore::IsA(p_name);
|
return !strcmp(p_name, LegoCacheSound::ClassName()) || MxCore::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual MxResult FUN_10006710(); // vtable+0x14
|
||||||
|
virtual void Destroy(); // vtable+0x18
|
||||||
|
virtual void FUN_10006cd0(undefined4, undefined4); // vtable+0x1c
|
||||||
|
|
||||||
|
inline const MxString& GetString0x48() const { return m_string0x48; }
|
||||||
|
inline const undefined GetUnk0x58() const { return m_unk0x58; }
|
||||||
|
|
||||||
|
LegoCacheSound* FUN_10006960();
|
||||||
|
MxResult FUN_10006a30(char* p_str, MxBool);
|
||||||
|
void FUN_10006b80();
|
||||||
|
void FUN_10006be0();
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10006610
|
// SYNTHETIC: LEGO1 0x10006610
|
||||||
// LegoCacheSound::`scalar deleting destructor'
|
// LegoCacheSound::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
|
LPDIRECTSOUNDBUFFER m_dsBuffer; // 0x08
|
||||||
|
undefined m_unk0xc[4]; // 0x0c
|
||||||
|
LegoUnknown100d5778 m_unk0x10; // 0x10
|
||||||
|
undefined* m_unk0x40; // 0x40
|
||||||
|
undefined4 m_unk0x44; // 0x44
|
||||||
|
MxString m_string0x48; // 0x48
|
||||||
|
undefined m_unk0x58; // 0x58
|
||||||
|
PCMWAVEFORMAT m_unk0x59; // 0x59
|
||||||
|
MxBool m_isLooping; // 0x69
|
||||||
|
MxBool m_unk0x6a; // 0x6a
|
||||||
|
undefined4 m_unk0x6c; // 0x6c
|
||||||
|
undefined m_unk0x70; // 0x70
|
||||||
|
MxString m_string0x74; // 0x74
|
||||||
|
undefined m_unk0x84; // 0x84
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGOCACHESOUND_H
|
#endif // LEGOCACHESOUND_H
|
||||||
|
|||||||
104
LEGO1/lego/legoomni/include/legocachesoundlist.h
Normal file
104
LEGO1/lego/legoomni/include/legocachesoundlist.h
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#ifndef LEGOCACHESOUNDLIST_H
|
||||||
|
#define LEGOCACHESOUNDLIST_H
|
||||||
|
|
||||||
|
#include "mxlist.h"
|
||||||
|
#include "mxtypes.h"
|
||||||
|
|
||||||
|
class LegoCacheSound;
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d63b0
|
||||||
|
// class MxCollection<LegoCacheSound *>
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d63c8
|
||||||
|
// class MxList<LegoCacheSound *>
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d63e0
|
||||||
|
// class MxPtrList<LegoCacheSound>
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d63f8
|
||||||
|
// SIZE 0x18
|
||||||
|
class LegoCacheSoundList : public MxPtrList<LegoCacheSound> {
|
||||||
|
public:
|
||||||
|
LegoCacheSoundList(MxBool p_ownership = FALSE) : MxPtrList<LegoCacheSound>(p_ownership) {}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1001e650
|
||||||
|
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
|
||||||
@ -12,19 +12,19 @@
|
|||||||
class LegoCameraController : public LegoPointOfViewController {
|
class LegoCameraController : public LegoPointOfViewController {
|
||||||
public:
|
public:
|
||||||
LegoCameraController();
|
LegoCameraController();
|
||||||
virtual ~LegoCameraController() override; // vtable+0x0
|
~LegoCameraController() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+04
|
MxLong Notify(MxParam& p_param) override; // vtable+04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10011ec0
|
// FUNCTION: LEGO1 0x10011ec0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0850
|
// STRING: LEGO1 0x100f0850
|
||||||
return "LegoCameraController";
|
return "LegoCameraController";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10011ed0
|
// FUNCTION: LEGO1 0x10011ed0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name);
|
return !strcmp(p_name, ClassName()) || MxCore::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,29 +8,29 @@
|
|||||||
class LegoCarBuild : public LegoWorld {
|
class LegoCarBuild : public LegoWorld {
|
||||||
public:
|
public:
|
||||||
LegoCarBuild();
|
LegoCarBuild();
|
||||||
virtual ~LegoCarBuild() override;
|
~LegoCarBuild() override;
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
virtual MxResult Tickle() override; // vtable+0x8
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10022940
|
// FUNCTION: LEGO1 0x10022940
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0504
|
// STRING: LEGO1 0x100f0504
|
||||||
return "LegoCarBuild";
|
return "LegoCarBuild";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10022950
|
// FUNCTION: LEGO1 0x10022950
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name);
|
return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
virtual void VTable0x50() override; // vtable+0x50
|
void ReadyWorld() override; // vtable+0x50
|
||||||
virtual MxBool VTable0x5c() override; // vtable+0x5c
|
MxBool VTable0x5c() override; // vtable+0x5c
|
||||||
virtual MxBool VTable0x64() override; // vtable+0x64
|
MxBool VTable0x64() override; // vtable+0x64
|
||||||
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
|
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10022a60
|
// SYNTHETIC: LEGO1 0x10022a60
|
||||||
// LegoCarBuild::`scalar deleting destructor'
|
// LegoCarBuild::`scalar deleting destructor'
|
||||||
|
|||||||
@ -8,26 +8,26 @@
|
|||||||
class LegoCarBuildAnimPresenter : public LegoAnimPresenter {
|
class LegoCarBuildAnimPresenter : public LegoAnimPresenter {
|
||||||
public:
|
public:
|
||||||
LegoCarBuildAnimPresenter();
|
LegoCarBuildAnimPresenter();
|
||||||
virtual ~LegoCarBuildAnimPresenter() override; // vtable+0x0
|
~LegoCarBuildAnimPresenter() override; // vtable+0x00
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10078510
|
// FUNCTION: LEGO1 0x10078510
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f05ec
|
// STRING: LEGO1 0x100f05ec
|
||||||
return "LegoCarBuildAnimPresenter";
|
return "LegoCarBuildAnimPresenter";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10078520
|
// FUNCTION: LEGO1 0x10078520
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(p_name);
|
return !strcmp(p_name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ReadyTickle() override; // vtable+0x18
|
void ReadyTickle() override; // vtable+0x18
|
||||||
virtual void StreamingTickle() override; // vtable+0x20
|
void StreamingTickle() override; // vtable+0x20
|
||||||
virtual void RepeatingTickle() override; // vtable+0x24
|
void RepeatingTickle() override; // vtable+0x24
|
||||||
virtual void EndAction() override; // vtable+0x40
|
void EndAction() override; // vtable+0x40
|
||||||
virtual void PutFrame() override; // vtable+0x6c
|
void PutFrame() override; // vtable+0x6c
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10078660
|
// SYNTHETIC: LEGO1 0x10078660
|
||||||
// LegoCarBuildAnimPresenter::`scalar deleting destructor'
|
// LegoCarBuildAnimPresenter::`scalar deleting destructor'
|
||||||
|
|||||||
@ -7,25 +7,25 @@
|
|||||||
class LegoCarRaceActor : public LegoRaceActor {
|
class LegoCarRaceActor : public LegoRaceActor {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x10081650
|
// FUNCTION: LEGO1 0x10081650
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0568
|
// STRING: LEGO1 0x100f0568
|
||||||
return "LegoCarRaceActor";
|
return "LegoCarRaceActor";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10081670
|
// FUNCTION: LEGO1 0x10081670
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
|
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void VTable0x68() override; // vtable+0x68
|
void VTable0x68() override; // vtable+0x68
|
||||||
virtual void VTable0x6c() override; // vtable+0x6c
|
void VTable0x6c() override; // vtable+0x6c
|
||||||
virtual void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_float) override; // vtable+0x70
|
||||||
virtual MxS32 VTable0x90() override; // vtable+0x90
|
MxS32 VTable0x90() override; // vtable+0x90
|
||||||
virtual MxS32 VTable0x94() override; // vtable+0x94
|
MxS32 VTable0x94() override; // vtable+0x94
|
||||||
virtual void VTable0x98() override; // vtable+0x98
|
void VTable0x98() override; // vtable+0x98
|
||||||
virtual void VTable0x9c() override; // vtable+0x9c
|
void VTable0x9c() override; // vtable+0x9c
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10081610
|
// SYNTHETIC: LEGO1 0x10081610
|
||||||
// LegoCarRaceActor::`scalar deleting destructor'
|
// LegoCarRaceActor::`scalar deleting destructor'
|
||||||
|
|||||||
@ -1,26 +1,60 @@
|
|||||||
#ifndef LEGOCONTROLMANAGER_H
|
#ifndef LEGOCONTROLMANAGER_H
|
||||||
#define LEGOCONTROLMANAGER_H
|
#define LEGOCONTROLMANAGER_H
|
||||||
|
|
||||||
|
#include "legoeventnotificationparam.h"
|
||||||
|
#include "legoinputmanager.h"
|
||||||
#include "mxcore.h"
|
#include "mxcore.h"
|
||||||
#include "mxpresenterlist.h"
|
#include "mxpresenterlist.h"
|
||||||
|
|
||||||
|
class MxControlPresenter;
|
||||||
|
|
||||||
|
// VTABLE: LEGO1 0x100d6a98
|
||||||
|
// SIZE 0x2c
|
||||||
|
class LegoControlManagerEvent : public LegoEventNotificationParam {
|
||||||
|
public:
|
||||||
|
inline LegoControlManagerEvent() : LegoEventNotificationParam()
|
||||||
|
{
|
||||||
|
m_clickedObjectId = -1;
|
||||||
|
m_clickedAtom = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline MxS32 GetClickedObjectId() const { return m_clickedObjectId; }
|
||||||
|
inline const char* GetClickedAtom() const { return m_clickedAtom; }
|
||||||
|
inline MxS16 GetUnknown0x28() const { return m_unk0x28; }
|
||||||
|
|
||||||
|
inline void SetClickedObjectId(MxS32 p_clickedObjectId) { m_clickedObjectId = p_clickedObjectId; }
|
||||||
|
inline void SetClickedAtom(const char* p_clickedAtom) { m_clickedAtom = p_clickedAtom; }
|
||||||
|
inline void SetUnknown0x28(MxS16 p_unk0x28) { m_unk0x28 = p_unk0x28; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
MxS32 m_clickedObjectId; // 0x20
|
||||||
|
const char* m_clickedAtom; // 0x24
|
||||||
|
MxS16 m_unk0x28; // 0x28
|
||||||
|
};
|
||||||
|
|
||||||
|
// SYNTHETIC: LEGO1 0x10028bf0
|
||||||
|
// LegoControlManagerEvent::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// SYNTHETIC: LEGO1 0x10028c60
|
||||||
|
// LegoControlManagerEvent::~LegoControlManagerEvent
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d6a80
|
// VTABLE: LEGO1 0x100d6a80
|
||||||
class LegoControlManager : public MxCore {
|
class LegoControlManager : public MxCore {
|
||||||
public:
|
public:
|
||||||
LegoControlManager();
|
LegoControlManager();
|
||||||
virtual ~LegoControlManager() override; // vtable+0x0
|
~LegoControlManager() override; // vtable+0x00
|
||||||
|
|
||||||
virtual MxResult Tickle() override; // vtable+0x8
|
MxResult Tickle() override; // vtable+0x08
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10028cb0
|
// FUNCTION: LEGO1 0x10028cb0
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f31b8
|
// STRING: LEGO1 0x100f31b8
|
||||||
return "LegoControlManager";
|
return "LegoControlManager";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10028cc0
|
// FUNCTION: LEGO1 0x10028cc0
|
||||||
inline virtual MxBool IsA(const char* p_name) const override // vtable+0x10
|
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(p_name, LegoControlManager::ClassName()) || MxCore::IsA(p_name);
|
return !strcmp(p_name, LegoControlManager::ClassName()) || MxCore::IsA(p_name);
|
||||||
}
|
}
|
||||||
@ -28,10 +62,27 @@ class LegoControlManager : public MxCore {
|
|||||||
void FUN_10028df0(MxPresenterList* p_presenterList);
|
void FUN_10028df0(MxPresenterList* p_presenterList);
|
||||||
void Register(MxCore* p_listener);
|
void Register(MxCore* p_listener);
|
||||||
void Unregister(MxCore* p_listener);
|
void Unregister(MxCore* p_listener);
|
||||||
|
MxBool FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter);
|
||||||
void FUN_100293c0(undefined4, const char*, undefined2);
|
void FUN_100293c0(undefined4, const char*, undefined2);
|
||||||
|
MxControlPresenter* FUN_100294e0(MxS32 p_x, MxS32 p_y);
|
||||||
|
MxBool FUN_10029630();
|
||||||
|
MxBool FUN_10029750();
|
||||||
|
void FUN_100292e0();
|
||||||
|
|
||||||
|
inline undefined4 GetUnknown0x0c() { return m_unk0x0c; }
|
||||||
|
inline undefined GetUnknown0x10() { return m_unk0x10; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10028d40
|
// SYNTHETIC: LEGO1 0x10028d40
|
||||||
// LegoControlManager::`scalar deleting destructor'
|
// LegoControlManager::`scalar deleting destructor'
|
||||||
|
|
||||||
|
private:
|
||||||
|
undefined4 m_unk0x08; // 0x08
|
||||||
|
undefined4 m_unk0x0c; // 0x0c
|
||||||
|
MxBool m_unk0x10; // 0x10
|
||||||
|
MxPresenter* m_unk0x14; // 0x14
|
||||||
|
LegoControlManagerEvent m_event; // 0x18
|
||||||
|
MxPresenterList* m_presenterList; // 0x44
|
||||||
|
LegoNotifyList m_notifyList; // 0x48
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGOCONTROLMANAGER_H
|
#endif // LEGOCONTROLMANAGER_H
|
||||||
|
|||||||
@ -9,27 +9,23 @@
|
|||||||
#include "roi/legoroi.h"
|
#include "roi/legoroi.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d4858
|
// VTABLE: LEGO1 0x100d4858
|
||||||
// SIZE 0x68 (probably)
|
// SIZE 0x68
|
||||||
class LegoEntity : public MxEntity {
|
class LegoEntity : public MxEntity {
|
||||||
public:
|
public:
|
||||||
enum {
|
enum {
|
||||||
c_bit1 = 0x01
|
c_bit1 = 0x01,
|
||||||
|
c_bit2 = 0x02
|
||||||
};
|
};
|
||||||
|
|
||||||
// Inlined at 0x100853f7
|
|
||||||
inline LegoEntity() { Init(); }
|
inline LegoEntity() { Init(); }
|
||||||
|
|
||||||
#ifdef ISLE_APP
|
|
||||||
__declspec(dllexport) virtual ~LegoEntity() override;
|
|
||||||
#else
|
|
||||||
// FUNCTION: LEGO1 0x1000c290
|
// FUNCTION: LEGO1 0x1000c290
|
||||||
__declspec(dllexport) virtual ~LegoEntity() override { Destroy(TRUE); }
|
~LegoEntity() override { Destroy(TRUE); }
|
||||||
#endif
|
|
||||||
|
|
||||||
virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1000c2f0
|
// FUNCTION: LEGO1 0x1000c2f0
|
||||||
inline const char* ClassName() const override // vtable+0xc
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0064
|
// STRING: LEGO1 0x100f0064
|
||||||
return "LegoEntity";
|
return "LegoEntity";
|
||||||
@ -41,27 +37,32 @@ class LegoEntity : public MxEntity {
|
|||||||
return !strcmp(p_name, LegoEntity::ClassName()) || MxEntity::IsA(p_name);
|
return !strcmp(p_name, LegoEntity::ClassName()) || MxEntity::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual MxResult Create(MxDSAction& p_dsAction); // vtable+0x18
|
virtual MxResult Create(MxDSAction& p_dsAction); // vtable+0x18
|
||||||
virtual void Destroy(MxBool p_fromDestructor); // vtable+0x1c
|
virtual void Destroy(MxBool p_fromDestructor); // vtable+0x1c
|
||||||
virtual void ParseAction(char*); // vtable+0x20
|
virtual void ParseAction(char*); // vtable+0x20
|
||||||
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2); // vtable+0x24
|
virtual void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2); // vtable+0x24
|
||||||
virtual void SetWorldTransform(const Vector3& p_loc, const Vector3& p_dir,
|
virtual void SetWorldTransform(const Vector3& p_loc, const Vector3& p_dir, const Vector3& p_up); // vtable+0x28
|
||||||
const Vector3& p_up); // vtable+0x28
|
virtual void ResetWorldTransform(MxBool p_inVehicle); // vtable+0x2c
|
||||||
virtual void ResetWorldTransform(MxBool p_inVehicle); // vtable+0x2c
|
|
||||||
// FUNCTION: LEGO1 0x10001090
|
// FUNCTION: LEGO1 0x10001090
|
||||||
virtual void SetWorldSpeed(MxFloat p_worldSpeed) { m_worldSpeed = p_worldSpeed; } // vtable+0x30
|
virtual void SetWorldSpeed(MxFloat p_worldSpeed) { m_worldSpeed = p_worldSpeed; } // vtable+0x30
|
||||||
virtual void VTable0x34(); // vtable+0x34
|
|
||||||
virtual void VTable0x38(); // vtable+0x38
|
virtual void VTable0x34(); // vtable+0x34
|
||||||
virtual void VTable0x3c(); // vtable+0x3c
|
virtual void VTable0x38(); // vtable+0x38
|
||||||
virtual void VTable0x40(); // vtable+0x40
|
virtual void VTable0x3c(); // vtable+0x3c
|
||||||
virtual void VTable0x44(); // vtable+0x44
|
virtual void VTable0x40(); // vtable+0x40
|
||||||
virtual void VTable0x48(); // vtable+0x48
|
virtual void VTable0x44(); // vtable+0x44
|
||||||
virtual void VTable0x4c(); // vtable+0x4c
|
virtual void VTable0x48(); // vtable+0x48
|
||||||
|
virtual void VTable0x4c(); // vtable+0x4c
|
||||||
|
|
||||||
void FUN_10010c30();
|
void FUN_10010c30();
|
||||||
|
void FUN_100114e0(MxU8 p_unk0x59);
|
||||||
void SetLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up, MxBool);
|
void SetLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up, MxBool);
|
||||||
|
|
||||||
inline LegoROI* GetROI() { return m_roi; }
|
inline LegoROI* GetROI() { return m_roi; }
|
||||||
|
inline MxU8 GetFlags() { return m_flags; }
|
||||||
|
|
||||||
|
inline void SetFlags(MxU8 p_flags) { m_flags = p_flags; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void Init();
|
void Init();
|
||||||
|
|||||||
@ -22,10 +22,10 @@ class LegoEntityList : public MxPtrList<LegoEntity> {
|
|||||||
LegoEntityList(MxBool p_ownership = FALSE) : MxPtrList<LegoEntity>(p_ownership) {}
|
LegoEntityList(MxBool p_ownership = FALSE) : MxPtrList<LegoEntity>(p_ownership) {}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001e2d0
|
// FUNCTION: LEGO1 0x1001e2d0
|
||||||
virtual MxS8 Compare(LegoEntity* p_a, LegoEntity* p_b) override
|
MxS8 Compare(LegoEntity* p_a, LegoEntity* p_b) override
|
||||||
{
|
{
|
||||||
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
|
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
|
||||||
}; // vtable+0x14
|
} // vtable+0x14
|
||||||
};
|
};
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d64e8
|
// VTABLE: LEGO1 0x100d64e8
|
||||||
@ -74,7 +74,7 @@ class LegoEntityListCursor : public MxPtrListCursor<LegoEntity> {
|
|||||||
// SYNTHETIC: LEGO1 0x1001f110
|
// SYNTHETIC: LEGO1 0x1001f110
|
||||||
// LegoEntityListCursor::`scalar deleting destructor'
|
// LegoEntityListCursor::`scalar deleting destructor'
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001f180
|
// TEMPLATE: LEGO1 0x1001f180
|
||||||
// MxPtrListCursor<LegoEntity>::~MxPtrListCursor<LegoEntity>
|
// MxPtrListCursor<LegoEntity>::~MxPtrListCursor<LegoEntity>
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1001f1d0
|
// SYNTHETIC: LEGO1 0x1001f1d0
|
||||||
@ -83,10 +83,19 @@ class LegoEntityListCursor : public MxPtrListCursor<LegoEntity> {
|
|||||||
// SYNTHETIC: LEGO1 0x1001f240
|
// SYNTHETIC: LEGO1 0x1001f240
|
||||||
// MxPtrListCursor<LegoEntity>::`scalar deleting destructor'
|
// MxPtrListCursor<LegoEntity>::`scalar deleting destructor'
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001f2b0
|
// TEMPLATE: LEGO1 0x1001f2b0
|
||||||
// MxListCursor<LegoEntity *>::~MxListCursor<LegoEntity *>
|
// MxListCursor<LegoEntity *>::~MxListCursor<LegoEntity *>
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001edc6
|
// FUNCTION: LEGO1 0x1001f300
|
||||||
// LegoEntityListCursor::~LegoEntityListCursor
|
// LegoEntityListCursor::~LegoEntityListCursor
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x100207d0
|
||||||
|
// MxListCursor<LegoEntity *>::MxListCursor<LegoEntity *>
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x10022430
|
||||||
|
// MxList<LegoEntity *>::InsertEntry
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x10022630
|
||||||
|
// MxList<LegoEntity *>::DeleteEntry
|
||||||
|
|
||||||
#endif // LEGOENTITYLIST_H
|
#endif // LEGOENTITYLIST_H
|
||||||
|
|||||||
@ -10,10 +10,10 @@ class LegoEntity;
|
|||||||
class LegoEntityPresenter : public MxCompositePresenter {
|
class LegoEntityPresenter : public MxCompositePresenter {
|
||||||
public:
|
public:
|
||||||
LegoEntityPresenter();
|
LegoEntityPresenter();
|
||||||
virtual ~LegoEntityPresenter() override; // vtable+0x0
|
~LegoEntityPresenter() override; // vtable+0x00
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100534b0
|
// FUNCTION: LEGO1 0x100534b0
|
||||||
inline const char* ClassName() const override // vtable+0xc
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f06b8
|
// STRING: LEGO1 0x100f06b8
|
||||||
return "LegoEntityPresenter";
|
return "LegoEntityPresenter";
|
||||||
@ -25,16 +25,18 @@ class LegoEntityPresenter : public MxCompositePresenter {
|
|||||||
return !strcmp(p_name, LegoEntityPresenter::ClassName()) || MxCompositePresenter::IsA(p_name);
|
return !strcmp(p_name, LegoEntityPresenter::ClassName()) || MxCompositePresenter::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ReadyTickle() override; // vtable+0x18
|
void ReadyTickle() override; // vtable+0x18
|
||||||
virtual void RepeatingTickle() override; // vtable+0x24
|
void RepeatingTickle() override; // vtable+0x24
|
||||||
virtual void ParseExtra() override; // vtable+0x30
|
void ParseExtra() override; // vtable+0x30
|
||||||
virtual void Destroy() override; // vtable+0x38
|
void Destroy() override; // vtable+0x38
|
||||||
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
||||||
virtual void Init(); // vtable+0x68
|
virtual void Init(); // vtable+0x68
|
||||||
virtual undefined4 SetEntity(LegoEntity* p_entity); // vtable+0x6c
|
virtual undefined4 SetEntity(LegoEntity* p_entity); // vtable+0x6c
|
||||||
|
|
||||||
void SetEntityLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up);
|
void SetEntityLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up);
|
||||||
|
|
||||||
|
inline LegoEntity* GetEntity() { return m_entity; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100535a0
|
// SYNTHETIC: LEGO1 0x100535a0
|
||||||
// LegoEntityPresenter::`scalar deleting destructor'
|
// LegoEntityPresenter::`scalar deleting destructor'
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "mxnotificationparam.h"
|
#include "mxnotificationparam.h"
|
||||||
#include "mxtypes.h"
|
#include "mxtypes.h"
|
||||||
|
#include "roi/legoroi.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
@ -10,7 +11,14 @@
|
|||||||
// SIZE 0x20
|
// SIZE 0x20
|
||||||
class LegoEventNotificationParam : public MxNotificationParam {
|
class LegoEventNotificationParam : public MxNotificationParam {
|
||||||
public:
|
public:
|
||||||
virtual MxNotificationParam* Clone() override; // vtable+0x4
|
// FUNCTION: LEGO1 0x10028690
|
||||||
|
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+0x04
|
||||||
|
|
||||||
inline LegoEventNotificationParam() : MxNotificationParam(c_notificationType0, NULL) {}
|
inline LegoEventNotificationParam() : MxNotificationParam(c_notificationType0, NULL) {}
|
||||||
inline LegoEventNotificationParam(
|
inline LegoEventNotificationParam(
|
||||||
@ -21,20 +29,27 @@ class LegoEventNotificationParam : public MxNotificationParam {
|
|||||||
MxS32 p_y,
|
MxS32 p_y,
|
||||||
MxU8 p_key
|
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 MxU8 GetKey() const { return m_key; }
|
||||||
inline MxS32 GetX() const { return m_x; }
|
inline MxS32 GetX() const { return m_x; }
|
||||||
inline MxS32 GetY() const { return m_y; }
|
inline MxS32 GetY() const { return m_y; }
|
||||||
|
|
||||||
|
inline void SetROI(LegoROI* p_roi) { m_roi = p_roi; }
|
||||||
|
inline void SetModifier(MxU8 p_modifier) { m_modifier = p_modifier; }
|
||||||
|
inline void SetKey(MxU8 p_key) { m_key = p_key; }
|
||||||
|
inline void SetX(MxS32 p_x) { m_x = p_x; }
|
||||||
|
inline void SetY(MxS32 p_y) { m_y = p_y; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
MxU8 m_modifier; // 0x0c
|
MxU8 m_modifier; // 0x0c
|
||||||
MxS32 m_x; // 0x10
|
MxS32 m_x; // 0x10
|
||||||
MxS32 m_y; // 0x14
|
MxS32 m_y; // 0x14
|
||||||
MxU8 m_key; // 0x18
|
MxU8 m_key; // 0x18
|
||||||
MxU32 m_unk0x1c; // 0x1c
|
LegoROI* m_roi; // 0x1c
|
||||||
};
|
};
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10028770
|
// SYNTHETIC: LEGO1 0x10028770
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
class LegoExtraActor : public LegoAnimActor {
|
class LegoExtraActor : public LegoAnimActor {
|
||||||
public:
|
public:
|
||||||
// FUNCTION: LEGO1 0x1002b7a0
|
// FUNCTION: LEGO1 0x1002b7a0
|
||||||
inline const char* ClassName() const override // vtable+0xc
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f3204
|
// STRING: LEGO1 0x100f3204
|
||||||
return "LegoExtraActor";
|
return "LegoExtraActor";
|
||||||
|
|||||||
@ -11,15 +11,15 @@ class LegoFlcTexturePresenter : public MxFlcPresenter {
|
|||||||
LegoFlcTexturePresenter();
|
LegoFlcTexturePresenter();
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1005def0
|
// FUNCTION: LEGO1 0x1005def0
|
||||||
inline const char* ClassName() const override // vtable+0xc
|
inline const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// STRING: LEGO1 0x100f0634
|
// STRING: LEGO1 0x100f0634
|
||||||
return "LegoFlcTexturePresenter";
|
return "LegoFlcTexturePresenter";
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void StartingTickle() override; // vtable+0x1c
|
void StartingTickle() override; // vtable+0x1c
|
||||||
virtual void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
|
void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
|
||||||
virtual void PutFrame() override; // vtable+0x6c
|
void PutFrame() override; // vtable+0x6c
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1005df00
|
// SYNTHETIC: LEGO1 0x1005df00
|
||||||
// LegoFlcTexturePresenter::`scalar deleting destructor'
|
// LegoFlcTexturePresenter::`scalar deleting destructor'
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
class LegoFullScreenMovie : public MxVariable {
|
class LegoFullScreenMovie : public MxVariable {
|
||||||
public:
|
public:
|
||||||
LegoFullScreenMovie(const char* p_key, const char* p_value);
|
LegoFullScreenMovie(const char* p_key, const char* p_value);
|
||||||
virtual void SetValue(const char* p_option) override;
|
void SetValue(const char* p_option) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGOFULLSCREENMOVIE_H
|
#endif // LEGOFULLSCREENMOVIE_H
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user