1 //
2 // Definitions of common game-only data structures/functions
3 // (and declarations of data appearing in both)
4 // for EDuke32 and Mapster32
5 //
6 
7 #ifndef EDUKE32_COMMON_GAME_H_
8 #define EDUKE32_COMMON_GAME_H_
9 
10 #include "build.h"
11 
12 #include "collections.h"
13 #include "grpscan.h"
14 
15 #include "vfs.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21     extern int g_useCwd;
22 
23 #ifndef APPNAME
24 #define APPNAME             "Witchaven"
25 #endif
26 
27 #ifndef APPBASENAME
28 #define APPBASENAME         "witchaven"
29 #endif
30 
31 #define GAMEFLAG_WH1        0x00000001
32 #define GAMEFLAG_WH2        0x00000002
33 #define GAMEFLAGMASK        0x000000FF // flags allowed from grpinfo
34 
35 extern struct grpfile_t const* g_selectedGrp;
36 
37 extern int32_t g_gameType;
38 extern int     g_addonNum;
39 
40 #define WH1               (g_gameType & GAMEFLAG_WH1)
41 #define WH2               (g_gameType & GAMEFLAG_WH2)
42 
43 
44 enum Games_t {
45     GAME_WH = 0,
46     GAME_WH2,
47     GAMECOUNT
48 };
49 
50 enum searchpathtypes_t {
51     SEARCHPATH_REMOVE = 1 << 0,
52 };
53 
54 enum basepal_t {
55     BASEPAL = 0,
56     ANIMPAL,
57     BASEPALCOUNT
58 };
59 
60 #define OSDTEXT_DEFAULT   "^00"
61 #define OSDTEXT_DARKRED   "^10"
62 #define OSDTEXT_GREEN     "^11"
63 #define OSDTEXT_RED       "^21"
64 #define OSDTEXT_YELLOW    "^23"
65 
66 #define OSDTEXT_BRIGHT    "^S0"
67 
68 #define OSD_ERROR OSDTEXT_DARKRED OSDTEXT_BRIGHT
69 
70 extern const char* g_gameNamePtr;
71 
72 extern char* g_grpNamePtr;
73 extern char* g_scriptNamePtr;
74 extern char* g_rtsNamePtr;
75 
76 extern const char* G_DefaultGrpFile(void);
77 extern const char* G_GrpFile(void);
78 
79 extern const char* G_DefaultConFile(void);
80 extern const char* G_ConFile(void);
81 
82 extern GrowArray<char*> g_scriptModules;
83 
84 extern void G_AddCon(const char* buffer);
85 extern void G_AddConModule(const char* buffer);
86 
87 extern void clearGrpNamePtr(void);
88 extern void clearScriptNamePtr(void);
89 
90 extern int loaddefinitions_game(const char* fn, int32_t preload);
91 extern int32_t g_groupFileHandle;
92 
93 //////////
94 
95 extern void G_InitMultiPsky(int CLOUDYOCEAN__DYN, int MOONSKY1__DYN, int BIGORBIT1__DYN, int LA__DYN);
96 extern void G_SetupGlobalPsky(void);
97 
98 //////////
99 
100 extern char g_modDir[BMAX_PATH];
101 extern buildvfs_kfd kopen4loadfrommod(const char* filename, char searchfirst);
102 
103 extern void G_AddSearchPaths(void);
104 extern void G_CleanupSearchPaths(void);
105 
106 extern void G_ExtPreInit(int32_t argc, char const* const* argv);
107 extern void G_ExtInit(void);
108 extern void G_ScanGroups(void);
109 extern void G_LoadGroups(int32_t autoload);
110 
111 extern const char* G_GetInstallPath(int32_t insttype);
112 
113 //////////
114 
115 void G_LoadGroupsInDir(const char* dirname);
116 void G_DoAutoload(const char* dirname);
117 
118 //////////
119 
120 extern void G_LoadLookups(void);
121 
122 //////////
123 
124 #if defined HAVE_FLAC || defined HAVE_VORBIS
125 # define FORMAT_UPGRADE_ELIGIBLE
126     extern int g_maybeUpgradeSoundFormats;
127     extern buildvfs_kfd S_OpenAudio(const char* fn, char searchfirst, uint8_t ismusic);
128 #else
129 # define S_OpenAudio(fn, searchfirst, ismusic) kopen4loadfrommod(fn, searchfirst)
130 #endif
131 
132 #ifdef __cplusplus
133 }
134 #endif
135 
136 #endif
137