From 0428af89b7bf7e20f95d413c9bbe6d61534e69ae Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Wed, 17 Jan 2024 12:20:59 -0500 Subject: [PATCH] Finish Destroy --- .../legoomni/include/legohideanimpresenter.h | 2 ++ .../src/video/legohideanimpresenter.cpp | 21 +++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/LEGO1/lego/legoomni/include/legohideanimpresenter.h b/LEGO1/lego/legoomni/include/legohideanimpresenter.h index a8c60047..59449283 100644 --- a/LEGO1/lego/legoomni/include/legohideanimpresenter.h +++ b/LEGO1/lego/legoomni/include/legohideanimpresenter.h @@ -24,6 +24,8 @@ class LegoHideAnimPresenter : public LegoLoopingAnimPresenter { return !strcmp(p_name, ClassName()) || LegoAnimPresenter::IsA(p_name); } + virtual void Destroy() override; // vtable+0x38 + private: void Init(); void Destroy(MxBool p_fromDestructor); diff --git a/LEGO1/lego/legoomni/src/video/legohideanimpresenter.cpp b/LEGO1/lego/legoomni/src/video/legohideanimpresenter.cpp index 507ea9a0..00718629 100644 --- a/LEGO1/lego/legoomni/src/video/legohideanimpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legohideanimpresenter.cpp @@ -17,18 +17,27 @@ LegoHideAnimPresenter::~LegoHideAnimPresenter() // FUNCTION: LEGO1 0x1006da50 void LegoHideAnimPresenter::Init() { - this->m_unk0xc0 = NULL; + m_unk0xc0 = NULL; } -// STUB: LEGO1 0x1006da60 +// FUNCTION: LEGO1 0x1006da60 void LegoHideAnimPresenter::Destroy(MxBool p_fromDestructor) { m_criticalSection.Enter(); - if (!this->m_unk0xc0) - delete this->m_unk0xc0; + + if (m_unk0xc0) + delete m_unk0xc0; Init(); + m_criticalSection.Leave(); - // if (!p_fromDestructor) - // TODO: another function + // This appears to be a bug, since it results in an endless loop + if (!p_fromDestructor) + LegoHideAnimPresenter::Destroy(); +} + +// FUNCTION: LEGO1 0x1006dac0 +void LegoHideAnimPresenter::Destroy() +{ + Destroy(FALSE); }