From 25d76b9395b2c4da0d9cf9ee160cab9addc7f225 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sat, 23 Sep 2023 09:02:42 -0400 Subject: [PATCH] Add neccessary MxDSMultiAction functions --- LEGO1/mxdsmultiaction.cpp | 22 ++++++++++++++++++++++ LEGO1/mxdsmultiaction.h | 3 +++ LEGO1/mxlist.h | 7 +++++++ 3 files changed, 32 insertions(+) diff --git a/LEGO1/mxdsmultiaction.cpp b/LEGO1/mxdsmultiaction.cpp index 6cbccc39..78b3c173 100644 --- a/LEGO1/mxdsmultiaction.cpp +++ b/LEGO1/mxdsmultiaction.cpp @@ -17,6 +17,28 @@ MxDSMultiAction::~MxDSMultiAction() delete this->m_actions; } +// OFFSET: LEGO1 0x100ca0d0 +void MxDSMultiAction::CopyFrom(MxDSMultiAction &p_dsMultiAction) +{ + this->m_actions->DeleteAll(); + + MxDSActionListCursor cursor(p_dsMultiAction.m_actions); + MxDSAction *action; + while (cursor.Next(action)) + this->m_actions->Append(action->Clone()); +} + +// OFFSET: LEGO1 0x100ca260 +MxDSMultiAction &MxDSMultiAction::operator=(MxDSMultiAction &p_dsMultiAction) +{ + if (this == &p_dsMultiAction) + return *this; + + MxDSAction::operator=(p_dsMultiAction); + this->CopyFrom(p_dsMultiAction); + return *this; +} + // OFFSET: LEGO1 0x100ca5e0 undefined4 MxDSMultiAction::unk14() { diff --git a/LEGO1/mxdsmultiaction.h b/LEGO1/mxdsmultiaction.h index 4900aa2e..dcde3be3 100644 --- a/LEGO1/mxdsmultiaction.h +++ b/LEGO1/mxdsmultiaction.h @@ -12,6 +12,9 @@ class MxDSMultiAction : public MxDSAction MxDSMultiAction(); virtual ~MxDSMultiAction() override; + void CopyFrom(MxDSMultiAction &p_dsMultiAction); + MxDSMultiAction &operator=(MxDSMultiAction &p_dsMultiAction); + // OFFSET: LEGO1 0x100c9f50 inline virtual const char *ClassName() const override // vtable+0x0c { diff --git a/LEGO1/mxlist.h b/LEGO1/mxlist.h index a4231c92..0de71903 100644 --- a/LEGO1/mxlist.h +++ b/LEGO1/mxlist.h @@ -59,6 +59,7 @@ class MxList : protected MxListParent virtual ~MxList(); void Append(T*); + void DeleteAll(); MxU32 GetCount() { return m_count; } void SetDestroy(void (*p_customDestructor)(T *)) { this->m_customDestructor = p_customDestructor; } @@ -115,6 +116,12 @@ class MxListCursorChildChild : public MxListCursorChild template // OFFSET: LEGO1 0x1001ce20 MxList::~MxList() +{ + DeleteAll(); +} + +template +inline void MxList::DeleteAll() { for (MxListEntry *t = m_first;;) { if (!t)