+ // parse custinfoparms.txt
+ numcustsurfaceparms = 0;
+ if (text = f = (char *)FS_LoadFile("scripts/custinfoparms.txt", tempmempool, false, NULL))
+ {
+ if (!COM_ParseToken_QuakeC(&text, false) || strcasecmp(com_token, "{"))
+ Con_DPrintf("scripts/custinfoparms.txt: contentflags section parsing error - expected \"{\", found \"%s\"\n", com_token);
+ else
+ {
+ while (COM_ParseToken_QuakeC(&text, false))
+ if (!strcasecmp(com_token, "}"))
+ break;
+ // custom surfaceflags section
+ if (!COM_ParseToken_QuakeC(&text, false) || strcasecmp(com_token, "{"))
+ Con_DPrintf("scripts/custinfoparms.txt: surfaceflags section parsing error - expected \"{\", found \"%s\"\n", com_token);
+ else
+ {
+ while(COM_ParseToken_QuakeC(&text, false))
+ {
+ if (!strcasecmp(com_token, "}"))
+ break;
+ // register surfaceflag
+ if (numcustsurfaceparms >= 256)
+ {
+ Con_Printf("scripts/custinfoparms.txt: surfaceflags section parsing error - max 256 surfaceflags exceeded\n");
+ break;
+ }
+ // name
+ j = strlen(com_token)+1;
+ custsurfaceparmnames[numcustsurfaceparms] = (char *)Mem_Alloc(tempmempool, j);
+ strlcpy(custsurfaceparmnames[numcustsurfaceparms], com_token, j+1);
+ // value
+ if (COM_ParseToken_QuakeC(&text, false))
+ custsurfaceparms[numcustsurfaceparms] = strtol(com_token, NULL, 0);
+ else
+ custsurfaceparms[numcustsurfaceparms] = 0;
+ numcustsurfaceparms++;
+ }
+ }
+ }
+ Mem_Free(f);
+ }
+
+ // parse shaders