#ifndef TILEMAP_H #define TILEMAP_H typedef struct Tilemap_ Tilemap; #include "area.h" #include "tile.h" #include "tilepane.h" /* Tile maps have at most 4 panes. */ #define TILEMAP_PANES 4 Image * image_loadtexture (const char * category , int index ); Tilemap * tilemap_done (Tilemap * self ); Tilemap * tilemap_init (Tilemap * self , Tileset * set , int w , int h, Area * areq ); Tilemap * tilemap_free (Tilemap * map ); Tilemap * tilemap_new (Tileset * set , int w , int h, Area * area ); int tilemap_panes(Tilemap * self); Tilepane * tilemap_pane (Tilemap * self , int index ); Tilepane * tilemap_pane_ (Tilemap * self , int index , Tilepane * pane ); Tilepane * tilemap_panenew (Tilemap * self , int index , int w , int h ); Tile * tilemap_get (Tilemap * self , int l , int x , int y ); int tile_thingkind (Tile * tile ); Thing * tilemap_tiletothing (Tilemap * self , int l , int x , int y , Tile * tile ); Tile * tilemap_settile (Tilemap * self , int l , int x , int y , Tile * tile ); Tile * tilemap_setindex (Tilemap * self , int l , int x , int y , int index ); Tile * tilemap_rect (Tilemap * self , int l , int x , int y , int w , int h , Tile * tile ); Tile * tilemap_fill (Tilemap * self , int l , Tile * tile ); int tilemap_getindex (Tilemap * self , int l , int x , int y ); Thing * tilemap_addtilething (Tilemap * self , int kind , int tx , int ty , int layer ); void tilemap_draw (Tilemap * map , Camera * camera ); void tilemap_update (Tilemap * map , double dt ); Thing * tilemap_addthing(Tilemap * self , int index, int kind , int x , int y , int z , int w , int h); Lockin * tilepane_lockin (Tilepane * pane , Camera * camera ); Lockin * tilemap_layer_lockin (Tilemap * map , int layer , Camera * camera ); int tilemap_gridwide(Tilemap * self); int tilemap_gridhigh(Tilemap * self); Area * tilemap_area(Tilemap * self); Thing * tilemap_thing(Tilemap * self, int index); bool tilemap_init_blend(Tilemap * self); void tilemap_draw_layer(Tilemap * map, Camera * camera, int layer); void tilemap_draw_layer_shadows(Tilemap * map, Camera * camera, int layer); /* This is here in stead of in area.h to avoid cyclical dependencies. */ ERES area_tilemap_(Area * self, Tilemap * map); void tilemap_draw_layer_tiles(Tilemap * map, Camera * camera, int layer); void tilemap_draw_layer_blends(Tilemap * map, Camera * camera, int layer); Tileset * tilemap_tileset(Tilemap * me); int tilemap_firstgid(Tilemap * me); int tilemap_set_flags(Tilemap * self, int l, int x, int y, int flags); int tilemap_get_flags(Tilemap * self, int l, int x, int y); #ifdef COMMENT_ Tilepane * tilepane_savefile (Tilepane *pane , int paneid , FILE *fout ); Tilemap * tilemap_savefile (Tilemap * map , FILE * fout ); Tilemap * tilemap_save (Tilemap * map , int index ); int tilemap_track (Tracker * tracker , void * data ); #endif #endif