mirror of
https://github.com/zeldaret/tmc
synced 2026-05-31 01:16:04 -04:00
56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
/**
|
|
* @file pinwheel.c
|
|
* @ingroup Objects
|
|
*
|
|
* @brief Pinwheel object
|
|
*/
|
|
#include "entity.h"
|
|
#include "flags.h"
|
|
#include "global.h"
|
|
#include "object.h"
|
|
|
|
static const u16 gUnk_08125050[] = {
|
|
KUMOUE_02_AWASE_01, KUMOUE_02_AWASE_02, KUMOUE_02_AWASE_03, KUMOUE_02_AWASE_04, KUMOUE_02_AWASE_05, BEGIN_1,
|
|
};
|
|
extern u32 gUnk_020342F8;
|
|
|
|
void Pinwheel_Init(Entity*);
|
|
void Pinwheel_Action1(Entity*);
|
|
void Pinwheel_Action2(Entity*);
|
|
|
|
void Pinwheel(Entity* this) {
|
|
static void (*const Pinwheel_Actions[])(Entity*) = {
|
|
Pinwheel_Init,
|
|
Pinwheel_Action1,
|
|
Pinwheel_Action2,
|
|
};
|
|
u16 x = this->health;
|
|
if ((x & 0x7f) != 0) {
|
|
if (ReadBit(&gUnk_020342F8, x - 1) == 0) {
|
|
DeleteThisEntity();
|
|
}
|
|
}
|
|
Pinwheel_Actions[this->action](this);
|
|
}
|
|
|
|
void Pinwheel_Init(Entity* this) {
|
|
this->field_0x68.HWORD = gUnk_08125050[this->type2];
|
|
this->spritePriority.b0 = 7;
|
|
if (CheckLocalFlag(this->field_0x68.HWORD) != 0) {
|
|
this->action = 2;
|
|
} else {
|
|
this->action = 1;
|
|
}
|
|
InitializeAnimation(this, 0);
|
|
}
|
|
|
|
void Pinwheel_Action1(Entity* this) {
|
|
if (CheckLocalFlag(this->field_0x68.HWORD) != 0) {
|
|
this->action = 2;
|
|
CreateDust(this);
|
|
}
|
|
}
|
|
void Pinwheel_Action2(Entity* this) {
|
|
GetNextFrame(this);
|
|
}
|