tmc/src/object/objectD.c

71 lines
1.6 KiB
C

/**
* @file objectD.c
* @ingroup Objects
*
* @brief ObjectD object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x1e];
/*0x86*/ u16 unk_86;
} ObjectDEntity;
void sub_0808434C(ObjectDEntity*);
void sub_080843F8(ObjectDEntity*);
void sub_08084428(ObjectDEntity*);
void (*const gUnk_0811F908[])(ObjectDEntity*) = {
sub_0808434C,
sub_080843F8,
sub_08084428,
(void (*)(ObjectDEntity*))GetNextFrame,
};
void ObjectD(ObjectDEntity* this) {
gUnk_0811F908[super->action](this);
}
void sub_0808434C(ObjectDEntity* this) {
super->action = 1;
super->flags |= 0x80;
super->spriteSettings.draw = 1;
super->field_0x3c = 7;
super->hitType = 1;
super->hurtType = 0x47;
super->flags2 = 2;
super->hitbox = (Hitbox*)&gHitbox_4;
SetTile(0x4050, COORD_TO_TILE(super), super->collisionLayer);
if (super->type == 1 || CheckFlags(this->unk_86)) {
super->action = 3;
SetFlag(this->unk_86);
InitializeAnimation(super, 1);
} else {
InitializeAnimation(super, super->type);
}
}
void sub_080843F8(ObjectDEntity* this) {
if (super->bitfield == 0x9c) {
super->action = 2;
super->flags &= 0x7f;
CreateFx(super, FX_ICE, 0);
EnqueueSFX(SFX_10D);
}
}
void sub_08084428(ObjectDEntity* this) {
GetNextFrame(super);
if ((super->frame & 1) != 0) {
super->action = 3;
SetFlag(this->unk_86);
EnqueueSFX(SFX_BUTTON_PRESS);
}
}