diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-23 12:57:46 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-23 12:57:46 -0500 |
commit | fdd7e7cb848747a1e0ace8a63d29aaa22dfd1140 (patch) | |
tree | 6ddaed4de52bfcc517d573a8f30c5bd0a1650782 /src/battle/anim/rain.c | |
parent | bb8f652504f886af296ffcaac57bf76cdc893c97 (diff) | |
parent | 1c1ce902515ccb3ccecde29611711c9b1a3ce955 (diff) |
Merge branch 'master' into cable_car
Diffstat (limited to 'src/battle/anim/rain.c')
-rw-r--r-- | src/battle/anim/rain.c | 56 |
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); + } +} |