diff --git a/LEGO1/mxmidipresenter.cpp b/LEGO1/mxmidipresenter.cpp index 98868f8a..c0669220 100644 --- a/LEGO1/mxmidipresenter.cpp +++ b/LEGO1/mxmidipresenter.cpp @@ -1,16 +1,39 @@ #include "mxmidipresenter.h" #include "decomp.h" +#include "legoomni.h" +#include "mxmusicmanager.h" DECOMP_SIZE_ASSERT(MxMIDIPresenter, 0x58); // OFFSET: LEGO1 0x100c25e0 -MxMIDIPresenter::MxMIDIPresenter() { +MxMIDIPresenter::MxMIDIPresenter() +{ Init(); } +// OFFSET: LEGO1 0x100c27c0 +MxMIDIPresenter::~MxMIDIPresenter() +{ + Destroy(TRUE); +} + // OFFSET: LEGO1 0x100c2820 void MxMIDIPresenter::Init() { m_unk54 = 0; } + +// OFFSET: LEGO1 0x100c2830 STUB +void MxMIDIPresenter::Destroy(MxBool p_fromDestructor) +{ + // TODO +} + +// OFFSET: LEGO1 0x100c2940 +void MxMIDIPresenter::DoneTickle() +{ + if (!MusicManager()->GetMIDIInitialized()) { + this->EndAction(); + } +} \ No newline at end of file diff --git a/LEGO1/mxmidipresenter.h b/LEGO1/mxmidipresenter.h index 07fc55a2..9fa3e0a6 100644 --- a/LEGO1/mxmidipresenter.h +++ b/LEGO1/mxmidipresenter.h @@ -8,6 +8,7 @@ class MxMIDIPresenter : public MxMusicPresenter { public: MxMIDIPresenter(); + virtual ~MxMIDIPresenter() override; // OFFSET: LEGO1 0x100c2650 inline virtual const char *ClassName() const override // vtable+0xc @@ -22,8 +23,12 @@ public: return !strcmp(name, MxMIDIPresenter::ClassName()) || MxMusicPresenter::IsA(name); } + virtual void DoneTickle() override; // vtable+0x2c + private: void Init(); + void Destroy(MxBool); + undefined4 m_unk54; }; diff --git a/LEGO1/mxmusicmanager.h b/LEGO1/mxmusicmanager.h index d60d787e..b46c8878 100644 --- a/LEGO1/mxmusicmanager.h +++ b/LEGO1/mxmusicmanager.h @@ -16,6 +16,8 @@ public: virtual void SetVolume(MxS32 p_volume) override; // vtable+2c virtual MxResult StartMIDIThread(MxU32 p_frequencyMS, MxU8 p_noRegister); // vtable+30 + inline MxBool GetMIDIInitialized() { return m_MIDIInitialized; } + private: void Destroy(MxBool p_fromDestructor); void DeinitializeMIDI();