summaryrefslogtreecommitdiff
path: root/src/object/heartContainer.c
diff options
context:
space:
mode:
authoroctorock <79596758+octorock@users.noreply.github.com>2023-07-31 21:31:30 +0200
committeroctorock <79596758+octorock@users.noreply.github.com>2023-07-31 21:31:30 +0200
commit4d67e6fe1ff97f964e700b27dc2b1f8911002a12 (patch)
treef619a6244f304011fc681613d124d41023133623 /src/object/heartContainer.c
parenteb233b05cdd259fe52737c8287fbdfc8e4bd7870 (diff)
Create new entity structs for Objects
Diffstat (limited to 'src/object/heartContainer.c')
-rw-r--r--src/object/heartContainer.c72
1 files changed, 40 insertions, 32 deletions
diff --git a/src/object/heartContainer.c b/src/object/heartContainer.c
index a0694601..95d1b074 100644
--- a/src/object/heartContainer.c
+++ b/src/object/heartContainer.c
@@ -4,6 +4,7 @@
*
* @brief HeartContainer object
*/
+#define NENT_DEPRECATED
#include "collision.h"
#include "entity.h"
#include "flags.h"
@@ -11,12 +12,19 @@
#include "item.h"
#include "sound.h"
-static void HeartContainer_Init(Entity*);
-static void HeartContainer_Action1(Entity*);
-static void HeartContainer_Action2(Entity*);
-static void HeartContainer_Action3(Entity*);
+typedef struct {
+ /*0x00*/ Entity base;
+ /*0x68*/ u8 unused1[28];
+ /*0x84*/ u16 unk_84;
+ /*0x86*/ u16 unk_86;
+} HeartContainerEntity;
-static void (*const HeartContainer_Actions[])(Entity*) = {
+static void HeartContainer_Init(HeartContainerEntity* this);
+static void HeartContainer_Action1(HeartContainerEntity* this);
+static void HeartContainer_Action2(HeartContainerEntity* this);
+static void HeartContainer_Action3(HeartContainerEntity* this);
+
+static void (*const HeartContainer_Actions[])(HeartContainerEntity*) = {
HeartContainer_Init,
HeartContainer_Action1,
HeartContainer_Action2,
@@ -25,49 +33,49 @@ static void (*const HeartContainer_Actions[])(Entity*) = {
const Hitbox3D gUnk_08121C58 = { 0, -3, { 5, 3, 3, 5 }, 6, 6, 12, {} };
-void HeartContainer(Entity* this) {
- HeartContainer_Actions[this->action](this);
+void HeartContainer(HeartContainerEntity* this) {
+ HeartContainer_Actions[super->action](this);
}
-static void HeartContainer_Init(Entity* this) {
- if (CheckFlags(this->cutsceneBeh.HWORD)) {
+static void HeartContainer_Init(HeartContainerEntity* this) {
+ if (CheckFlags(this->unk_84)) {
DeleteThisEntity();
}
- this->action = 1;
- this->type = 0x62;
- this->spriteSettings.draw = 0;
- this->hitbox = (Hitbox*)&gUnk_08121C58;
- this->collisionLayer = 3;
- this->updatePriority = PRIO_NO_BLOCK;
+ super->action = 1;
+ super->type = 0x62;
+ super->spriteSettings.draw = 0;
+ super->hitbox = (Hitbox*)&gUnk_08121C58;
+ super->collisionLayer = 3;
+ super->updatePriority = PRIO_NO_BLOCK;
}
-static void HeartContainer_Action1(Entity* this) {
- if (CheckFlags(this->field_0x86.HWORD)) {
- this->action = 2;
- this->spriteSettings.draw = 1;
- this->spriteRendering.b0 = 3;
+static void HeartContainer_Action1(HeartContainerEntity* this) {
+ if (CheckFlags(this->unk_86)) {
+ super->action = 2;
+ super->spriteSettings.draw = 1;
+ super->spriteRendering.b0 = 3;
HeartContainer_Action2(this);
}
}
-static void HeartContainer_Action2(Entity* this) {
- int var0 = 0x400 - this->subtimer * 8;
+static void HeartContainer_Action2(HeartContainerEntity* this) {
+ int var0 = 0x400 - super->subtimer * 8;
if (var0 > 0x100) {
- this->subtimer++;
- SetAffineInfo(this, var0, var0, 0);
+ super->subtimer++;
+ SetAffineInfo(super, var0, var0, 0);
} else {
- this->action = 3;
- this->collisionFlags |= 0x10;
- sub_0805EC60(this);
+ super->action = 3;
+ super->collisionFlags |= 0x10;
+ sub_0805EC60(super);
SoundReq(SFX_HEART_CONTAINER_SPAWN);
}
- sub_08080CB4(this);
+ sub_08080CB4(super);
}
-static void HeartContainer_Action3(Entity* this) {
- sub_08080CB4(this);
- if (!(gPlayerState.flags & PL_MINISH) && IsCollidingPlayer(this)) {
- SetFlag(this->cutsceneBeh.HWORD);
+static void HeartContainer_Action3(HeartContainerEntity* this) {
+ sub_08080CB4(super);
+ if (!(gPlayerState.flags & PL_MINISH) && IsCollidingPlayer(super)) {
+ SetFlag(this->unk_84);
CreateItemEntity(ITEM_HEART_CONTAINER, 0, 0);
DeleteThisEntity();
}