summaryrefslogtreecommitdiff
path: root/src/battle/anim/rain.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-23 13:39:13 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-23 13:39:13 -0500
commit73c16c109cdb996fa59f5aa63e9f030c21cbe54f (patch)
treeb0b4b7eefc77441d711105cf036b273f22ce2ec2 /src/battle/anim/rain.c
parent56bf99fd9106b3cc8fac45cc051cbeeec40e34aa (diff)
parentaa13f45ebb79aed62171fbfe654d8b542fc9aa6c (diff)
Merge branch 'master' into slot_machine
Diffstat (limited to 'src/battle/anim/rain.c')
-rw-r--r--src/battle/anim/rain.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/battle/anim/rain.c b/src/battle/anim/rain.c
new file mode 100644
index 000000000..b38233e3c
--- /dev/null
+++ b/src/battle/anim/rain.c
@@ -0,0 +1,56 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "random.h"
+#include "sprite.h"
+#include "task.h"
+
+extern s16 gBattleAnimArgs[8];
+extern const struct SpriteTemplate gSpriteTemplate_83D9130[];
+
+static void MoveAnimRaindrop(struct Sprite *);
+
+// rain (spawns and animates raindrops)
+// Used in Rain Dance and general rain animation.
+
+void CreateAnimRaindrops(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ }
+
+ gTasks[taskId].data[0]++;
+
+ if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1)
+ {
+ u8 x = Random() % 240;
+ u8 y = Random() % 80;
+ CreateSprite(gSpriteTemplate_83D9130, x, y, 4);
+ }
+
+ if (gTasks[taskId].data[0] == gTasks[taskId].data[3])
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void SetAnimRaindropCallback(struct Sprite *sprite)
+{
+ sprite->callback = MoveAnimRaindrop;
+}
+
+static void MoveAnimRaindrop(struct Sprite *sprite)
+{
+ if (++sprite->data[0] <= 13)
+ {
+ sprite->pos2.x++;
+ sprite->pos2.y += 4;
+ }
+
+ if (sprite->animEnded)
+ {
+ DestroySprite(sprite);
+ }
+}