Isle & Radio constructors (#330)

This commit is contained in:
Misha 2023-12-14 18:24:21 -05:00 committed by GitHub
parent deaed23e41
commit 53caf30ab0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 75 additions and 4 deletions

View file

@ -1,7 +1,27 @@
#include "isle.h" #include "isle.h"
// STUB: LEGO1 0x10030820 #include "legoomni.h"
#include "mxnotificationmanager.h"
DECOMP_SIZE_ASSERT(Isle, 0x140);
// FUNCTION: LEGO1 0x10030820
Isle::Isle() Isle::Isle()
{ {
// TODO m_unk0xfc = 0;
m_unk0x100 = 0;
m_unk0x104 = 0;
m_unk0x108 = 0;
m_unk0x10c = 0;
m_unk0x110 = 0;
m_unk0x114 = 0;
m_unk0x118 = 0;
m_unk0x11c = 0;
m_unk0x120 = 0;
m_unk0x124 = 0;
m_unk0x128 = 0;
m_unk0xf8 = 0;
m_unk0x13c = 0;
NotificationManager()->Register(this);
} }

View file

@ -2,6 +2,7 @@
#define ISLE_H #define ISLE_H
#include "legoworld.h" #include "legoworld.h"
#include "radio.h"
// VTABLE: LEGO1 0x100d6fb8 // VTABLE: LEGO1 0x100d6fb8
// SIZE 0x140 // SIZE 0x140
@ -25,8 +26,21 @@ class Isle : public LegoWorld {
inline void SetUnknown13c(MxU32 p_unk0x13c) { m_unk0x13c = p_unk0x13c; } inline void SetUnknown13c(MxU32 p_unk0x13c) { m_unk0x13c = p_unk0x13c; }
protected: protected:
undefined m_unk0xf8[0x44]; // 0xf8 undefined4 m_unk0xf8; // 0xf8
MxU32 m_unk0x13c; // 0x13c undefined4 m_unk0xfc; // 0xfc
undefined4 m_unk0x100; // 0x100
undefined4 m_unk0x104; // 0x104
undefined4 m_unk0x108; // 0x108
undefined4 m_unk0x10c; // 0x10c
undefined4 m_unk0x110; // 0x110
undefined4 m_unk0x114; // 0x114
undefined4 m_unk0x118; // 0x118
undefined4 m_unk0x11c; // 0x11c
undefined4 m_unk0x120; // 0x120
undefined4 m_unk0x124; // 0x124
undefined4 m_unk0x128; // 0x128
Radio m_radio; // 0x12c
MxU32 m_unk0x13c; // 0x13c
}; };
#endif // ISLE_H #endif // ISLE_H

View file

@ -1,7 +1,36 @@
#include "radio.h" #include "radio.h"
#include "legocontrolmanager.h"
#include "legogamestate.h"
#include "legoomni.h"
#include "mxnotificationmanager.h"
DECOMP_SIZE_ASSERT(Radio, 0x10);
// FUNCTION: LEGO1 0x1002c850
Radio::Radio()
{
NotificationManager()->Register(this);
ControlManager()->Register(this);
m_unk0xc = TRUE;
CreateRadioState();
}
// STUB: LEGO1 0x1002c990 // STUB: LEGO1 0x1002c990
Radio::~Radio() Radio::~Radio()
{ {
// TODO // TODO
} }
// FUNCTION: LEGO1 0x1002cde0
void Radio::CreateRadioState()
{
LegoGameState* gameState = GameState();
RadioState* state = (RadioState*) gameState->GetState("RadioState");
if (state == NULL) {
state = (RadioState*) gameState->CreateState("RadioState");
}
m_state = state;
}

View file

@ -2,10 +2,12 @@
#define RADIO_H #define RADIO_H
#include "mxcore.h" #include "mxcore.h"
#include "radiostate.h"
// VTABLE: LEGO1 0x100d6d10 // VTABLE: LEGO1 0x100d6d10
class Radio : public MxCore { class Radio : public MxCore {
public: public:
Radio();
virtual ~Radio() override; virtual ~Radio() override;
// FUNCTION: LEGO1 0x1002c8e0 // FUNCTION: LEGO1 0x1002c8e0
@ -20,6 +22,12 @@ class Radio : public MxCore {
{ {
return !strcmp(p_name, Radio::ClassName()) || MxCore::IsA(p_name); return !strcmp(p_name, Radio::ClassName()) || MxCore::IsA(p_name);
} }
private:
RadioState* m_state; // 0x08
MxBool m_unk0xc; // 0x0c
void CreateRadioState();
}; };
#endif // RADIO_H #endif // RADIO_H