diff options
Diffstat (limited to 'include/field_map_obj.h')
-rw-r--r-- | include/field_map_obj.h | 43 |
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 |