1 /*
2    Copyright (C) 1999-2006 Id Software, Inc. and contributors.
3    For a list of contributors, see the accompanying CONTRIBUTORS file.
4 
5    This file is part of GtkRadiant.
6 
7    GtkRadiant is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11 
12    GtkRadiant is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with GtkRadiant; if not, write to the Free Software
19    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20  */
21 
22 #include "qfiles.h"
23 #include "scriplib.h"
24 //#include <windows.h>
25 
26 materialtype_t defaultmaterialtypes[] =
27 {
28 	{"gravel",  MATERIAL_GRAVEL},
29 	{"metal",   MATERIAL_METAL},
30 	{"stone",   MATERIAL_STONE},
31 	{"wood",    MATERIAL_WOOD},
32 	{NULL,      0}
33 };
34 
35 materialtype_t  *materialtypes;
36 
QFile_ReadMaterialTypes(char * filename)37 void QFile_ReadMaterialTypes( char* filename ){
38 	int i;
39 	FILE    *f;
40 
41 	f = fopen( filename, "rb" );
42 	if ( !f ) {
43 		materialtypes = defaultmaterialtypes;
44 		return;
45 	}
46 	fclose( f );
47 
48 	free( materialtypes );
49 	materialtypes = (materialtype_t*)malloc( 256 * sizeof( materialtype_t ) );
50 
51 	LoadScriptFile( filename );
52 	i = 0;
53 
54 	while ( i < 255 )
55 	{
56 		GetScriptToken( true );
57 		if ( endofscript ) {
58 			break;
59 		}
60 		if ( strcmp( token, "material" ) != 0 ) {
61 			while ( ScriptTokenAvailable() )
62 			{
63 				GetScriptToken( false );
64 			}
65 		}
66 		else
67 		{
68 			GetScriptToken( false );
69 			materialtypes[i].name = (char*)malloc( strlen( token ) + 1 );
70 			strcpy( materialtypes[i].name, token );
71 			GetScriptToken( false );
72 			materialtypes[i].value = atoi( token );
73 		}
74 		i++;
75 	}
76 	materialtypes[i].name = NULL;
77 	materialtypes[i].value = 0;
78 }
79