/* * 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 ); }
/* * 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] ); } } }
/* * 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 ); } }
/* * 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 ); } }
/* * 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 ); } }
/* * 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 ); } }
/* * 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(); }
/* * 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(); }