diff options
| author | notyourav <65437533+notyourav@users.noreply.github.com> | 2022-03-19 18:17:59 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-19 18:17:59 -0700 |
| commit | 88330fa5b710346cfffa89935abfa255a1628409 (patch) | |
| tree | 72d20ecb25dda3c94e412cdb61272e7c6ac975d6 /src | |
| parent | 60db1d0cd1e135dc0f30b05822dc6e0b1a0054f8 (diff) | |
| parent | 9aecd883568759da417bfb2958f31a965049bd3c (diff) | |
Merge pull request #454 from hatal175/picobloom
Diffstat (limited to 'src')
| -rw-r--r-- | src/object/picoBloom.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/object/picoBloom.c b/src/object/picoBloom.c new file mode 100644 index 00000000..de912b8a --- /dev/null +++ b/src/object/picoBloom.c @@ -0,0 +1,47 @@ +#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); + } +} |
