本文整理汇总了C++中COM_BeginParseSession函数的典型用法代码示例。如果您正苦于以下问题:C++ COM_BeginParseSession函数的具体用法?C++ COM_BeginParseSession怎么用?C++ COM_BeginParseSession使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了COM_BeginParseSession函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IT_ParseParms
static void IT_ParseParms(const char *buffer)
{
const char *holdBuf;
const char *token;
// bg_numItems = 0;
holdBuf = buffer;
COM_BeginParseSession();
while ( holdBuf )
{
token = COM_ParseExt( &holdBuf, qtrue );
if ( !Q_stricmp( token, "{" ) )
{
token =token;
IT_ParseWeaponParms(&holdBuf);
}
}
COM_EndParseSession( );
// --bg_numItems;
}
示例2: G_ParseInfos
/*
===============
G_ParseInfos
===============
*/
int G_ParseInfos( char *buf, int max, char *infos[] ) {
char *token;
int count;
char key[MAX_TOKEN_CHARS];
char info[MAX_INFO_STRING];
count = 0;
COM_BeginParseSession ("G_ParseInfos");
while ( 1 ) {
token = COM_Parse( (const char **)(&buf) );
if ( !token[0] ) {
break;
}
if ( strcmp( token, "{" ) ) {
Com_Printf( "Missing { in info file\n" );
break;
}
if ( count == max ) {
Com_Printf( "Max infos exceeded\n" );
break;
}
info[0] = '\0';
while ( 1 ) {
token = COM_ParseExt( (const char **)(&buf), qtrue );
if ( !token[0] ) {
Com_Printf( "Unexpected end of info file\n" );
break;
}
if ( !strcmp( token, "}" ) ) {
break;
}
Q_strncpyz( key, token, sizeof( key ) );
token = COM_ParseExt( (const char **)(&buf), qfalse );
if ( !token[0] ) {
strcpy( token, "<NULL>" );
}
Info_SetValueForKey( info, key, token );
}
//NOTE: extra space for arena number
infos[count] = (char *) G_Alloc(strlen(info) + strlen("\\num\\") + strlen(va("%d", MAX_ARENAS)) + 1);
if (infos[count]) {
strcpy(infos[count], info);
count++;
}
}
return count;
}
示例3: loadTIKI
void loadTIKI(const char *fname) {
int len;
char *txt;
char *p;
const char *fixedPath;
const char *token;
char path[MAX_TOOLPATH];
float scale;
len = F_LoadBuf(fname,(byte**)&txt);
if(len == -1) {
T_Error("loadTIKI: Cannot open %s\n",fname);
return;
}
path[0] = 0;
scale = 1.f;
// NOTE: this will not open the "fname" file!
COM_BeginParseSession(fname);
p = txt;
token = COM_ParseExt(&p, qtrue);
while(token[0]) {
if (!Q_stricmp(token, "path") || !Q_stricmp(token, "$path")) {
token = COM_ParseExt(&p, qtrue);
strcpy(path,token);
} else if (!Q_stricmp(token, "scale")) {
token = COM_ParseExt(&p, qtrue);
scale = atof(token);
} else if (!Q_stricmp(token, "skelmodel")) {
token = COM_ParseExt(&p, qtrue);
mainModel = readSKD(fixPath(token,path,fname),scale);
} else if(strstr(token,".skc")) {
tAnim_t *a;
fixedPath = fixPath(token,path,fname);
a = appendSKC(mainModel,fixedPath,scale);
if(a) {
strcpy(inAnimFNames[numAnims],fixedPath);
anims[numAnims] = a;
numAnims++;
}
}
token = COM_ParseExt(&p, qtrue);
}
F_FreeBuf(txt);
}
示例4: G_LoadIPBans
void G_LoadIPBans( void )
{//load in all the banned IPs
int i, len;
char *p, *token;
fileHandle_t fh;
char banIPBuffer[MAX_IPFILTERS*32]; // The list of file names read in
char banIPFile[MAX_QPATH];
len = trap_FS_FOpenFile("banip.txt", &fh, FS_READ);
if ( !fh )
{
G_Printf ( "G_LoadBanIP - ERROR: can't open banip.txt\n" );
return;
}
trap_FS_Read(banIPBuffer, len, fh);
banIPBuffer[len] = 0;
trap_FS_FCloseFile(fh);
p = banIPBuffer;
COM_BeginParseSession(banIPFile);
//had to change this to compile linux
token = COM_ParseExt( (const char **) &p, qtrue );
if ( token )
{
numIPFilters = atoi(token);
for ( i = 0 ; i < numIPFilters ; i++ )
{
//had to change this to compile linux
token = COM_ParseExt( (const char **) &p, qtrue );
if ( token )
{//have an ip
if ( !Q_stricmp("unused",token) )
{
ipFilters[i].compare = 0xffffffffu;
}
else
{
StringToFilter(token,&ipFilters[i]);
}
}
else
{
break;
}
}
}
}
示例5: CL_SetExpectedHunkUsage
/**
* @brief Sets com_expectedhunkusage, so the client knows how to draw the percentage bar
*
* @param[in] mapname
*
* @see SV_SetExpectedHunkUsage (Copied from server to here)
*/
void CL_SetExpectedHunkUsage(const char *mapname)
{
int handle;
const char *memlistfile = "hunkusage.dat";
int len;
len = FS_FOpenFileByMode(memlistfile, &handle, FS_READ);
if (len >= 0) // the file exists, so read it in, strip out the current entry for this map, and save it out, so we can append the new value
{
char *token;
char *buftrav;
char *buf = (char *)Z_Malloc(len + 1);
Com_Memset(buf, 0, len + 1);
FS_Read((void *)buf, len, handle);
FS_FCloseFile(handle);
// now parse the file, filtering out the current map
buftrav = buf;
COM_BeginParseSession("CL_SetExpectedHunkUsage");
while ((token = COM_Parse(&buftrav)) != NULL && token[0])
{
if (!Q_stricmp(token, mapname))
{
// found a match
token = COM_Parse(&buftrav); // read the size
if (token && token[0])
{
// this is the usage
com_expectedhunkusage = atoi(token);
Z_Free(buf);
return;
}
}
}
Z_Free(buf);
}
// just set it to a negative number,so the cgame knows not to draw the percent bar
com_expectedhunkusage = -1;
}
示例6: WP_ParseParms
//--------------------------------------------
static void WP_ParseParms(const char *buffer)
{
const char *holdBuf;
const char *token;
holdBuf = buffer;
COM_BeginParseSession();
while ( holdBuf )
{
token = COM_ParseExt( &holdBuf, qtrue );
if ( !Q_stricmp( token, "{" ) )
{
token =token;
WP_ParseWeaponParms(&holdBuf);
}
}
}
示例7: G_InitDamageLocations
void G_InitDamageLocations( void )
{
const char *modelName;
char filename[ MAX_QPATH ];
int i;
int len;
fileHandle_t fileHandle;
char buffer[ MAX_DAMAGE_REGION_TEXT ];
for ( i = PCL_NONE + 1; i < PCL_NUM_CLASSES; i++ )
{
modelName = BG_ClassModelConfig( i )->modelName;
Com_sprintf( filename, sizeof( filename ), "configs/classes/%s.locdamage.cfg", modelName );
len = trap_FS_FOpenFile( filename, &fileHandle, FS_READ );
if ( !fileHandle )
{
G_Printf( S_COLOR_RED "file not found: %s\n", filename );
continue;
}
if ( len >= MAX_DAMAGE_REGION_TEXT )
{
G_Printf( S_COLOR_RED "file too large: %s is %i, max allowed is %i\n",
filename, len, MAX_DAMAGE_REGION_TEXT );
trap_FS_FCloseFile( fileHandle );
continue;
}
COM_BeginParseSession( filename );
trap_FS_Read( buffer, len, fileHandle );
buffer[ len ] = 0;
trap_FS_FCloseFile( fileHandle );
g_numDamageRegions[ i ] = ParseDmgScript( g_damageRegions[ i ], buffer );
}
}
示例8: CM_CreateShaderTextHash
/*
====================
CM_CreateShaderTextHash
=====================
*/
void CM_CreateShaderTextHash(void)
{
const char *p;
qboolean hasNewLines;
char *token;
CCMShaderText *shader;
p = shaderText;
COM_BeginParseSession ("CM_CreateShaderTextHash");
// look for label
while (p)
{
p = SkipWhitespace(p, &hasNewLines);
token = COM_ParseExt( &p, qtrue );
if ( !token[0] )
{
break;
}
shader = new CCMShaderText(token, p);
shaderTextTable.insert(shader);
SkipBracedSection(&p);
}
}
示例9: BG_ParseItemsText
/*
=================
BG_ParseItemsText
=================
*/
void BG_ParseItemsText(char *buff)
{
char *token;
char *buffer;
int i,len;
COM_BeginParseSession();
buffer = buff;
while ( buffer )
{
token = COM_ParseExt( &buffer, qtrue );
i=0;
while (itemnames[i])
{
if (Q_stricmp(token, itemnames[i])==0)
{
token = COM_ParseExt( &buffer, qtrue );
if (token[0])
{
len = strlen(token);
if (len)
{
bg_itemlist[i].pickup_name = (buffer - (len + 1)); // The +1 is to get rid of the " at the beginning of the sting.
*(buffer - 1) = '\0'; // Place an string end where is belongs.
}
}
break;
}
i++;
}
}
}
示例10: AnimParseAnimConfig
/*
============
AnimParseAnimConfig
returns qfalse if error, qtrue otherwise
============
*/
static qboolean AnimParseAnimConfig( playerInfo_t *animModelInfo, const char *filename, const char *input ) {
char *text_p, *token;
animation_t *animations;
// headAnimation_t *headAnims;
int i, fps, skip = -1;
// if (!weaponStringsInited) {
// BG_InitWeaponStrings();
// }
// globalFilename = (char *)filename;
animations = animModelInfo->animations;
animModelInfo->numAnimations = 0;
// headAnims = animModelInfo->headAnims;
text_p = (char *)input;
COM_BeginParseSession( "AnimParseAnimConfig" );
animModelInfo->footsteps = FOOTSTEP_NORMAL;
VectorClear( animModelInfo->headOffset );
animModelInfo->gender = GENDER_MALE;
animModelInfo->isSkeletal = qfalse;
animModelInfo->version = 0;
// read optional parameters
while ( 1 ) {
token = COM_Parse( &text_p );
if ( !token ) {
break;
}
if ( !Q_stricmp( token, "footsteps" ) ) {
token = COM_Parse( &text_p );
if ( !token ) {
break;
}
if ( !Q_stricmp( token, "default" ) || !Q_stricmp( token, "normal" ) ) {
animModelInfo->footsteps = FOOTSTEP_NORMAL;
} else if ( !Q_stricmp( token, "boot" ) ) {
animModelInfo->footsteps = FOOTSTEP_BOOT;
} else if ( !Q_stricmp( token, "flesh" ) ) {
animModelInfo->footsteps = FOOTSTEP_FLESH;
} else if ( !Q_stricmp( token, "mech" ) ) {
animModelInfo->footsteps = FOOTSTEP_MECH;
} else if ( !Q_stricmp( token, "energy" ) ) {
animModelInfo->footsteps = FOOTSTEP_ENERGY;
} else {
// BG_AnimParseError( "Bad footsteps parm '%s'\n", token );
}
continue;
} else if ( !Q_stricmp( token, "headoffset" ) ) {
for ( i = 0 ; i < 3 ; i++ ) {
token = COM_Parse( &text_p );
if ( !token ) {
break;
}
animModelInfo->headOffset[i] = atof( token );
}
continue;
} else if ( !Q_stricmp( token, "sex" ) ) {
token = COM_Parse( &text_p );
if ( !token ) {
break;
}
if ( token[0] == 'f' || token[0] == 'F' ) {
animModelInfo->gender = GENDER_FEMALE;
} else if ( token[0] == 'n' || token[0] == 'N' ) {
animModelInfo->gender = GENDER_NEUTER;
} else {
animModelInfo->gender = GENDER_MALE;
}
continue;
} else if ( !Q_stricmp( token, "version" ) ) {
token = COM_Parse( &text_p );
if ( !token ) {
break;
}
animModelInfo->version = atoi( token );
continue;
} else if ( !Q_stricmp( token, "skeletal" ) ) {
animModelInfo->isSkeletal = qtrue;
continue;
}
if ( animModelInfo->version < 2 ) {
// if it is a number, start parsing animations
if ( Q_isnumeric( token[0] ) ) {
text_p -= strlen( token ); // unget the token
break;
}
}
// STARTANIMS marks the start of the animations
//.........这里部分代码省略.........
示例11: UI_SaberParseParm
qboolean UI_SaberParseParm( const char *saberName, const char *parmname, char *saberData )
{
const char *token;
const char *value;
const char *p;
if ( !saberName || !saberName[0] )
{
return qfalse;
}
//try to parse it out
p = SaberParms;
COM_BeginParseSession();
// look for the right saber
while ( p )
{
token = COM_ParseExt( &p, qtrue );
if ( token[0] == 0 )
{
return qfalse;
}
if ( !Q_stricmp( token, saberName ) )
{
break;
}
SkipBracedSection( &p );
}
if ( !p )
{
return qfalse;
}
if ( UI_ParseLiteral( &p, "{" ) )
{
return qfalse;
}
// parse the saber info block
while ( 1 )
{
token = COM_ParseExt( &p, qtrue );
if ( !token[0] )
{
ui.Printf( S_COLOR_RED"ERROR: unexpected EOF while parsing '%s'\n", saberName );
return qfalse;
}
if ( !Q_stricmp( token, "}" ) )
{
break;
}
if ( !Q_stricmp( token, parmname ) )
{
if ( COM_ParseString( &p, &value ) )
{
continue;
}
strcpy( saberData, value );
return qtrue;
}
SkipRestOfLine( &p );
continue;
}
return qfalse;
}
示例12: AICast_ScriptParse
void AICast_ScriptParse( cast_state_t *cs ) {
#define MAX_SCRIPT_EVENTS 64
gentity_t *ent;
char *pScript;
char *token;
qboolean wantName;
qboolean inScript;
int eventNum;
cast_script_event_t events[MAX_SCRIPT_EVENTS];
int numEventItems;
cast_script_event_t *curEvent;
char params[MAX_QPATH];
cast_script_stack_action_t *action;
int i;
int bracketLevel;
qboolean buildScript; //----(SA) added
if ( !level.scriptAI ) {
return;
}
ent = &g_entities[cs->entityNum];
if ( !ent->aiName ) {
return;
}
buildScript = trap_Cvar_VariableIntegerValue( "com_buildScript" );
buildScript = qtrue;
pScript = level.scriptAI;
wantName = qtrue;
inScript = qfalse;
COM_BeginParseSession( "AICast_ScriptParse" );
bracketLevel = 0;
numEventItems = 0;
memset( events, 0, sizeof( events ) );
while ( 1 )
{
token = COM_Parse( &pScript );
if ( !token[0] ) {
if ( !wantName ) {
G_Error( "AICast_ScriptParse(), Error (line %d): '}' expected, end of script found.\n", COM_GetCurrentParseLine() );
}
break;
}
// end of script
if ( token[0] == '}' ) {
if ( inScript ) {
break;
}
if ( wantName ) {
G_Error( "AICast_ScriptParse(), Error (line %d): '}' found, but not expected.\n", COM_GetCurrentParseLine() );
}
wantName = qtrue;
} else if ( token[0] == '{' ) {
if ( wantName ) {
G_Error( "AICast_ScriptParse(), Error (line %d): '{' found, NAME expected.\n", COM_GetCurrentParseLine() );
}
} else if ( wantName ) {
if ( !Q_strcasecmp( ent->aiName, token ) ) {
inScript = qtrue;
numEventItems = 0;
}
wantName = qfalse;
} else if ( inScript ) {
if ( !Q_strcasecmp( token, "attributes" ) ) {
// read in all the attributes
AICast_CheckLevelAttributes( cs, ent, &pScript );
continue;
}
eventNum = AICast_EventForString( token );
if ( eventNum < 0 ) {
G_Error( "AICast_ScriptParse(), Error (line %d): unknown event: %s.\n", COM_GetCurrentParseLine(), token );
}
if ( numEventItems >= MAX_SCRIPT_EVENTS ) {
G_Error( "AICast_ScriptParse(), Error (line %d): MAX_SCRIPT_EVENTS reached (%d)\n", COM_GetCurrentParseLine(), MAX_SCRIPT_EVENTS );
}
// if this is a "friendlysightcorpse" event, then disable corpse vis sharing
if ( !Q_stricmp( token, "friendlysightcorpse" ) ) {
cs->aiFlags &= ~AIFL_CORPSESIGHTING;
}
curEvent = &events[numEventItems];
curEvent->eventNum = eventNum;
memset( params, 0, sizeof( params ) );
// parse any event params before the start of this event's actions
while ( ( token = COM_Parse( &pScript ) ) && ( token[0] != '{' ) )
{
if ( !token[0] ) {
G_Error( "AICast_ScriptParse(), Error (line %d): '}' expected, end of script found.\n", COM_GetCurrentParseLine() );
}
if ( eventNum == 13 ) { // statechange event, check params
if ( strlen( token ) > 1 ) {
//.........这里部分代码省略.........
示例13: UI_ManageDeckLoading
static void UI_ManageDeckLoading( void )
{
char fileRoute[MAX_QPATH];
char mapRoute[MAX_QPATH];
char info[MAX_TOKEN_CHARS];
fileHandle_t f;
int file_len;
char *textPtr;
char buffer[20000];
char *token;
//get the map name
trap_GetConfigString( CS_SERVERINFO, info, sizeof( info ) );
Com_sprintf( mapRoute, sizeof( fileRoute ), "maps/%s", Info_ValueForKey( info, "mapname" ) );
//check for language
UI_LanguageFilename( mapRoute, "turbolift", fileRoute );
file_len = trap_FS_FOpenFile( fileRoute, &f, FS_READ );
if ( file_len <= 1 )
{
//Com_Printf( S_COLOR_YELLOW "WARNING: Attempted to load %s, but wasn't found.\n", fileRoute );
UI_TurboliftMenu_LoadDecks();
return;
}
trap_FS_Read( buffer, file_len, f );
trap_FS_FCloseFile( f );
if ( !buffer[0] )
{
Com_Printf( S_COLOR_RED "ERROR: Attempted to load %s, but no data was read.\n", fileRoute );
UI_TurboliftMenu_LoadDecks();
return;
}
s_turbolift.numDecks = 0;
memset( &s_turbolift.deckData, 0, sizeof( s_turbolift.deckData ) );
buffer[file_len] = '\0';
COM_BeginParseSession();
textPtr = buffer;
//Com_Printf( S_COLOR_RED "Beginning Parse\n" );
//expected format is 'decknum' <space> 'deck Desc'
while( 1 )
{
token = COM_Parse( &textPtr );
if ( !token[0] )
break;
//Com_Printf( S_COLOR_RED "First Token: %s\n", token );
//in case of Scooter's EF SP style DAT files, which require 'DECK' in front of the number
if ( !Q_strncmp( token, "DECK", 4 ) )
token += 4;
//grab the deck number
s_turbolift.deckData[s_turbolift.numDecks].deckNum = atoi( token );
token = COM_ParseExt( &textPtr, qfalse );
if (!token[0])
continue;
//Com_Printf( S_COLOR_RED "Second Token: %s\n", token );
Q_strncpyz( s_turbolift.deckData[s_turbolift.numDecks].deckDesc,
token,
sizeof( s_turbolift.deckData[s_turbolift.numDecks].deckDesc ) );
s_turbolift.numDecks++;
//if this is an EF SP style script, there may be more data after these two. ignore them
if ( COM_ParseExt( &textPtr, qfalse ) == NULL )
SkipRestOfLine( &textPtr );
}
qsort( s_turbolift.deckData, s_turbolift.numDecks, sizeof( deckData_t ), SortDecks );
}
示例14: WP_SaberParseParms
qboolean WP_SaberParseParms( const char *SaberName, saberInfo_t *saber, qboolean setColors )
{
const char *token;
const char *value;
const char *p;
float f;
int n;
if ( !saber )
{
return qfalse;
}
//Set defaults so that, if it fails, there's at least something there
WP_SaberSetDefaults( saber, setColors );
if ( !SaberName || !SaberName[0] )
{
return qfalse;
}
saber->name = G_NewString( SaberName );
//try to parse it out
p = SaberParms;
COM_BeginParseSession();
// look for the right saber
while ( p )
{
token = COM_ParseExt( &p, qtrue );
if ( token[0] == 0 )
{
return qfalse;
}
if ( !Q_stricmp( token, SaberName ) )
{
break;
}
SkipBracedSection( &p );
}
if ( !p )
{
return qfalse;
}
if ( G_ParseLiteral( &p, "{" ) )
{
return qfalse;
}
// parse the saber info block
while ( 1 )
{
token = COM_ParseExt( &p, qtrue );
if ( !token[0] )
{
gi.Printf( S_COLOR_RED"ERROR: unexpected EOF while parsing '%s'\n", SaberName );
return qfalse;
}
if ( !Q_stricmp( token, "}" ) )
{
break;
}
//saber fullName
if ( !Q_stricmp( token, "name" ) )
{
if ( COM_ParseString( &p, &value ) )
{
continue;
}
saber->fullName = G_NewString( value );
continue;
}
//saber type
if ( !Q_stricmp( token, "saberType" ) )
{
if ( COM_ParseString( &p, &value ) )
{
continue;
}
int saberType = GetIDForString( SaberTable, value );
if ( saberType >= SABER_SINGLE && saberType <= NUM_SABERS )
{
saber->type = (saberType_t)saberType;
}
continue;
}
//saber hilt
if ( !Q_stricmp( token, "saberModel" ) )
{
if ( COM_ParseString( &p, &value ) )
{
continue;
}
//.........这里部分代码省略.........
示例15: AICast_ScriptParse
/*
==============
AICast_ScriptParse
Parses the script for the given character
==============
*/
void AICast_ScriptParse( cast_state_t *cs )
{
#define MAX_SCRIPT_EVENTS 64
gentity_t *ent;
char *pScript;
char *token;
qboolean wantName;
qboolean inScript;
int eventNum;
cast_script_event_t events[MAX_SCRIPT_EVENTS];
int numEventItems;
cast_script_event_t *curEvent;
char params[MAX_QPATH];
cast_script_stack_action_t *action;
int i;
int bracketLevel;
if (!level.scriptAI)
return;
ent = &g_entities[cs->entityNum];
if (!ent->aiName)
return;
pScript = level.scriptAI;
wantName = qtrue;
inScript = qfalse;
COM_BeginParseSession("AICast_ScriptParse");
bracketLevel = 0;
numEventItems = 0;
memset( events, 0, sizeof(events) );
while (1)
{
token = COM_Parse( &pScript );
if ( !token[0] )
{
if ( !wantName )
{
G_Error( "AICast_ScriptParse(), Error (line %d): '}' expected, end of script found.\n", COM_GetCurrentParseLine() );
}
break;
}
// end of script
if ( token[0] == '}' )
{
if ( inScript )
{
break;
}
if ( wantName )
{
G_Error( "AICast_ScriptParse(), Error (line %d): '}' found, but not expected.\n", COM_GetCurrentParseLine() );
}
wantName = qtrue;
}
else if ( token[0] == '{' )
{
if ( wantName )
{
G_Error( "AICast_ScriptParse(), Error (line %d): '{' found, NAME expected.\n", COM_GetCurrentParseLine() );
}
}
else if ( wantName )
{
if ( !Q_strcasecmp( ent->aiName, token ) )
{
inScript = qtrue;
numEventItems = 0;
}
wantName = qfalse;
}
else if ( inScript )
{
if ( !Q_strcasecmp( token, "attributes" ) ) {
// read in all the attributes
AICast_CheckLevelAttributes( cs, ent, &pScript );
continue;
}
eventNum = AICast_EventForString( token );
if (eventNum < 0)
{
G_Error( "AICast_ScriptParse(), Error (line %d): unknown event: %s.\n", COM_GetCurrentParseLine(), token );
}
if (numEventItems >= MAX_SCRIPT_EVENTS)
{
G_Error( "AICast_ScriptParse(), Error (line %d): MAX_SCRIPT_EVENTS reached (%d)\n", COM_GetCurrentParseLine(), MAX_SCRIPT_EVENTS );
}
// if this is a "friendlysightcorpse" event, then disable corpse vis sharing
//.........这里部分代码省略.........