summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2024-05-19 10:49:14 +0200
committerAetias <aetias@outlook.com>2024-05-19 10:49:14 +0200
commitc1384df63cd5a73550fcf0928dd9ccfcd247abd5 (patch)
tree72b6bfb53cc605d6c23cc827cd64835b020028b1 /include
parent7ccd1447b0ede8cc12c1462c0af6ec95cd84f8c2 (diff)
Decomp `Actor`
Diffstat (limited to 'include')
-rw-r--r--include/Actor/Actor.hpp27
-rw-r--r--include/Actor/ActorRef.hpp5
-rw-r--r--include/Actor/ActorType.hpp10
-rw-r--r--include/Player/PlayerLinkBase.hpp1
4 files changed, 29 insertions, 14 deletions
diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp
index ab81bb99..a7b174df 100644
--- a/include/Actor/Actor.hpp
+++ b/include/Actor/Actor.hpp
@@ -6,15 +6,17 @@
#include "lib/math.h"
#include "Actor/ActorRef.hpp"
+#include "Actor/ActorType.hpp"
#include "Actor/FilterActorBase.hpp"
#include "Physics/Cylinder.hpp"
#include "Physics/Transform.hpp"
#include "Player/EquipBoomerang.hpp"
+#include "System/SysNew.hpp"
struct Actor_UnkStruct_020 {
/* 00 */ unk16 mUnk_00[4];
- /* 08 */ unk8 mUnk_08[2];
- /* 0a */ unk8 mUnk_0a[2];
+ /* 08 */ u8 mUnk_08[2];
+ /* 0a */ u8 mUnk_0a[2];
/* 0c */ unk8 mUnk_0c;
/* 0c */ unk8 mUnk_0d;
/* 0c */ unk8 mUnk_0e;
@@ -43,9 +45,10 @@ struct Actor_UnkStruct_0a4 {
/* 14 */
};
-class KillPickupItemActors : public FilterActorBase {
+class KillPickupsFilter : public FilterActorBase {
+public:
/* 0 (base) */
- /* 4 */
+ /* 4 */ ActorRef mUnk_4[20];
/* 0 */ virtual bool Filter(Actor *actor) override;
/* 4 */
@@ -60,10 +63,10 @@ enum PlayerCollide_ {
PlayerCollide_Hammer = 0x10,
};
-class Actor {
+class Actor : public SysObject {
public:
/* 000 (vtable) */
- /* 004 */ unk32 mType;
+ /* 004 */ ActorTypeId mType;
/* 008 */ unk32 mId;
/* 00c */ unk32 mIndex;
/* 010 */ u8 mUnk_010;
@@ -85,7 +88,7 @@ public:
/* 070 */ unk32 mMaxFall;
/* 074 */ unk32 mUnk_074;
/* 078 */ s16 mRotation;
- /* 07a */ unk16 mUnk_07a;
+ /* 07a */ u16 mUnk_07a;
/* 07c */ Cylinder mHitbox;
/* 08c */ Cylinder mUnk_08c;
/* 09c */ Actor_UnkStruct_09c mUnk_09c;
@@ -113,7 +116,7 @@ public:
/* 118 */ bool mAlive;
/* 119 */ unk8 mUnk_119;
/* 11a */ bool mVisible;
- /* 11b */ unk8 mUnk_11b;
+ /* 11b */ bool mUnk_11b;
/* 11c */ unk8 mUnk_11c;
/* 11d */ unk8 mUnk_11d;
/* 11e */ q4 mYOffset;
@@ -121,7 +124,7 @@ public:
/* 122 */ unk16 mUnk_122;
/* 124 */ unk8 mUnk_124;
/* 125 */ unk8 mUnk_125;
- /* 126 */ unk16 mUnk_126;
+ /* 126 */ u16 mUnk_126;
/* 128 */ bool mUnk_128;
/* 129 */ bool mUnk_129;
/* 12a */ unk8 mUnk_12a;
@@ -158,7 +161,7 @@ public:
/* 4c */ virtual bool vfunc_4c(unk32 *param1);
/* 50 */ virtual Vec3p* GetPos();
/* 54 */ virtual void vfunc_54();
- /* 58 */ virtual void SetUnk_11b();
+ /* 58 */ virtual bool SetUnk_11b();
/* 5c */ virtual bool SetVelocity(Vec3p *vel);
/* 60 */ virtual bool vfunc_60();
/* 64 */ virtual void vfunc_64();
@@ -171,7 +174,7 @@ public:
/* 80 */ virtual void vfunc_80();
/* 84 */ virtual void vfunc_84();
/* 88 */ virtual void vfunc_88();
- /* 8c */ virtual void vfunc_8c();
+ /* 8c */ virtual bool vfunc_8c();
/* 90 */ virtual bool vfunc_90();
/* 94 */ virtual void vfunc_94();
/* 98 */ virtual bool vfunc_98();
@@ -191,7 +194,7 @@ public:
bool func_ov00_020c198c();
void KillPickupItemActors();
void func_Ov00_020c1bfc(s32 param1);
- void func_ov00_020c1c20(s32 param1, unk32 param2, unk32 param3);
+ void func_ov00_020c1c20(s32 param1, unk32 param2);
bool IsNearLink();
void func_ov00_020c1cf8();
bool func_ov00_020c1d58();
diff --git a/include/Actor/ActorRef.hpp b/include/Actor/ActorRef.hpp
index b98c86a9..5c9bc461 100644
--- a/include/Actor/ActorRef.hpp
+++ b/include/Actor/ActorRef.hpp
@@ -7,4 +7,9 @@ struct ActorRef {
/* 0 */ s32 id;
/* 4 */ s32 index;
/* 8 */
+
+ inline ActorRef() {
+ id = -1;
+ index = -1;
+ }
};
diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp
index dcbc9409..9ba60282 100644
--- a/include/Actor/ActorType.hpp
+++ b/include/Actor/ActorType.hpp
@@ -3,8 +3,6 @@
#include "global.h"
#include "types.h"
-#include "Actor/Actor.hpp"
-
#define __ACTOR_TYPE_ID(a,b,c,d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
typedef u32 ActorTypeId;
@@ -63,8 +61,16 @@ enum ActorTypeId_ {
ActorTypeId_Linebeck = __ACTOR_TYPE_ID('L','N','B','K'),
ActorTypeId_Mailbox = __ACTOR_TYPE_ID('P','O','S','T'),
ActorTypeId_Postman = __ACTOR_TYPE_ID('P','S','T','M'),
+
+ ActorTypeId_BMRN = __ACTOR_TYPE_ID('B','M','R','N'),
+ ActorTypeId_BMTY = __ACTOR_TYPE_ID('B','M','T','Y'),
+ ActorTypeId_FLAL = __ACTOR_TYPE_ID('F','L','A','L'),
+ ActorTypeId_FLBM = __ACTOR_TYPE_ID('F','L','B','M'),
+ ActorTypeId_FLBT = __ACTOR_TYPE_ID('F','L','B','T'),
+ ActorTypeId_FLTM = __ACTOR_TYPE_ID('F','L','T','M'),
};
+class Actor;
typedef Actor* (*ActorCreateFunc)();
struct ActorType {
diff --git a/include/Player/PlayerLinkBase.hpp b/include/Player/PlayerLinkBase.hpp
index 0d4dc1e3..da67afb3 100644
--- a/include/Player/PlayerLinkBase.hpp
+++ b/include/Player/PlayerLinkBase.hpp
@@ -77,6 +77,7 @@ public:
bool func_ov00_020bbd80(s32 param1);
void func_ov00_020bc854(Vec3p *param1);
+ bool func_ov00_020bd304();
};
extern PlayerLinkBase *gPlayerLink;