#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 struct { int id; char *type; unsigned char *data; } XdTexture; 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]; XdEntity *entities[XD_MAX_ENTITIES]; XdLevel *levels[]; } XdData; XdData Xd_LoadFromFile(const char *filePath); void Xd_SaveFile(const char *filePath, XdData *xd); #endif