mirror of
https://github.com/isledecomp/isle.git
synced 2025-03-23 21:20:11 -04: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:
parent
b46801a774
commit
8bf0bde6b9
3 changed files with 87 additions and 48 deletions
|
@ -19,12 +19,50 @@ MxCompositePresenter::MxCompositePresenter()
|
|||
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
|
||||
MxCompositePresenter::~MxCompositePresenter()
|
||||
{
|
||||
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
|
||||
void MxCompositePresenter::VTable0x58()
|
||||
{
|
||||
|
@ -37,8 +75,40 @@ void MxCompositePresenter::VTable0x5c()
|
|||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100b6b40
|
||||
void MxCompositePresenter::VTable0x60(undefined4 p_unknown)
|
||||
// FUNCTION: LEGO1 0x100b6b40
|
||||
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
|
||||
}
|
||||
|
||||
// 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
|
||||
#define MXCOMPOSITEPRESENTER_H
|
||||
|
||||
#include "compat.h" // STL
|
||||
#include "mxpresenter.h"
|
||||
#include "mxunklist.h"
|
||||
|
||||
class MxCompositePresenterList : public list<MxPresenter*> {};
|
||||
|
||||
// VTABLE: LEGO1 0x100dc618
|
||||
// SIZE 0x4c
|
||||
|
@ -11,26 +13,31 @@ public:
|
|||
MxCompositePresenter();
|
||||
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
|
||||
{
|
||||
// GLOBAL: LEGO1 0x100f0774
|
||||
return "MxCompositePresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100b6220
|
||||
inline virtual MxBool IsA(const char* name) const override // vtable+0x10
|
||||
{
|
||||
return !strcmp(name, MxCompositePresenter::ClassName()) || MxPresenter::IsA(name);
|
||||
}
|
||||
|
||||
virtual void VTable0x58();
|
||||
virtual void VTable0x5c();
|
||||
virtual void VTable0x60(undefined4 p_unknown);
|
||||
virtual MxBool VTable0x64(undefined4 p_unknown);
|
||||
virtual MxResult StartAction(MxStreamController*, MxDSAction*) override; // vtable+0x3c
|
||||
virtual void EndAction() override; // vtable+0x40
|
||||
virtual void SetTickleState(TickleState p_tickleState) override; // vtable+0x44
|
||||
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:
|
||||
MxUnkList m_list;
|
||||
MxCompositePresenterList m_list; // 0x40
|
||||
};
|
||||
|
||||
#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
|
Loading…
Add table
Reference in a new issue