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; }
/* ==================== 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; }
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++; }
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++; }
/* ==================== 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; }