示例#1
0
void QFile_ReadMaterialTypes(char* filename)
{
	int		i;
	FILE	*f;

	if (materialtypes != defaultmaterialtypes)
	{
		if (materialtypes)
			free(materialtypes);
		materialtypes = (materialtype_t*)malloc(256 * sizeof(materialtype_t));
	}
	
	f = fopen (filename, "rb");
	if (!f)
	{
		materialtypes = defaultmaterialtypes;
		return;
	}
	fclose (f);

	LoadScriptFile(filename);
	i = 0;
	
	do	
	{
		GetScriptToken (true);
		if (endofscript)
		{
			break;
		}
		if (strcmp(sof_token, "material") != 0)
		{
			while (ScriptTokenAvailable())
			{
				GetScriptToken(false);
			}
		}
		else
		{
			GetScriptToken(false);
			materialtypes[i].name = (char*)malloc(strlen(sof_token) + 1);
			strcpy(materialtypes[i].name, sof_token);
			GetScriptToken (false);
			materialtypes[i].value = atoi(sof_token);
		}
	}
	while (i++ < 255);

	materialtypes[i].name = NULL;
	materialtypes[i].value = 0;
}
示例#2
0
/*
   ===============
   Cmd_Frame
   ===============
 */
void Cmd_Frame( void ){
	while ( ScriptTokenAvailable() )
	{
		GetScriptToken( false );
		if ( g_skipmodel ) {
			continue;
		}
		if ( g_release || g_archive ) {
			model.num_frames = 1;   // don't skip the writeout
			continue;
		}

		H_printf( "#define FRAME_%-16s\t%i\n", token, model.num_frames );

		GrabFrame( token );
	}
}
示例#3
0
/*
===============
Cmd_Maps

Only relevent for release and pak files.
Releases the .bsp files for the maps, and scans all of the files to
build a list of all textures used, which are then released.
===============
*/
void Cmd_Maps (void)
{
	char	map[1024];
	int		i;

	while (ScriptTokenAvailable ())
	{
		GetScriptToken (false);
		sprintf (map, "maps/%s.bsp", token);
		ReleaseFile (map);

		if (!g_release)
			continue;

		// get all the texture references
		sprintf (map, "%smaps/%s.bsp", gamedir, token);
		LoadBSPFileTexinfo (map);
		for (i=0 ; i<numtexinfo ; i++)
			ReleaseTexture (texinfo[i].texture);
	}
}
示例#4
0
/*
===============
Cmd_Skin

Skins aren't actually stored in the file, only a reference
is saved out to the header file.
===============
*/
void Cmd_Skin (void)
{
	byte	*palette;
	byte	*pixels;
	int		width, height;
	byte	*cropped;
	int		y;
	char	name[1024], savename[1024];

	GetScriptToken (false);

	if (model.num_skins == MAX_MD2SKINS)
		Error ("model.num_skins == MAX_MD2SKINS");

	if (g_skipmodel)
		return;

#if 1
	sprintf (name, "%s/%s.pcx", cddir, token);
	sprintf (savename, "%s/!%s.pcx", g_outputDir, token);
	sprintf (g_skins[model.num_skins], "%s/!%s.pcx", cdpartial, token);
#else
	sprintf (name, "%s/%s.lbm", cdarchive, token);
	strcpy (name, ExpandPathAndArchive( name ) );
//	sprintf (name, "%s/%s.lbm", cddir, token);

	if (ScriptTokenAvailable())
	{
		GetScriptToken (false);
		sprintf (g_skins[model.num_skins], "%s.pcx", token);
		sprintf (savename, "%s%s.pcx", g_outputDir, g_skins[model.num_skins]);
	}
	else
	{
		sprintf (savename, "%s/%s.pcx", g_outputDir, token);
		sprintf (g_skins[model.num_skins], "%s/%s.pcx", cdpartial, token);
	}
#endif

	model.num_skins++;

	if (g_skipmodel || g_release || g_archive)
		return;

	// load the image
	printf ("loading %s\n", name);
	Load256Image (name, &pixels, &palette, &width, &height);
//	RemapZero (pixels, palette, width, height);

	// crop it to the proper size
	cropped = (byte *) SafeMalloc (model.skinwidth*model.skinheight, "Cmd_Skin");
	for (y=0 ; y<model.skinheight ; y++)
	{
		memcpy (cropped+y*model.skinwidth,
			pixels+y*width, model.skinwidth);
	}

	// save off the new image
	printf ("saving %s\n", savename);
	CreatePath (savename);
	WritePCXfile (savename, cropped, model.skinwidth,
		model.skinheight, palette);

	free (pixels);
	free (palette);
	free (cropped);
}
示例#5
0
/*
===============
ParseScript
===============
*/
void ParseScript (void)
{
	while (1)
	{
		do
		{	// look for a line starting with a $ command
			GetScriptToken (true);
			if (endofscript)
				return;
			if (token[0] == '$')
				break;				
			while (ScriptTokenAvailable())
				GetScriptToken (false);
		} while (1);
		
		//
		// model commands
		//
		if (!strcmp (token, "$modelname"))
			MODELCMD_Modelname (MODEL_MD2);
		else if (!strcmp (token, "$cd"))
			MODELCMD_Cd (MODEL_MD2);
		else if (!strcmp (token, "$origin"))
			MODELCMD_Origin (MODEL_MD2);
		else if (!strcmp (token, "$cluster"))
			MODELCMD_Cluster (MODEL_MD2);
		else if (!strcmp (token, "$base"))
			MODELCMD_Base (MODEL_MD2);
		else if (!strcmp (token, "$scale"))
			MODELCMD_ScaleUp (MODEL_MD2);
		else if (!strcmp (token, "$frame"))
			MODELCMD_Frame (MODEL_MD2);
		else if (!strcmp (token, "$skin"))
			MODELCMD_Skin (MODEL_MD2);
		else if (!strcmp (token, "$skinsize"))
			MODELCMD_Skinsize (MODEL_MD2);
		//
		// flexible model commands
		//
		else if (!strcmp (token, "$fm_modelname"))
			MODELCMD_Modelname (MODEL_FM);
		else if (!strcmp (token, "$fm_base"))
			MODELCMD_Base (MODEL_FM);
		else if (!strcmp (token, "$fm_basest"))
			MODELCMD_BaseST (MODEL_FM);
		else if (!strcmp (token, "$fm_cd"))
			MODELCMD_Cd (MODEL_FM);
		else if (!strcmp (token, "$fm_origin"))
			MODELCMD_Origin (MODEL_FM);
		else if (!strcmp (token, "$fm_cluster"))
			MODELCMD_Cluster (MODEL_FM);
		else if (!strcmp (token, "$fm_skeleton"))
			MODELCMD_Skeleton (MODEL_FM);
		else if (!strcmp (token, "$fm_scale"))
			MODELCMD_ScaleUp (MODEL_FM);
		else if (!strcmp (token, "$fm_frame"))
			MODELCMD_Frame (MODEL_FM);
		else if (!strcmp (token, "$fm_skeletal_frame"))	// left in for compadibility with qdt already using fm_skeletal_frame
			MODELCMD_Frame (MODEL_FM);
		else if (!strcmp (token, "$fm_skin"))
			MODELCMD_Skin (MODEL_FM);
		else if (!strcmp (token, "$fm_skinsize"))
			MODELCMD_Skinsize (MODEL_FM);
		else if (!strcmp (token, "$fm_begin_group"))
			MODELCMD_BeginGroup(MODEL_FM);
		else if (!strcmp (token, "$fm_end_group"))
			MODELCMD_EndGroup(MODEL_FM);
		else if (!strcmp (token, "$fm_referenced"))
			MODELCMD_Referenced(MODEL_FM);
		else if (!strcmp (token, "$fm_node_order"))
			MODELCMD_NodeOrder(MODEL_FM);
		
		//
		// sprite commands
		//
		else if (!strcmp (token, "$spritename"))
			Cmd_SpriteName ();
		else if (!strcmp (token, "$sprdir"))
			Cmd_Sprdir ();
		else if (!strcmp (token, "$load"))
			Cmd_Load ();
		else if (!strcmp (token, "$spriteframe"))
			Cmd_SpriteFrame ();
		//
		// image commands
		//
		else if (!strcmpi (token, "$grab"))
			Cmd_Grab ();
		else if (!strcmpi (token, "$raw"))
			Cmd_Raw ();
		else if (!strcmpi (token, "$colormap"))
			Cmd_Colormap ();
		else if (!strcmpi (token, "$mippal"))
			Cmd_Mippal ();
		else if (!strcmpi (token, "$mipdir"))
			Cmd_Mipdir ();
		else if (!strcmpi (token, "$mip"))
			Cmd_Mip ();
		else if (!strcmp (token, "$environment"))
			Cmd_Environment ();
		//
		// pics
		//
		else if (!strcmp (token, "$picdir"))
			Cmd_Picdir ();
		else if (!strcmp (token, "$pic"))
			Cmd_Pic ();
		//
		// book
		//
		else if (!strcmp (token, "$bookdir"))
			Cmd_Bookdir ();
		else if (!strcmp (token, "$book"))
			Cmd_Book ();
		//
		// tmix
		//
		else if (!strcmp (token, "$texturemix"))
			Cmd_TextureMix ();
		//
		// video
		//
		else if (!strcmp (token, "$video"))
			Cmd_Video ();
		//
		// misc
		//
		else if (!strcmp (token, "$file"))
			Cmd_File ();
		else if (!strcmp (token, "$dir"))
			Cmd_Dir ();
		else if (!strcmp (token, "$maps"))
			Cmd_Maps ();
		else if (!strcmp (token, "$alphalight"))
			Cmd_Alphalight ();
		else if (!strcmp (token, "$inverse16table" ))
			Cmd_Inverse16Table();
		else
			Error ("bad command %s\n", token);
	}
}