#include "global.h" #include "rom_8077ABC.h" #include "trig.h" #include "battle_anim.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; static void AnimMovePowderParticleStep(struct Sprite* sprite); // Animates the falling particles that horizontally wave back and forth. // Used by Sleep Powder, Stun Spore, and Poison Powder. // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: total duration in frames // arg 3: vertical movement speed (sub-pixel value) // arg 4: wave amplitude // arg 5: wave speed void AnimMovePowderParticle(struct Sprite* sprite) { sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; if (GetBankSide(gAnimBankAttacker)) { sprite->data[3] = -gBattleAnimArgs[4]; } else { sprite->data[3] = gBattleAnimArgs[4]; } sprite->data[4] = gBattleAnimArgs[5]; sprite->callback = AnimMovePowderParticleStep; } static void AnimMovePowderParticleStep(struct Sprite* sprite) { if (sprite->data[0] > 0) { sprite->data[0]--; sprite->pos2.y = sprite->data[2] >> 8; sprite->data[2] += sprite->data[1]; sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]); sprite->data[5] = (sprite->data[5] + sprite->data[4]) & 0xFF; } else { DestroyAnimSprite(sprite); } }