示例#1
0
/*
* CG_RegisterModels
*/
static void CG_RegisterModels( void )
{
	int i;
	char *name;

	name = cgs.configStrings[CS_WORLDMODEL];
	if( name[0] )
	{
		trap_R_RegisterWorldModel( name );
		CG_LoadingString( name );
	}

	CG_LoadingString( "models" );

	cgs.numWeaponModels = 1;
	Q_strncpyz( cgs.weaponModels[0], "generic/generic.md3", sizeof( cgs.weaponModels[0] ) );

	for( i = 1; i < MAX_MODELS; i++ )
	{
		name = cgs.configStrings[CS_MODELS+i];
		if( !name[0] )
			break;

		if( name[0] == '#' )
		{
			// special player weapon model
			if( cgs.numWeaponModels < WEAP_TOTAL )
			{
				Q_strncpyz( cgs.weaponModels[cgs.numWeaponModels], name+1, sizeof( cgs.weaponModels[cgs.numWeaponModels] ) );
				cgs.numWeaponModels++;
				CG_LoadingItemName( name );
			}
		}
		else if( name[0] == '$' )
		{
			// indexed pmodel
			cgs.pModelsIndex[i] = CG_RegisterPlayerModel( name+1 );
			CG_LoadingItemName( name );
		}
		else
		{
			CG_LoadingItemName( name );
			cgs.modelDraw[i] = CG_RegisterModel( name );
		}
	}

	CG_RegisterMediaModels();
	CG_RegisterBasePModel(); // never before registering the weapon models
	CG_RegisterWeaponModels();

	// precache forcemodels if defined
	CG_RegisterForceModels();

	// create a tag to offset the weapon models when seen in the world as items
	VectorSet( cgs.weaponItemTag.origin, 0, 0, 0 );
	Matrix3_Copy( axis_identity, cgs.weaponItemTag.axis );
	VectorMA( cgs.weaponItemTag.origin, -14, &cgs.weaponItemTag.axis[AXIS_FORWARD], cgs.weaponItemTag.origin );
}
示例#2
0
/*
* CG_ValidateItemList
*/
static void CG_ValidateItemList( void )
{
	int i;

	for( i = CS_ITEMS; i < CS_ITEMS+MAX_ITEMS; i++ )
	{
		if( cgs.configStrings[i][0] )
		{
			CG_LoadingItemName( cgs.configStrings[i] );
			CG_ValidateItemDef( i - CS_ITEMS, cgs.configStrings[i] );
		}
	}

	for( i = CS_WEAPONDEFS; i < CS_WEAPONDEFS + MAX_WEAPONDEFS; i++ )
	{
		if( cgs.configStrings[i][0] )
		{
			CG_LoadingItemName( cgs.configStrings[i] );
			CG_OverrideWeapondef( i - CS_WEAPONDEFS, cgs.configStrings[i] );
		}
	}
}
示例#3
0
/*
* CG_RegisterLightStyles
*/
static void CG_RegisterLightStyles( void )
{
	int i;
	char *name;

	CG_LoadingString( "lightstyles" );

	for( i = 0; i < MAX_LIGHTSTYLES; i++ )
	{
		name = cgs.configStrings[CS_LIGHTS+i];
		if( !name[0] )
			continue;

		CG_LoadingItemName( name );
		CG_SetLightStyle( i );
	}
}
示例#4
0
/*
* CG_RegisterClients
*/
static void CG_RegisterClients( void )
{
	int i;
	char *name;

	CG_LoadingString( "clients" );

	for( i = 0; i < gs.maxclients; i++ )
	{
		name = cgs.configStrings[CS_PLAYERINFOS+i];
		if( !name[0] )
			continue;

		CG_LoadingItemName( name );
		CG_LoadClientInfo( &cgs.clientInfo[i], name, i );
	}
}
示例#5
0
/*
* CG_RegisterSkinfiles
*/
static void CG_RegisterSkinFiles( void )
{
	int i;
	char *name;

	CG_LoadingString( "skins" );

	for( i = 1; i < MAX_SKINFILES; i++ )
	{
		name = cgs.configStrings[CS_SKINFILES+i];
		if( !name[0] )
			break;

		CG_LoadingItemName( name );
		cgs.skinPrecache[i] = trap_R_RegisterSkinFile( name );
	}
}
示例#6
0
文件: cg_cmds.c 项目: hettoo/racesow
/*
* CG_RegisterCGameCommands
*/
void CG_RegisterCGameCommands( void )
{
	int i;
	char *name;
	cgcmd_t *cmd;

	CG_LoadingString( "commands" );

	if( !cgs.demoPlaying )
	{
		// add game side commands
		for( i = 0; i < MAX_GAMECOMMANDS; i++ )
		{
			name = cgs.configStrings[CS_GAMECOMMANDS+i];
			if( !name[0] )
				continue;

			CG_LoadingItemName( name );

			// check for local command overrides
			for( cmd = cgcmds; cmd->name; cmd++ )
			{
				if( !Q_stricmp( cmd->name, name ) )
					break;
			}
			if( cmd->name )
				continue;

			if( !cgs.hasGametypeMenu && !Q_stricmp( name, "gametypemenu" ) ) {
				cgs.hasGametypeMenu = qtrue;
			}

			trap_Cmd_AddCommand( name, NULL );
		}
	}

	// add local commands
	for( cmd = cgcmds; cmd->name; cmd++ )
	{
		if( cgs.demoPlaying && !cmd->allowdemo )
			continue;
		trap_Cmd_AddCommand( cmd->name, cmd->func );
	}
}
示例#7
0
/*
* CG_RegisterShaders
*/
static void CG_RegisterShaders( void )
{
	int i;
	char *name;

	CG_LoadingString( "shaders" );

	for( i = 1; i < MAX_IMAGES; i++ )
	{
		name = cgs.configStrings[CS_IMAGES+i];
		if( !name[0] )
			break;

		CG_LoadingItemName( name );
		cgs.imagePrecache[i] = trap_R_RegisterPic( name );
	}

	CG_RegisterMediaShaders();
}
示例#8
0
/*
* CG_RegisterSounds
*/
static void CG_RegisterSounds( void )
{
	int i;
	char *name;

	CG_LoadingString( "sounds" );

	for( i = 1; i < MAX_SOUNDS; i++ )
	{
		name = cgs.configStrings[CS_SOUNDS+i];
		if( !name[0] )
			break;

		if( name[0] != '*' )
		{
			CG_LoadingItemName( name );
			cgs.soundPrecache[i] = trap_S_RegisterSound( name );
		}
	}

	CG_RegisterMediaSounds();
}