diff --git a/LEGO1/mxcompositepresenter.cpp b/LEGO1/mxcompositepresenter.cpp index 1275f317..97df8d5f 100644 --- a/LEGO1/mxcompositepresenter.cpp +++ b/LEGO1/mxcompositepresenter.cpp @@ -37,8 +37,21 @@ void MxCompositePresenter::VTable0x5c() // TODO } -// OFFSET: LEGO1 0x100b6b40 STUB -void MxCompositePresenter::VTable0x60(undefined4 p_unknown) +// OFFSET: LEGO1 0x100b6b40 +void MxCompositePresenter::VTable0x60(MxPresenter* p_presenter) { - // TODO + for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) { + if (*it == p_presenter) { + if (++it == m_list.end()) { + if (m_compositePresenter) + m_compositePresenter->VTable0x60(this); + } + else if (m_action->IsA("MxDSSerialAction")) { + MxPresenter* presenter = *it; + if (!presenter->GetCurrentTickleState()) + presenter->SetTickleState(TickleState_Ready); + } + return; + } + } } diff --git a/LEGO1/mxcompositepresenter.h b/LEGO1/mxcompositepresenter.h index c8eedfaf..bf4f8fb1 100644 --- a/LEGO1/mxcompositepresenter.h +++ b/LEGO1/mxcompositepresenter.h @@ -1,8 +1,10 @@ #ifndef MXCOMPOSITEPRESENTER_H #define MXCOMPOSITEPRESENTER_H +#include "compat.h" // STL #include "mxpresenter.h" -#include "mxunklist.h" + +class MxCompositePresenterList : public list {}; // VTABLE 0x100dc618 // SIZE 0x4c @@ -26,11 +28,11 @@ class MxCompositePresenter : public MxPresenter { virtual void VTable0x58(); virtual void VTable0x5c(); - virtual void VTable0x60(undefined4 p_unknown); + virtual void VTable0x60(MxPresenter* p_presenter); virtual MxBool VTable0x64(undefined4 p_unknown); private: - MxUnkList m_list; + MxCompositePresenterList m_list; }; #endif // MXCOMPOSITEPRESENTER_H