#ifndef __XD_H__ #define __XD_H__ #define XD_VERSION 1 #define XD_MAX_ENTITIES 256 #define XD_MAX_TEXTURES 256 typedef enum { PLAYER_START = 0, NEXT_FLOOR, PREVIOUS_FLOOR } XdEntityType; typedef enum { TILE_FLOOR = 0, TILE_WALL, TILE_CORNER } XdTileType; typedef struct { char *type; unsigned char *data; int width, height, dataSize; } XdTexture; typedef struct { XdTexture *texture; int id; XdTileType type; } XdTile; typedef struct { int id; XdTileType type; } XdTileData; typedef struct { int x, y; XdTexture *texture; } XdMapTile; typedef struct { int id; XdTexture *texture; XdEntityType type; } XdEntity; typedef struct { int x, y; XdEntity *entity; } XdMapEntity; typedef struct { int zIndex; XdMapEntity *entities[XD_MAX_ENTITIES]; XdMapTile *tiles[]; } XdMapLayer; typedef struct { int width, height; XdMapLayer *layers[]; } XdFloor; typedef struct { int id; XdFloor *floors[]; } XdLevel; typedef struct { char *name; int version; XdTexture *textures[XD_MAX_TEXTURES]; XdTile *tiles[XD_MAX_TEXTURES]; XdEntity *entities[XD_MAX_ENTITIES]; XdLevel *levels[]; } XdData; XdData Xd_LoadFromFile(const char *filePath); void Xd_SaveFile(const char *filePath, XdData *xd); #endif