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