本文整理汇总了C++中COM_BeginParseSession函数的典型用法代码示例。如果您正苦于以下问题:C++ COM_BeginParseSession函数的具体用法?C++ COM_BeginParseSession怎么用?C++ COM_BeginParseSession使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了COM_BeginParseSession函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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;
}
开发者ID:JamesKhoury,项目名称:OpenJK,代码行数:26,代码来源:g_itemLoad.cpp
示例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;
}
开发者ID:Rhamill7,项目名称:OpenJK,代码行数:56,代码来源:g_bot.c
示例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);
}
开发者ID:kingtiger01,项目名称:OpenMOHAA,代码行数:49,代码来源:loadtiki.c
示例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;
}
}
}
}
开发者ID:mehmehsomeone,项目名称:OpenRP,代码行数:49,代码来源:g_svcmds.cpp
示例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;
}
开发者ID:zturtleman,项目名称:etlegacy,代码行数:50,代码来源:cl_cgame.c
示例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);
}
}
}
开发者ID:3ddy,项目名称:Jedi-Academy,代码行数:22,代码来源:g_weaponLoad.cpp
示例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 );
}
}
开发者ID:Gireen,项目名称:Unvanquished,代码行数:39,代码来源:g_combat.c
示例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);
}
}
开发者ID:Sepulman,项目名称:OpenJK,代码行数:29,代码来源:cm_shader.cpp
示例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++;
}
}
}
开发者ID:gitter-badger,项目名称:rpgxEF,代码行数:41,代码来源:tims_bg_misc.c
示例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
//.........这里部分代码省略.........
开发者ID:MAN-AT-ARMS,项目名称:iortcw-archive,代码行数:101,代码来源:ui_players.c
示例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;
}
开发者ID:3ddy,项目名称:Jedi-Outcast,代码行数:72,代码来源:ui_saber.cpp
示例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 ) {
//.........这里部分代码省略.........
开发者ID:JackalFrost,项目名称:RTCW-WSGF,代码行数:101,代码来源:ai_cast_script.c
示例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 );
}
开发者ID:gitter-badger,项目名称:rpgxEF,代码行数:81,代码来源:ui_turbolift.c
示例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;
}
//.........这里部分代码省略.........
开发者ID:3ddy,项目名称:Jedi-Academy,代码行数:101,代码来源:wp_saberLoad.cpp
示例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
//.........这里部分代码省略.........
开发者ID:natelo,项目名称:rtcwPub,代码行数:101,代码来源:ai_cast_script.c
示例16: UI_SaberGetHiltInfo
//void UI_SaberGetHiltInfo( const char *singleHilts[MAX_SABER_HILTS], const char *staffHilts[MAX_SABER_HILTS] )
void UI_SaberGetHiltInfo(void){
int numSingleHilts = 0, numStaffHilts = 0;
const char *saberName;
const char *token;
const char *p;
//go through all the loaded sabers and put the valid ones in the proper list
p = SaberParms;
COM_BeginParseSession("saberlist");
// look for a saber
while ( p )
{
token = COM_ParseExt( &p, qtrue );
if ( token[0] == 0 )
{//invalid name
continue;
}
saberName = String_Alloc( token );
//see if there's a "{" on the next line
SkipRestOfLine( &p );
if ( UI_ParseLiteralSilent( &p, "{" ) )
{//nope, not a name, keep looking
continue;
}
//this is a saber name
if ( !UI_SaberValidForPlayerInMP( saberName ) )
{
SkipBracedSection( &p );
continue;
}
if ( UI_IsSaberTwoHanded( saberName ) )
{
#ifndef DYNAMICMEMORY_SABERS
if ( numStaffHilts < MAX_SABER_HILTS-1 )//-1 because we have to NULL terminate the list
{
staffHilts[numStaffHilts++] = saberName;
}
else
{
Com_Printf( "WARNING: too many two-handed sabers, ignoring saber '%s'\n", saberName );
}
#else
UI_ReaAllocMem((void *)&saberStaffHiltInfo, sizeof(char *), numStaffHilts+1);
saberStaffHiltInfo[numStaffHilts++] = (char *) saberName;
#endif
}
else
{
#ifndef DYNAMICMEMORY_SABERS
if ( numSingleHilts < MAX_SABER_HILTS-1 )//-1 because we have to NULL terminate the list
{
singleHilts[numSingleHilts++] = saberName;
}
else
{
Com_Printf( "WARNING: too many one-handed sabers, ignoring saber '%s'\n", saberName );
}
#else
UI_ReaAllocMem((void *)&saberSingleHiltInfo, sizeof(char *), numSingleHilts+1);
saberSingleHiltInfo[numSingleHilts++] = (char *) saberName;
#endif
}
//skip the whole braced section and move on to the next entry
SkipBracedSection( &p );
}
//null terminate the list so the UI code knows where to stop listing them
#ifndef DYNAMICMEMORY_SABERS
singleHilts[numSingleHilts] = NULL;
staffHilts[numStaffHilts] = NULL;
#else
saberSingleHiltCount = numSingleHilts;
saberStaffHiltCount = numStaffHilts;
#endif
}
开发者ID:ForcePush,项目名称:OJPRPFZ,代码行数:79,代码来源:ui_saber.c
示例17: NPC_ParseParms
//.........这里部分代码省略.........
ri->torsoYawRangeRight = 60;
ri->torsoPitchRangeUp = 30;
ri->torsoPitchRangeDown = 70;
*/
ri->headYawRangeLeft = 80;
ri->headYawRangeRight = 80;
ri->headPitchRangeUp = 45;
ri->headPitchRangeDown = 45;
ri->torsoYawRangeLeft = 60;
ri->torsoYawRangeRight = 60;
ri->torsoPitchRangeUp = 30;
ri->torsoPitchRangeDown = 50;
VectorCopy(playerMins, NPC->mins);
VectorCopy(playerMaxs, NPC->maxs);
NPC->client->crouchheight = CROUCH_MAXS_2;
NPC->client->standheight = DEFAULT_MAXS_2;
NPC->client->dismemberProbHead = 100;
NPC->client->dismemberProbArms = 100;
NPC->client->dismemberProbHands = 100;
NPC->client->dismemberProbWaist = 100;
NPC->client->dismemberProbLegs = 100;
if ( !Q_stricmp( "random", NPCName ) )
{//Randomly assemble a starfleet guy
NPC_BuildRandom( NPC );
}
else
{
p = NPCParms;
COM_BeginParseSession();
// look for the right NPC
while ( p )
{
token = COM_ParseExt( &p, qtrue );
if ( token[0] == 0 )
{
return qfalse;
}
if ( !Q_stricmp( token, NPCName ) )
{
break;
}
SkipBracedSection( &p );
}
if ( !p )
{
return qfalse;
}
if ( G_ParseLiteral( &p, "{" ) )
{
return qfalse;
}
// parse the NPC info block
while ( 1 )
{
token = COM_ParseExt( &p, qtrue );
if ( !token[0] )
开发者ID:CairnTrenor,项目名称:OpenJK,代码行数:67,代码来源:NPC_stats.cpp
示例18: NPC_Precache
/*
void NPC_Precache ( char *NPCName )
Precaches NPC skins, tgas and md3s.
*/
void NPC_Precache ( gentity_t *spawner )
{
clientInfo_t ci={0};
renderInfo_t ri={0};
team_t playerTeam = TEAM_FREE;
const char *token;
const char *value;
const char *p;
char *patch;
char sound[MAX_QPATH];
qboolean md3Model = qfalse;
char playerModel[MAX_QPATH];
char customSkin[MAX_QPATH];
if ( !Q_stricmp( "random", spawner->NPC_type ) )
{//sorry, can't precache a random just yet
return;
}
strcpy(customSkin,"default");
p = NPCParms;
COM_BeginParseSession();
// look for the right NPC
while ( p )
{
token = COM_ParseExt( &p, qtrue );
if ( token[0] == 0 )
{
return;
}
if ( !Q_stricmp( token, spawner->NPC_type ) )
{
break;
}
SkipBracedSection( &p );
}
if ( !p )
{
return;
}
if ( G_ParseLiteral( &p, "{" ) )
{
return;
}
// parse the NPC info block
while ( 1 )
{
token = COM_ParseExt( &p, qtrue );
if ( !token[0] )
{
gi.Printf( S_COLOR_RED"ERROR: unexpected EOF while parsing '%s'\n", spawner->NPC_type );
return;
}
if ( !Q_stricmp( token, "}" ) )
{
break;
}
// headmodel
if ( !Q_stricmp( token, "headmodel" ) )
{
if ( COM_ParseString( &p, &value ) )
{
continue;
}
if(!Q_stricmp("none", value))
{
}
else
{
Q_strncpyz( ri.headModelName, value, sizeof(ri.headModelName), qtrue);
}
md3Model = qtrue;
continue;
}
// torsomodel
if ( !Q_stricmp( token, "torsomodel" ) )
{
if ( COM_ParseString( &p, &value ) )
{
continue;
}
if(!Q_stricmp("none", value))
{
//.........这里部分代码省略.........
开发者ID:CairnTrenor,项目名称:OpenJK,代码行数:101,代码来源:NPC_stats.cpp
示例19: ScanAndLoadShaderFilesR1
/**
* @brief Finds and loads all .shader files, combining them into
* a single large text block that can be scanned for shader names
*/
int ScanAndLoadShaderFilesR1()
{
char **shaderFiles;
char *buffers[MAX_SHADER_FILES];
char *p;
int numShaderFiles, i;
char *oldp, *token, *textEnd;
char **hashMem;
int shaderTextHashTableSizes[MAX_SHADERTEXT_HASH], hash;
unsigned int size;
char filename[MAX_QPATH];
long sum = 0, summand;
Com_Memset(buffers, 0, MAX_SHADER_FILES);
Com_Memset(shaderTextHashTableSizes, 0, MAX_SHADER_FILES);
// scan for shader files
shaderFiles = ri.FS_ListFiles("scripts", ".shader", &numShaderFiles);
if (!shaderFiles || !numShaderFiles)
{
Ren_Print("----- ScanAndLoadShaderFilesR1 (no files)-----\n");
return 0;
}
Ren_Print("----- ScanAndLoadShaderFilesR1 (%i files)-----\n", numShaderFiles);
if (numShaderFiles >= MAX_SHADER_FILES)
{
Ren_Drop("MAX_SHADER_FILES limit is reached!");
}
// load and parse shader files
for (i = 0; i < numShaderFiles; i++)
{
Com_sprintf(filename, sizeof(filename), "scripts/%s", shaderFiles[i]);
COM_BeginParseSession(filename);
Ren_Developer("...loading '%s'\n", filename);
summand = ri.FS_ReadFile(filename, (void **)&buffers[i]);
if (!buffers[i])
{
Ren_Drop("Couldn't load %s", filename); // in this case shader file is cought/listed but the file can't be read - drop!
}
p = buffers[i];
while (1)
{
token = COM_ParseExt(&p, qtrue);
if (!*token)
{
break;
}
// Step over the "table"/"guide" and the name
if (!Q_stricmp(token, "table") || !Q_stricmp(token, "guide"))
{
token = COM_ParseExt2(&p, qtrue);
if (!*token)
{
break;
}
}
oldp = p;
token = COM_ParseExt2(&p, qtrue);
if (token[0] != '{' && token[1] != '\0')
{
Ren_Warning("WARNING: Bad shader file %s has incorrect syntax near token '%s' line %i\n", filename, token, COM_GetCurrentParseLine());
ri.FS_FreeFile(buffers[i]);
buffers[i] = NULL;
break;
}
SkipBracedSection(&oldp);
p = oldp;
}
if (buffers[i])
{
sum += summand;
}
}
// build single large buffer
s_shaderTextR1 = (char *)ri.Hunk_Alloc(sum + numShaderFiles * 2, h_low);
s_shaderTextR1[0] = '\0';
textEnd = s_shaderTextR1;
// free in reverse order, so the temp files are all dumped
for (i = numShaderFiles - 1; i >= 0 ; i--)
{
//.........这里部分代码省略.........
开发者ID:zturtleman,项目名称:etlegacy,代码行数:101,代码来源:tr_shader_r1.c
示例20: UI_ParseInfos
/*
===============
UI_ParseInfos
===============
*/
int UI_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 ("UI_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 *) UI_Alloc(strlen(info) + strlen("\\num\\") + strlen(va("%d", MAX_ARENAS)) + 1);
if (infos[count]) {
strcpy(infos[count], info);
#ifndef FINAL_BUILD
if (trap->Cvar_VariableValue("com_buildScript"))
{
char *botFile = Info_ValueForKey(info, "personality");
if (botFile && botFile[0])
{
int fh = 0;
trap->FS_Open(botFile, &fh, FS_READ);
if (fh)
{
trap->FS_Close(fh);
}
}
}
#endif
count++;
}
}
return count;
}
开发者ID:BSzili,项目名称:OpenJK,代码行数:71,代码来源:ui_gameinfo.c
注:本文中的COM_BeginParseSession函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论