X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=common.c;h=35e9610656247eba96b4265fd5f9ec2d95c3380d;hp=c1bdac488384358533bf3c32cc8672649d1d1af4;hb=7305affaa1bdcfa17d27e7e155ed850143753fcf;hpb=40bbda3135e611673d899661fd4fd29486a60c2f diff --git a/common.c b/common.c index c1bdac48..35e96106 100644 --- a/common.c +++ b/common.c @@ -1,5 +1,6 @@ /* Copyright (C) 1996-1997 Id Software, Inc. +Copyright (C) 2000-2020 DarkPlaces contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -28,24 +29,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "quakedef.h" #include "utf8lib.h" -cvar_t registered = {CVAR_CLIENT | CVAR_SERVER, "registered","0", "indicates if this is running registered quake (whether gfx/pop.lmp was found)"}; -cvar_t cmdline = {CVAR_CLIENT | CVAR_SERVER, "cmdline","0", "contains commandline the engine was launched with"}; +cvar_t registered = {CF_CLIENT | CF_SERVER, "registered","0", "indicates if this is running registered quake (whether gfx/pop.lmp was found)"}; +cvar_t cmdline = {CF_CLIENT | CF_SERVER, "cmdline","0", "contains commandline the engine was launched with"}; // FIXME: Find a better place for these. -cvar_t cl_playermodel = {CVAR_CLIENT | CVAR_SERVER | CVAR_USERINFO | CVAR_SAVE, "playermodel", "", "current player model in Nexuiz/Xonotic"}; -cvar_t cl_playerskin = {CVAR_CLIENT | CVAR_SERVER | CVAR_USERINFO | CVAR_SAVE, "playerskin", "", "current player skin in Nexuiz/Xonotic"}; +cvar_t cl_playermodel = {CF_CLIENT | CF_SERVER | CF_USERINFO | CF_ARCHIVE, "playermodel", "", "current player model in Nexuiz/Xonotic"}; +cvar_t cl_playerskin = {CF_CLIENT | CF_SERVER | CF_USERINFO | CF_ARCHIVE, "playerskin", "", "current player skin in Nexuiz/Xonotic"}; char com_token[MAX_INPUTLINE]; -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] = ""; - //=========================================================================== void SZ_Clear (sizebuf_t *buf) @@ -189,7 +181,7 @@ int COM_Wordwrap(const char *string, size_t length, float continuationWidth, flo // If it fits, append it. Continue. // If it doesn't fit, output current line, advance to next line. Append the word. This is a continuation. Continue. - qboolean isContinuation = false; + qbool isContinuation = false; float spaceWidth; const char *startOfLine = string; const char *cursor = string; @@ -267,7 +259,7 @@ int COM_Wordwrap(const char *string, size_t length, float continuationWidth, flo return result; /* - qboolean isContinuation = false; + qbool isContinuation = false; float currentWordSpace = 0; const char *currentWord = 0; float minReserve = 0; @@ -466,7 +458,7 @@ COM_ParseToken_Simple Parse a token out of a string ============== */ -int COM_ParseToken_Simple(const char **datapointer, qboolean returnnewline, qboolean parsebackslash, qboolean parsecomments) +int COM_ParseToken_Simple(const char **datapointer, qbool returnnewline, qbool parsebackslash, qbool parsecomments) { int len; int c; @@ -579,7 +571,7 @@ COM_ParseToken_QuakeC Parse a token out of a string ============== */ -int COM_ParseToken_QuakeC(const char **datapointer, qboolean returnnewline) +int COM_ParseToken_QuakeC(const char **datapointer, qbool returnnewline) { int len; int c; @@ -693,7 +685,7 @@ COM_ParseToken_VM_Tokenize Parse a token out of a string ============== */ -int COM_ParseToken_VM_Tokenize(const char **datapointer, qboolean returnnewline) +int COM_ParseToken_VM_Tokenize(const char **datapointer, qbool returnnewline) { int len; int c; @@ -869,204 +861,34 @@ skipwhite: return true; } - /* -================ -COM_CheckParm +=============== +Com_CalcRoll -Returns the position (1 to argc-1) in the program's argument list -where the given parameter apears, or 0 if not present -================ +Used by view and sv_user +=============== */ -int COM_CheckParm (const char *parm) -{ - int i; - - for (i=1 ; i= 0 && gamemode != gamemode_info[index].mode) - COM_SetGameType(index); -} + AngleVectors (angles, forward, right, up); + side = DotProduct (velocity, right); + sign = side < 0 ? -1 : 1; + side = fabs(side); -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); + if (side < velocityval) + side = side * angleval / velocityval; 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"); + side = angleval; - 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; - } + return side*sign; - Con_Printf("gamename for server filtering: %s\n", gamenetworkfiltername); } +//=========================================================================== /* ================ @@ -1081,9 +903,9 @@ void COM_Init_Commands (void) Cvar_RegisterVariable (®istered); Cvar_RegisterVariable (&cmdline); Cvar_RegisterVariable(&cl_playermodel); - Cvar_RegisterAlias(&cl_playermodel, "_cl_playermodel"); + Cvar_RegisterVirtual(&cl_playermodel, "_cl_playermodel"); Cvar_RegisterVariable(&cl_playerskin); - Cvar_RegisterAlias(&cl_playerskin, "_cl_playerskin"); + Cvar_RegisterVirtual(&cl_playerskin, "_cl_playerskin"); // reconstitute the command line for the cmdline externally visible cvar n = 0; @@ -1342,7 +1164,7 @@ all characters until the zero terminator. ============ */ size_t -COM_StringLengthNoColors(const char *s, size_t size_s, qboolean *valid) +COM_StringLengthNoColors(const char *s, size_t size_s, qbool *valid) { const char *end = size_s ? (s + size_s) : NULL; size_t len = 0; @@ -1415,8 +1237,8 @@ For size_in, specify the maximum number of characters from in to use, or 0 to us all characters until the zero terminator. ============ */ -qboolean -COM_StringDecolorize(const char *in, size_t size_in, char *out, size_t size_out, qboolean escape_carets) +qbool +COM_StringDecolorize(const char *in, size_t size_in, char *out, size_t size_out, qbool escape_carets) { #define APPEND(ch) do { if(--size_out) { *out++ = (ch); } else { *out++ = 0; return false; } } while(0) const char *end = size_in ? (in + size_in) : NULL;