Implement/match Radio, RadioState (#509)

* WIP RadioState

* WIP

* WIP

* Implement/match Radio/RadioState

* Fix naming

* Use sizeof
This commit is contained in:
Christian Semmler
2024-01-30 13:57:20 -05:00
committed by GitHub
parent 743e042564
commit cdf76754f7
11 changed files with 279 additions and 44 deletions

View File

@@ -34,6 +34,7 @@ public:
// SYNTHETIC: LEGO1 0x1005d810
// JukeBox::`scalar deleting destructor'
enum JukeBoxScript {
e_mamaPapaBrickolini,
e_jailUnused,
@@ -65,29 +66,18 @@ public:
e_legoRadioReminder2,
e_legoRadioRacingAd,
e_legoRadioNews1,
e_legoRadioNews2,
e_legoRadioPizzaAd1,
e_legoRadioBricksterPSA,
e_legoRadioSports1,
e_legoRadioIntermission1,
e_legoRadioIntermission2,
e_legoRadioPizzaAd2,
e_legoRadioWeatherReport,
e_legoRadioSports2,
e_legoRadioPizzaAd3,
e_legoRadioIntermission3,
e_legoRadioSuperStoreAd,
e_legoRadioLuckyYou,

View File

@@ -43,6 +43,19 @@ public:
// SYNTHETIC: LEGO1 0x10006160
// LegoState::`scalar deleting destructor'
// SIZE 0x0c
struct StateStruct {
void* m_unk0x00; // 0x00
undefined2 m_unk0x04; // 0x04
undefined2 m_unk0x06; // 0x06
MxU16 m_unk0x08; // 0x08
StateStruct();
MxU32 FUN_10014d00();
MxBool FUN_10014de0(MxU32 p_objectId);
};
};
#endif // LEGOSTATE_H

View File

@@ -28,18 +28,8 @@ public:
// SYNTHETIC: LEGO1 0x100260a0
// LegoVehicleBuildState::`scalar deleting destructor'
public:
struct UnkStruct {
undefined4 m_unk0x00; // 0x00
undefined2 m_unk0x04; // 0x04
undefined2 m_unk0x06; // 0x06
undefined2 m_unk0x08; // 0x08
UnkStruct();
};
private:
UnkStruct m_unk0x08[4]; // 0x08
StateStruct m_unk0x08[4]; // 0x08
// This can be one of the following:
// * LegoRaceCarBuildState

View File

@@ -31,6 +31,8 @@ public:
return !strcmp(p_name, MxBackgroundAudioManager::ClassName()) || MxCore::IsA(p_name);
}
inline MxBool GetMusicEnabled() { return m_musicEnabled; }
void StartAction(MxParam& p_param);
void StopAction(MxParam& p_param);
MxResult PlayMusic(MxDSAction& p_action, undefined4 p_unk0x140, undefined4 p_unk0x13c);

View File

@@ -43,7 +43,6 @@ public:
private:
MxBool FUN_10044270(MxS32 p_x, MxS32 p_y, MxVideoPresenter* p_presenter);
void FUN_10044540(undefined2);
undefined2 m_unk0x4c; // 0x4c
MxS16 m_unk0x4e; // 0x4e

View File

@@ -1,10 +1,13 @@
#ifndef RADIO_H
#define RADIO_H
#include "legocontrolmanager.h"
#include "mxactionnotificationparam.h"
#include "mxcore.h"
#include "radiostate.h"
// VTABLE: LEGO1 0x100d6d10
// SIZE 0x10
class Radio : public MxCore {
public:
Radio();
@@ -31,10 +34,15 @@ public:
// Radio::`scalar deleting destructor'
private:
RadioState* m_state; // 0x08
MxBool m_unk0x0c; // 0x0c
RadioState* m_state; // 0x08
MxBool m_unk0x0c; // 0x0c
MxBool m_bgAudioPreviouslyEnabled; // 0x0d
void CreateRadioState();
void Play();
void Stop();
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleNotification17(LegoControlManagerEvent& p_param);
};
#endif // RADIO_H

View File

@@ -2,6 +2,7 @@
#define RADIOSTATE_H
#include "legostate.h"
#include "mxdsaction.h"
// VTABLE: LEGO1 0x100d6d28
// SIZE 0x30
@@ -26,6 +27,18 @@ public:
// SYNTHETIC: LEGO1 0x1002d020
// RadioState::`scalar deleting destructor'
inline MxBool IsActive() { return m_active; }
inline void SetActive(MxBool p_active) { m_active = p_active; }
undefined4 FUN_1002d090();
MxBool FUN_1002d0c0(const MxAtomId& p_atom, MxU32 p_objectId);
private:
StateStruct m_unk0x08[3]; // 0x08
MxS16 m_unk0x2c; // 0x2c
MxBool m_active; // 0x2e
};
#endif // RADIOSTATE_H