mirror of
https://github.com/zeldaret/tmc
synced 2026-05-31 17:32:43 -04:00
48 lines
1.1 KiB
C
48 lines
1.1 KiB
C
#define NENT_DEPRECATED
|
|
#include "entity.h"
|
|
#include "asm.h"
|
|
#include "sound.h"
|
|
|
|
void PicoBloom_Init(Entity*);
|
|
void PicoBloom_Action1(Entity*);
|
|
void PicoBloom_Action2(Entity*);
|
|
|
|
void PicoBloom(Entity* this) {
|
|
static void (*const actionFuncs[])(Entity*) = {
|
|
PicoBloom_Init,
|
|
PicoBloom_Action1,
|
|
PicoBloom_Action2,
|
|
};
|
|
|
|
actionFuncs[this->action](this);
|
|
}
|
|
|
|
void PicoBloom_Init(Entity* this) {
|
|
static const u8 typeAnimationStates[] = { 3, 0, 3, 3, 3, 3 };
|
|
u32 nextAction;
|
|
|
|
nextAction = this->type2;
|
|
if (nextAction != 1) {
|
|
nextAction = 2;
|
|
}
|
|
this->action = nextAction;
|
|
this->actionDelay = (Random() & 0x7f) + 0x7f;
|
|
this->collisionLayer = 1;
|
|
UpdateSpriteForCollisionLayer(this);
|
|
InitializeAnimation(this, typeAnimationStates[this->type] + this->type2);
|
|
}
|
|
|
|
void PicoBloom_Action1(Entity* this) {
|
|
if (--this->actionDelay == 0) {
|
|
this->action++;
|
|
}
|
|
}
|
|
|
|
void PicoBloom_Action2(Entity* this) {
|
|
GetNextFrame(this);
|
|
if (this->frame & 1) {
|
|
this->frame &= ~1;
|
|
EnqueueSFX(SFX_21B);
|
|
}
|
|
}
|