diff options
| author | ilotterytea <iltsu@alright.party> | 2025-01-19 01:31:01 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-01-19 01:50:45 +0500 |
| commit | 940e7825753b2a72a253199cb33767e04257dbd4 (patch) | |
| tree | 81623aee3418e9e49d46faa42471f41e1fb73922 /src/xd.h | |
| parent | 6c4ecd35da17e07b743d4ef75e234383317d22ac (diff) | |
feat: xd format
Diffstat (limited to 'src/xd.h')
| -rw-r--r-- | src/xd.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/xd.h b/src/xd.h new file mode 100644 index 0000000..5ecd465 --- /dev/null +++ b/src/xd.h @@ -0,0 +1,59 @@ +#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 |
