#ifndef _tilemap_h #define _tilemap_h #include "corelib/render.h" #define TILEMAP_MAX_SIZE 16384 #define TILESET_MAX_SIZE 255 typedef struct tile_t { sprite_t sprite; short walkable; } tile_t; typedef struct tileset_t { tile_t* set; size_t size; } tileset_t; typedef struct tilemap_t { size_t tiles[TILEMAP_MAX_SIZE]; int width, height; float x, y; } tilemap_t; static inline int get_tilemap_index(const tilemap_t* tilemap, int x, int y) { return x + y * tilemap->width; } static inline size_t get_tile(const tilemap_t* tilemap, int x, int y) { return *(tilemap->tiles + get_tilemap_index(tilemap, x, y)); } static inline void set_tile(tilemap_t* tilemap, int x, int y, size_t value) { *(tilemap->tiles + get_tilemap_index(tilemap, x, y)) = value; } extern void draw_tilemap(const tilemap_t* tilemap, const tileset_t* tileset); /*load csv tilemap from file*/ extern int load_tilemap(tilemap_t* tilemap, const char* file); /*write csv tilemap to file*/ extern int save_tilemap(const tilemap_t* tilemap, const char* file); #endif /* _tilemap_h */