Exemplo n.º 1
0
/* Open a Nebula Transparency pack */
void trans_pack_open(char *filename)
{
    FILE *f;
    char buf[256];
    char *range=NULL, *ptr;
    int type, begin, end;

    tile_trans = NULL;
    if (strcmp(filename,"none")==0) return;

    f = fopen(filename, "r");

	if (f == NULL) 
	{
	printf("Can't open %s\n", filename);
	return;
	}

  while (!feof(f)) 
	{
	fgets(buf, 256, f);

	ptr = strchr(buf, ';');
	if (ptr) *ptr='\0';

	ptr = strstr(buf, "Game");
	if (ptr) continue;
	ptr = strstr(buf, "Name");
	if (ptr) continue;

	ptr=buf;
	while (isspace(*ptr)) ptr++;
	ptr=(char *) get_token(ptr," ",&range);
	while (isspace(*ptr)) ptr++;
	if (isdigit(*ptr))
	{
		type=strtol(ptr,NULL,10);

		//strtol will stop at the first character that
		//it can't convert, and return that in 'ptr'. So we
		//can use it to handle hex values seperated by '-'
		begin=strtol(ptr,&ptr,16);
	  if (*ptr=='-') 
		{
				ptr++;
				end=strtol(ptr,&ptr,16);
	  } 
		else end = begin;
	   //printf("%x %x %d\n",begin,end,type);
	   trans_pack_add(begin, end, type);
	}
	}
	fclose(f);

	if (range) free(range);
}
Exemplo n.º 2
0
/* Open a Nebula Transparency pack */
void trans_pack_open(char *filename)
{
    FILE *f;
    char buf[256];
    char *res;
    char range[32];
    int type, begin, end;
    char *t;

    tile_trans = NULL;
    if (strcmp(filename,"none")==0)
	return;

    f = fopen(filename, "r");

    if (f == NULL) {
	printf("Can't open %s\n", filename);
	return;
    }
    while (!feof(f)) {
	res=fgets(buf, 256, f);

	t = strchr(buf, ';');
	if (t)
	    t[0] = 0;

	t = strstr(buf, "Game");
	if (t)
	    continue;
	t = strstr(buf, "Name");
	if (t)
	    continue;

	if (sscanf(buf, " %s %d \n", range, &type) == 2) {
	    t = strchr(range, '-');
	    if (t) {
		t[0] = 0;
		t++;
		sscanf(range, "%x", &begin);
		sscanf(t, "%x", &end);
	    } else {
		sscanf(range, "%x", &begin);
		end = begin;
	    }
	    //printf("%x %x %d\n",begin,end,type);
	    trans_pack_add(begin, end, type);
	}
    }
    fclose(f);
}