SecondReality/VISU/C/READMAT.C
2017-09-24 01:45:36 +02:00

61 lines
No EOL
1.4 KiB
C

void readmat(void)
{
char tmp[256];
int a,b,c,d;
char *p,*p0,*t;
matnum=0;
printf("Materials:\n");
while(!feof(in))
{
p0=p=getline();
if(*p==';') continue;
if(*p)
{
t=gettoken(&p);
for(a=0;a<strlen(t);a++) if(t[a]=='#') t[a]=' ';
strcpy(mat[matnum].name,t);
mat[matnum].color=0;
mat[matnum].flags=0;
mat[matnum].colorlen=1;
while(*p)
{
t=gettoken(&p);
a=toupper(*t);
switch(a)
{
case 'X' :
mat[matnum].flags|=F_2SIDE;
break;
case 'L' :
mat[matnum].colorlen=atoi(t+1);
break;
case 'G' :
mat[matnum].flags|=F_GOURAUD;
break;
default :
if(a>='0' && a<='9')
{
mat[matnum].color=atoi(t);
}
break;
}
}
switch(mat[matnum].colorlen)
{
case 32 : mat[matnum].flags|=F_SHADE32; break;
case 16 : mat[matnum].flags|=F_SHADE16; break;
case 8 : mat[matnum].flags|=F_SHADE8; break;
case 1 : break;
default : printf("ILLEGAL COLOR LENGTH>> "); break;
}
sscanf(p,"%s %i %i",mat[matnum].name,&mat[matnum].color,&mat[matnum].colorlen);
printf("%s colors:%i..%i ",mat[matnum].name,mat[matnum].color,
mat[matnum].color+mat[matnum].colorlen-1);
if(mat[matnum].flags&F_GOURAUD) printf("Gouraud ");
if(mat[matnum].flags&F_TEXTURE) printf("Texture ");
printf("\n");
matnum++;
}
}
}