This commit is contained in:
jonschz 2024-09-13 21:28:06 +02:00
parent 32ad237d90
commit c1ed422577
2 changed files with 44 additions and 20 deletions

View File

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

View File

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