mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-23 16:34:06 +00:00
Bootstrap MxCompositePresenter (#310)
* Bootstrap MxCompositePresenter * Remove MxUnkList * Use TickleState_Idle * Add all annotations * Add vtable * Add Notify * Update mxcompositepresenter.h * Remove extra TEMPLATE * Update mxcompositepresenter.cpp
This commit is contained in:
committed by
GitHub
parent
b46801a774
commit
8bf0bde6b9
@@ -19,12 +19,50 @@ MxCompositePresenter::MxCompositePresenter()
|
|||||||
NotificationManager()->Register(this);
|
NotificationManager()->Register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x100b61a0
|
||||||
|
// list<MxPresenter *,allocator<MxPresenter *> >::~list<MxPresenter *,allocator<MxPresenter *> >
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x100b6210
|
||||||
|
// MxCompositePresenter::ClassName
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x100b6220
|
||||||
|
// MxCompositePresenter::IsA
|
||||||
|
|
||||||
|
// SYNTHETIC: LEGO1 0x100b62d0
|
||||||
|
// MxCompositePresenter::`scalar deleting destructor'
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x100b62f0
|
||||||
|
// MxCompositePresenterList::~MxCompositePresenterList
|
||||||
|
|
||||||
|
// TEMPLATE: LEGO1 0x100b6340
|
||||||
|
// List<MxPresenter *>::~List<MxPresenter *>
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b6390
|
// FUNCTION: LEGO1 0x100b6390
|
||||||
MxCompositePresenter::~MxCompositePresenter()
|
MxCompositePresenter::~MxCompositePresenter()
|
||||||
{
|
{
|
||||||
NotificationManager()->Unregister(this);
|
NotificationManager()->Unregister(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100b6410
|
||||||
|
MxResult MxCompositePresenter::StartAction(MxStreamController*, MxDSAction*)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100b65e0
|
||||||
|
void MxCompositePresenter::EndAction()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100b6760
|
||||||
|
MxLong MxCompositePresenter::Notify(MxParam& p)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100b67f0
|
// STUB: LEGO1 0x100b67f0
|
||||||
void MxCompositePresenter::VTable0x58()
|
void MxCompositePresenter::VTable0x58()
|
||||||
{
|
{
|
||||||
@@ -37,8 +75,40 @@ void MxCompositePresenter::VTable0x5c()
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100b6b40
|
// FUNCTION: LEGO1 0x100b6b40
|
||||||
void MxCompositePresenter::VTable0x60(undefined4 p_unknown)
|
void MxCompositePresenter::VTable0x60(MxPresenter* p_presenter)
|
||||||
|
{
|
||||||
|
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() == TickleState_Idle)
|
||||||
|
presenter->SetTickleState(TickleState_Ready);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100b6bc0
|
||||||
|
void MxCompositePresenter::SetTickleState(TickleState p_tickleState)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100b6c30
|
||||||
|
void MxCompositePresenter::Enable(MxBool p_enable)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100b6c80
|
||||||
|
MxBool MxCompositePresenter::HasTickleStatePassed(TickleState p_tickleState)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
#ifndef MXCOMPOSITEPRESENTER_H
|
#ifndef MXCOMPOSITEPRESENTER_H
|
||||||
#define MXCOMPOSITEPRESENTER_H
|
#define MXCOMPOSITEPRESENTER_H
|
||||||
|
|
||||||
|
#include "compat.h" // STL
|
||||||
#include "mxpresenter.h"
|
#include "mxpresenter.h"
|
||||||
#include "mxunklist.h"
|
|
||||||
|
class MxCompositePresenterList : public list<MxPresenter*> {};
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100dc618
|
// VTABLE: LEGO1 0x100dc618
|
||||||
// SIZE 0x4c
|
// SIZE 0x4c
|
||||||
@@ -11,26 +13,31 @@ public:
|
|||||||
MxCompositePresenter();
|
MxCompositePresenter();
|
||||||
virtual ~MxCompositePresenter() override; // vtable+0x0
|
virtual ~MxCompositePresenter() override; // vtable+0x0
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b6210
|
virtual MxLong Notify(MxParam& p) override; // vtable+0x04
|
||||||
|
|
||||||
inline virtual const char* ClassName() const override // vtable+0x0c
|
inline virtual const char* ClassName() const override // vtable+0x0c
|
||||||
{
|
{
|
||||||
// GLOBAL: LEGO1 0x100f0774
|
// GLOBAL: LEGO1 0x100f0774
|
||||||
return "MxCompositePresenter";
|
return "MxCompositePresenter";
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b6220
|
|
||||||
inline virtual MxBool IsA(const char* name) const override // vtable+0x10
|
inline virtual MxBool IsA(const char* name) const override // vtable+0x10
|
||||||
{
|
{
|
||||||
return !strcmp(name, MxCompositePresenter::ClassName()) || MxPresenter::IsA(name);
|
return !strcmp(name, MxCompositePresenter::ClassName()) || MxPresenter::IsA(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void VTable0x58();
|
virtual MxResult StartAction(MxStreamController*, MxDSAction*) override; // vtable+0x3c
|
||||||
virtual void VTable0x5c();
|
virtual void EndAction() override; // vtable+0x40
|
||||||
virtual void VTable0x60(undefined4 p_unknown);
|
virtual void SetTickleState(TickleState p_tickleState) override; // vtable+0x44
|
||||||
virtual MxBool VTable0x64(undefined4 p_unknown);
|
virtual MxBool HasTickleStatePassed(TickleState p_tickleState) override; // vtable+0x48
|
||||||
|
virtual void Enable(MxBool p_enable) override; // vtable+0x54
|
||||||
|
virtual void VTable0x58(); // vtable+0x58
|
||||||
|
virtual void VTable0x5c(); // vtable+0x5c
|
||||||
|
virtual void VTable0x60(MxPresenter* p_presenter); // vtable+0x60
|
||||||
|
virtual MxBool VTable0x64(undefined4 p_unknown); // vtable+0x64
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxUnkList m_list;
|
MxCompositePresenterList m_list; // 0x40
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MXCOMPOSITEPRESENTER_H
|
#endif // MXCOMPOSITEPRESENTER_H
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
#ifndef MXUNKLIST_H
|
|
||||||
#define MXUNKLIST_H
|
|
||||||
|
|
||||||
#include "decomp.h"
|
|
||||||
#include "mxtypes.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is an as-of-yet unknown list-like data structure.
|
|
||||||
* The class hierarchy/structure isn't quite correct yet.
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct MxUnkListNode {
|
|
||||||
MxUnkListNode* m_unk00;
|
|
||||||
MxUnkListNode* m_unk04;
|
|
||||||
undefined4 m_unk08;
|
|
||||||
};
|
|
||||||
|
|
||||||
class MxUnkList {
|
|
||||||
public:
|
|
||||||
inline MxUnkList()
|
|
||||||
{
|
|
||||||
undefined unk;
|
|
||||||
this->m_unk00 = unk;
|
|
||||||
|
|
||||||
MxUnkListNode* node = new MxUnkListNode();
|
|
||||||
node->m_unk00 = node;
|
|
||||||
node->m_unk04 = node;
|
|
||||||
|
|
||||||
this->m_head = node;
|
|
||||||
this->m_count = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
undefined m_unk00;
|
|
||||||
MxUnkListNode* m_head;
|
|
||||||
MxU32 m_count;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // MXUNKLIST_H
|
|
||||||
Reference in New Issue
Block a user