summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornotyourav <65437533+notyourav@users.noreply.github.com>2022-03-19 18:17:59 -0700
committerGitHub <noreply@github.com>2022-03-19 18:17:59 -0700
commit88330fa5b710346cfffa89935abfa255a1628409 (patch)
tree72d20ecb25dda3c94e412cdb61272e7c6ac975d6 /src
parent60db1d0cd1e135dc0f30b05822dc6e0b1a0054f8 (diff)
parent9aecd883568759da417bfb2958f31a965049bd3c (diff)
Merge pull request #454 from hatal175/picobloom
Diffstat (limited to 'src')
-rw-r--r--src/object/picoBloom.c47
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);
+ }
+}