1 /* 2 =========================================================================== 3 Copyright (C) 1999 - 2005, Id Software, Inc. 4 Copyright (C) 2000 - 2013, Raven Software, Inc. 5 Copyright (C) 2001 - 2013, Activision, Inc. 6 Copyright (C) 2013 - 2015, OpenJK contributors 7 8 This file is part of the OpenJK source code. 9 10 OpenJK is free software; you can redistribute it and/or modify it 11 under the terms of the GNU General Public License version 2 as 12 published by the Free Software Foundation. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program; if not, see <http://www.gnu.org/licenses/>. 21 =========================================================================== 22 */ 23 24 #ifndef _CG_PUBLIC_H 25 #define _CG_PUBLIC_H 26 27 #define NUM_EXPLOSION_SHADERS 8 28 #define NUM_EXPLOSION_FRAMES 3 29 30 #define CMD_BACKUP 64 31 #define CMD_MASK (CMD_BACKUP - 1) 32 // allow a lot of command backups for very fast systems 33 // multiple commands may be combined into a single packet, so this 34 // needs to be larger than PACKET_BACKUP 35 36 37 #define MAX_ENTITIES_IN_SNAPSHOT 512 38 39 #define SNAPFLAG_RATE_DELAYED 1 // the server withheld a packet to save bandwidth 40 #define SNAPFLAG_DROPPED_COMMANDS 2 // the server lost some cmds coming from the client 41 42 // snapshots are a view of the server at a given time 43 44 // Snapshots are generated at regular time intervals by the server, 45 // but they may not be sent if a client's rate level is exceeded, or 46 // they may be dropped by the network. 47 struct snapshot_s 48 { 49 int snapFlags; // SNAPFLAG_RATE_DELAYED, SNAPFLAG_DROPPED_COMMANDS 50 51 int serverTime; // server time the message is valid for (in msec) 52 53 byte areamask[MAX_MAP_AREA_BYTES]; // portalarea visibility bits 54 55 int cmdNum; // the next cmdNum the server is expecting 56 // client side prediction should start with this cmd 57 playerState_t ps; // complete information about the current player at this time 58 59 int numEntities; // all of the entities that need to be presented 60 entityState_t entities[MAX_ENTITIES_IN_SNAPSHOT]; // at the time of this snapshot 61 62 int numConfigstringChanges; // configstrings that have changed since the last 63 int configstringNum; // acknowledged snapshot_t (which is usually NOT the previous snapshot!) 64 65 int numServerCommands; // text based server commands to execute when this 66 int serverCommandSequence; // snapshot becomes current 67 }; 68 69 typedef snapshot_s snapshot_t; 70 71 72 /* 73 ================================================================== 74 75 functions imported from the main executable 76 77 ================================================================== 78 */ 79 80 #define CGAME_IMPORT_API_VERSION 4 81 82 typedef enum { 83 CG_PRINT, 84 CG_ERROR, 85 CG_MILLISECONDS, 86 CG_CVAR_REGISTER, 87 CG_CVAR_UPDATE, 88 CG_CVAR_SET, 89 CG_ARGC, 90 CG_ARGV, 91 CG_ARGS, 92 CG_FS_FOPENFILE, 93 CG_FS_READ, 94 CG_FS_WRITE, 95 CG_FS_FCLOSEFILE, 96 CG_SENDCONSOLECOMMAND, 97 CG_ADDCOMMAND, 98 CG_SENDCLIENTCOMMAND, 99 CG_UPDATESCREEN, 100 CG_RMG_INIT, 101 CG_CM_REGISTER_TERRAIN, 102 CG_RE_INIT_RENDERER_TERRAIN, 103 CG_CM_LOADMAP, 104 CG_CM_NUMINLINEMODELS, 105 CG_CM_INLINEMODEL, 106 CG_CM_TEMPBOXMODEL, 107 CG_CM_POINTCONTENTS, 108 CG_CM_TRANSFORMEDPOINTCONTENTS, 109 CG_CM_BOXTRACE, 110 CG_CM_TRANSFORMEDBOXTRACE, 111 CG_CM_MARKFRAGMENTS, 112 CG_CM_SNAPPVS, 113 CG_S_STARTSOUND, 114 CG_S_STARTLOCALSOUND, 115 CG_S_CLEARLOOPINGSOUNDS, 116 CG_S_ADDLOOPINGSOUND, 117 CG_S_STOPSOUNDS, 118 CG_S_UPDATEENTITYPOSITION, 119 CG_S_RESPATIALIZE, 120 CG_S_REGISTERSOUND, 121 CG_S_STARTBACKGROUNDTRACK, 122 CG_R_LOADWORLDMAP, 123 CG_R_REGISTERMODEL, 124 CG_R_REGISTERSKIN, 125 CG_R_REGISTERSHADER, 126 CG_R_REGISTERSHADERNOMIP, 127 CG_R_REGISTERFONT, 128 CG_R_FONTSTRLENPIXELS, 129 CG_R_FONTSTRLENCHARS, 130 CG_R_FONTHEIGHTPIXELS, 131 CG_R_FONTDRAWSTRING, 132 CG_LANGUAGE_ISASIAN, 133 CG_LANGUAGE_USESSPACES, 134 CG_ANYLANGUAGE_READFROMSTRING, 135 CG_R_SETREFRACTIONPROP, 136 CG_R_CLEARSCENE, 137 CG_R_ADDREFENTITYTOSCENE, 138 139 CG_R_INPVS, 140 141 CG_R_GETLIGHTING, 142 CG_R_ADDPOLYTOSCENE, 143 CG_R_ADDLIGHTTOSCENE, 144 CG_R_RENDERSCENE, 145 CG_R_SETCOLOR, 146 CG_R_DRAWSTRETCHPIC, 147 //CG_R_DRAWSCREENSHOT, 148 CG_R_MODELBOUNDS, 149 CG_R_LERPTAG, 150 CG_R_DRAWROTATEPIC, 151 CG_R_DRAWROTATEPIC2, 152 CG_R_SETRANGEFOG, 153 CG_R_LA_GOGGLES, 154 CG_R_SCISSOR, 155 CG_GETGLCONFIG, 156 CG_GETGAMESTATE, 157 CG_GETCURRENTSNAPSHOTNUMBER, 158 CG_GETSNAPSHOT, 159 160 CG_GETDEFAULTSTATE, 161 162 CG_GETSERVERCOMMAND, 163 CG_GETCURRENTCMDNUMBER, 164 CG_GETUSERCMD, 165 CG_SETUSERCMDVALUE, 166 CG_SETUSERCMDANGLES, 167 CG_S_UPDATEAMBIENTSET, 168 CG_S_ADDLOCALSET, 169 CG_AS_PARSESETS, 170 CG_AS_ADDENTRY, 171 CG_AS_GETBMODELSOUND, 172 CG_S_GETSAMPLELENGTH, 173 COM_SETORGANGLES, 174 /* 175 Ghoul2 Insert Start 176 */ 177 CG_G2_LISTBONES, 178 CG_G2_LISTSURFACES, 179 CG_G2_HAVEWEGHOULMODELS, 180 CG_G2_SETMODELS, 181 /* 182 Ghoul2 Insert End 183 */ 184 185 CG_R_GET_LIGHT_STYLE, 186 CG_R_SET_LIGHT_STYLE, 187 CG_R_GET_BMODEL_VERTS, 188 CG_R_WORLD_EFFECT_COMMAND, 189 190 CG_CIN_PLAYCINEMATIC, 191 CG_CIN_STOPCINEMATIC, 192 CG_CIN_RUNCINEMATIC, 193 CG_CIN_DRAWCINEMATIC, 194 CG_CIN_SETEXTENTS, 195 CG_Z_MALLOC, 196 CG_Z_FREE, 197 CG_UI_MENU_RESET, 198 CG_UI_MENU_NEW, 199 CG_UI_SETACTIVE_MENU, 200 CG_UI_MENU_OPENBYNAME, 201 CG_UI_PARSE_INT, 202 CG_UI_PARSE_STRING, 203 CG_UI_PARSE_FLOAT, 204 CG_UI_STARTPARSESESSION, 205 CG_UI_ENDPARSESESSION, 206 CG_UI_PARSEEXT, 207 CG_UI_MENUPAINT_ALL, 208 CG_UI_MENUCLOSE_ALL, 209 CG_UI_STRING_INIT, 210 CG_UI_GETMENUINFO, 211 CG_SP_GETSTRINGTEXTSTRING, 212 CG_UI_GETITEMTEXT, 213 CG_UI_GETITEMINFO, 214 215 // special --eez 216 CG_R_DRAWSCREENSHOT, 217 218 CG_SP_REGISTER, 219 CG_SP_GETSTRINGTEXT, 220 CG_ANYLANGUAGE_READFROMSTRING2, 221 222 CG_OPENJK_MENU_PAINT, 223 CG_OPENJK_GETMENU_BYNAME, 224 } cgameImport_t; 225 226 #ifdef JK2_MODE 227 typedef enum { 228 CG_PRINT_JK2, 229 CG_ERROR_JK2, 230 CG_MILLISECONDS_JK2, 231 CG_CVAR_REGISTER_JK2, 232 CG_CVAR_UPDATE_JK2, 233 CG_CVAR_SET_JK2, 234 CG_ARGC_JK2, 235 CG_ARGV_JK2, 236 CG_ARGS_JK2, 237 CG_FS_FOPENFILE_JK2, 238 CG_FS_READ_JK2, 239 CG_FS_WRITE_JK2, 240 CG_FS_FCLOSEFILE_JK2, 241 CG_SENDCONSOLECOMMAND_JK2, 242 CG_ADDCOMMAND_JK2, 243 CG_SENDCLIENTCOMMAND_JK2, 244 CG_UPDATESCREEN_JK2, 245 CG_CM_LOADMAP_JK2, 246 CG_CM_NUMINLINEMODELS_JK2, 247 CG_CM_INLINEMODEL_JK2, 248 CG_CM_TEMPBOXMODEL_JK2, 249 CG_CM_POINTCONTENTS_JK2, 250 CG_CM_TRANSFORMEDPOINTCONTENTS_JK2, 251 CG_CM_BOXTRACE_JK2, 252 CG_CM_TRANSFORMEDBOXTRACE_JK2, 253 CG_CM_MARKFRAGMENTS_JK2, 254 CG_CM_SNAPPVS_JK2, 255 CG_S_STARTSOUND_JK2, 256 CG_S_STARTLOCALSOUND_JK2, 257 CG_S_CLEARLOOPINGSOUNDS_JK2, 258 CG_S_ADDLOOPINGSOUND_JK2, 259 CG_S_UPDATEENTITYPOSITION_JK2, 260 CG_S_RESPATIALIZE_JK2, 261 CG_S_REGISTERSOUND_JK2, 262 CG_S_STARTBACKGROUNDTRACK_JK2, 263 CG_R_LOADWORLDMAP_JK2, 264 CG_R_REGISTERMODEL_JK2, 265 CG_R_REGISTERSKIN_JK2, 266 CG_R_REGISTERSHADER_JK2, 267 CG_R_REGISTERSHADERNOMIP_JK2, 268 CG_R_REGISTERFONT_JK2, 269 CG_R_FONTSTRLENPIXELS_JK2, 270 CG_R_FONTSTRLENCHARS_JK2, 271 CG_R_FONTHEIGHTPIXELS_JK2, 272 CG_R_FONTDRAWSTRING_JK2, 273 CG_LANGUAGE_ISASIAN_JK2, 274 CG_LANGUAGE_USESSPACES_JK2, 275 CG_ANYLANGUAGE_READFROMSTRING_JK2, 276 CG_R_CLEARSCENE_JK2, 277 CG_R_ADDREFENTITYTOSCENE_JK2, 278 CG_R_GETLIGHTING_JK2, 279 CG_R_ADDPOLYTOSCENE_JK2, 280 CG_R_ADDLIGHTTOSCENE_JK2, 281 CG_R_RENDERSCENE_JK2, 282 CG_R_SETCOLOR_JK2, 283 CG_R_DRAWSTRETCHPIC_JK2, 284 CG_R_DRAWSCREENSHOT_JK2, 285 CG_R_MODELBOUNDS_JK2, 286 CG_R_LERPTAG_JK2, 287 CG_R_DRAWROTATEPIC_JK2, 288 CG_R_DRAWROTATEPIC2_JK2, 289 CG_R_LA_GOGGLES_JK2, 290 CG_R_SCISSOR_JK2, 291 CG_GETGLCONFIG_JK2, 292 CG_GETGAMESTATE_JK2, 293 CG_GETCURRENTSNAPSHOTNUMBER_JK2, 294 CG_GETSNAPSHOT_JK2, 295 CG_GETSERVERCOMMAND_JK2, 296 CG_GETCURRENTCMDNUMBER_JK2, 297 CG_GETUSERCMD_JK2, 298 CG_SETUSERCMDVALUE_JK2, 299 CG_SETUSERCMDANGLES_JK2, 300 CG_S_UPDATEAMBIENTSET_JK2, 301 CG_S_ADDLOCALSET_JK2, 302 CG_AS_PARSESETS_JK2, 303 CG_AS_ADDENTRY_JK2, 304 CG_AS_GETBMODELSOUND_JK2, 305 CG_S_GETSAMPLELENGTH_JK2, 306 COM_SETORGANGLES_JK2, 307 /* 308 Ghoul2 Insert Start 309 */ 310 CG_G2_LISTBONES_JK2, 311 CG_G2_LISTSURFACES_JK2, 312 CG_G2_HAVEWEGHOULMODELS_JK2, 313 CG_G2_SETMODELS_JK2, 314 /* 315 Ghoul2 Insert End 316 */ 317 318 CG_R_GET_LIGHT_STYLE_JK2, 319 CG_R_SET_LIGHT_STYLE_JK2, 320 CG_R_GET_BMODEL_VERTS_JK2, 321 CG_R_WORLD_EFFECT_COMMAND_JK2, 322 323 CG_CIN_PLAYCINEMATIC_JK2, 324 CG_CIN_STOPCINEMATIC_JK2, 325 CG_CIN_RUNCINEMATIC_JK2, 326 CG_CIN_DRAWCINEMATIC_JK2, 327 CG_CIN_SETEXTENTS_JK2, 328 CG_Z_MALLOC_JK2, 329 CG_Z_FREE_JK2, 330 CG_UI_MENU_RESET_JK2, 331 CG_UI_MENU_NEW_JK2, 332 CG_UI_PARSE_INT_JK2, 333 CG_UI_PARSE_STRING_JK2, 334 CG_UI_PARSE_FLOAT_JK2, 335 CG_UI_STARTPARSESESSION_JK2, 336 CG_UI_ENDPARSESESSION_JK2, 337 CG_UI_PARSEEXT_JK2, 338 CG_UI_MENUPAINT_ALL_JK2, 339 CG_UI_STRING_INIT_JK2, 340 CG_UI_GETMENUINFO_JK2, 341 CG_SP_REGISTER_JK2, 342 CG_SP_GETSTRINGTEXTSTRING_JK2, 343 CG_SP_GETSTRINGTEXT_JK2, 344 CG_UI_GETITEMTEXT_JK2, 345 CG_ANYLANGUAGE_READFROMSTRING2_JK2, 346 347 CG_OPENJK_MENU_PAINT_JK2, 348 CG_OPENJK_GETMENU_BYNAME_JK2, 349 } cgameJK2Import_t; 350 #endif 351 352 //---------------------------------------------- 353 354 #endif // _CG_PUBLIC_H 355