#ifndef _fencer_tilemap_h #define _fencer_tilemap_h #include "physics_entity.h" #include "spritesheet.h" #include "tileset.h" #include "rigidbody.h" #include "level.h" #include "collision.h" typedef struct TileInstance TileInstance; typedef struct Tilemap Tilemap; extern Tilemap* tilemap_from_autolayer(cJSON* json); extern void tilemap_destroy(Tilemap* self); extern void tilemap_set_tileset(Tilemap* self, Tileset* set); extern void tilemap_draw(Tilemap* self, Transform transform); extern size_t tilemap_get_tile_count(Tilemap* self); extern TileInstance* tilemap_get_tile(Tilemap* self, size_t at); extern Transform* tilemap_get_transform(Tilemap* self); extern RigidBody* tile_instance_get_rigidbody(TileInstance* self); extern Transform* tile_instance_get_transform(TileInstance* self); extern Shape* tile_instance_get_shape(TileInstance* self); extern void tile_instance_on_collision(TileInstance* self, Collision collision); extern void tile_instance_solve_contacts(TileInstance* self, List* contacts); impl_Transformable_for(Tilemap, tilemap_get_transform ) impl_Transformable_for(TileInstance, tile_instance_get_transform ) impl_PhysicsEntity_for(TileInstance, tile_instance_get_rigidbody, tile_instance_get_shape, tile_instance_on_collision, tile_instance_solve_contacts ) #endif // !_fencer_tilemap_h