diff options
| author | octorock <79596758+octorock@users.noreply.github.com> | 2023-07-31 21:31:30 +0200 |
|---|---|---|
| committer | octorock <79596758+octorock@users.noreply.github.com> | 2023-07-31 21:31:30 +0200 |
| commit | 4d67e6fe1ff97f964e700b27dc2b1f8911002a12 (patch) | |
| tree | f619a6244f304011fc681613d124d41023133623 /src/object/heartContainer.c | |
| parent | eb233b05cdd259fe52737c8287fbdfc8e4bd7870 (diff) | |
Create new entity structs for Objects
Diffstat (limited to 'src/object/heartContainer.c')
| -rw-r--r-- | src/object/heartContainer.c | 72 |
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(); } |
