Implement/match LegoEntity::VTable0x3c (#680)

This commit is contained in:
Christian Semmler 2024-03-15 22:20:44 -04:00 committed by GitHub
parent bf6765b575
commit 70e8796af3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 43 additions and 2 deletions

View file

@ -5,6 +5,7 @@
#include "misc/legostorage.h" #include "misc/legostorage.h"
#include "mxcore.h" #include "mxcore.h"
class LegoEntity;
class LegoROI; class LegoROI;
// VTABLE: LEGO1 0x100d6f50 // VTABLE: LEGO1 0x100d6f50
@ -31,6 +32,7 @@ class LegoBuildingManager : public MxCore {
void FUN_1002fb30(); void FUN_1002fb30();
MxResult Save(LegoStorage* p_storage); MxResult Save(LegoStorage* p_storage);
MxResult Load(LegoStorage* p_storage); MxResult Load(LegoStorage* p_storage);
MxBool FUN_1002fdb0(LegoEntity* p_entity);
MxU32 FUN_1002ff40(LegoROI*, MxBool); MxU32 FUN_1002ff40(LegoROI*, MxBool);
void FUN_10030590(); void FUN_10030590();

View file

@ -66,6 +66,7 @@ class LegoCharacterManager {
void FUN_100832a0(); void FUN_100832a0();
void FUN_10083db0(LegoROI* p_roi); void FUN_10083db0(LegoROI* p_roi);
void FUN_10083f10(LegoROI* p_roi); void FUN_10083f10(LegoROI* p_roi);
MxBool FUN_10084ec0(LegoROI* p_roi);
MxU32 FUN_10085140(LegoROI*, MxBool); MxU32 FUN_10085140(LegoROI*, MxBool);
LegoROI* FUN_10085210(const LegoChar*, LegoChar*, undefined); LegoROI* FUN_10085210(const LegoChar*, LegoChar*, undefined);
LegoROI* FUN_10085a80(LegoChar* p_und1, LegoChar* p_und2, undefined p_und3); LegoROI* FUN_10085a80(LegoChar* p_und1, LegoChar* p_und2, undefined p_und3);

View file

@ -5,6 +5,7 @@
#include "misc/legostorage.h" #include "misc/legostorage.h"
#include "mxcore.h" #include "mxcore.h"
class LegoEntity;
class LegoROI; class LegoROI;
// VTABLE: LEGO1 0x100d6758 // VTABLE: LEGO1 0x100d6758
@ -28,6 +29,7 @@ class LegoPlantManager : public MxCore {
void FUN_100263a0(undefined4 p_und); void FUN_100263a0(undefined4 p_und);
void Save(LegoStorage* p_storage); void Save(LegoStorage* p_storage);
MxResult Load(LegoStorage* p_storage); MxResult Load(LegoStorage* p_storage);
MxBool FUN_100269e0(LegoEntity* p_entity);
MxU32 FUN_10026ba0(LegoROI*, MxBool); MxU32 FUN_10026ba0(LegoROI*, MxBool);
void FUN_10027120(); void FUN_10027120();

View file

@ -56,6 +56,13 @@ MxResult LegoBuildingManager::Load(LegoStorage* p_storage)
return SUCCESS; return SUCCESS;
} }
// STUB: LEGO1 0x1002fdb0
MxBool LegoBuildingManager::FUN_1002fdb0(LegoEntity* p_entity)
{
// TODO
return FALSE;
}
// STUB: LEGO1 0x1002ff40 // STUB: LEGO1 0x1002ff40
MxU32 LegoBuildingManager::FUN_1002ff40(LegoROI*, MxBool) MxU32 LegoBuildingManager::FUN_1002ff40(LegoROI*, MxBool)
{ {

View file

@ -123,6 +123,13 @@ MxBool LegoCharacterManager::FUN_10084c00(const LegoChar*)
return FALSE; return FALSE;
} }
// STUB: LEGO1 0x10084ec0
MxBool LegoCharacterManager::FUN_10084ec0(LegoROI* p_roi)
{
// TODO
return FALSE;
}
// STUB: LEGO1 0x10085140 // STUB: LEGO1 0x10085140
MxU32 LegoCharacterManager::FUN_10085140(LegoROI*, MxBool) MxU32 LegoCharacterManager::FUN_10085140(LegoROI*, MxBool)
{ {

View file

@ -1,5 +1,7 @@
#include "legoplantmanager.h" #include "legoplantmanager.h"
#include "legoentity.h"
DECOMP_SIZE_ASSERT(LegoPlantManager, 0x2c) DECOMP_SIZE_ASSERT(LegoPlantManager, 0x2c)
// GLOBAL: LEGO1 0x100f3188 // GLOBAL: LEGO1 0x100f3188
@ -47,6 +49,13 @@ MxResult LegoPlantManager::Load(LegoStorage* p_storage)
return SUCCESS; return SUCCESS;
} }
// STUB: LEGO1 0x100269e0
MxBool LegoPlantManager::FUN_100269e0(LegoEntity* p_entity)
{
// TODO
return FALSE;
}
// STUB: LEGO1 0x10026ba0 // STUB: LEGO1 0x10026ba0
MxU32 LegoPlantManager::FUN_10026ba0(LegoROI*, MxBool) MxU32 LegoPlantManager::FUN_10026ba0(LegoROI*, MxBool)
{ {

View file

@ -276,10 +276,23 @@ void LegoEntity::VTable0x38()
// TODO // TODO
} }
// STUB: LEGO1 0x10011300 // FUNCTION: LEGO1 0x10011300
void LegoEntity::VTable0x3c() void LegoEntity::VTable0x3c()
{ {
// TODO switch (m_unk0x59) {
case 0:
CharacterManager()->FUN_10084ec0(m_roi);
break;
case 2:
PlantManager()->FUN_100269e0(this);
break;
case 3:
BuildingManager()->FUN_1002fdb0(this);
break;
}
VTable0x34(FALSE);
VTable0x38();
} }
// STUB: LEGO1 0x10011360 // STUB: LEGO1 0x10011360