/* * 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_LoadingClient =================== */ void CG_LoadingClient( int clientNum ) { const char *info; char *skin; char personality[MAX_QPATH]; char model[MAX_QPATH]; char iconName[MAX_QPATH]; info = CG_ConfigString( CS_PLAYERS + clientNum ); if ( loadingPlayerIconCount < MAX_LOADING_PLAYER_ICONS ) { Q_strncpyz( model, Info_ValueForKey( info, "model" ), sizeof( model ) ); skin = strrchr( model, '/' ); if ( skin ) { *skin++ = '\0'; } else { skin = "default"; } Com_sprintf( iconName, MAX_QPATH, "models/players/%s/icon_%s.tga", model, skin ); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip( iconName ); if ( !loadingPlayerIcons[loadingPlayerIconCount] ) { Com_sprintf( iconName, MAX_QPATH, "models/players/characters/%s/icon_%s.tga", model, skin ); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip( iconName ); } if ( !loadingPlayerIcons[loadingPlayerIconCount] ) { Com_sprintf( iconName, MAX_QPATH, "models/players/%s/icon_%s.tga", DEFAULT_MODEL, "default" ); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip( iconName ); } if ( loadingPlayerIcons[loadingPlayerIconCount] ) { loadingPlayerIconCount++; } } Q_strncpyz( personality, Info_ValueForKey( info, "n" ), sizeof(personality) ); //Q_CleanStr( personality ); //Com_Printf("clean str %c%c %s\n", personality[0], personality[1], personality); if( cgs.gametype == GT_SINGLE_PLAYER ) { trap_S_RegisterSound( va( "sound/player/announce/%s.wav", personality ), qtrue ); } CG_LoadingString( personality ); //sleep(5); #if 0 // testing while (1) { const char *s; static int i = 0; i++; s = va("loading test %d", i); CG_LoadingString(s); } #endif }
/* =================== CG_LoadingClient =================== */ void CG_LoadingClient( int clientNum ) { const char *info; char *skin; char personality[MAX_QPATH]; char model[MAX_QPATH]; char iconName[MAX_QPATH]; info = CG_ConfigString( CS_PLAYERS + clientNum ); if ( loadingPlayerIconCount < MAX_LOADING_PLAYER_ICONS ) { Q_strncpyz( model, Info_ValueForKey( info, "model" ), sizeof( model ) ); skin = Q_strrchr( model, '/' ); if ( skin ) { *skin++ = '\0'; } else { skin = "default"; } Com_sprintf( iconName, MAX_QPATH, "models/aw_players/%s/icon_%s.tga", model, skin ); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip( iconName ); if ( !loadingPlayerIcons[loadingPlayerIconCount] ) { Com_sprintf( iconName, MAX_QPATH, "models/aw_players/%s/icon_%s.tga", DEFAULT_MODEL, "default" ); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip( iconName ); } if ( loadingPlayerIcons[loadingPlayerIconCount] ) { loadingPlayerIconCount++; } } Q_strncpyz( personality, Info_ValueForKey( info, "n" ), sizeof(personality) ); Q_CleanStr( personality ); CG_LoadingString( personality ); }
/* =================== CG_LoadingClient =================== */ void CG_LoadingClient( int clientNum ) { const char *info; char *skin; char personality[MAX_QPATH]; char model[MAX_QPATH]; char iconName[MAX_QPATH]; info = CG_ConfigString( CS_PLAYERS + clientNum ); Q_strncpyz( model, Info_ValueForKey( info, "model" ), sizeof( model ) ); skin = strchr( model, '/' ); if ( skin ) { //*skin++ = '\0'; //} else { // skin = "default"; model[strlen(model) - strlen(skin)] = '\0'; } //RPG-X: MODEL SYSTEM CHANGE Com_sprintf( iconName, MAX_QPATH, "models/players_rpgx/%s/model_icon.jpg", model ); //Com_sprintf( iconName, MAX_QPATH, "models/players/%s/icon_%s.jpg", model, skin ); //CG_Printf( S_COLOR_RED "Loading %s\n", iconName ); loadingPlayerIcon = trap_R_RegisterShaderNoMip( iconName ); //iconName; Q_strncpyz( personality, Info_ValueForKey( info, "n" ), sizeof(personality) ); Q_CleanStr( personality ); CG_LoadingString( personality ); }
static void CG_LoadMissileLensFlares(void) { char* p; #if LFDEBUG CG_LoadingString("LF: CG_LoadMissileLensFlares()"); #endif cgs.numMissileLensFlareEffects = 0; memset(&cgs.missileLensFlareEffects, 0, sizeof(cgs.missileLensFlareEffects)); CG_PushFile("effects/", "effects.lfs"); if (!CG_PopFile()) return; lfNameBase[0] = 0; p = lfbuf; // parse all lens flare effects while (cgs.numMissileLensFlareEffects < MAX_MISSILE_LENSFLARE_EFFECTS && p) { if (!CG_ParseLensFlareEffect(&p, &cgs.missileLensFlareEffects[cgs.numMissileLensFlareEffects])) { break; } cgs.numMissileLensFlareEffects++; } CG_Printf("%d missile lens flare effects loaded\n", cgs.numMissileLensFlareEffects); cgs.lensFlareEffectBeamHead = CG_FindMissileLensFlareEffect("beamHead"); cgs.lensFlareEffectSolarFlare = CG_FindMissileLensFlareEffect("solarFlare"); cgs.lensFlareEffectExplosion1 = CG_FindMissileLensFlareEffect("explosion1"); cgs.lensFlareEffectExplosion2 = CG_FindMissileLensFlareEffect("explosion2"); cgs.lensFlareEffectExplosion3 = CG_FindMissileLensFlareEffect("explosion3"); cgs.lensFlareEffectExplosion4 = CG_FindMissileLensFlareEffect("explosion4"); cgs.lensFlareEffectEnergyGlowDarkBackground = CG_FindMissileLensFlareEffect("energyGlowDarkBackground"); }
/* =================== CG_LoadingItem =================== */ void CG_LoadingItem( int itemNum ) { gitem_t *item; item = &bg_itemlist[itemNum]; CG_LoadingString( CG_GetStripEdString("INGAME",item->classname) ); }
void CG_ComputeMaxVisAngle(lensFlareEntity_t* lfent) { const lensFlareEffect_t* lfeff; int i; float maxVisAngle; #if LFDEBUG CG_LoadingString("LF: CG_ComputeMaxVisAngle()"); #endif lfeff = lfent->lfeff; if (lfent->angle >= 0 && lfeff) { maxVisAngle = 0.0; for (i = 0; i < lfeff->numLensFlares; i++) { const lensFlare_t* lf; float visAngle; lf = &lfeff->lensFlares[i]; visAngle = lfent->angle * lf->entityAngleFactor + lfeff->fadeAngle * lf->fadeAngleFactor; if (visAngle > maxVisAngle) maxVisAngle = visAngle; } } else { maxVisAngle = 999.0; } lfent->maxVisAngle = maxVisAngle; }
static void CG_InitFileStack(void) { #if LFDEBUG CG_LoadingString("LF: CG_InitFileStack()"); #endif numFilesOnStack = 0; lfbuf[0] = 0; }
void CG_LoadLensFlares(void) { char* p; #if LFDEBUG CG_LoadingString("LF: CG_LoadLensFlares()"); #endif CG_InitFileStack(); cgs.numLensFlareEffects = 0; memset(&cgs.lensFlareEffects, 0, sizeof(cgs.lensFlareEffects)); CG_PushFile("maps/", va("%s.lfs", Info_ValueForKey(CG_ConfigString(CS_SERVERINFO), "mapname"))); if (!CG_PopFile()) return; lfNameBase[0] = 0; p = lfbuf; // parse all lens flare effects while (cgs.numLensFlareEffects < MAX_LENSFLARE_EFFECTS && p) { if (!CG_ParseLensFlareEffect(&p, &cgs.lensFlareEffects[cgs.numLensFlareEffects])) { break; } cgs.numLensFlareEffects++; } CG_Printf("%d lens flare effects loaded\n", cgs.numLensFlareEffects); }
/* =================== CG_LoadingAwModel =================== */ void CG_LoadingAwModel( int modelNum ) { char personality[MAX_QPATH]; char iconName[MAX_QPATH]; modelslist_t *ml; if ( loadingPlayerIconCount < MAX_LOADING_PLAYER_ICONS ) { ml = &(bg_modelslist[modelNum]); if( ml->head[0] == '*' ) { Com_sprintf( iconName, sizeof( iconName ), "models/aw_players/heads/%s/icon_%s.tga", &(ml->head[1]), ml->headSkin ); } else if( ml->head[0] == '&' ) { Com_sprintf( iconName, sizeof( iconName ), "models/aw_players/%s/icon_%s.tga", ml->model, ml->headSkin ); } else { Com_sprintf( iconName, sizeof( iconName ), "models/aw_players/%s/icon_%s.tga", ml->head, ml->headSkin ); } loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip( iconName ); if ( !loadingPlayerIcons[loadingPlayerIconCount] ) { Com_sprintf( iconName, MAX_QPATH, "models/aw_players/%s/icon_%s.tga", DEFAULT_MODEL, "default" ); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip( iconName ); } if ( loadingPlayerIcons[loadingPlayerIconCount] ) { loadingPlayerIconCount++; } } Q_strncpyz( personality, bg_modelslist[modelNum].name, MAX_QPATH ); CG_LoadingString( personality ); }
static qboolean CG_PopFile(void) { char name[256]; fileHandle_t file; int len; #if LFDEBUG CG_LoadingString("LF: CG_PopFile()"); #endif PopFile: if (numFilesOnStack <= 0) return qfalse; numFilesOnStack--; Q_strncpyz(lfNameBase, fileStack[numFilesOnStack].name, sizeof(lfNameBase)-1); Com_sprintf(name, sizeof(name), "%s%s", fileStack[numFilesOnStack].path, lfNameBase); COM_StripExtension(lfNameBase, lfNameBase, sizeof(lfNameBase)); len = strlen(lfNameBase); lfNameBase[len] = '/'; lfNameBase[len+1] = 0; len = trap_FS_FOpenFile(name, &file, FS_READ); if (!file) { CG_Printf(S_COLOR_YELLOW "'%s' not found\n", name); #if LFDEBUG CG_LoadingString(va("LF: CG_PopFile(%s) failed", name)); #endif goto PopFile; } if (len >= sizeof(lfbuf)) { CG_Printf(S_COLOR_YELLOW "file too large: '%s' > %d\n", name, sizeof(lfbuf)-1); #if LFDEBUG CG_LoadingString(va("LF: CG_PopFile(%s): file too large", name)); #endif goto PopFile; } CG_Printf("reading '%s'...\n", name); #if LFDEBUG CG_LoadingString(va("%s", name)); #endif trap_FS_Read(lfbuf, len, file); lfbuf[len] = 0; trap_FS_FCloseFile(file); return qtrue; }
static void CG_PushFile(const char* path, const char* name) { #if LFDEBUG CG_LoadingString(va("LF: CG_PushFile(%s)", name)); #endif if (numFilesOnStack >= FILESTACK_SIZE) return; Q_strncpyz(fileStack[numFilesOnStack].path, path, FILESTACK_NAMESIZE); Q_strncpyz(fileStack[numFilesOnStack].name, name, FILESTACK_NAMESIZE); numFilesOnStack++; }
/* =================== CG_LoadingItem =================== */ void CG_LoadingItem( int itemNum ) { gitem_t *item; item = BG_ItemForItemNum( itemNum ); if ( item->icon && loadingItemIconCount < MAX_LOADING_ITEM_ICONS ) { loadingItemIcons[loadingItemIconCount++] = trap_R_RegisterShaderNoMip( item->icon ); } CG_LoadingString( item->pickup_name ); }
/* =================== CG_LoadingItem =================== */ void CG_LoadingItem( int itemNum ) { gitem_t *item; item = &bg_itemlist[itemNum]; if ( item->icon ) { loadingItemIcon = trap_R_RegisterShaderNoMip( item->icon ); } CG_LoadingString( item->pickup_name ); }
/* =================== CG_LoadingClient =================== */ void CG_LoadingClient( int clientNum ) { const char *info; char personality[MAX_QPATH]; info = CG_ConfigString( CS_PLAYERS + clientNum ); Q_strncpyz( personality, Info_ValueForKey( info, "n" ), sizeof(personality) ); Q_CleanStr( personality ); CG_LoadingString( personality ); }
void CG_LoadingItem(int itemNum) { Gitem *item; item = &bg_itemlist[itemNum]; if(item->icon && loadingItemIconCount < MAX_LOADING_ITEM_ICONS) loadingItemIcons[loadingItemIconCount++] = trap_R_RegisterShaderNoMip(item->icon); CG_LoadingString(item->pickupname); }
/* =================== CG_LoadingItem =================== */ void CG_LoadingItem( int itemNum ) { gitem_t *item; item = &bg_itemlist[itemNum]; if ( item->icon && loadingItemIconCount < MAX_LOADING_ITEM_ICONS ) { loadingItemIcons[loadingItemIconCount++] = trap->re->RegisterShaderNoMip( item->icon ); } CG_LoadingString( item->pickup_name ); }
/* ================= CG_RegisterGraphics This function may execute for a couple of minutes with a slow disk. ================= */ static void CG_RegisterGraphics( void ) { int i; char items[MAX_ITEMS+1]; // clear any references to old media memset( &cg.refdef, 0, sizeof( cg.refdef ) ); trap_R_ClearScene(); CG_LoadingString( cgs.mapname ); trap_R_LoadWorldMap( cgs.mapname ); // precache status bar pics CG_LoadingString( "game media" ); cgs.media.backTileShader = trap_R_RegisterShader( "gfx/2d/backtile" ); memset( cg_items, 0, sizeof( cg_items ) ); memset( cg_weapons, 0, sizeof( cg_weapons ) ); }
static const lensFlareEffect_t* CG_FindLensFlareEffect(const char* name) { int i; #if LFDEBUG CG_LoadingString(va("LF: CG_FindLensFlareEffect(%s)", name)); #endif for (i = 0; i < cgs.numLensFlareEffects; i++) { if (!Q_stricmp(name, cgs.lensFlareEffects[i].name)) { return &cgs.lensFlareEffects[i]; } } return NULL; }
void CG_LoadingClient(int clientNum) { const char *info; char *skin; char personality[MAX_QPATH]; char model[MAX_QPATH]; char iconName[MAX_QPATH]; info = CG_ConfigString(CS_PLAYERS + clientNum); if(loadingPlayerIconCount < MAX_LOADING_PLAYER_ICONS){ Q_strncpyz(model, Info_ValueForKey(info, "model"), sizeof(model)); skin = strrchr(model, '/'); if(skin) *skin++ = '\0'; else skin = "default"; Q_sprintf(iconName, MAX_QPATH, Pplayermodels "/%s/icon_%s", model, skin); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip(iconName); if(!loadingPlayerIcons[loadingPlayerIconCount]){ Q_sprintf(iconName, MAX_QPATH, Pplayermodels "/characters/%s/icon_%s", model, skin); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip(iconName); } if(!loadingPlayerIcons[loadingPlayerIconCount]){ Q_sprintf(iconName, MAX_QPATH, Pplayermodels "/%s/icon_%s", DEFAULT_MODEL, "default"); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip(iconName); } if(loadingPlayerIcons[loadingPlayerIconCount]) loadingPlayerIconCount++; } Q_strncpyz(personality, Info_ValueForKey(info, "n"), sizeof(personality)); Q_cleanstr(personality); if(cgs.gametype == GT_SINGLE_PLAYER) trap_sndregister(va(Pannounce "/%s", personality), qtrue); CG_LoadingString(personality); }
/* =================== CG_LoadingItem =================== */ void CG_LoadingItem( int itemNum ) { gitem_t *item; char upperKey[1024]; item = &bg_itemlist[itemNum]; if (!item->classname || !item->classname[0]) { // CG_LoadingString( "Unknown item" ); return; } strcpy(upperKey, item->classname); CG_LoadingString( CG_GetStringEdString("SP_INGAME",Q_strupr(upperKey)) ); }
//Too : void CG_CachingClient(char *model, char *skin) { char iconName[MAX_QPATH]; char *s; Com_sprintf(iconName, MAX_QPATH, "models/players/%s/icon_%s.tga", model, skin); if (loadingPlayerIconCount < MAX_LOADING_PLAYER_ICONS) { loadingPlayerIcons[loadingPlayerIconCount++] = trap_R_RegisterShaderNoMip(iconName); } s = va("%s (in cache)", model); CG_LoadingString(s); }
static void CG_FinalizeLensFlareEffect(lensFlareEffect_t* lfeff) { int i; #if LFDEBUG CG_LoadingString("LF: CG_FinalizeLensFlareEffect()"); #endif if (lfeff->range >= 0) return; for (i = 0; i < lfeff->numLensFlares; i++) { lensFlare_t* lf; lf = &lfeff->lensFlares[i]; lf->intensityThreshold = 1 / (1 - lf->intensityThreshold) - 1; } }
/* * 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_LoadingItem =================== */ void CG_LoadingItem( int itemNum ) { #if 0 //----(SA) Max Kaufman request that we don't show any pacifier stuff for items gitem_t *item; item = &bg_itemlist[itemNum]; if ( item->giType == IT_KEY ) { // do not show keys at level startup //----(SA) return; } if ( item->icon && loadingItemIconCount < MAX_LOADING_ITEM_ICONS ) { loadingItemIcons[loadingItemIconCount++] = trap_R_RegisterShaderNoMip( item->icon ); } CG_LoadingString( item->pickup_name ); #endif //----(SA) end }
/* =================== CG_LoadingClient =================== */ void CG_LoadingClient(int clientNum) { const char *info; char *skin; char personality[MAX_QPATH]; char model[MAX_QPATH]; char iconName[MAX_QPATH]; info = CG_ConfigString(CS_PLAYERS + clientNum); if (loadingPlayerIconCount < MAX_LOADING_PLAYER_ICONS) { Q_strncpyz(model, Info_ValueForKey(info, "model"), sizeof(model)); skin = strrchr(model, '/'); if (skin) { *skin++ = '\0'; } else { skin = "default"; } Com_sprintf(iconName, MAX_QPATH, "models/players/%s/icon_%s.tga", model, skin); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip(iconName); if (!loadingPlayerIcons[loadingPlayerIconCount]) { Com_sprintf(iconName, MAX_QPATH, "models/players/characters/%s/icon_%s.tga", model, skin); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip(iconName); } if (!loadingPlayerIcons[loadingPlayerIconCount]) { // Elder: changed Com_sprintf(iconName, MAX_QPATH, "models/players/%s/icon_%s.tga", DEFAULT_MODEL, DEFAULT_SKIN); //Com_sprintf( iconName, MAX_QPATH, "models/players/%s/icon_%s.tga", DEFAULT_MODEL, "default" ); loadingPlayerIcons[loadingPlayerIconCount] = trap_R_RegisterShaderNoMip(iconName); } if (loadingPlayerIcons[loadingPlayerIconCount]) { loadingPlayerIconCount++; } } Q_strncpyz(personality, Info_ValueForKey(info, "n"), sizeof(personality)); Q_CleanStr(personality); if (cgs.gametype == GT_SINGLE_PLAYER) { trap_S_RegisterSound(va("sound/player/announce/%s.wav", personality), qtrue); } CG_LoadingString(personality); }
/* * 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_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(); }