From c1ed422577589e8758b02549f438420ed52e1345 Mon Sep 17 00:00:00 2001 From: jonschz Date: Fri, 13 Sep 2024 21:28:06 +0200 Subject: [PATCH] Clean up --- LEGO1/lego/legoomni/include/legocarbuild.h | 40 ++++++++++++++----- .../lego/legoomni/src/build/legocarbuild.cpp | 24 ++++++----- 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/LEGO1/lego/legoomni/include/legocarbuild.h b/LEGO1/lego/legoomni/include/legocarbuild.h index d005cf3c..0d696ce8 100644 --- a/LEGO1/lego/legoomni/include/legocarbuild.h +++ b/LEGO1/lego/legoomni/include/legocarbuild.h @@ -1,13 +1,16 @@ #ifndef LEGOCARBUILD_H #define LEGOCARBUILD_H +#include "legogamestate.h" #include "legostate.h" #include "legoworld.h" class LegoCarBuildAnimPresenter; +class LegoEventNotificationParam; class MxControlPresenter; class MxStillPresenter; class MxSoundPresenter; +class MxActionNotificationParam; // VTABLE: LEGO1 0x100d66e0 // SIZE 0x50 @@ -90,9 +93,9 @@ class LegoCarBuild : public LegoWorld { void Enable(MxBool p_enable) override; // vtable+0x68 virtual void VTable0x6c(); // vtable+0x6c virtual void VTable0x70(); // vtable+0x70 - virtual void VTable0x74(MxFloat p_param1[3], MxFloat p_param2[3]); // vtable+0x74 - virtual void VTable0x78(MxFloat p_param1[3], MxFloat p_param2[3]); // vtable+0x78 - virtual void VTable0x7c(MxFloat p_param1[3], MxFloat p_param2[3]); // vtable+0x7c + virtual void VTable0x74(MxFloat p_param1[2], MxFloat p_param2[3]); // vtable+0x74 + virtual void VTable0x78(MxFloat p_param1[2], MxFloat p_param2[3]); // vtable+0x78 + virtual void VTable0x7c(MxFloat p_param1[2], MxFloat p_param2[3]); // vtable+0x7c virtual void VTable0x80( MxFloat p_param1[2], MxFloat p_param2[2], @@ -102,13 +105,25 @@ class LegoCarBuild : public LegoWorld { void InitPresenters(); void FUN_10022f30(); + void FUN_10023130(MxLong p_x, MxLong p_y); + undefined4 FUN_10024250(LegoEventNotificationParam* p_param); + void FUN_100243a0(); + undefined4 FUN_10024480(MxActionNotificationParam* p_param); + undefined4 FUN_100244e0(MxLong p_x, MxLong p_y); + undefined4 FUN_100246e0(MxLong p_x, MxLong p_y); + MxS32 FUN_10024850(MxLong p_x, MxLong p_y); + undefined4 FUN_10024890(LegoEventNotificationParam* p_param); + void FUN_10024c20(LegoEventNotificationParam* p_param); void FUN_10024ef0(); void FUN_10024f50(); + void FUN_10024f70(MxBool p_enabled); void SetPresentersEnabled(MxBool p_enabled); void TogglePresentersEnabled(); + void FUN_100250e0(MxBool p_param); undefined4 FUN_10025720(undefined4 p_param1); MxS32 FUN_10025d70(); void FUN_10025db0(const char* p_param1, undefined4 p_param2); + void FUN_10025e40(); MxS32 FUN_10025ee0(undefined4 p_param1); // SYNTHETIC: LEGO1 0x10022a60 @@ -118,10 +133,10 @@ class LegoCarBuild : public LegoWorld { undefined4 m_unk0xf8; // 0xf8 MxS16 m_unk0xfc; // 0xfc undefined m_unk0xfe[2]; // 0xfe - undefined4 m_unk0x100; // 0x100 + MxS32 m_unk0x100; // 0x100 undefined4 m_unk0x104; // 0x104 - undefined m_unk0x108; // 0x108 - undefined m_unk0x109; // 0x109 + MxS8 m_unk0x108; // 0x108 + MxU8 m_unk0x109; // 0x109 MxU16 m_unk0x10a; // 0x10a DWORD m_unk0x10c; // 0x10c LegoROI* m_unk0x110; // 0x110 @@ -132,7 +147,11 @@ class LegoCarBuild : public LegoWorld { MxMatrix m_unk0x178; // 0x178 MxMatrix m_unk0x1c0; // 0x1c0 MxMatrix m_unk0x208; // 0x208 - undefined m_unk0x250[0x08]; // 0x250 + + // These are likely locations in pixel space + MxS32 m_unk0x250; // 0x250 + MxS32 m_unk0x254; // 0x254 + LegoCarBuildAnimPresenter* m_unk0x258; // 0x258 UnknownMx4DPointFloat m_unk0x25c; // 0x25c @@ -173,8 +192,11 @@ class LegoCarBuild : public LegoWorld { // variable name verified by BETA10 0x1006b219 LegoVehicleBuildState* m_buildState; // 0x32c - undefined4 m_unk0x330; // 0x330 - undefined4 m_unk0x334; // 0x334 + undefined4 m_unk0x330; // 0x330 + + // variable name verified by BETA10 0x1006cba7 + LegoGameState::Area m_destLocation; // 0x334 + undefined4 m_unk0x338; // 0x338 MxControlPresenter* m_unk0x33c; // 0x33c undefined4 m_unk0x340; // 0x340 diff --git a/LEGO1/lego/legoomni/src/build/legocarbuild.cpp b/LEGO1/lego/legoomni/src/build/legocarbuild.cpp index 5241638d..41b7e00d 100644 --- a/LEGO1/lego/legoomni/src/build/legocarbuild.cpp +++ b/LEGO1/lego/legoomni/src/build/legocarbuild.cpp @@ -6,6 +6,7 @@ #include "legoinputmanager.h" #include "legoutils.h" #include "misc.h" +#include "mxactionnotificationparam.h" #include "mxbackgroundaudiomanager.h" #include "mxcontrolpresenter.h" #include "mxmisc.h" @@ -13,6 +14,7 @@ #include "mxsoundpresenter.h" #include "mxstillpresenter.h" #include "mxticklemanager.h" +#include "mxtransitionmanager.h" #include "scripts.h" DECOMP_SIZE_ASSERT(LegoCarBuild, 0x34c) @@ -64,7 +66,7 @@ LegoCarBuild::LegoCarBuild() m_unk0x109 = '\0'; m_unk0x108 = '\0'; m_unk0x338 = 0; - m_unk0x334 = 0; + m_destLocation = LegoGameState::e_undefined; m_unk0x344 = 0xffffffff; m_unk0x174 = '\0'; NotificationManager()->Register(this); @@ -78,7 +80,7 @@ MxBool LegoCarBuild::VTable0x5c() } // STUB: LEGO1 0x10022a80 -// FUNCTION: BETA10 0x1006aea3 +// STUB: BETA10 0x1006aea3 LegoCarBuild::~LegoCarBuild() { // TODO @@ -106,22 +108,22 @@ MxResult LegoCarBuild::Create(MxDSAction& p_dsAction) if (m_atomId == *g_copterScript) { buildStateClassName = "LegoCopterBuildState"; - GameState()->SetCurrentArea(LegoGameState::Area::e_copterbuild); + GameState()->SetCurrentArea(LegoGameState::e_copterbuild); m_unk0x330 = 1; } else if (m_atomId == *g_dunecarScript) { buildStateClassName = "LegoDuneCarBuildState"; - GameState()->SetCurrentArea(LegoGameState::Area::e_dunecarbuild); + GameState()->SetCurrentArea(LegoGameState::e_dunecarbuild); m_unk0x330 = 2; } else if (m_atomId == *g_jetskiScript) { buildStateClassName = "LegoJetskiBuildState"; - GameState()->SetCurrentArea(LegoGameState::Area::e_jetskibuild); + GameState()->SetCurrentArea(LegoGameState::e_jetskibuild); m_unk0x330 = 3; } else if (m_atomId == *g_racecarScript) { buildStateClassName = "LegoRaceCarBuildState"; - GameState()->SetCurrentArea(LegoGameState::Area::e_racecarbuild); + GameState()->SetCurrentArea(LegoGameState::e_racecarbuild); m_unk0x330 = 4; } @@ -136,7 +138,7 @@ MxResult LegoCarBuild::Create(MxDSAction& p_dsAction) m_buildState = buildState; m_unk0x174 = m_buildState->m_unk0x4d; - GameState()->StopArea(LegoGameState::Area::e_previousArea); + GameState()->StopArea(LegoGameState::e_previousArea); m_buildState->m_animationState = 1; m_unk0x100 = 0; @@ -249,7 +251,7 @@ void LegoCarBuild::VTable0x70() // FUNCTION: LEGO1 0x10023500 // FUNCTION: BETA10 0x1006bdf6 -void LegoCarBuild::VTable0x74(MxFloat p_param1[3], MxFloat p_param2[3]) +void LegoCarBuild::VTable0x74(MxFloat p_param1[2], MxFloat p_param2[3]) { MxFloat fVar1; MxFloat local20[3]; @@ -265,7 +267,7 @@ void LegoCarBuild::VTable0x74(MxFloat p_param1[3], MxFloat p_param2[3]) // FUNCTION: LEGO1 0x10023570 // FUNCTION: BETA10 0x1006be91 -void LegoCarBuild::VTable0x78(MxFloat p_param1[3], MxFloat p_param2[3]) +void LegoCarBuild::VTable0x78(MxFloat p_param1[2], MxFloat p_param2[3]) { MxFloat fVar1; MxFloat local18[3]; @@ -283,7 +285,7 @@ void LegoCarBuild::VTable0x78(MxFloat p_param1[3], MxFloat p_param2[3]) // FUNCTION: LEGO1 0x10023620 // FUNCTION: BETA10 0x1006bfb5 -void LegoCarBuild::VTable0x7c(MxFloat p_param1[3], MxFloat p_param2[3]) +void LegoCarBuild::VTable0x7c(MxFloat p_param1[2], MxFloat p_param2[3]) { MxFloat local18[3]; MxFloat localc[3]; @@ -570,7 +572,7 @@ MxBool LegoCarBuild::Escape() DeleteObjects(&m_atomId, 500, 999); m_buildState->m_animationState = 0; - m_unk0x334 = 2; + m_destLocation = LegoGameState::e_infomain; return TRUE; }