]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
Merge branch 'master' into Mario/wrath-darkplaces_extra
authorCloudwalk <cloudwalk009@gmail.com>
Tue, 25 Aug 2020 14:48:35 +0000 (10:48 -0400)
committerCloudwalk <cloudwalk009@gmail.com>
Tue, 25 Aug 2020 14:48:35 +0000 (10:48 -0400)
25 files changed:
1  2 
cl_input.c
cl_parse.c
cl_particles.c
cl_screen.c
client.h
clvm_cmds.c
cmd.c
com_game.c
common.h
fs.c
gl_draw.c
gl_rmain.c
keys.c
makefile.inc
menu.c
mvm_cmds.c
prvm_cmds.c
prvm_cmds.h
quakedef.h
sv_main.c
sv_move.c
sv_phys.c
svvm_cmds.c
vid_shared.c
view.c

diff --cc cl_input.c
Simple merge
diff --cc cl_parse.c
Simple merge
diff --cc cl_particles.c
Simple merge
diff --cc cl_screen.c
Simple merge
diff --cc client.h
Simple merge
diff --cc clvm_cmds.c
Simple merge
diff --cc cmd.c
Simple merge
diff --cc com_game.c
index 0000000000000000000000000000000000000000,a40f5c401353e6227d642c69c9c612bac708672c..a8e7dfca03da72368481cd5bab205cad6c10f5c6
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,206 +1,207 @@@
+ /*
+ Copyright (C) 1996-1997 Id Software, Inc.
+ Copyright (C) 2000-2020 Ashley Rose "LadyHavoc" Hale
+ Copyright (C) 2020 David "Cloudwalk" Knapp
+ Copyright (C) 2020 Kristus <kristustf@gmail.com>
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+ #include "quakedef.h"
+ // Game mods
+ gamemode_t gamemode;
+ const char *gamename;
+ const char *gamenetworkfiltername; // same as gamename currently but with _ in place of spaces so that "getservers" packets parse correctly (this also means the 
+ const char *gamedirname1;
+ const char *gamedirname2;
+ const char *gamescreenshotname;
+ const char *gameuserdirname;
+ char com_modname[MAX_OSPATH] = "";
+ gamemode_t com_startupgamemode;
+ gamemode_t com_startupgamegroup;
+ typedef struct gamemode_info_s
+ {
+       gamemode_t mode; // this gamemode
+       gamemode_t group; // different games with same group can switch automatically when gamedirs change
+       const char* prog_name; // not null
+       const char* cmdline; // not null
+       const char* gamename; // not null
+       const char*     gamenetworkfiltername; // not null
+       const char* gamedirname1; // not null
+       const char* gamedirname2; // null
+       const char* gamescreenshotname; // not nul
+       const char* gameuserdirname; // not null
+ } gamemode_info_t;
+ static const gamemode_info_t gamemode_info [GAME_COUNT] =
+ {// game                                              basegame                                        prog_name                               cmdline                                         gamename                                        gamenetworkfilername            basegame        modgame                 screenshot                      userdir                                    // commandline option
+ { GAME_NORMAL,                                        GAME_NORMAL,                            "",                                             "-quake",                                       "DarkPlaces-Quake",                     "DarkPlaces-Quake",                     "id1",          NULL,                   "dp",                           "darkplaces"                    }, // COMMANDLINEOPTION: Game: -quake runs the game Quake (default)
+ { GAME_HIPNOTIC,                              GAME_NORMAL,                            "hipnotic",                             "-hipnotic",                            "Darkplaces-Hipnotic",          "Darkplaces-Hipnotic",          "id1",          "hipnotic",             "dp",                           "darkplaces"                    }, // COMMANDLINEOPTION: Game: -hipnotic runs Quake mission pack 1: The Scourge of Armagon
+ { GAME_ROGUE,                                 GAME_NORMAL,                            "rogue",                                "-rogue",                                       "Darkplaces-Rogue",                     "Darkplaces-Rogue",                     "id1",          "rogue",                "dp",                           "darkplaces"                    }, // COMMANDLINEOPTION: Game: -rogue runs Quake mission pack 2: The Dissolution of Eternity
+ { GAME_NEHAHRA,                                       GAME_NORMAL,                            "nehahra",                              "-nehahra",                                     "DarkPlaces-Nehahra",           "DarkPlaces-Nehahra",           "id1",          "nehahra",              "dp",                           "darkplaces"                    }, // COMMANDLINEOPTION: Game: -nehahra runs The Seal of Nehahra movie and game
+ { GAME_QUOTH,                                 GAME_NORMAL,                            "quoth",                                "-quoth",                                       "Darkplaces-Quoth",                     "Darkplaces-Quoth",                     "id1",          "quoth",                "dp",                           "darkplaces"                    }, // COMMANDLINEOPTION: Game: -quoth runs the Quoth mod for playing community maps made for it
+ { GAME_NEXUIZ,                                        GAME_NEXUIZ,                            "nexuiz",                               "-nexuiz",                                      "Nexuiz",                                       "Nexuiz",                                       "data",         NULL,                   "nexuiz",                       "nexuiz"                                }, // COMMANDLINEOPTION: Game: -nexuiz runs the multiplayer game Nexuiz
+ { GAME_XONOTIC,                                       GAME_XONOTIC,                           "xonotic",                              "-xonotic",                                     "Xonotic",                                      "Xonotic",                                      "data",         NULL,                   "xonotic",                      "xonotic"                               }, // COMMANDLINEOPTION: Game: -xonotic runs the multiplayer game Xonotic
+ { GAME_TRANSFUSION,                           GAME_TRANSFUSION,                       "transfusion",                  "-transfusion",                         "Transfusion",                          "Transfusion",                          "basetf",       NULL,                   "transfusion",          "transfusion"                   }, // COMMANDLINEOPTION: Game: -transfusion runs Transfusion (the recreation of Blood in Quake)
+ { GAME_GOODVSBAD2,                            GAME_GOODVSBAD2,                        "gvb2",                                 "-goodvsbad2",                          "GoodVs.Bad2",                          "GoodVs.Bad2",                          "rts",          NULL,                   "gvb2",                         "gvb2"                                  }, // COMMANDLINEOPTION: Game: -goodvsbad2 runs the psychadelic RTS FPS game Good Vs Bad 2
+ { GAME_TEU,                                           GAME_TEU,                                       "teu",                                  "-teu",                                         "TheEvilUnleashed",                     "TheEvilUnleashed",                     "baseteu",      NULL,                   "teu",                          "teu"                                   }, // COMMANDLINEOPTION: Game: -teu runs The Evil Unleashed (this option is obsolete as they are not using darkplaces)
+ { GAME_BATTLEMECH,                            GAME_BATTLEMECH,                        "battlemech",                   "-battlemech",                          "Battlemech",                           "Battlemech",                           "base",         NULL,                   "battlemech",           "battlemech"                    }, // COMMANDLINEOPTION: Game: -battlemech runs the multiplayer topdown deathmatch game BattleMech
+ { GAME_ZYMOTIC,                                       GAME_ZYMOTIC,                           "zymotic",                              "-zymotic",                                     "Zymotic",                                      "Zymotic",                                      "basezym",      NULL,                   "zymotic",                      "zymotic"                               }, // COMMANDLINEOPTION: Game: -zymotic runs the singleplayer game Zymotic
+ { GAME_SETHERAL,                              GAME_SETHERAL,                          "setheral",                             "-setheral",                            "Setheral",                                     "Setheral",                                     "data",         NULL,                   "setheral",                     "setheral"                              }, // COMMANDLINEOPTION: Game: -setheral runs the multiplayer game Setheral
+ { GAME_TENEBRAE,                              GAME_NORMAL,                            "tenebrae",                             "-tenebrae",                            "DarkPlaces-Tenebrae",          "DarkPlaces-Tenebrae",          "id1",          "tenebrae",             "dp",                           "darkplaces"                    }, // COMMANDLINEOPTION: Game: -tenebrae runs the graphics test mod known as Tenebrae (some features not implemented)
+ { GAME_NEOTERIC,                              GAME_NORMAL,                            "neoteric",                             "-neoteric",                            "Neoteric",                                     "Neoteric",                                     "id1",          "neobase",              "neo",                          "darkplaces"                    }, // COMMANDLINEOPTION: Game: -neoteric runs the game Neoteric
+ { GAME_OPENQUARTZ,                            GAME_NORMAL,                            "openquartz",                   "-openquartz",                          "OpenQuartz",                           "OpenQuartz",                           "id1",          NULL,                   "openquartz",           "darkplaces"                    }, // COMMANDLINEOPTION: Game: -openquartz runs the game OpenQuartz, a standalone GPL replacement of the quake content
+ { GAME_PRYDON,                                        GAME_NORMAL,                            "prydon",                               "-prydon",                                      "PrydonGate",                           "PrydonGate",                           "id1",          "prydon",               "prydon",                       "darkplaces"                    }, // COMMANDLINEOPTION: Game: -prydon runs the topdown point and click action-RPG Prydon Gate
+ { GAME_DELUXEQUAKE,                           GAME_DELUXEQUAKE,                       "dq",                                   "-dq",                                          "Deluxe Quake",                         "Deluxe_Quake",                         "basedq",       "extradq",              "basedq",                       "dq"                                    }, // COMMANDLINEOPTION: Game: -dq runs the game Deluxe Quake
+ { GAME_THEHUNTED,                             GAME_THEHUNTED,                         "thehunted",                    "-thehunted",                           "The Hunted",                           "The_Hunted",                           "thdata",       NULL,                   "th",                           "thehunted"                             }, // COMMANDLINEOPTION: Game: -thehunted runs the game The Hunted
+ { GAME_DEFEATINDETAIL2,                       GAME_DEFEATINDETAIL2,           "did2",                                 "-did2",                                        "Defeat In Detail 2",           "Defeat_In_Detail_2",           "data",         NULL,                   "did2_",                        "did2"                                  }, // COMMANDLINEOPTION: Game: -did2 runs the game Defeat In Detail 2
+ { GAME_DARSANA,                                       GAME_DARSANA,                           "darsana",                              "-darsana",                                     "Darsana",                                      "Darsana",                                      "ddata",        NULL,                   "darsana",                      "darsana"                               }, // COMMANDLINEOPTION: Game: -darsana runs the game Darsana
+ { GAME_CONTAGIONTHEORY,                       GAME_CONTAGIONTHEORY,           "contagiontheory",              "-contagiontheory",                     "Contagion Theory",                     "Contagion_Theory",                     "ctdata",       NULL,                   "ct",                           "contagiontheory"               }, // COMMANDLINEOPTION: Game: -contagiontheory runs the game Contagion Theory
+ { GAME_EDU2P,                                 GAME_EDU2P,                                     "edu2p",                                "-edu2p",                                       "EDU2 Prototype",                       "EDU2_Prototype",                       "id1",          "edu2",                 "edu2_p",                       "edu2prototype"                 }, // COMMANDLINEOPTION: Game: -edu2p runs the game Edu2 prototype
+ { GAME_PROPHECY,                              GAME_PROPHECY,                          "prophecy",                             "-prophecy",                            "Prophecy",                                     "Prophecy",                                     "gamedata",     NULL,                   "phcy",                         "prophecy"                              }, // COMMANDLINEOPTION: Game: -prophecy runs the game Prophecy
+ { GAME_BLOODOMNICIDE,                 GAME_BLOODOMNICIDE,                     "omnicide",                             "-omnicide",                            "Blood Omnicide",                       "Blood_Omnicide",                       "kain",         NULL,                   "omnicide",                     "omnicide"                              }, // COMMANDLINEOPTION: Game: -omnicide runs the game Blood Omnicide
+ { GAME_STEELSTORM,                            GAME_STEELSTORM,                        "steelstorm",                   "-steelstorm",                          "Steel-Storm",                          "Steel-Storm",                          "gamedata",     NULL,                   "ss",                           "steelstorm"                    }, // COMMANDLINEOPTION: Game: -steelstorm runs the game Steel Storm
+ { GAME_STEELSTORM2,                           GAME_STEELSTORM2,                       "steelstorm2",                  "-steelstorm2",                         "Steel Storm 2",                        "Steel_Storm_2",                        "gamedata",     NULL,                   "ss2",                          "steelstorm2"                   }, // COMMANDLINEOPTION: Game: -steelstorm2 runs the game Steel Storm 2
+ { GAME_SSAMMO,                                        GAME_SSAMMO,                            "steelstorm-ammo",              "-steelstormammo",                      "Steel Storm A.M.M.O.",         "Steel_Storm_A.M.M.O.",         "gamedata", NULL,                       "ssammo",                       "steelstorm-ammo"               }, // COMMANDLINEOPTION: Game: -steelstormammo runs the game Steel Storm A.M.M.O.
+ { GAME_STEELSTORMREVENANTS,           GAME_STEELSTORMREVENANTS,       "steelstorm-revenants", "-steelstormrev",                       "Steel Storm: Revenants",       "Steel_Storm_Revenants",        "base", NULL,                           "ssrev",                        "steelstorm-revenants"  }, // COMMANDLINEOPTION: Game: -steelstormrev runs the game Steel Storm: Revenants
+ { GAME_TOMESOFMEPHISTOPHELES, GAME_TOMESOFMEPHISTOPHELES,     "tomesofmephistopheles","-tomesofmephistopheles",       "Tomes of Mephistopheles",      "Tomes_of_Mephistopheles",      "gamedata",     NULL,                   "tom",                          "tomesofmephistopheles" }, // COMMANDLINEOPTION: Game: -tomesofmephistopheles runs the game Tomes of Mephistopheles
+ { GAME_STRAPBOMB,                             GAME_STRAPBOMB,                         "strapbomb",                    "-strapbomb",                           "Strap-on-bomb Car",            "Strap-on-bomb_Car",            "id1",          NULL,                   "strap",                        "strapbomb"                             }, // COMMANDLINEOPTION: Game: -strapbomb runs the game Strap-on-bomb Car
+ { GAME_MOONHELM,                              GAME_MOONHELM,                          "moonhelm",                             "-moonhelm",                            "MoonHelm",                                     "MoonHelm",                                     "data",         NULL,                   "mh",                           "moonhelm"                              }, // COMMANDLINEOPTION: Game: -moonhelm runs the game MoonHelm
+ { GAME_VORETOURNAMENT,                        GAME_VORETOURNAMENT,            "voretournament",               "-voretournament",                      "Vore Tournament",                      "Vore_Tournament",                      "data",         NULL,                   "voretournament",       "voretournament"                }, // COMMANDLINEOPTION: Game: -voretournament runs the multiplayer game Vore Tournament
+ { GAME_DOOMBRINGER,                           GAME_DOOMBRINGER,                       "doombringer",                  "-doombringer",                         "DOOMBRINGER",                          "DOOMBRINGER",                          "dbdata",       NULL,                   "doombringer",          "doombringer"                   }, // COMMANDLINEOPTION: Game: -doombringer runs the game DOOMBRINGER
++{ GAME_WRATH,                                 GAME_WRATH,                                     "wrath",                                "-wrath",                                       "WRATH",                                        "WRATH",                                        "kp1",          NULL,                   "wrath",                        "WRATH"                                 }, // COMMANDLINEOPTION: Game: -wrath runs WRATH
+ };
+ static void COM_SetGameType(int index);
+ void COM_InitGameType (void)
+ {
+       char name [MAX_OSPATH];
+       int i;
+       int index = 0;
+ #ifdef FORCEGAME
+       COM_ToLowerString(FORCEGAME, name, sizeof (name));
+ #else
+       // check executable filename for keywords, but do it SMARTLY - only check the last path element
+       FS_StripExtension(FS_FileWithoutPath(sys.argv[0]), name, sizeof (name));
+       COM_ToLowerString(name, name, sizeof (name));
+ #endif
+       for (i = 1;i < (int)(sizeof (gamemode_info) / sizeof (gamemode_info[0]));i++)
+               if (gamemode_info[i].prog_name && gamemode_info[i].prog_name[0] && strstr (name, gamemode_info[i].prog_name))
+                       index = i;
+       // check commandline options for keywords
+       for (i = 0;i < (int)(sizeof (gamemode_info) / sizeof (gamemode_info[0]));i++)
+               if (COM_CheckParm (gamemode_info[i].cmdline))
+                       index = i;
+       com_startupgamemode = gamemode_info[index].mode;
+       com_startupgamegroup = gamemode_info[index].group;
+       COM_SetGameType(index);
+ }
+ void COM_ChangeGameTypeForGameDirs(void)
+ {
+       int i;
+       int index = -1;
+       // this will not not change the gamegroup
+       // first check if a base game (single gamedir) matches
+       for (i = 0;i < (int)(sizeof (gamemode_info) / sizeof (gamemode_info[0]));i++)
+       {
+               if (gamemode_info[i].group == com_startupgamegroup && !(gamemode_info[i].gamedirname2 && gamemode_info[i].gamedirname2[0]))
+               {
+                       index = i;
+                       break;
+               }
+       }
+       // now that we have a base game, see if there is a matching derivative game (two gamedirs)
+       if (fs_numgamedirs)
+       {
+               for (i = 0;i < (int)(sizeof (gamemode_info) / sizeof (gamemode_info[0]));i++)
+               {
+                       if (gamemode_info[i].group == com_startupgamegroup && (gamemode_info[i].gamedirname2 && gamemode_info[i].gamedirname2[0]) && !strcasecmp(fs_gamedirs[0], gamemode_info[i].gamedirname2))
+                       {
+                               index = i;
+                               break;
+                       }
+               }
+       }
+       // we now have a good guess at which game this is meant to be...
+       if (index >= 0 && gamemode != gamemode_info[index].mode)
+               COM_SetGameType(index);
+ }
+ static void COM_SetGameType(int index)
+ {
+       static char gamenetworkfilternamebuffer[64];
+       int i, t;
+       if (index < 0 || index >= (int)(sizeof (gamemode_info) / sizeof (gamemode_info[0])))
+               index = 0;
+       gamemode = gamemode_info[index].mode;
+       gamename = gamemode_info[index].gamename;
+       gamenetworkfiltername = gamemode_info[index].gamenetworkfiltername;
+       gamedirname1 = gamemode_info[index].gamedirname1;
+       gamedirname2 = gamemode_info[index].gamedirname2;
+       gamescreenshotname = gamemode_info[index].gamescreenshotname;
+       gameuserdirname = gamemode_info[index].gameuserdirname;
+       if (gamemode == com_startupgamemode)
+       {
+               if((t = COM_CheckParm("-customgamename")) && t + 1 < sys.argc)
+                       gamename = gamenetworkfiltername = sys.argv[t+1];
+               if((t = COM_CheckParm("-customgamenetworkfiltername")) && t + 1 < sys.argc)
+                       gamenetworkfiltername = sys.argv[t+1];
+               if((t = COM_CheckParm("-customgamedirname1")) && t + 1 < sys.argc)
+                       gamedirname1 = sys.argv[t+1];
+               if((t = COM_CheckParm("-customgamedirname2")) && t + 1 < sys.argc)
+                       gamedirname2 = *sys.argv[t+1] ? sys.argv[t+1] : NULL;
+               if((t = COM_CheckParm("-customgamescreenshotname")) && t + 1 < sys.argc)
+                       gamescreenshotname = sys.argv[t+1];
+               if((t = COM_CheckParm("-customgameuserdirname")) && t + 1 < sys.argc)
+                       gameuserdirname = sys.argv[t+1];
+       }
+       if (gamedirname2 && gamedirname2[0])
+               Con_Printf("Game is %s using base gamedirs %s %s", gamename, gamedirname1, gamedirname2);
+       else
+               Con_Printf("Game is %s using base gamedir %s", gamename, gamedirname1);
+       for (i = 0;i < fs_numgamedirs;i++)
+       {
+               if (i == 0)
+                       Con_Printf(", with mod gamedirs");
+               Con_Printf(" %s", fs_gamedirs[i]);
+       }
+       Con_Printf("\n");
+       if (strchr(gamenetworkfiltername, ' '))
+       {
+               char *s;
+               // if there are spaces in the game's network filter name it would
+               // cause parse errors in getservers in dpmaster, so we need to replace
+               // them with _ characters
+               strlcpy(gamenetworkfilternamebuffer, gamenetworkfiltername, sizeof(gamenetworkfilternamebuffer));
+               while ((s = strchr(gamenetworkfilternamebuffer, ' ')) != NULL)
+                       *s = '_';
+               gamenetworkfiltername = gamenetworkfilternamebuffer;
+       }
+       Con_Printf("gamename for server filtering: %s\n", gamenetworkfiltername);
+ }
diff --cc common.h
index 44f49a1fd5978f10247bbd2def03cbd09b2d0716,15ca90d097399660324b0fb043867cb855f2f1c5..b1e35796c23b61adc1a0036c7c0d9f333abe36a6
+++ b/common.h
@@@ -298,7 -293,7 +293,8 @@@ typedef enum gamemode_
        GAME_STRAPBOMB, // added by motorsep for Urre
        GAME_MOONHELM,
        GAME_VORETOURNAMENT,
+       GAME_DOOMBRINGER, // added by Cloudwalk for kristus
 +      GAME_WRATH,
        GAME_COUNT
  }
  gamemode_t;
diff --cc fs.c
Simple merge
diff --cc gl_draw.c
Simple merge
diff --cc gl_rmain.c
index a6aac3861f8cf5c4a57edda7d8ebef666c5db191,6a69bdd656eae5b5c9497aaa1ea4a4873a5b242e..c393f69bf3f9c217396dab32bd80ce29ddc62606
@@@ -3186,8 -3097,9 +3137,10 @@@ static void gl_main_start(void
        R_BuildBlankTextures();
        R_BuildNoTexture();
        R_BuildWhiteCube();
+ #ifndef USE_GLES2
        R_BuildNormalizationCube();
+ #endif //USE_GLES2
 +      R_BuildDefaultLUT();
        r_texture_fogattenuation = NULL;
        r_texture_fogheighttexture = NULL;
        r_texture_gammaramps = NULL;
diff --cc keys.c
Simple merge
diff --cc makefile.inc
Simple merge
diff --cc menu.c
Simple merge
diff --cc mvm_cmds.c
Simple merge
diff --cc prvm_cmds.c
Simple merge
diff --cc prvm_cmds.h
Simple merge
diff --cc quakedef.h
Simple merge
diff --cc sv_main.c
Simple merge
diff --cc sv_move.c
Simple merge
diff --cc sv_phys.c
Simple merge
diff --cc svvm_cmds.c
index 011bfcdfa81f7c80e2ac8f6c89959a9430f05cff,871e738633f388f1c6bcd5c373a27ddd2f373e9a..09369190cc058797b978e2a8304aceab0e708124
  
  
  
- const char *vm_sv_extensions =
- "BX_WAL_SUPPORT "
- "DP_BUTTONCHAT "
- "DP_BUTTONUSE "
- "DP_CL_LOADSKY "
- "DP_CON_ALIASPARAMETERS "
- "DP_CON_BESTWEAPON "
- "DP_CON_EXPANDCVAR "
- "DP_CON_SET "
- "DP_CON_SETA "
- "DP_CON_STARTMAP "
- "DP_COVERAGE "
- "DP_CRYPTO "
- "DP_CSQC_BINDMAPS "
- "DP_CSQC_ENTITYWORLDOBJECT "
- "DP_CSQC_ENTITYMODELLIGHT "
- "DP_CSQC_ENTITYTRANSPARENTSORTING_OFFSET "
- "DP_CSQC_MAINVIEW "
- "DP_CSQC_MINFPS_QUALITY "
- "DP_CSQC_MULTIFRAME_INTERPOLATION "
- "DP_CSQC_BOXPARTICLES "
- "DP_CSQC_SPAWNPARTICLE "
- "DP_CSQC_QUERYRENDERENTITY "
- "DP_CSQC_ROTATEMOVES "
- "DP_CSQC_SETPAUSE "
- "DP_CSQC_V_CALCREFDEF_WIP1 "
- "DP_CSQC_V_CALCREFDEF_WIP2 "
- "DP_EF_ADDITIVE "
- "DP_EF_BLUE "
- "DP_EF_DOUBLESIDED "
- "DP_EF_DYNAMICMODELLIGHT "
- "DP_EF_FLAME "
- "DP_EF_FULLBRIGHT "
- "DP_EF_NODEPTHTEST "
- "DP_EF_NODRAW "
- "DP_EF_NOGUNBOB "
- "DP_EF_NOSELFSHADOW "
- "DP_EF_NOSHADOW "
- "DP_EF_RED "
- "DP_EF_RESTARTANIM_BIT "
- "DP_EF_STARDUST "
- "DP_EF_TELEPORT_BIT "
- "DP_ENT_ALPHA "
- "DP_ENT_COLORMOD "
- "DP_ENT_CUSTOMCOLORMAP "
- "DP_ENT_EXTERIORMODELTOCLIENT "
- "DP_ENT_GLOW "
- "DP_ENT_GLOWMOD "
- "DP_ENT_LOWPRECISION "
- "DP_ENT_SCALE "
- "DP_ENT_TRAILEFFECTNUM "
- "DP_ENT_VIEWMODEL "
- "DP_GFX_EXTERNALTEXTURES "
- "DP_GFX_EXTERNALTEXTURES_PERMAP "
- "DP_GFX_FOG "
- "DP_GFX_MODEL_INTERPOLATION "
- "DP_GFX_QUAKE3MODELTAGS "
- "DP_GFX_SKINFILES "
- "DP_GFX_SKYBOX "
- "DP_GFX_FONTS "
- "DP_GFX_FONTS_FREETYPE "
- "DP_UTF8 "
- "DP_FONT_VARIABLEWIDTH "
- "DP_HALFLIFE_MAP "
- "DP_HALFLIFE_MAP_CVAR "
- "DP_HALFLIFE_SPRITE "
- "DP_INPUTBUTTONS "
- "DP_LIGHTSTYLE_STATICVALUE "
- "DP_LITSPRITES "
- "DP_LITSUPPORT "
- "DP_MONSTERWALK "
- "DP_MOVETYPEBOUNCEMISSILE "
- "DP_MOVETYPEFLYWORLDONLY "
- "DP_MOVETYPEFOLLOW "
- "DP_NULL_MODEL "
- "DP_QC_ASINACOSATANATAN2TAN "
- "DP_QC_AUTOCVARS "
- "DP_QC_CHANGEPITCH "
- "DP_QC_CMD "
- "DP_QC_COPYENTITY "
- "DP_QC_CRC16 "
- "DP_QC_CVAR_DEFSTRING "
- "DP_QC_CVAR_DESCRIPTION "
- "DP_QC_CVAR_STRING "
- "DP_QC_CVAR_TYPE "
- "DP_QC_DIGEST "
- "DP_QC_DIGEST_SHA256 "
- "DP_QC_EDICT_NUM "
- "DP_QC_ENTITYDATA "
- "DP_QC_ENTITYSTRING "
- "DP_QC_ETOS "
- "DP_QC_EXTRESPONSEPACKET "
- "DP_QC_FINDCHAIN "
- "DP_QC_FINDCHAINFLAGS "
- "DP_QC_FINDCHAINFLOAT "
- "DP_QC_FINDCHAIN_TOFIELD "
- "DP_QC_FINDFLAGS "
- "DP_QC_FINDFLOAT "
- "DP_QC_FS_SEARCH "
- "DP_QC_GETLIGHT "
- "DP_QC_GETSURFACE "
- "DP_QC_GETSURFACETRIANGLE "
- "DP_QC_GETSURFACEPOINTATTRIBUTE "
- "DP_QC_GETTAGINFO "
- "DP_QC_GETTAGINFO_BONEPROPERTIES "
- "DP_QC_GETTIME "
- "DP_QC_GETTIME_CDTRACK "
- "DP_QC_I18N "
- "DP_QC_LOG "
- "DP_QC_MINMAXBOUND "
- "DP_QC_MULTIPLETEMPSTRINGS "
- "DP_QC_NUM_FOR_EDICT "
- "DP_QC_RANDOMVEC "
- "DP_QC_SINCOSSQRTPOW "
- "DP_QC_SPRINTF "
- "DP_QC_STRFTIME "
- "DP_QC_STRINGBUFFERS "
- "DP_QC_STRINGBUFFERS_CVARLIST "
- "DP_QC_STRINGBUFFERS_EXT_WIP "
- "DP_QC_STRINGCOLORFUNCTIONS "
- "DP_QC_STRING_CASE_FUNCTIONS "
- "DP_QC_STRREPLACE "
- "DP_QC_TOKENIZEBYSEPARATOR "
- "DP_QC_TOKENIZE_CONSOLE "
- "DP_QC_TRACEBOX "
- "DP_QC_TRACETOSS "
- "DP_QC_TRACE_MOVETYPE_HITMODEL "
- "DP_QC_TRACE_MOVETYPE_WORLDONLY "
- "DP_QC_UNLIMITEDTEMPSTRINGS "
- "DP_QC_URI_ESCAPE "
- "DP_QC_URI_GET "
- "DP_QC_URI_POST "
- "DP_QC_VECTOANGLES_WITH_ROLL "
- "DP_QC_VECTORVECTORS "
- "DP_QC_WHICHPACK "
- "DP_QUAKE2_MODEL "
- "DP_QUAKE2_SPRITE "
- "DP_QUAKE3_MAP "
- "DP_QUAKE3_MODEL "
- "DP_REGISTERCVAR "
- "DP_SKELETONOBJECTS "
- "DP_SND_DIRECTIONLESSATTNNONE "
- "DP_SND_FAKETRACKS "
- "DP_SND_SOUND7_WIP1 "
- "DP_SND_SOUND7_WIP2 "
- "DP_SND_OGGVORBIS "
- "DP_SND_SETPARAMS "
- "DP_SND_STEREOWAV "
- "DP_SND_GETSOUNDTIME "
- "DP_VIDEO_DPV "
- "DP_VIDEO_SUBTITLES "
- "DP_SOLIDCORPSE "
- "DP_SPRITE32 "
- "DP_SV_BOTCLIENT "
- "DP_SV_BOUNCEFACTOR "
- "DP_SV_CLIENTCAMERA "
- "DP_SV_CLIENTCOLORS "
- "DP_SV_CLIENTNAME "
- "DP_SV_CMD "
- "DP_SV_CUSTOMIZEENTITYFORCLIENT "
- "DP_SV_DISABLECLIENTPREDICTION "
- "DP_SV_DISCARDABLEDEMO "
- "DP_SV_DRAWONLYTOCLIENT "
- "DP_SV_DROPCLIENT "
- "DP_SV_EFFECT "
- "DP_SV_ENTITYCONTENTSTRANSITION "
- "DP_SV_MODELFLAGS_AS_EFFECTS "
- "DP_SV_MOVETYPESTEP_LANDEVENT "
- "DP_SV_NETADDRESS "
- "DP_SV_NODRAWTOCLIENT "
- "DP_SV_ONENTITYNOSPAWNFUNCTION "
- "DP_SV_ONENTITYPREPOSTSPAWNFUNCTION "
- "DP_SV_PING "
- "DP_SV_PING_PACKETLOSS "
- "DP_SV_PLAYERPHYSICS "
- "DP_PHYSICS_ODE "
- "DP_SV_POINTPARTICLES "
- "DP_SV_POINTSOUND "
- "DP_SV_PRECACHEANYTIME "
- "DP_SV_PRINT "
- "DP_SV_PUNCHVECTOR "
- "DP_SV_QCSTATUS "
- "DP_SV_ROTATINGBMODEL "
- "DP_SV_SETCOLOR "
- "DP_SV_SHUTDOWN "
- "DP_SV_SLOWMO "
- "DP_SV_SPAWNFUNC_PREFIX "
- "DP_SV_WRITEPICTURE "
- "DP_SV_WRITEUNTERMINATEDSTRING "
- "DP_TE_BLOOD "
- "DP_TE_BLOODSHOWER "
- "DP_TE_CUSTOMFLASH "
- "DP_TE_EXPLOSIONRGB "
- "DP_TE_FLAMEJET "
- "DP_TE_PARTICLECUBE "
- "DP_TE_PARTICLERAIN "
- "DP_TE_PARTICLESNOW "
- "DP_TE_PLASMABURN "
- "DP_TE_QUADEFFECTS1 "
- "DP_TE_SMALLFLASH "
- "DP_TE_SPARK "
- "DP_TE_STANDARDEFFECTBUILTINS "
- "DP_TRACE_HITCONTENTSMASK_SURFACEINFO "
- "DP_USERMOVETYPES "
- "DP_VIEWZOOM "
- "EXT_BITSHIFT "
- "FRIK_FILE "
- "FTE_CSQC_SKELETONOBJECTS "
- "FTE_QC_CHECKPVS "
- "FTE_STRINGS "
- "KRIMZON_SV_PARSECLIENTCOMMAND "
- "NEH_CMD_PLAY2 "
- "NEH_RESTOREGAME "
- "NEXUIZ_PLAYERMODEL "
- "NXQ_GFX_LETTERBOX "
- "PRYDON_CLIENTCURSOR "
- "TENEBRAE_GFX_DLIGHTS "
- "TW_SV_STEPCONTROL "
- "ZQ_PAUSE "
- "EXT_WRATH "
- "EXT_NODEGRAPH "
- "DP_RM_CLIPGROUP "
- //"EXT_CSQC " // not ready yet
- ;
+ const char *vm_sv_extensions[] = {
+ "BX_WAL_SUPPORT",
+ "DP_BUTTONCHAT",
+ "DP_BUTTONUSE",
+ "DP_CL_LOADSKY",
+ "DP_CON_ALIASPARAMETERS",
+ "DP_CON_BESTWEAPON",
+ "DP_CON_EXPANDCVAR",
+ "DP_CON_SET",
+ "DP_CON_SETA",
+ "DP_CON_STARTMAP",
+ "DP_COVERAGE",
+ "DP_CRYPTO",
+ "DP_CSQC_BINDMAPS",
+ "DP_CSQC_ENTITYWORLDOBJECT",
+ "DP_CSQC_ENTITYMODELLIGHT",
+ "DP_CSQC_ENTITYTRANSPARENTSORTING_OFFSET",
+ "DP_CSQC_MAINVIEW",
+ "DP_CSQC_MINFPS_QUALITY",
+ "DP_CSQC_MULTIFRAME_INTERPOLATION",
+ "DP_CSQC_BOXPARTICLES",
+ "DP_CSQC_SPAWNPARTICLE",
+ "DP_CSQC_QUERYRENDERENTITY",
+ "DP_CSQC_ROTATEMOVES",
+ "DP_CSQC_SETPAUSE",
+ "DP_CSQC_V_CALCREFDEF_WIP1",
+ "DP_CSQC_V_CALCREFDEF_WIP2",
+ "DP_EF_ADDITIVE",
+ "DP_EF_BLUE",
+ "DP_EF_DOUBLESIDED",
+ "DP_EF_DYNAMICMODELLIGHT",
+ "DP_EF_FLAME",
+ "DP_EF_FULLBRIGHT",
+ "DP_EF_NODEPTHTEST",
+ "DP_EF_NODRAW",
+ "DP_EF_NOGUNBOB",
+ "DP_EF_NOSELFSHADOW",
+ "DP_EF_NOSHADOW",
+ "DP_EF_RED",
+ "DP_EF_RESTARTANIM_BIT",
+ "DP_EF_STARDUST",
+ "DP_EF_TELEPORT_BIT",
+ "DP_ENT_ALPHA",
+ "DP_ENT_COLORMOD",
+ "DP_ENT_CUSTOMCOLORMAP",
+ "DP_ENT_EXTERIORMODELTOCLIENT",
+ "DP_ENT_GLOW",
+ "DP_ENT_GLOWMOD",
+ "DP_ENT_LOWPRECISION",
+ "DP_ENT_SCALE",
+ "DP_ENT_TRAILEFFECTNUM",
+ "DP_ENT_VIEWMODEL",
+ "DP_GFX_EXTERNALTEXTURES",
+ "DP_GFX_EXTERNALTEXTURES_PERMAP",
+ "DP_GFX_FOG",
+ "DP_GFX_MODEL_INTERPOLATION",
+ "DP_GFX_QUAKE3MODELTAGS",
+ "DP_GFX_SKINFILES",
+ "DP_GFX_SKYBOX",
+ "DP_GFX_FONTS",
+ "DP_GFX_FONTS_FREETYPE",
+ "DP_UTF8",
+ "DP_FONT_VARIABLEWIDTH",
+ "DP_HALFLIFE_MAP",
+ "DP_HALFLIFE_MAP_CVAR",
+ "DP_HALFLIFE_SPRITE",
+ "DP_INPUTBUTTONS",
+ "DP_LIGHTSTYLE_STATICVALUE",
+ "DP_LITSPRITES",
+ "DP_LITSUPPORT",
+ "DP_MONSTERWALK",
+ "DP_MOVETYPEBOUNCEMISSILE",
+ "DP_MOVETYPEFLYWORLDONLY",
+ "DP_MOVETYPEFOLLOW",
+ "DP_NULL_MODEL",
+ "DP_QC_ASINACOSATANATAN2TAN",
+ "DP_QC_AUTOCVARS",
+ "DP_QC_CHANGEPITCH",
+ "DP_QC_CMD",
+ "DP_QC_COPYENTITY",
+ "DP_QC_CRC16",
+ "DP_QC_CVAR_DEFSTRING",
+ "DP_QC_CVAR_DESCRIPTION",
+ "DP_QC_CVAR_STRING",
+ "DP_QC_CVAR_TYPE",
+ "DP_QC_DIGEST",
+ "DP_QC_DIGEST_SHA256",
+ "DP_QC_EDICT_NUM",
+ "DP_QC_ENTITYDATA",
+ "DP_QC_ENTITYSTRING",
+ "DP_QC_ETOS",
+ "DP_QC_EXTRESPONSEPACKET",
+ "DP_QC_FINDCHAIN",
+ "DP_QC_FINDCHAINFLAGS",
+ "DP_QC_FINDCHAINFLOAT",
+ "DP_QC_FINDCHAIN_TOFIELD",
+ "DP_QC_FINDFLAGS",
+ "DP_QC_FINDFLOAT",
+ "DP_QC_FS_SEARCH",
+ "DP_QC_GETLIGHT",
+ "DP_QC_GETSURFACE",
+ "DP_QC_GETSURFACETRIANGLE",
+ "DP_QC_GETSURFACEPOINTATTRIBUTE",
+ "DP_QC_GETTAGINFO",
+ "DP_QC_GETTAGINFO_BONEPROPERTIES",
+ "DP_QC_GETTIME",
+ "DP_QC_GETTIME_CDTRACK",
+ "DP_QC_I18N",
+ "DP_QC_LOG",
+ "DP_QC_MINMAXBOUND",
+ "DP_QC_MULTIPLETEMPSTRINGS",
+ "DP_QC_NUM_FOR_EDICT",
+ "DP_QC_RANDOMVEC",
+ "DP_QC_SINCOSSQRTPOW",
+ "DP_QC_SPRINTF",
+ "DP_QC_STRFTIME",
+ "DP_QC_STRINGBUFFERS",
+ "DP_QC_STRINGBUFFERS_CVARLIST",
+ "DP_QC_STRINGBUFFERS_EXT_WIP",
+ "DP_QC_STRINGCOLORFUNCTIONS",
+ "DP_QC_STRING_CASE_FUNCTIONS",
+ "DP_QC_STRREPLACE",
+ "DP_QC_TOKENIZEBYSEPARATOR",
+ "DP_QC_TOKENIZE_CONSOLE",
+ "DP_QC_TRACEBOX",
+ "DP_QC_TRACETOSS",
+ "DP_QC_TRACE_MOVETYPE_HITMODEL",
+ "DP_QC_TRACE_MOVETYPE_WORLDONLY",
+ "DP_QC_UNLIMITEDTEMPSTRINGS",
+ "DP_QC_URI_ESCAPE",
+ "DP_QC_URI_GET",
+ "DP_QC_URI_POST",
+ "DP_QC_VECTOANGLES_WITH_ROLL",
+ "DP_QC_VECTORVECTORS",
+ "DP_QC_WHICHPACK",
+ "DP_QUAKE2_MODEL",
+ "DP_QUAKE2_SPRITE",
+ "DP_QUAKE3_MAP",
+ "DP_QUAKE3_MODEL",
+ "DP_REGISTERCVAR",
+ "DP_SKELETONOBJECTS",
+ "DP_SND_DIRECTIONLESSATTNNONE",
+ "DP_SND_FAKETRACKS",
+ "DP_SND_SOUND7_WIP1",
+ "DP_SND_SOUND7_WIP2",
+ "DP_SND_OGGVORBIS",
+ "DP_SND_SETPARAMS",
+ "DP_SND_STEREOWAV",
+ "DP_SND_GETSOUNDTIME",
+ "DP_VIDEO_DPV",
+ "DP_VIDEO_SUBTITLES",
+ "DP_SOLIDCORPSE",
+ "DP_SPRITE32",
+ "DP_SV_BOTCLIENT",
+ "DP_SV_BOUNCEFACTOR",
+ "DP_SV_CLIENTCAMERA",
+ "DP_SV_CLIENTCOLORS",
+ "DP_SV_CLIENTNAME",
+ "DP_SV_CMD",
+ "DP_SV_CUSTOMIZEENTITYFORCLIENT",
+ "DP_SV_DISABLECLIENTPREDICTION",
+ "DP_SV_DISCARDABLEDEMO",
+ "DP_SV_DRAWONLYTOCLIENT",
+ "DP_SV_DROPCLIENT",
+ "DP_SV_EFFECT",
+ "DP_SV_ENTITYCONTENTSTRANSITION",
+ "DP_SV_MODELFLAGS_AS_EFFECTS",
+ "DP_SV_MOVETYPESTEP_LANDEVENT",
+ "DP_SV_NETADDRESS",
+ "DP_SV_NODRAWTOCLIENT",
+ "DP_SV_ONENTITYNOSPAWNFUNCTION",
+ "DP_SV_ONENTITYPREPOSTSPAWNFUNCTION",
+ "DP_SV_PING",
+ "DP_SV_PING_PACKETLOSS",
+ "DP_SV_PLAYERPHYSICS",
+ "DP_PHYSICS_ODE",
+ "DP_SV_POINTPARTICLES",
+ "DP_SV_POINTSOUND",
+ "DP_SV_PRECACHEANYTIME",
+ "DP_SV_PRINT",
+ "DP_SV_PUNCHVECTOR",
+ "DP_SV_QCSTATUS",
+ "DP_SV_ROTATINGBMODEL",
+ "DP_SV_SETCOLOR",
+ "DP_SV_SHUTDOWN",
+ "DP_SV_SLOWMO",
+ "DP_SV_SPAWNFUNC_PREFIX",
+ "DP_SV_WRITEPICTURE",
+ "DP_SV_WRITEUNTERMINATEDSTRING",
+ "DP_TE_BLOOD",
+ "DP_TE_BLOODSHOWER",
+ "DP_TE_CUSTOMFLASH",
+ "DP_TE_EXPLOSIONRGB",
+ "DP_TE_FLAMEJET",
+ "DP_TE_PARTICLECUBE",
+ "DP_TE_PARTICLERAIN",
+ "DP_TE_PARTICLESNOW",
+ "DP_TE_PLASMABURN",
+ "DP_TE_QUADEFFECTS1",
+ "DP_TE_SMALLFLASH",
+ "DP_TE_SPARK",
+ "DP_TE_STANDARDEFFECTBUILTINS",
+ "DP_TRACE_HITCONTENTSMASK_SURFACEINFO"
+ "DP_USERMOVETYPES",
+ "DP_VIEWZOOM",
+ "EXT_BITSHIFT",
+ "FRIK_FILE",
+ "FTE_CSQC_SKELETONOBJECTS",
+ "FTE_QC_CHECKPVS",
+ "FTE_STRINGS",
+ "KRIMZON_SV_PARSECLIENTCOMMAND",
+ "NEH_CMD_PLAY2",
+ "NEH_RESTOREGAME",
+ "NEXUIZ_PLAYERMODEL",
+ "NXQ_GFX_LETTERBOX",
+ "PRYDON_CLIENTCURSOR",
+ "TENEBRAE_GFX_DLIGHTS",
+ "TW_SV_STEPCONTROL",
+ "ZQ_PAUSE",
++"EXT_WRATH",
++"EXT_NODEGRAPH",
+ "DP_RM_CLIPGROUP",
+ "DP_QC_FS_SEARCH_PACKFILE",
+ NULL
+ //"EXT_CSQC" // not ready yet
+ };
  
  /*
  =================
diff --cc vid_shared.c
Simple merge
diff --cc view.c
Simple merge