diff options
| author | johannes <johannes.herman@gmail.com> | 2024-02-06 12:29:41 +0100 |
|---|---|---|
| committer | johannes <johannes.herman@gmail.com> | 2024-02-06 12:29:41 +0100 |
| commit | 0ab2c0afc6fd192f4008962ef400b92434e2dc2d (patch) | |
| tree | 31ff61e1945850048ac6b82f23cb428d62e0cb70 /inc/demo.h | |
| parent | 1bdee2153953e23bf71f7a5e83145bb4d67db567 (diff) | |
added read snap and read tick
Diffstat (limited to 'inc/demo.h')
| -rw-r--r-- | inc/demo.h | 83 |
1 files changed, 77 insertions, 6 deletions
@@ -9,10 +9,10 @@ typedef struct unsigned char version; char netversion[64]; char mapname[64]; - unsigned char mapsize[4]; // Big endian int - unsigned char mapcrc[4]; // Big endian int + unsigned char mapsize[4]; // Big endian int + unsigned char mapcrc[4]; // Big endian int char type[8]; - unsigned char length[4]; // Big endian int + unsigned char length[4]; // Big endian int char timestamp[20]; } demoheader; @@ -22,13 +22,84 @@ typedef struct char data[260]; } demotimeline; +/* demomap struct */ +typedef struct +{ + unsigned char sha256[32]; + unsigned char *data; +} demomap; + +typedef struct +{ + unsigned short type; + unsigned short id; + int numdata; + int *data; +} demosnapitem; + +/* Chunk types */ +typedef struct +{ + int datasize; + int numitems; + int *offsets; + demosnapitem *items; +} demosnap; + +typedef struct +{ + char keyframe; + char innline; + int delta; +} demotick; + +typedef struct +{ +} demodelta; + +typedef struct +{ +} demomessage; + +/* union for different chunks */ +typedef union { + demosnap *snap; + demotick *tick; + demodelta *delta; + demomessage *message; +} chunkdata; + +/* demochunk struct */ +typedef struct +{ + unsigned char type; + chunkdata data; +} demochunk; + +/* demodata struct, stores all chunks */ +typedef struct +{ + int numchunks; + demochunk *chunks; +} demodata; + /* Read demo header from demofile into given demoheader */ /* Returns a positive number on success, negative on fail */ -int readdemoheader(FILE *demofile, demoheader *demoheader); +int readdemoheader(FILE *demofile, demoheader *header); /* Read demo timeline from demofile into given demoheader */ /* Returns a positive number on success, negative on fail */ /* Must have read the header from demofile beforehand */ -int readdemotimeline(FILE *demofile, demotimeline *demotimeline); +int readdemotimeline(FILE *demofile, demotimeline *timeline); + +/* Read demo map from demofile into given demomap */ +/* Returns a positive number on success, negative on fail */ +/* Must have read the demoheader and demotimeline beforehand */ +int readdemomap(FILE *demofile, demomap *map, int mapsize); + +/* Reads a chunk from demofile into given chunk */ +/* Returns a positive number on success, 0 on EOF, and negative number on error */ +/* Will allocate memory if chunk is snap, delta or message */ +int readdemochunk(FILE *demofile, demochunk *chunk, unsigned char version); -#endif // DEMO_H
\ No newline at end of file +#endif // DEMO_H |
