mirror of https://github.com/zeldaret/tmc.git
71 lines
1.6 KiB
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);
|
|
}
|
|
}
|