mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-22 15:48:09 -05:00
IsleActor::Create, IsleActor::Notify (#779)
* IsleActor::Create, IsleActor::Notify * fix pizzeria vtable * clang-format * fix pizza vtable * fix annotation * refactor, add annotations --------- Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
parent
91ae26589a
commit
8cbb094b75
6 changed files with 116 additions and 20 deletions
|
@ -2,9 +2,11 @@
|
||||||
#define ISLEACTOR_H
|
#define ISLEACTOR_H
|
||||||
|
|
||||||
#include "legoactor.h"
|
#include "legoactor.h"
|
||||||
|
#include "legoworld.h"
|
||||||
|
#include "mxactionnotificationparam.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d5178
|
// VTABLE: LEGO1 0x100d5178
|
||||||
// SIZE 0x78
|
// SIZE 0x7c
|
||||||
class IsleActor : public LegoActor {
|
class IsleActor : public LegoActor {
|
||||||
public:
|
public:
|
||||||
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||||
|
@ -23,6 +25,30 @@ class IsleActor : public LegoActor {
|
||||||
}
|
}
|
||||||
|
|
||||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1000e5f0
|
||||||
|
virtual undefined4 VTable0x68() { return 0; } // vtable+0x68
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1000e600
|
||||||
|
virtual undefined4 VTable0x6c() { return 0; } // vtable+0x6c
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1000e610
|
||||||
|
virtual undefined4 VTable0x70() { return 0; } // vtable+0x70
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1000e620
|
||||||
|
virtual undefined4 HandleEndAction(MxEndActionNotificationParam&) { return 0; } // vtable+0x74
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1000e630
|
||||||
|
virtual undefined4 HandleButtonDown(MxNotificationParam&) { return 0; } // vtable+0x78
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1000e640
|
||||||
|
virtual undefined4 HandleButtonUp(MxNotificationParam&) { return 0; } // vtable+0x7c
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1000e650
|
||||||
|
virtual undefined4 VTable0x80(MxParam&) { return 0; } // vtable+0x80
|
||||||
|
|
||||||
|
private:
|
||||||
|
LegoWorld* m_world; // 0x78
|
||||||
};
|
};
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000e940
|
// SYNTHETIC: LEGO1 0x1000e940
|
||||||
|
|
|
@ -26,21 +26,23 @@ class Pizza : public IsleActor {
|
||||||
return !strcmp(p_name, Pizza::ClassName()) || IsleActor::IsA(p_name);
|
return !strcmp(p_name, Pizza::ClassName()) || IsleActor::IsA(p_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
|
undefined4 VTable0x68() override; // vtable+0x68
|
||||||
|
undefined4 HandleEndAction(MxEndActionNotificationParam&) override; // vtable+0x74
|
||||||
|
undefined4 VTable0x80(MxParam&) override; // vtable+0x80
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x100380e0
|
// SYNTHETIC: LEGO1 0x100380e0
|
||||||
// Pizza::`scalar deleting destructor'
|
// Pizza::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
undefined4 m_unk0x78;
|
undefined4 m_unk0x7c; // 0x7c
|
||||||
undefined4 m_unk0x7c;
|
undefined4 m_unk0x80; // 0x80
|
||||||
undefined4 m_unk0x80;
|
undefined4 m_unk0x84; // 0x84
|
||||||
undefined4 m_unk0x84;
|
undefined4 m_unk0x88; // 0x88
|
||||||
undefined4 m_unk0x88;
|
undefined4 m_unk0x8c; // 0x8c
|
||||||
undefined4 m_unk0x8c;
|
undefined4 m_unk0x90; // 0x90
|
||||||
undefined4 m_unk0x90;
|
undefined4 m_unk0x94; // 0x94
|
||||||
undefined4 m_unk0x94;
|
undefined m_unk0x98; // 0x98
|
||||||
undefined m_unk0x98;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PIZZA_H
|
#endif // PIZZA_H
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef PIZZERIA_H
|
#ifndef PIZZERIA_H
|
||||||
#define PIZZERIA_H
|
#define PIZZERIA_H
|
||||||
|
|
||||||
|
#include "decomp.h"
|
||||||
#include "isleactor.h"
|
#include "isleactor.h"
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d5520
|
// VTABLE: LEGO1 0x100d5520
|
||||||
|
@ -23,12 +24,12 @@ class Pizzeria : public IsleActor {
|
||||||
}
|
}
|
||||||
|
|
||||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
|
undefined4 VTable0x68() override; // vtable+0x68
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x1000e8d0
|
// SYNTHETIC: LEGO1 0x1000e8d0
|
||||||
// Pizzeria::`scalar deleting destructor'
|
// Pizzeria::`scalar deleting destructor'
|
||||||
|
|
||||||
private:
|
private:
|
||||||
undefined4 m_unk0x78; // 0x78
|
|
||||||
undefined4 m_unk0x7c; // 0x7c
|
undefined4 m_unk0x7c; // 0x7c
|
||||||
undefined4 m_unk0x80; // 0x80
|
undefined4 m_unk0x80; // 0x80
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,18 +1,57 @@
|
||||||
#include "isleactor.h"
|
#include "isleactor.h"
|
||||||
|
|
||||||
// NOTE: This is copied from base class LegoActor. IsleActor may in fact be larger but we don't know yet.
|
#include "legoentity.h"
|
||||||
DECOMP_SIZE_ASSERT(IsleActor, 0x78)
|
#include "legoomni.h"
|
||||||
|
#include "legoworld.h"
|
||||||
|
#include "misc.h"
|
||||||
|
#include "mxnotificationparam.h"
|
||||||
|
|
||||||
// STUB: LEGO1 0x1002c780
|
DECOMP_SIZE_ASSERT(IsleActor, 0x7c)
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1002c780
|
||||||
MxResult IsleActor::Create(MxDSAction& p_dsAction)
|
MxResult IsleActor::Create(MxDSAction& p_dsAction)
|
||||||
{
|
{
|
||||||
// TODO
|
MxResult ret = LegoEntity::Create(p_dsAction);
|
||||||
return SUCCESS;
|
|
||||||
|
if (ret == SUCCESS) {
|
||||||
|
m_world = CurrentWorld();
|
||||||
|
|
||||||
|
if (!m_world) {
|
||||||
|
ret = FAILURE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1002c7b0
|
// FUNCTION: LEGO1 0x1002c7b0
|
||||||
MxLong IsleActor::Notify(MxParam& p_param)
|
MxLong IsleActor::Notify(MxParam& p_param)
|
||||||
{
|
{
|
||||||
// TODO
|
MxLong result = 0;
|
||||||
return 0;
|
|
||||||
|
switch (((MxNotificationParam&) p_param).GetNotification()) {
|
||||||
|
case c_notificationType0:
|
||||||
|
result = VTable0x6c();
|
||||||
|
break;
|
||||||
|
case c_notificationEndAction:
|
||||||
|
result = HandleEndAction((MxEndActionNotificationParam&) p_param);
|
||||||
|
break;
|
||||||
|
case c_notificationButtonUp:
|
||||||
|
result = HandleButtonUp((MxNotificationParam&) p_param);
|
||||||
|
break;
|
||||||
|
case c_notificationButtonDown:
|
||||||
|
result = HandleButtonDown((MxNotificationParam&) p_param);
|
||||||
|
break;
|
||||||
|
case c_notificationType11:
|
||||||
|
result = VTable0x68();
|
||||||
|
break;
|
||||||
|
case c_notificationType18:
|
||||||
|
result = VTable0x70();
|
||||||
|
break;
|
||||||
|
case c_notificationType19:
|
||||||
|
result = VTable0x80(p_param);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,9 +30,30 @@ MxResult Pizza::Create(MxDSAction& p_dsAction)
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100383f0
|
||||||
|
undefined4 Pizza::VTable0x68()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x100384f0
|
||||||
|
undefined4 Pizza::VTable0x80(MxParam&)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100388a0
|
// STUB: LEGO1 0x100388a0
|
||||||
MxResult Pizza::Tickle()
|
MxResult Pizza::Tickle()
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x10038b10
|
||||||
|
undefined4 Pizza::HandleEndAction(MxEndActionNotificationParam&)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -8,3 +8,10 @@ MxResult Pizzeria::Create(MxDSAction& p_dsAction)
|
||||||
// TODO
|
// TODO
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// STUB: LEGO1 0x10017a50
|
||||||
|
undefined4 Pizzeria::VTable0x68()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue