ByteArray: improve error message on mmap failure
[rofl0r-agsutils.git] / DataFile.h
blob11aec9dd6266ccd10c86ceecc96fb3d37dac8388
1 #ifndef DATAFILE_H
2 #define DATAFILE_H
4 #include "File.h"
5 #include "Script.h"
7 typedef struct AgsGameData {
8 size_t fontcount;
9 size_t cursorcount;
10 size_t charactercount;
11 size_t inventorycount;
12 size_t viewcount;
13 size_t dialogcount;
14 size_t globalmessagecount;
15 unsigned color_depth;
16 int hasdict;
17 } AGD;
19 typedef struct AgsDataFile {
20 AF f_b;
21 AF *f;
22 int version;
23 unsigned numsprites;
24 size_t globalvarcount;
25 AGD game;
26 char **cursornames;
27 char **characternames;
28 char **characterscriptnames;
29 size_t scriptcount;
30 size_t scriptstart;
31 size_t scriptend;
32 off_t spriteflagsstart;
33 ASI globalscript;
34 ASI dialogscript;
35 ASI scripts[50];
36 unsigned short *dialog_codesize;
37 char** old_dialogscripts;
38 size_t guicount;
39 char **guinames;
40 char **viewnames;
41 char **inventorynames;
42 } ADF;
44 enum ADF_open_error {
45 AOE_success = 0,
46 AOE_open,
47 AOE_read,
48 AOE_sig,
49 AOE_header,
50 AOE_gamebase,
51 AOE_cursors,
52 AOE_interaction,
53 AOE_dictionary,
54 AOE_script,
55 AOE_view,
56 AOE_character,
57 AOE_lipsync,
58 AOE_msg,
59 AOE_dialogtopic,
60 AOE_dialog,
61 AOE_guis,
62 AOE_props,
63 AOE_views,
64 AOE_inventories,
66 const char *AOE2str(enum ADF_open_error e);
68 int ADF_find_datafile(const char *dir, char *fnbuf, size_t flen);
69 enum ADF_open_error ADF_open(ADF* a, const char *filename);
70 void ADF_close(ADF* a);
72 ASI* ADF_open_objectfile(ADF* a, char* fn);
73 ASI* ADF_get_script(ADF* a, size_t index);
74 ASI* ADF_get_global_script(ADF* a);
75 ASI* ADF_get_dialog_script(ADF* a);
76 size_t ADF_get_scriptcount(ADF* a);
77 #define ADF_get_spritecount(A) (A)->numsprites
78 #define ADF_get_spriteflagsstart(A) (A)->spriteflagsstart
79 #define ADF_get_cursorcount(A) (A)->game.cursorcount
80 #define ADF_get_cursorname(A, N) (A)->cursornames[N]
81 #define ADF_get_charactercount(A) (A)->game.charactercount
82 #define ADF_get_characterscriptname(A, N) (A)->characterscriptnames[N]
83 #define ADF_get_guicount(A) (A)->guicount
84 #define ADF_get_guiname(A, N) (A)->guinames[N]
85 #define ADF_get_viewcount(A) (A)->game.viewcount
86 #define ADF_get_viewname(A, N) (A)->viewnames[N]
87 #define ADF_get_inventorycount(A) (A)->game.inventorycount
88 #define ADF_get_inventoryname(A, N) (A)->inventorynames[N]
91 #pragma RcB2 DEP "DataFile.c"
93 #endif