summaryrefslogtreecommitdiff
path: root/include/field_map_obj.h
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-05-22 14:40:21 -0400
committerscnorton <scnorton@biociphers.org>2017-05-24 16:14:50 -0400
commit4c42206a7f63b2045eae85ad2b4a60a630178d4c (patch)
tree1893b75e37979ff8744f0e5ffbc3da5a5445e7da /include/field_map_obj.h
parent42e6ed382f1e9fdf3f28e2dd048fc99bbd56b347 (diff)
Create and propagate field map object callback declaration macro
Diffstat (limited to 'include/field_map_obj.h')
-rw-r--r--include/field_map_obj.h43
1 files changed, 26 insertions, 17 deletions
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 4c2d4c705..00fda8358 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -3,40 +3,49 @@
#include "sprite.h"
+#define fieldmap_object_cb(setup, callback, table) \
+extern u8 (*const table[])(struct MapObject *, struct Sprite *);\
+static u8 callback(struct MapObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ meta_step(&gMapObjects[sprite->data0], sprite, callback);\
+}\
+static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ return table[sprite->data1](mapObject, sprite);\
+}
+
+#define fieldmap_object_null_cb(setup, callback) \
+static u8 callback(struct MapObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ meta_step(&gMapObjects[sprite->data0], sprite, callback);\
+}\
+static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ return 0;\
+}
+
void sub_805C058(struct MapObject *mapObject, s16 a, s16 b);
void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18);
void MoveCoords(u8 direction, s16 *x, s16 *y);
-void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)());
+void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)(struct MapObject *, struct Sprite *));
+void npc_reset(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_08375240[4];
extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3);
-extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite);
-extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_083752A0[2];
-extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_083752C0[2];
-extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite);
-extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite);
-extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite);
-extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite);
-extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_08375320[2];
-extern u8 (*const gUnknown_08375324[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_08375338[2];
-extern u8 (*const gUnknown_0837533C[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_08375350[2];
-extern u8 (*const gUnknown_08375354[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_08375368[2];
-extern u8 (*const gUnknown_0837536C[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_08375380[2];
-extern u8 (*const gUnknown_08375384[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_08375398[2];
-extern u8 (*const gUnknown_0837539C[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_083753B0[2];
-extern u8 (*const gUnknown_083753B4[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_083753C8[2];
-extern u8 (*const gUnknown_083753CC[])(struct MapObject *mapObject, struct Sprite *sprite);
extern const u8 gUnknown_083753DC[5];
+extern const u8 gUnknown_083753F4[5];
#endif // GUARD_FIELD_MAP_OBJ_H