}
/* blocks */
- if ( !stricmp( token, "textures" ) ){
+ if ( !Q_stricmp( token, "textures" ) ){
- parseEXblock ( EXpk3Textures, &EXpk3TexturesN, exName );
+ parseEXblock ( ExTextures, &ExTexturesN, exName );
}
- else if ( !stricmp( token, "shaders" ) ){
+ else if ( !Q_stricmp( token, "shaders" ) ){
- parseEXblock ( EXpk3Shaders, &EXpk3ShadersN, exName );
+ parseEXblock ( ExShaders, &ExShadersN, exName );
}
- else if ( !stricmp( token, "shaderfiles" ) ){
+ else if ( !Q_stricmp( token, "shaderfiles" ) ){
- parseEXblock ( EXpk3Shaderfiles, &EXpk3ShaderfilesN, exName );
+ parseEXblock ( ExShaderfiles, &ExShaderfilesN, exName );
}
- else if ( !stricmp( token, "sounds" ) ){
+ else if ( !Q_stricmp( token, "sounds" ) ){
- parseEXblock ( EXpk3Sounds, &EXpk3SoundsN, exName );
+ parseEXblock ( ExSounds, &ExSoundsN, exName );
}
- else if ( !stricmp( token, "videos" ) ){
+ else if ( !Q_stricmp( token, "videos" ) ){
- parseEXblock ( EXpk3Videos, &EXpk3VideosN, exName );
+ parseEXblock ( ExVideos, &ExVideosN, exName );
}
else{
Error( "ReadExclusionsFile: %s, line %d: unknown block name!\nValid ones are: textures, shaders, shaderfiles, sounds, videos.", exName, scriptline );
/* free the buffer */
free( buffer );
- if ( !stricmp( ExTextures + i*65, ExShaders + j*65 ) ){
+ for ( i = 0; i < ExTexturesN; i++ ){
+ for ( j = 0; j < ExShadersN; j++ ){
++ if ( !Q_stricmp( ExTextures + i*65, ExShaders + j*65 ) ){
+ break;
+ }
+ }
+ if ( j == ExShadersN ){
+ strcpy ( ExPureTextures + ExPureTexturesN*65, ExTextures + i*65 );
+ ExPureTexturesN++;
+ }
+ }
+
skipEXfile:
if( dbg ){
- Sys_Printf( "\tEXpk3Textures....%i\n", EXpk3TexturesN );
- for ( i = 0; i < EXpk3TexturesN; i++ ) Sys_Printf( "%s\n", EXpk3Textures + i*65 );
- Sys_Printf( "\tEXpk3Shaders....%i\n", EXpk3ShadersN );
- for ( i = 0; i < EXpk3ShadersN; i++ ) Sys_Printf( "%s\n", EXpk3Shaders + i*65 );
- Sys_Printf( "\tEXpk3Shaderfiles....%i\n", EXpk3ShaderfilesN );
- for ( i = 0; i < EXpk3ShaderfilesN; i++ ) Sys_Printf( "%s\n", EXpk3Shaderfiles + i*65 );
- Sys_Printf( "\tEXpk3Sounds....%i\n", EXpk3SoundsN );
- for ( i = 0; i < EXpk3SoundsN; i++ ) Sys_Printf( "%s\n", EXpk3Sounds + i*65 );
- Sys_Printf( "\tEXpk3Videos....%i\n", EXpk3VideosN );
- for ( i = 0; i < EXpk3VideosN; i++ ) Sys_Printf( "%s\n", EXpk3Videos + i*65 );
+ Sys_Printf( "\n\tExTextures....%i\n", ExTexturesN );
+ for ( i = 0; i < ExTexturesN; i++ ) Sys_Printf( "%s\n", ExTextures + i*65 );
+ Sys_Printf( "\n\tExPureTextures....%i\n", ExPureTexturesN );
+ for ( i = 0; i < ExPureTexturesN; i++ ) Sys_Printf( "%s\n", ExPureTextures + i*65 );
+ Sys_Printf( "\n\tExShaders....%i\n", ExShadersN );
+ for ( i = 0; i < ExShadersN; i++ ) Sys_Printf( "%s\n", ExShaders + i*65 );
+ Sys_Printf( "\n\tExShaderfiles....%i\n", ExShaderfilesN );
+ for ( i = 0; i < ExShaderfilesN; i++ ) Sys_Printf( "%s\n", ExShaderfiles + i*65 );
+ Sys_Printf( "\n\tExSounds....%i\n", ExSoundsN );
+ for ( i = 0; i < ExSoundsN; i++ ) Sys_Printf( "%s\n", ExSounds + i*65 );
+ Sys_Printf( "\n\tExVideos....%i\n", ExVideosN );
+ for ( i = 0; i < ExVideosN; i++ ) Sys_Printf( "%s\n", ExVideos + i*65 );
}
- if ( !stricmp( pk3Shaders + i*65, ExPureTextures + j*65 ) ){
+ /* can exclude pure textures right now, shouldn't create shaders for them anyway */
+ for ( i = 0; i < pk3ShadersN ; i++ ){
+ for ( j = 0; j < ExPureTexturesN ; j++ ){
++ if ( !Q_stricmp( pk3Shaders + i*65, ExPureTextures + j*65 ) ){
+ *( pk3Shaders + i*65 ) = '\0';
+ break;
+ }
+ }
+ }
//Parse Shader Files
+ /* hack */
+ endofscript = qtrue;
+
for ( i = 0; i < pk3ShaderfilesN; i++ ){
- qboolean wantShader = qfalse, wantShaderFile = qfalse;
- char shadername[ 1024 ], lastwantedShader[ 1024 ];
+ qboolean wantShader = qfalse, wantShaderFile = qfalse, ShaderFileExcluded = qfalse;
+ int shader;
+ char* reasonShader = NULL, reasonShaderFile = NULL;
/* load the shader */
sprintf( temp, "%s/%s", game->shaderPath, pk3Shaderfiles + i*65 );
- LoadScriptFile( temp, 0 );
-
+ SilentLoadScriptFile( temp, 0 );
+ if( dbg ) Sys_Printf( "\n\tentering %s\n", pk3Shaderfiles + i*65 );
+
+ /* do wanna le shader file? */
+ for ( j = 0; j < ExShaderfilesN; j++ ){
- if ( !stricmp( ExShaderfiles + j*65, pk3Shaderfiles + i*65 ) ){
++ if ( !Q_stricmp( ExShaderfiles + j*65, pk3Shaderfiles + i*65 ) ){
+ ShaderFileExcluded = qtrue;
+ reasonShaderFile = ExShaderfiles + j*65;
+ break;
+ }
+ }
/* tokenize it */
- if ( !stricmp( ExShaders + j*65, token ) ){
+ /* check if shader file has to be excluded */
+ while ( !ShaderFileExcluded )
+ {
+ /* test for end of file */
+ if ( !GetToken( qtrue ) ) {
+ break;
+ }
+
+ /* does it contain restricted shaders/textures? */
+ for ( j = 0; j < ExShadersN; j++ ){
- if ( !stricmp( ExPureTextures + j*65, token ) ){
++ if ( !Q_stricmp( ExShaders + j*65, token ) ){
+ ShaderFileExcluded = qtrue;
+ reasonShader = ExShaders + j*65;
+ break;
+ }
+ }
+ if ( ShaderFileExcluded )
+ break;
+ for ( j = 0; j < ExPureTexturesN; j++ ){
++ if ( !Q_stricmp( ExPureTextures + j*65, token ) ){
+ ShaderFileExcluded = qtrue;
+ reasonShader = ExPureTextures + j*65;
+ break;
+ }
+ }
+ if ( ShaderFileExcluded )
+ break;
+
+ /* handle { } section */
+ if ( !GetToken( qtrue ) ) {
+ break;
+ }
+ if ( strcmp( token, "{" ) ) {
+ Error( "ParseShaderFile: %s, line %d: { not found!\nFound instead: %s",
+ temp, scriptline, token );
+ }
+
+ while ( 1 )
+ {
+ /* get the next token */
+ if ( !GetToken( qtrue ) ) {
+ break;
+ }
+ if ( !strcmp( token, "}" ) ) {
+ break;
+ }
+ /* parse stage directives */
+ if ( !strcmp( token, "{" ) ) {
+ while ( 1 )
+ {
+ if ( !GetToken( qtrue ) ) {
+ break;
+ }
+ if ( !strcmp( token, "}" ) ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ /* tokenize it again */
+ SilentLoadScriptFile( temp, 0 );
while ( 1 )
{
/* test for end of file */
/* do wanna le shader? */
wantShader = qfalse;
for ( j = 0; j < pk3ShadersN; j++ ){
- if ( !stricmp( pk3Shaders + j*65, token) ){
+ if ( !Q_stricmp( pk3Shaders + j*65, token) ){
- strcpy ( shadername, pk3Shaders + j*65 );
- *(pk3Shaders + j*65) = '\0';
+ shader = j;
wantShader = qtrue;
break;
}
/* get an image */
GetToken( qfalse );
if ( token[ 0 ] != '*' && token[ 0 ] != '$' ) {
- tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN );
+ tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN );
}
}
- else if ( !stricmp( token, "animMap" ) ||
- !stricmp( token, "clampAnimMap" ) ) {
+ else if ( !Q_stricmp( token, "animMap" ) ||
+ !Q_stricmp( token, "clampAnimMap" ) ) {
GetToken( qfalse );// skip num
while ( TokenAvailable() ){
GetToken( qfalse );
- tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN );
+ tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN );
}
}
- else if ( !stricmp( token, "videoMap" ) ){
+ else if ( !Q_stricmp( token, "videoMap" ) ){
GetToken( qfalse );
FixDOSName( token );
if ( strchr( token, "/" ) == NULL ){
goto away;
}
}
- for ( j = 0; j < EXpk3VideosN; j++ ){
- if ( !Q_stricmp( EXpk3Videos + j*65, token ) ){
+ for ( j = 0; j < ExVideosN; j++ ){
- if ( !stricmp( ExVideos + j*65, token ) ){
++ if ( !Q_stricmp( ExVideos + j*65, token ) ){
goto away;
}
}
----------------------------------------------------------------- */
/* match surfaceparm */
- else if ( !stricmp( token, "surfaceparm" ) ) {
+ else if ( !Q_stricmp( token, "surfaceparm" ) ) {
GetToken( qfalse );
- if ( !stricmp( token, "nodraw" ) ) {
+ if ( !Q_stricmp( token, "nodraw" ) ) {
wantShader = qfalse;
+ *( pk3Shaders + shader*65 ) = '\0';
}
}
GetToken( qfalse );
/* ignore bogus paths */
- if ( stricmp( token, "-" ) && stricmp( token, "full" ) ) {
+ if ( Q_stricmp( token, "-" ) && Q_stricmp( token, "full" ) ) {
strcpy ( temp, token );
sprintf( token, "%s_up", temp );
- tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN );
+ tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN );
sprintf( token, "%s_dn", temp );
- tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN );
+ tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN );
sprintf( token, "%s_lf", temp );
- tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN );
+ tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN );
sprintf( token, "%s_rt", temp );
- tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN );
+ tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN );
sprintf( token, "%s_bk", temp );
- tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN );
+ tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN );
sprintf( token, "%s_ft", temp );
- tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN );
+ tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN );
}
/* skip rest of line */
GetToken( qfalse );
GetToken( qfalse );
}
}
+
//exclude shader
if ( wantShader ){
- for ( j = 0; j < EXpk3ShadersN; j++ ){
- if ( !Q_stricmp( EXpk3Shaders + j*65, shadername ) ){
+ for ( j = 0; j < ExShadersN; j++ ){
- if ( !stricmp( ExShaders + j*65, pk3Shaders + shader*65 ) ){
++ if ( !Q_stricmp( ExShaders + j*65, pk3Shaders + shader*65 ) ){
wantShader = qfalse;
+ *( pk3Shaders + shader*65 ) = '\0';
break;
}
}
}
}
if ( *( pk3Shaders + i*65 ) == '\0' ) continue;
- for ( j = 0; j < EXpk3TexturesN; j++ ){
- if ( !Q_stricmp( pk3Shaders + i*65, EXpk3Textures + j*65 ) ){
+ for ( j = 0; j < ExTexturesN; j++ ){
- if ( !stricmp( pk3Shaders + i*65, ExTextures + j*65 ) ){
++ if ( !Q_stricmp( pk3Shaders + i*65, ExTextures + j*65 ) ){
*( pk3Shaders + i*65 ) = '\0';
break;
}
//snds
for ( i = 0; i < pk3SoundsN; i++ ){
- for ( j = 0; j < EXpk3SoundsN; j++ ){
- if ( !Q_stricmp( pk3Sounds + i*65, EXpk3Sounds + j*65 ) ){
+ for ( j = 0; j < ExSoundsN; j++ ){
- if ( !stricmp( pk3Sounds + i*65, ExSounds + j*65 ) ){
++ if ( !Q_stricmp( pk3Sounds + i*65, ExSounds + j*65 ) ){
*( pk3Sounds + i*65 ) = '\0';
break;
}