From a814132ab9ed84eb23c6b65e13eb29f015d43aa5 Mon Sep 17 00:00:00 2001 From: Joshua Peisach Date: Sat, 14 Oct 2023 09:25:53 -0400 Subject: [PATCH] MxMIDIPresenter functions (#204) * MxMIDIPresenter destructor, stub Destroy for now * MxMIDIPresenter::EndMIDIAction + update param name m_MIDIInitialized is definitely public, since it is accessed from the global MusicManager. * Add getter for MIDIInitialized, fix virtual function decl --------- Co-authored-by: Christian Semmler --- LEGO1/mxmidipresenter.cpp | 25 ++++++++++++++++++++++++- LEGO1/mxmidipresenter.h | 5 +++++ LEGO1/mxmusicmanager.h | 2 ++ 3 files changed, 31 insertions(+), 1 deletion(-) 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();