diff options
author | camthesaxman <cameronghall@cox.net> | 2017-11-08 17:25:26 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-11-08 17:25:26 -0600 |
commit | fc11078cef11edc9deedd08c6175fb5e6628504c (patch) | |
tree | 62823b5dc1335a4d8659104dc4156713674ce757 /src/battle/smokescreen.c | |
parent | ba06c424c974f18f9c4af85eb0ffe8adc6056941 (diff) | |
parent | 8832b766facd48c85c1b99ac6dad555f1e2aa1c7 (diff) |
fix merge conflicts
Diffstat (limited to 'src/battle/smokescreen.c')
-rw-r--r-- | src/battle/smokescreen.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/battle/smokescreen.c b/src/battle/smokescreen.c new file mode 100644 index 000000000..8345cb6ad --- /dev/null +++ b/src/battle/smokescreen.c @@ -0,0 +1,73 @@ +#include "global.h" +#include "data2.h" +#include "decompress.h" +#include "sprite.h" +#include "util.h" + + +static void sub_8046388(struct Sprite *); + + +u8 sub_8046234(s16 x, s16 y, u8 a3) +{ + u8 mainSpriteId; + u8 spriteId1, spriteId2, spriteId3, spriteId4; + struct Sprite *mainSprite; + + if (GetSpriteTileStartByTag(gUnknown_081FAEA4.tag) == 0xFFFF) + { + LoadCompressedObjectPic(&gUnknown_081FAEA4); + LoadCompressedObjectPalette(&gUnknown_081FAEAC); + } + + mainSpriteId = CreateInvisibleSpriteWithCallback(sub_8046388); + mainSprite = &gSprites[mainSpriteId]; + mainSprite->data1 = a3; + + spriteId1 = CreateSprite(&gSpriteTemplate_81FAF0C, x - 16, y - 16, 2); + gSprites[spriteId1].data0 = mainSpriteId; + mainSprite->data0++; + AnimateSprite(&gSprites[spriteId1]); + + spriteId2 = CreateSprite(&gSpriteTemplate_81FAF0C, x, y - 16, 2); + gSprites[spriteId2].data0 = mainSpriteId; + mainSprite->data0++; + StartSpriteAnim(&gSprites[spriteId2], 1); + AnimateSprite(&gSprites[spriteId2]); + + spriteId3 = CreateSprite(&gSpriteTemplate_81FAF0C, x - 16, y, 2); + gSprites[spriteId3].data0 = mainSpriteId; + mainSprite->data0++; + StartSpriteAnim(&gSprites[spriteId3], 2); + AnimateSprite(&gSprites[spriteId3]); + + spriteId4 = CreateSprite(&gSpriteTemplate_81FAF0C, x, y, 2); + gSprites[spriteId4].data0 = mainSpriteId; + mainSprite->data0++; + StartSpriteAnim(&gSprites[spriteId4], 3); + AnimateSprite(&gSprites[spriteId4]); + + return mainSpriteId; +} + +static void sub_8046388(struct Sprite *sprite) +{ + if (!sprite->data0) + { + FreeSpriteTilesByTag(gUnknown_081FAEA4.tag); + FreeSpritePaletteByTag(gUnknown_081FAEAC.tag); + if (!sprite->data1) + DestroySprite(sprite); + else + sprite->callback = SpriteCallbackDummy; + } +} + +void sub_80463CC(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + gSprites[sprite->data0].data0--; + DestroySprite(sprite); + } +} |