diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-23 13:32:58 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-23 13:32:58 -0500 |
commit | 65e35eb2195277214cfaecec183a2fba64e8e538 (patch) | |
tree | c073aceff1ceba29fdb4d65767a18a07c15c7117 /src/battle/anim/rain.c | |
parent | 6675a6782f3c9be808672aa12c061f1d3f1f5d2e (diff) | |
parent | aa13f45ebb79aed62171fbfe654d8b542fc9aa6c (diff) |
Merge branch 'master' into decompile_data
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); + } +} |