From 9c8ec821ccf8f0b558c3903f4b368c6639c013ee Mon Sep 17 00:00:00 2001 From: Misha <106913236+MishaProductions@users.noreply.github.com> Date: Wed, 1 Nov 2023 19:59:46 -0400 Subject: [PATCH] LegoEntityPresenter & LegoWorldPresenter --- LEGO1/legoentitypresenter.cpp | 28 ++++++++++++++++++++++++---- LEGO1/legoentitypresenter.h | 6 +++++- LEGO1/legoworldpresenter.cpp | 13 ++++++++----- LEGO1/legoworldpresenter.h | 2 ++ 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/LEGO1/legoentitypresenter.cpp b/LEGO1/legoentitypresenter.cpp index a8d4bc8b..394a5464 100644 --- a/LEGO1/legoentitypresenter.cpp +++ b/LEGO1/legoentitypresenter.cpp @@ -1,19 +1,39 @@ #include "legoentitypresenter.h" +#include "legoomni.h" +#include "legovideomanager.h" + // OFFSET: LEGO1 0x10053440 LegoEntityPresenter::LegoEntityPresenter() { Init(); } -// OFFSET: LEGO1 0x100535d0 STUB +// OFFSET: LEGO1 0x100535d0 LegoEntityPresenter::~LegoEntityPresenter() { - // TODO + Destroy(); } -// OFFSET: LEGO1 0x100535c0 STUB +// OFFSET: LEGO1 0x100535c0 void LegoEntityPresenter::Init() { - // TODO + m_unk4c = 0; +} + +// OFFSET: LEGO1 0x10053640 +undefined4 LegoEntityPresenter::Destroy() +{ + if (VideoManager()) { + VideoManager()->RemovePresenter(*this); + } + + return Init(); +} + +// OFFSET: LEGO1 0x10053630 +undefined4 LegoEntityPresenter::vtable6c(undefined4 p_unknown) +{ + m_unk4c = p_unknown; + return 0; } diff --git a/LEGO1/legoentitypresenter.h b/LEGO1/legoentitypresenter.h index 30360919..dc8a8c8d 100644 --- a/LEGO1/legoentitypresenter.h +++ b/LEGO1/legoentitypresenter.h @@ -23,7 +23,11 @@ class LegoEntityPresenter : public MxCompositePresenter { } private: - void Init(); + virtual void Init(); // vtable+0x68 + virtual undefined4 vtable6c(undefined4 p_unknown); // vtable+0x6c + + undefined4 Destroy(); + undefined4 m_unk4c; }; #endif // LEGOENTITYPRESENTER_H diff --git a/LEGO1/legoworldpresenter.cpp b/LEGO1/legoworldpresenter.cpp index 44e8022d..1e1d7558 100644 --- a/LEGO1/legoworldpresenter.cpp +++ b/LEGO1/legoworldpresenter.cpp @@ -1,9 +1,12 @@ #include "legoworldpresenter.h" -// OFFSET: LEGO1 0x100665c0 STUB +// 0x100f75d4 +undefined4 g_LegoWorldPresenterQuality = 1; + +// OFFSET: LEGO1 0x100665c0 LegoWorldPresenter::LegoWorldPresenter() { - // TODO + m_unk50 = 50000; } // OFFSET: LEGO1 0x10066770 STUB @@ -12,8 +15,8 @@ LegoWorldPresenter::~LegoWorldPresenter() // TODO } -// OFFSET: LEGO1 0x100665b0 STUB -void LegoWorldPresenter::configureLegoWorldPresenter(int param_1) +// OFFSET: LEGO1 0x100665b0 +void LegoWorldPresenter::configureLegoWorldPresenter(int p_quality) { - // TODO + g_LegoWorldPresenterQuality = p_quality; } diff --git a/LEGO1/legoworldpresenter.h b/LEGO1/legoworldpresenter.h index 284c0437..ed166ee5 100644 --- a/LEGO1/legoworldpresenter.h +++ b/LEGO1/legoworldpresenter.h @@ -24,6 +24,8 @@ class LegoWorldPresenter : public LegoEntityPresenter { { return !strcmp(name, LegoWorldPresenter::ClassName()) || LegoEntityPresenter::IsA(name); } +private: + undefined4 m_unk50; }; #endif // LEGOWORLDPRESENTER_H