summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-17 13:59:30 -0400
committerscnorton <scnorton@biociphers.org>2017-09-17 13:59:30 -0400
commit283d9060a78cbf618c2c3807f3fa8e3b4b240c0d (patch)
treeb4a969d5d2241cd535245da86798ffb659063167 /src
parent71b40f50c0de173913d11f1e5bc228060cb4a49b (diff)
Some functions relating to affine animations
Diffstat (limited to 'src')
-rwxr-xr-xsrc/field_map_obj.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index cc645751c..3e72f538c 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -4769,3 +4769,57 @@ bool8 sub_80956B4(struct MapObject *mapObject, struct Sprite *sprite)
sprite->data2 = 1;
return TRUE;
}
+
+bool8 sub_80956C4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sprite->oam.affineMode = 3;
+ InitSpriteAffineAnim(sprite);
+ sprite->affineAnimPaused = TRUE;
+ sprite->subspriteMode = 0;
+ return TRUE;
+}
+
+bool8 sub_80956F4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = 0;
+ CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
+ return TRUE;
+}
+
+bool8 sub_8095724(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_27 = TRUE;
+ return TRUE;
+}
+
+bool8 sub_8095730(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_27 = FALSE;
+ return TRUE;
+}
+
+#define affine_an_walk_any_2_macro(name, fn, fn2, action, anim, ...)\
+static bool8 name##_2(struct MapObject *, struct Sprite *);\
+bool8 name(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ fn(mapObject, sprite, __VA_ARGS__);\
+ sprite->affineAnimPaused = FALSE;\
+ action(sprite, anim);\
+ return name##_2(mapObject, sprite);\
+}\
+static bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ if (fn2(mapObject, sprite))\
+ {\
+ sprite->affineAnimPaused = TRUE;\
+ sprite->data2 = 2;\
+ return TRUE;\
+ }\
+ return FALSE;\
+}\
+
+affine_an_walk_any_2_macro(sub_8095740, sub_8093B60, an_walk_any_2, StartSpriteAffineAnimIfDifferent, 0, DIR_SOUTH)
+affine_an_walk_any_2_macro(sub_80957A0, sub_8093B60, an_walk_any_2, ChangeSpriteAffineAnimIfDifferent, 1, DIR_SOUTH)
+affine_an_walk_any_2_macro(sub_8095800, do_go_anim, npc_obj_ministep_stop_on_arrival, ChangeSpriteAffineAnimIfDifferent, 2, DIR_WEST, 1)
+affine_an_walk_any_2_macro(sub_8095860, do_go_anim, npc_obj_ministep_stop_on_arrival, ChangeSpriteAffineAnimIfDifferent, 3, DIR_EAST, 1)