Exemple #1
0
void AddSpawnField(char *field, char *value)
{
	int	i;

	if ( stricmp(field, "classname") == 0 ) // allow multi-class etities
	{
		// Make sure we don't repeat a classname
		for(i=0;i<level.numSpawnVars;i++)
		{
			if (Q_stricmp(level.spawnVars[i][1], value) == 0)
				return;
		}
	}
	else
	{
		// replace any other parameters 
		for(i=0;i<level.numSpawnVars;i++)
		{
			if (Q_stricmp(level.spawnVars[i][0], field) == 0)
			{

				level.spawnVars[ i ][1] = G_AddSpawnVarToken( value );
				return;
			}
		}
	}

	level.spawnVars[ level.numSpawnVars ][0] = G_AddSpawnVarToken( field );
	level.spawnVars[ level.numSpawnVars ][1] = G_AddSpawnVarToken( value );
	level.numSpawnVars++;
}
qboolean G_ParseSpawnString( char *string ) {
	char	keyname[MAX_TOKEN_CHARS];
	char	*token;
	int		developer = trap_Cvar_VariableIntegerValue("developer");

	level.numSpawnVars = 0;
	level.numSpawnVarChars = 0;

	token = COM_Parse( &string );

	// parse the opening brace
	if (!strlen(token)) {
		// end of spawn string
		return qfalse;
	}
	if ( token[0] != '{' ) {
		G_Printf( "Error: found %s when expecting {\n",token );
		return qfalse;
	}

	// go through all the key / value pairs
	while ( 1 ) {
		// parse key
		token = COM_Parse( &string );
		if (!strlen(token)) {
			G_Printf( "Error: EOF without closing brace\n" );
			return qfalse;
		}

		if ( token[0] == '}' ) {
			break;
		}
		Q_strncpyz(keyname,token,sizeof(keyname));
		if (developer)
			G_Printf( S_COLOR_CYAN "G_ParseSpawnString: keyname = '%s'\n", keyname );

		// parse value
		token = COM_Parse( &string );
		if (!strlen(token)) {
			G_Printf( "Error: EOF without closing brace\n" );
			return qfalse;
		}
		if (developer)
			G_Printf( S_COLOR_CYAN "G_ParseSpawnString: value = '%s'\n", token );

		if ( token[0] == '}' ) {
			G_Printf( "Error: closing brace without data\n" );
			return qfalse;
		}
		if ( level.numSpawnVars == MAX_SPAWN_VARS ) {
			G_Printf( "Error: MAX_SPAWN_VARS\n" );
			return qfalse;
		}
		level.spawnVars[ level.numSpawnVars ][0] = G_AddSpawnVarToken( keyname );
		level.spawnVars[ level.numSpawnVars ][1] = G_AddSpawnVarToken( token );
		level.numSpawnVars++;
	}

	return qtrue;
}
Exemple #3
0
/*
====================
G_ParseSpawnVars

Parses a brace bounded set of key / value pairs out of the
level's entity strings into level.spawnVars[]

This does not actually spawn an entity.
====================
*/
qboolean G_ParseSpawnVars( void )
{
	char keyname[ MAX_TOKEN_CHARS ];
	char com_token[ MAX_TOKEN_CHARS ];

	level.numSpawnVars = 0;
	level.numSpawnVarChars = 0;

	// parse the opening brace
	if ( !trap_GetEntityToken( com_token, sizeof( com_token ) ) )
	{
		// end of spawn string
		return qfalse;
	}

	if ( com_token[ 0 ] != '{' )
	{
		G_Error( "G_ParseSpawnVars: found %s when expecting {", com_token );
	}

	// go through all the key / value pairs
	while ( 1 )
	{
		// parse key
		if ( !trap_GetEntityToken( keyname, sizeof( keyname ) ) )
		{
			G_Error( "G_ParseSpawnVars: EOF without closing brace" );
		}

		if ( keyname[ 0 ] == '}' )
		{
			break;
		}

		// parse value
		if ( !trap_GetEntityToken( com_token, sizeof( com_token ) ) )
		{
			G_Error( "G_ParseSpawnVars: EOF without closing brace" );
		}

		if ( com_token[ 0 ] == '}' )
		{
			G_Error( "G_ParseSpawnVars: closing brace without data" );
		}

		if ( level.numSpawnVars == MAX_SPAWN_VARS )
		{
			G_Error( "G_ParseSpawnVars: MAX_SPAWN_VARS" );
		}

		level.spawnVars[ level.numSpawnVars ][ 0 ] = G_AddSpawnVarToken( keyname );
		level.spawnVars[ level.numSpawnVars ][ 1 ] = G_AddSpawnVarToken( com_token );
		level.numSpawnVars++;
	}

	return qtrue;
}
Exemple #4
0
void AddSpawnField( const char *field, char *value ) {
	int	i;

	for ( i = 0; i < level.numSpawnVars; i++ ) {
		if ( !Q_stricmp( level.spawnVars[i][0], field ) ) {
			level.spawnVars[i][1] = G_AddSpawnVarToken( value );
			return;
		}
	}

	level.spawnVars[level.numSpawnVars][0] = G_AddSpawnVarToken( field );
	level.spawnVars[level.numSpawnVars][1] = G_AddSpawnVarToken( value );
	level.numSpawnVars++;
}
Exemple #5
0
void AddSpawnField(char *field, char *value)
{
	for(int i=0;i<level.numSpawnVars;i++)
	{
		if (strcmp(level.spawnVars[i][0], field) == 0)
		{
			level.spawnVars[ i ][1] = G_AddSpawnVarToken( value );
			return;
		}
	}

	level.spawnVars[ level.numSpawnVars ][0] = G_AddSpawnVarToken( field );
	level.spawnVars[ level.numSpawnVars ][1] = G_AddSpawnVarToken( value );
	level.numSpawnVars++;
}
Exemple #6
0
/*
====================
G_ParseSpawnVars

Parses a brace bounded set of key / value pairs out of the
level's entity strings into level.spawnVars[]

This does not actually spawn an entity.
====================
*/
bool G_ParseSpawnVars() 
{
	char		keyname[MAX_TOKEN_CHARS];
	char		com_token[MAX_TOKEN_CHARS];

	theLevel.numSpawnVars_ = 0;
	theLevel.numSpawnVarChars_ = 0;

	// parse the opening brace
	if ( !SV_GetEntityToken( com_token, sizeof( com_token ) ) ) 
	{
		// end of spawn string
		return false;
	}
	if ( com_token[0] != '{' ) 
		Com_Error( ERR_DROP, "G_ParseSpawnVars: found %s when expecting {",com_token );

	// go through all the key / value pairs
	while ( 1 )
	{	
		// parse key
		if ( !SV_GetEntityToken( keyname, sizeof( keyname ) ) ) 
			Com_Error( ERR_DROP, "G_ParseSpawnVars: EOF without closing brace" );

		if ( keyname[0] == '}' ) 
			break;
		
		// parse value	
		if ( !SV_GetEntityToken( com_token, sizeof( com_token ) ) ) 
			Com_Error( ERR_DROP, "G_ParseSpawnVars: EOF without closing brace" );

		if ( com_token[0] == '}' ) 
			Com_Error( ERR_DROP, "G_ParseSpawnVars: closing brace without data" );
		if ( theLevel.numSpawnVars_ == LevelLocals::k_MAX_SPAWN_VARS ) 
			Com_Error( ERR_DROP, "G_ParseSpawnVars: MAX_SPAWN_VARS" );

		theLevel.spawnVars_[ theLevel.numSpawnVars_ ][0] = G_AddSpawnVarToken( keyname );
		theLevel.spawnVars_[ theLevel.numSpawnVars_ ][1] = G_AddSpawnVarToken( com_token );
		theLevel.numSpawnVars_++;
	}

	return true;
}