summaryrefslogtreecommitdiff
path: root/src/cgame
diff options
context:
space:
mode:
authorTim Angus <tim@ngus.net>2005-10-03 20:52:19 +0000
committerTim Angus <tim@ngus.net>2005-10-03 20:52:19 +0000
commit57a17f003806d9326b64317babf866d6111c0abb (patch)
tree9783aa743a70eadc3c2e6d88117d145d6d1ba3cb /src/cgame
parente6f475ab2290ff7bc847336ed1f211f2092ac602 (diff)
* Removed jump pad code (and associated media loading)
* Removed loading of some Q3 cruft * Spilled events attached to temporary entities are now reattached to their original entities, fixing the missing flame bug * Fixed "suicide god" bug * Fixed bug where zap ignores armour * Fixed missing particle systems when follow-spectating * Fixed potential bug involving dodgy pointer arithmetic in CG_LoadClientInfo * Cleaned up logic in CG_AddPlayerWeapon * MASK_SHOT traces no longer collide with corpses * Corpses timeout in 20 seconds instead of 60 * Improved robustness of spawn validation, fixing the bug on transit * A crapload of whitespace fixes
Diffstat (limited to 'src/cgame')
-rw-r--r--src/cgame/cg_animmapobj.c14
-rw-r--r--src/cgame/cg_buildable.c174
-rw-r--r--src/cgame/cg_draw.c396
-rw-r--r--src/cgame/cg_drawtools.c14
-rw-r--r--src/cgame/cg_ents.c124
-rw-r--r--src/cgame/cg_event.c152
-rw-r--r--src/cgame/cg_local.h120
-rw-r--r--src/cgame/cg_main.c244
-rw-r--r--src/cgame/cg_marks.c10
-rw-r--r--src/cgame/cg_mem.c2
-rw-r--r--src/cgame/cg_particles.c320
-rw-r--r--src/cgame/cg_players.c216
-rw-r--r--src/cgame/cg_playerstate.c12
-rw-r--r--src/cgame/cg_predict.c40
-rw-r--r--src/cgame/cg_ptr.c6
-rw-r--r--src/cgame/cg_public.h4
-rw-r--r--src/cgame/cg_scanner.c38
-rw-r--r--src/cgame/cg_servercmds.c184
-rw-r--r--src/cgame/cg_snapshot.c18
-rw-r--r--src/cgame/cg_syscalls.c18
-rw-r--r--src/cgame/cg_trails.c168
-rw-r--r--src/cgame/cg_view.c126
-rw-r--r--src/cgame/cg_weapons.c261
-rw-r--r--src/cgame/tr_types.h4
24 files changed, 1311 insertions, 1354 deletions
diff --git a/src/cgame/cg_animmapobj.c b/src/cgame/cg_animmapobj.c
index 6913721d..18f49b53 100644
--- a/src/cgame/cg_animmapobj.c
+++ b/src/cgame/cg_animmapobj.c
@@ -71,7 +71,7 @@ static void CG_RunAMOLerpFrame( lerpFrame_t *lf )
lf->frameTime = cg.time;
}
}
-
+
if( anim->reversed )
lf->frame = anim->firstFrame + anim->numFrames - 1 - f;
else if( anim->flipflop && f >= anim->numFrames )
@@ -132,7 +132,7 @@ void CG_ModelDoor( centity_t *cent )
if( !es->modelindex )
return;
-
+
//create the render entity
memset( &ent, 0, sizeof( ent ) );
VectorCopy( cent->lerpOrigin, ent.origin );
@@ -166,7 +166,7 @@ void CG_ModelDoor( centity_t *cent )
lf->animationTime = lf->frameTime + anim.initialLerp;
cent->doorState = es->legsAnim;
}
-
+
lf->animation = &anim;
//run animation
@@ -193,7 +193,7 @@ static void CG_AMOAnimation( centity_t *cent, int *old, int *now, float *backLer
cent->lerpFrame.oldFrameTime += delta;
cent->lerpFrame.frameTime += delta;
}
-
+
CG_RunAMOLerpFrame( &cent->lerpFrame );
cent->miscTime = cg.time;
}
@@ -242,21 +242,21 @@ void CG_animMapObj( centity_t *cent )
VectorScale( ent.axis[ 1 ], scale, ent.axis[ 1 ] );
VectorScale( ent.axis[ 2 ], scale, ent.axis[ 2 ] );
ent.nonNormalizedAxes = qtrue;
- }
+ }
//setup animation
anim.firstFrame = es->powerups;
anim.numFrames = es->weapon;
anim.reversed = qfalse;
anim.flipflop = qfalse;
-
+
// if numFrames is negative the animation is reversed
if( anim.numFrames < 0 )
{
anim.numFrames = -anim.numFrames;
anim.reversed = qtrue;
}
-
+
anim.loopFrames = es->torsoAnim;
if( !es->legsAnim )
diff --git a/src/cgame/cg_buildable.c b/src/cgame/cg_buildable.c
index 0c334e7b..38259dc6 100644
--- a/src/cgame/cg_buildable.c
+++ b/src/cgame/cg_buildable.c
@@ -84,7 +84,7 @@ void CG_AlienBuildableExplosion( vec3_t origin, vec3_t dir )
int i;
trap_S_StartSound( origin, ENTITYNUM_WORLD, CHAN_AUTO, cgs.media.alienBuildableExplosion );
-
+
// allow gibs to be turned off for speed
if( cg_gibs.integer )
{
@@ -93,7 +93,7 @@ void CG_AlienBuildableExplosion( vec3_t origin, vec3_t dir )
velocity[ 0 ] = crandom( ) * GGIB_VELOCITY;
velocity[ 1 ] = crandom( ) * GGIB_VELOCITY;
velocity[ 2 ] = GGIB_JUMP + crandom( ) * GGIB_VELOCITY;
-
+
switch( i )
{
case 1: case 5: gibModel = cgs.media.alienGib1; break;
@@ -101,11 +101,11 @@ void CG_AlienBuildableExplosion( vec3_t origin, vec3_t dir )
case 3: case 7: gibModel = cgs.media.alienGib3; break;
case 4: case 8: gibModel = cgs.media.alienGib4; break;
}
-
+
CG_AlienBuildableExplosionFragment( origin, velocity, gibModel );
}
}
-
+
//particle system
ps = CG_SpawnNewParticleSystem( cgs.media.alienBuildableDestroyedPS );
CG_SetParticleSystemOrigin( ps, origin );
@@ -187,7 +187,7 @@ void CG_HumanBuildableExplosion( vec3_t origin, vec3_t dir )
velocity[ 0 ] = crandom( ) * EXF_VELOCITY;
velocity[ 1 ] = crandom( ) * EXF_VELOCITY;
velocity[ 2 ] = EXF_JUMP + crandom( ) * EXF_VELOCITY;
-
+
switch( i )
{
case 1: gibModel = cgs.media.metalGib1; break;
@@ -199,10 +199,10 @@ void CG_HumanBuildableExplosion( vec3_t origin, vec3_t dir )
case 7: gibModel = cgs.media.metalGib7; break;
case 8: gibModel = cgs.media.metalGib8; break;
}
-
+
CG_HumanBuildableExplosionFragment( fragOrigin, velocity, gibModel );
}
-
+
//particle system
ps = CG_SpawnNewParticleSystem( cgs.media.humanBuildableDestroyedPS );
CG_SetParticleSystemOrigin( ps, origin );
@@ -287,13 +287,13 @@ static qboolean CG_ParseBuildableAnimationFile( const char *filename, buildable_
len = trap_FS_FOpenFile( filename, &f, FS_READ );
if( len <= 0 )
return qfalse;
-
+
if( len >= sizeof( text ) - 1 )
{
CG_Printf( "File %s too long\n", filename );
return qfalse;
}
-
+
trap_FS_Read( text, len, f );
text[ len ] = 0;
trap_FS_FCloseFile( f );
@@ -308,17 +308,17 @@ static qboolean CG_ParseBuildableAnimationFile( const char *filename, buildable_
token = COM_Parse( &text_p );
if( !*token )
break;
-
+
animations[ i ].firstFrame = atoi( token );
token = COM_Parse( &text_p );
if( !*token )
break;
-
+
animations[ i ].numFrames = atoi( token );
animations[ i ].reversed = qfalse;
animations[ i ].flipflop = qfalse;
-
+
// if numFrames is negative the animation is reversed
if( animations[ i ].numFrames < 0 )
{
@@ -329,17 +329,17 @@ static qboolean CG_ParseBuildableAnimationFile( const char *filename, buildable_
token = COM_Parse( &text_p );
if ( !*token )
break;
-
+
animations[i].loopFrames = atoi( token );
token = COM_Parse( &text_p );
if( !*token )
break;
-
+
fps = atof( token );
if( fps == 0 )
fps = 1;
-
+
animations[ i ].frameLerp = 1000 / fps;
animations[ i ].initialLerp = 1000 / fps;
}
@@ -349,7 +349,7 @@ static qboolean CG_ParseBuildableAnimationFile( const char *filename, buildable_
CG_Printf( "Error parsing animation file: %s\n", filename );
return qfalse;
}
-
+
return qtrue;
}
@@ -377,13 +377,13 @@ static qboolean CG_ParseBuildableSoundFile( const char *filename, buildable_t bu
len = trap_FS_FOpenFile( filename, &f, FS_READ );
if ( len <= 0 )
return qfalse;
-
+
if ( len >= sizeof( text ) - 1 )
{
CG_Printf( "File %s too long\n", filename );
return qfalse;
}
-
+
trap_FS_Read( text, len, f );
text[len] = 0;
trap_FS_FCloseFile( f );
@@ -398,15 +398,15 @@ static qboolean CG_ParseBuildableSoundFile( const char *filename, buildable_t bu
token = COM_Parse( &text_p );
if ( !*token )
break;
-
+
sounds[ i ].enabled = atoi( token );
token = COM_Parse( &text_p );
if ( !*token )
break;
-
+
sounds[ i ].looped = atoi( token );
-
+
}
if( i != MAX_BUILDABLE_ANIMATIONS )
@@ -414,7 +414,7 @@ static qboolean CG_ParseBuildableSoundFile( const char *filename, buildable_t bu
CG_Printf( "Error parsing sound file: %s\n", filename );
return qfalse;
}
-
+
return qtrue;
}
/*
@@ -440,20 +440,20 @@ void CG_InitBuildables( )
for( j = BANIM_NONE + 1; j < MAX_BUILDABLE_ANIMATIONS; j++ )
{
strcpy( soundfile, cg_buildableSoundNames[ j - 1 ] );
-
+
Com_sprintf( filename, sizeof( filename ), "sound/buildables/alien/%s", soundfile );
defaultAlienSounds[ j ] = trap_S_RegisterSound( filename, qfalse );
-
+
Com_sprintf( filename, sizeof( filename ), "sound/buildables/human/%s", soundfile );
defaultHumanSounds[ j ] = trap_S_RegisterSound( filename, qfalse );
}
-
+
cg.buildablesFraction = 0.0f;
-
+
for( i = BA_NONE + 1; i < BA_NUM_BUILDABLES; i++ )
{
buildableName = BG_FindNameForBuildable( i );
-
+
//animation.cfg
Com_sprintf( filename, sizeof( filename ), "models/buildables/%s/animation.cfg", buildableName );
if ( !CG_ParseBuildableAnimationFile( filename, i ) )
@@ -591,12 +591,12 @@ static void CG_RunBuildableLerpFrame( centity_t *cent )
anim = lf->animation;
if( !anim->frameLerp )
return; // shouldn't happen
-
+
if ( cg.time < lf->animationTime )
lf->frameTime = lf->animationTime; // initial lerp
else
lf->frameTime = lf->oldFrameTime + anim->frameLerp;
-
+
f = ( lf->frameTime - lf->animationTime ) / anim->frameLerp;
numFrames = anim->numFrames;
if(anim->flipflop)
@@ -619,14 +619,14 @@ static void CG_RunBuildableLerpFrame( centity_t *cent )
cent->buildableAnim = cent->currentState.torsoAnim;
}
}
-
+
if( anim->reversed )
lf->frame = anim->firstFrame + anim->numFrames - 1 - f;
else if( anim->flipflop && f >= anim->numFrames )
lf->frame = anim->firstFrame + anim->numFrames - 1 - ( f % anim->numFrames );
else
lf->frame = anim->firstFrame + f;
-
+
if( cg.time > lf->frameTime )
{
lf->frameTime = cg.time;
@@ -640,7 +640,7 @@ static void CG_RunBuildableLerpFrame( centity_t *cent )
if( lf->oldFrameTime > cg.time )
lf->oldFrameTime = cg.time;
-
+
// calculate current lerp value
if( lf->frameTime == lf->oldFrameTime )
lf->backlerp = 0;
@@ -656,16 +656,16 @@ CG_BuildableAnimation
static void CG_BuildableAnimation( centity_t *cent, int *old, int *now, float *backLerp )
{
entityState_t *es = &cent->currentState;
-
+
//if no animation is set default to idle anim
if( cent->buildableAnim == BANIM_NONE )
cent->buildableAnim = es->torsoAnim;
-
+
//display the first frame of the construction anim if not yet spawned
if( !( es->generic1 & B_SPAWNED_TOGGLEBIT ) )
{
animation_t *anim = &cg_buildables[ es->modelindex ].animations[ BANIM_CONSTRUCT1 ];
-
+
//so that when animation starts for real it has sensible numbers
cent->lerpFrame.oldFrameTime =
cent->lerpFrame.frameTime =
@@ -694,7 +694,7 @@ static void CG_BuildableAnimation( centity_t *cent, int *old, int *now, float *b
else
cent->buildableAnim = cent->oldBuildableAnim = es->torsoAnim;
}
-
+
CG_RunBuildableLerpFrame( cent );
*old = cent->lerpFrame.oldFrame;
@@ -717,18 +717,18 @@ static void CG_PositionAndOrientateBuildable( const vec3_t angles, const vec3_t
{
vec3_t forward, start, end;
trace_t tr;
-
+
AngleVectors( angles, forward, NULL, NULL );
VectorCopy( normal, outAxis[ 2 ] );
ProjectPointOnPlane( outAxis[ 0 ], forward, outAxis[ 2 ] );
-
+
if( !VectorNormalize( outAxis[ 0 ] ) )
{
AngleVectors( angles, NULL, NULL, forward );
ProjectPointOnPlane( outAxis[ 0 ], forward, outAxis[ 2 ] );
VectorNormalize( outAxis[ 0 ] );
}
-
+
CrossProduct( outAxis[ 0 ], outAxis[ 2 ], outAxis[ 1 ] );
outAxis[ 1 ][ 0 ] = -outAxis[ 1 ][ 0 ];
outAxis[ 1 ][ 1 ] = -outAxis[ 1 ][ 1 ];
@@ -737,13 +737,13 @@ static void CG_PositionAndOrientateBuildable( const vec3_t angles, const vec3_t
VectorMA( inOrigin, -TRACE_DEPTH, normal, end );
VectorMA( inOrigin, 1.0f, normal, start );
CG_CapTrace( &tr, start, mins, maxs, end, skipNumber, MASK_PLAYERSOLID );
-
+
if( tr.fraction == 1.0f )
{
//erm we missed completely - try again with a box trace
CG_Trace( &tr, start, mins, maxs, end, skipNumber, MASK_PLAYERSOLID );
}
-
+
VectorMA( inOrigin, tr.fraction * -TRACE_DEPTH, normal, outOrigin );
}
@@ -760,9 +760,9 @@ void CG_GhostBuildable( buildable_t buildable )
vec3_t mins, maxs;
trace_t tr;
float scale;
-
+
ps = &cg.predictedPlayerState;
-
+
memset( &ent, 0, sizeof( ent ) );
BG_FindBBoxForBuildable( buildable, mins, maxs );
@@ -774,17 +774,17 @@ void CG_GhostBuildable( buildable_t buildable )
//offset on the Z axis if required
VectorMA( ent.origin, BG_FindZOffsetForBuildable( buildable ), tr.plane.normal, ent.origin );
-
+
VectorCopy( ent.origin, ent.lightingOrigin );
VectorCopy( ent.origin, ent.oldorigin ); // don't positionally lerp at all
-
+
ent.hModel = cg_buildables[ buildable ].models[ 0 ];
if( ps->stats[ STAT_BUILDABLE ] & SB_VALID_TOGGLEBIT )
ent.customShader = cgs.media.greenBuildShader;
else
ent.customShader = cgs.media.redBuildShader;
-
+
//rescale the model
scale = BG_FindModelScaleForBuildable( buildable );
@@ -793,7 +793,7 @@ void CG_GhostBuildable( buildable_t buildable )
VectorScale( ent.axis[ 0 ], scale, ent.axis[ 0 ] );
VectorScale( ent.axis[ 1 ], scale, ent.axis[ 1 ] );
VectorScale( ent.axis[ 2 ], scale, ent.axis[ 2 ] );
-
+
ent.nonNormalizedAxes = qtrue;
}
else
@@ -814,10 +814,10 @@ static void CG_BuildableParticleEffects( centity_t *cent )
buildableTeam_t team = BG_FindTeamForBuildable( es->modelindex );
int health = es->generic1 & ~( B_POWERED_TOGGLEBIT | B_DCCED_TOGGLEBIT | B_SPAWNED_TOGGLEBIT );
float healthFrac = (float)health / B_HEALTH_SCALE;
-
+
if( !( es->generic1 & B_SPAWNED_TOGGLEBIT ) )
return;
-
+
if( team == BIT_HUMANS )
{
if( healthFrac < 0.33f && !CG_IsParticleSystemValid( &cent->buildablePS ) )
@@ -866,20 +866,20 @@ static void CG_BuildableHealthBar( centity_t *cent )
health = es->generic1 & ~( B_POWERED_TOGGLEBIT | B_DCCED_TOGGLEBIT | B_SPAWNED_TOGGLEBIT );
progress = (float)health / B_HEALTH_SCALE;
-
+
if( progress < 0.0f )
progress = 0.0f;
else if( progress > 1.0f )
progress = 1.0f;
-
+
if( progress < 0.33f )
shader = cgs.media.redBuildShader;
else
shader = cgs.media.greenBuildShader;
-
+
doneWidth = ( HEALTH_BAR_WIDTH - 2 * rimWidth ) * progress;
leftWidth = ( HEALTH_BAR_WIDTH - 2 * rimWidth ) - doneWidth;
-
+
VectorCopy( cg.refdef.viewaxis[ 2 ], down );
VectorInverse( down );
VectorCopy( cg.refdef.viewaxis[ 1 ], right );
@@ -892,28 +892,28 @@ static void CG_BuildableHealthBar( centity_t *cent )
VectorMA( origin, 48.0f, es->origin2, origin );
VectorMA( origin, -HEALTH_BAR_WIDTH / 2.0f, right, origin );
VectorMA( origin, maxs[ 0 ] + 8.0f, back, origin );
-
+
VectorCopy( origin, origin2 );
VectorScale( right, rimWidth + doneWidth, rightLength );
VectorScale( down, HEALTH_BAR_HEIGHT, downLength );
CG_DrawPlane( origin2, downLength, rightLength, shader );
-
+
VectorMA( origin, rimWidth + doneWidth, right, origin2 );
VectorScale( right, leftWidth, rightLength );
VectorScale( down, rimWidth, downLength );
CG_DrawPlane( origin2, downLength, rightLength, shader );
-
+
VectorMA( origin, rimWidth + doneWidth, right, origin2 );
VectorMA( origin2, HEALTH_BAR_HEIGHT - rimWidth, down, origin2 );
VectorScale( right, leftWidth, rightLength );
VectorScale( down, rimWidth, downLength );
CG_DrawPlane( origin2, downLength, rightLength, shader );
-
+
VectorMA( origin, HEALTH_BAR_WIDTH - rimWidth, right, origin2 );
VectorScale( right, rimWidth, rightLength );
VectorScale( down, HEALTH_BAR_HEIGHT, downLength );
CG_DrawPlane( origin2, downLength, rightLength, shader );
-
+
if( !( es->generic1 & B_POWERED_TOGGLEBIT ) &&
BG_FindTeamForBuildable( es->modelindex ) == BIT_HUMANS )
{
@@ -944,11 +944,11 @@ void CG_Buildable( centity_t *cent )
float scale;
int health;
float healthScale;
-
+
//must be before EF_NODRAW check
if( team == BIT_ALIENS )
CG_Creep( cent );
-
+
// if set to invisible, skip
if( es->eFlags & EF_NODRAW )
{
@@ -965,17 +965,17 @@ void CG_Buildable( centity_t *cent )
VectorCopy( cent->lerpOrigin, ent.lightingOrigin );
VectorCopy( es->origin2, surfNormal );
-
+
VectorCopy( es->angles, angles );
BG_FindBBoxForBuildable( es->modelindex, mins, maxs );
-
+
if( es->pos.trType == TR_STATIONARY )
CG_PositionAndOrientateBuildable( angles, ent.origin, surfNormal, es->number,
mins, maxs, ent.axis, ent.origin );
-
+
//offset on the Z axis if required
VectorMA( ent.origin, BG_FindZOffsetForBuildable( es->modelindex ), surfNormal, ent.origin );
-
+
VectorCopy( ent.origin, ent.oldorigin ); // don't positionally lerp at all
VectorCopy( ent.origin, ent.lightingOrigin );
@@ -984,7 +984,7 @@ void CG_Buildable( centity_t *cent )
if( !( es->generic1 & B_SPAWNED_TOGGLEBIT ) )
{
sfxHandle_t prebuildSound = cgs.media.humanBuildablePrebuild;
-
+
if( team == BIT_HUMANS )
{
ent.customShader = cgs.media.humanSpawningShader;
@@ -995,7 +995,7 @@ void CG_Buildable( centity_t *cent )
trap_S_AddLoopingSound( es->number, cent->lerpOrigin, vec3_origin, prebuildSound );
}
-
+
CG_BuildableAnimation( cent, &ent.oldframe, &ent.frame, &ent.backlerp );
//rescale the model
@@ -1006,26 +1006,26 @@ void CG_Buildable( centity_t *cent )
VectorScale( ent.axis[ 0 ], scale, ent.axis[ 0 ] );
VectorScale( ent.axis[ 1 ], scale, ent.axis[ 1 ] );
VectorScale( ent.axis[ 2 ], scale, ent.axis[ 2 ] );
-
+
ent.nonNormalizedAxes = qtrue;
}
else
ent.nonNormalizedAxes = qfalse;
-
+
//add to refresh list
trap_R_AddRefEntityToScene( &ent );
CrossProduct( surfNormal, refNormal, xNormal );
VectorNormalize( xNormal );
rotAngle = RAD2DEG( acos( DotProduct( surfNormal, refNormal ) ) );
-
+
//turret barrel bit
if( cg_buildables[ es->modelindex ].models[ 1 ] )
{
refEntity_t turretBarrel;
vec3_t flatAxis[ 3 ];
-
+
memset( &turretBarrel, 0, sizeof( turretBarrel ) );
turretBarrel.hModel = cg_buildables[ es->modelindex ].models[ 1 ];
@@ -1037,24 +1037,24 @@ void CG_Buildable( centity_t *cent )
RotatePointAroundVector( turretBarrel.axis[ 0 ], xNormal, flatAxis[ 0 ], -rotAngle );
RotatePointAroundVector( turretBarrel.axis[ 1 ], xNormal, flatAxis[ 1 ], -rotAngle );
RotatePointAroundVector( turretBarrel.axis[ 2 ], xNormal, flatAxis[ 2 ], -rotAngle );
-
+
turretBarrel.oldframe = ent.oldframe;
turretBarrel.frame = ent.frame;
turretBarrel.backlerp = ent.backlerp;
turretBarrel.customShader = ent.customShader;
-
+
if( scale != 1.0f )
{
VectorScale( turretBarrel.axis[ 0 ], scale, turretBarrel.axis[ 0 ] );
VectorScale( turretBarrel.axis[ 1 ], scale, turretBarrel.axis[ 1 ] );
VectorScale( turretBarrel.axis[ 2 ], scale, turretBarrel.axis[ 2 ] );
-
+
turretBarrel.nonNormalizedAxes = qtrue;
}
else
turretBarrel.nonNormalizedAxes = qfalse;
-
+
trap_R_AddRefEntityToScene( &turretBarrel );
}
@@ -1064,12 +1064,12 @@ void CG_Buildable( centity_t *cent )
refEntity_t turretTop;
vec3_t flatAxis[ 3 ];
vec3_t swivelAngles;
-
+
memset( &turretTop, 0, sizeof( turretTop ) );
VectorCopy( es->angles2, swivelAngles );
swivelAngles[ PITCH ] = 0.0f;
-
+
turretTop.hModel = cg_buildables[ es->modelindex ].models[ 2 ];
CG_PositionRotatedEntityOnTag( &turretTop, &ent, ent.hModel, "tag_turret" );
@@ -1079,24 +1079,24 @@ void CG_Buildable( centity_t *cent )
RotatePointAroundVector( turretTop.axis[ 0 ], xNormal, flatAxis[ 0 ], -rotAngle );
RotatePointAroundVector( turretTop.axis[ 1 ], xNormal, flatAxis[ 1 ], -rotAngle );
RotatePointAroundVector( turretTop.axis[ 2 ], xNormal, flatAxis[ 2 ], -rotAngle );
-
+
turretTop.oldframe = ent.oldframe;
turretTop.frame = ent.frame;
turretTop.backlerp = ent.backlerp;
turretTop.customShader = ent.customShader;
-
+
if( scale != 1.0f )
{
VectorScale( turretTop.axis[ 0 ], scale, turretTop.axis[ 0 ] );
VectorScale( turretTop.axis[ 1 ], scale, turretTop.axis[ 1 ] );
VectorScale( turretTop.axis[ 2 ], scale, turretTop.axis[ 2 ] );
-
+
turretTop.nonNormalizedAxes = qtrue;
}
else
turretTop.nonNormalizedAxes = qfalse;
-
+
trap_R_AddRefEntityToScene( &turretTop );
}
@@ -1119,8 +1119,8 @@ void CG_Buildable( centity_t *cent )
if( es->eFlags & EF_FIRING )
{
weaponInfo_t *weapon = &cg_weapons[ es->weapon ];
-
- if( cg.time - cent->muzzleFlashTime > MUZZLE_FLASH_TIME ||
+
+ if( cg.time - cent->muzzleFlashTime > MUZZLE_FLASH_TIME ||
BG_FindProjTypeForBuildable( es->modelindex ) == WP_TESLAGEN )
{
if( weapon->wim[ WPM_PRIMARY ].flashDlightColor[ 0 ] ||
@@ -1133,7 +1133,7 @@ void CG_Buildable( centity_t *cent )
weapon->wim[ WPM_PRIMARY ].flashDlightColor[ 2 ] );
}
}
-
+
if( weapon->wim[ WPM_PRIMARY ].firingSound )
{
trap_S_AddLoopingSound( es->number, cent->lerpOrigin, vec3_origin,
@@ -1142,7 +1142,7 @@ void CG_Buildable( centity_t *cent )
else if( weapon->readySound )
trap_S_AddLoopingSound( es->number, cent->lerpOrigin, vec3_origin, weapon->readySound );
}
-
+
health = es->generic1 & ~( B_POWERED_TOGGLEBIT | B_DCCED_TOGGLEBIT | B_SPAWNED_TOGGLEBIT );
healthScale = (float)health / B_HEALTH_SCALE;
@@ -1157,13 +1157,13 @@ void CG_Buildable( centity_t *cent )
}
else if( team == BIT_ALIENS )
trap_S_StartSound( NULL, es->number, CHAN_BODY, cgs.media.alienBuildableDamage );
-
+
cent->lastBuildableDamageSoundTime = cg.time;
}
}
-
+
cent->lastBuildableHealthScale = healthScale;
-
+
//smoke etc for damaged buildables
CG_BuildableParticleEffects( cent );
}
diff --git a/src/cgame/cg_draw.c b/src/cgame/cg_draw.c
index 9cb1740c..7fd6226d 100644
--- a/src/cgame/cg_draw.c
+++ b/src/cgame/cg_draw.c
@@ -42,21 +42,21 @@ int CG_Text_Width( const char *text, float scale, int limit )
// const unsigned char *s = text;
const char *s = text;
fontInfo_t *font = &cgDC.Assets.textFont;
-
+
if( scale <= cg_smallFont.value )
font = &cgDC.Assets.smallFont;
else if( scale > cg_bigFont.value )
font = &cgDC.Assets.bigFont;
-
+
useScale = scale * font->glyphScale;
out = 0;
-
+
if( text )
{
len = strlen( text );
if( limit > 0 && len > limit )
len = limit;
-
+
count = 0;
while( s && *s && count < len )
{
@@ -76,7 +76,7 @@ int CG_Text_Width( const char *text, float scale, int limit )
}
}
}
-
+
return out * useScale;
}
@@ -90,21 +90,21 @@ int CG_Text_Height( const char *text, float scale, int limit )
// const unsigned char *s = text;
const char *s = text;
fontInfo_t *font = &cgDC.Assets.textFont;
-
+
if( scale <= cg_smallFont.value )
font = &cgDC.Assets.smallFont;
else if( scale > cg_bigFont.value )
font = &cgDC.Assets.bigFont;
-
+
useScale = scale * font->glyphScale;
max = 0;
-
+
if( text )
{
len = strlen( text );
if( limit > 0 && len > limit )
len = limit;
-
+
count = 0;
while( s && *s && count < len )
{
@@ -120,13 +120,13 @@ int CG_Text_Height( const char *text, float scale, int limit )
//hopefully this doesn't break the VM build
if( max < glyph->height )
max = glyph->height;
-
+
s++;
count++;
}
}
}
-
+
return max * useScale;
}
@@ -148,33 +148,33 @@ void CG_Text_Paint( float x, float y, float scale, vec4_t color, const char *tex
glyphInfo_t *glyph;
float useScale;
fontInfo_t *font = &cgDC.Assets.textFont;
-
+
if( scale <= cg_smallFont.value )
font = &cgDC.Assets.smallFont;
else if( scale > cg_bigFont.value )
font = &cgDC.Assets.bigFont;
-
+
useScale = scale * font->glyphScale;
if( text )
{
// TTimo: FIXME
// const unsigned char *s = text;
const char *s = text;
-
+
trap_R_SetColor( color );
memcpy( &newColor[ 0 ], &color[ 0 ], sizeof( vec4_t ) );
len = strlen( text );
-
+
if( limit > 0 && len > limit )
len = limit;
-
+
count = 0;
while( s && *s && count < len )
{
glyph = &font->glyphs[ (int)*s ];
//TTimo: FIXME: getting nasty warnings without the cast,
//hopefully this doesn't break the VM build
-
+
if( Q_IsColorString( s ) )
{
memcpy( newColor, g_color_table[ ColorIndex( *( s + 1 ) ) ], sizeof( newColor ) );
@@ -192,16 +192,16 @@ void CG_Text_Paint( float x, float y, float scale, vec4_t color, const char *tex
int ofs = style == ITEM_TEXTSTYLE_SHADOWED ? 1 : 2;
colorBlack[ 3 ] = newColor[ 3 ];
trap_R_SetColor( colorBlack );
- CG_Text_PaintChar( x + ofs, y - yadj + ofs,
+ CG_Text_PaintChar( x + ofs, y - yadj + ofs,
glyph->imageWidth,
glyph->imageHeight,
- useScale,
+ useScale,
glyph->s,
glyph->t,
glyph->s2,
glyph->t2,
glyph->glyph );
-
+
colorBlack[ 3 ] = 1.0;
trap_R_SetColor( newColor );
}
@@ -213,19 +213,19 @@ void CG_Text_Paint( float x, float y, float scale, vec4_t color, const char *tex
glow[ 1 ] = newColor[ 1 ] * 0.5;
glow[ 2 ] = newColor[ 2 ] * 0.5;
glow[ 3 ] = newColor[ 3 ] * 0.2;
-
+
outer[ 0 ] = newColor[ 0 ];
outer[ 1 ] = newColor[ 1 ];
outer[ 2 ] = newColor[ 2 ];
outer[ 3 ] = newColor[ 3 ];
-
+
inner[ 0 ] = newColor[ 0 ] * 1.5 > 1.0f ? 1.0f : newColor[ 0 ] * 1.5;
inner[ 1 ] = newColor[ 1 ] * 1.5 > 1.0f ? 1.0f : newColor[ 1 ] * 1.5;
inner[ 2 ] = newColor[ 2 ] * 1.5 > 1.0f ? 1.0f : newColor[ 2 ] * 1.5;
inner[ 3 ] = newColor[ 3 ];
white[ 0 ] = white[ 1 ] = white[ 2 ] = white[ 3 ] = 1.0f;
-
+
trap_R_SetColor( glow );
CG_Text_PaintChar( x - 3, y - yadj - 3,
glyph->imageWidth + 6,
@@ -236,7 +236,7 @@ void CG_Text_Paint( float x, float y, float scale, vec4_t color, const char *tex
glyph->s2,
glyph->t2,
glyph->glyph );
-
+
trap_R_SetColor( outer );
CG_Text_PaintChar( x - 1, y - yadj - 1,
glyph->imageWidth + 2,
@@ -247,7 +247,7 @@ void CG_Text_Paint( float x, float y, float scale, vec4_t color, const char *tex
glyph->s2,
glyph->t2,
glyph->glyph );
-
+
trap_R_SetColor( inner );
CG_Text_PaintChar( x - 0.5, y - yadj - 0.5,
glyph->imageWidth + 1,
@@ -258,27 +258,27 @@ void CG_Text_Paint( float x, float y, float scale, vec4_t color, const char *tex
glyph->s2,
glyph->t2,
glyph->glyph );
-
+
trap_R_SetColor( white );
}
-
-
- CG_Text_PaintChar( x, y - yadj,
+
+
+ CG_Text_PaintChar( x, y - yadj,
glyph->imageWidth,
glyph->imageHeight,
- useScale,
+ useScale,
glyph->s,
glyph->t,
glyph->s2,
glyph->t2,
glyph->glyph );
-
+
x += ( glyph->xSkip * useScale ) + adjust;
s++;
count++;
}
}
-
+
trap_R_SetColor( NULL );
}
}
@@ -332,12 +332,12 @@ static void CG_DrawFieldPadded( int x, int y, int width, int cw, int ch, int val
Com_sprintf( num, sizeof( num ), "%d", value );
l = strlen( num );
-
+
if( l > width )
l = width;
-
+
orgL = l;
-
+
x += 2;
ptr = num;
@@ -350,7 +350,7 @@ static void CG_DrawFieldPadded( int x, int y, int width, int cw, int ch, int val
x += charWidth;
continue;
}
-
+
if( *ptr == '-' )
frame = STAT_MINUS;
else
@@ -412,10 +412,10 @@ static void CG_DrawField( int x, int y, int width, int cw, int ch, int value )
Com_sprintf( num, sizeof( num ), "%d", value );
l = strlen( num );
-
+
if( l > width )
l = width;
-
+
x += 2 + charWidth * ( width - l );
ptr = num;
@@ -440,7 +440,7 @@ static void CG_DrawProgressBar( rectDef_t *rect, vec4_t color, float scale,
float doneWidth, leftWidth;
float tx, ty, tw, th;
char textBuffer[ 8 ];
-
+
if( rimWidth < 0.6f )
rimWidth = 0.6f;
@@ -451,12 +451,12 @@ static void CG_DrawProgressBar( rectDef_t *rect, vec4_t color, float scale,
progress = 0.0f;
else if( progress > 1.0f )
progress = 1.0f;
-
+
doneWidth = ( rect->w - 2 * rimWidth ) * progress;
leftWidth = ( rect->w - 2 * rimWidth ) - doneWidth;
-
+
trap_R_SetColor( color );
-
+
//draw rim and bar
if( align == ITEM_ALIGN_RIGHT )
{
@@ -479,14 +479,14 @@ static void CG_DrawProgressBar( rectDef_t *rect, vec4_t color, float scale,
}
trap_R_SetColor( NULL );
-
+
//draw text
if( scale > 0.0 )
{
Com_sprintf( textBuffer, sizeof( textBuffer ), "%d%%", (int)( progress * 100 ) );
tw = CG_Text_Width( textBuffer, scale, 0 );
th = scale * 40.0f;
-
+
switch( align )
{
case ITEM_ALIGN_LEFT:
@@ -507,7 +507,7 @@ static void CG_DrawProgressBar( rectDef_t *rect, vec4_t color, float scale,
default:
tx = ty = 0.0f;
}
-
+
CG_Text_Paint( tx, ty, scale, color, textBuffer, 0, 0, textStyle );
}
}
@@ -545,7 +545,7 @@ static qboolean CG_AtHighestClass( void )
{
int i;
qboolean superiorClasses = qfalse;
-
+
for( i = PCL_NONE + 1; i < PCL_NUM_CLASSES; i++ )
{
if( BG_ClassCanEvolveFromTo(
@@ -576,7 +576,7 @@ static void CG_DrawPlayerCreditsValue( rectDef_t *rect, vec4_t color, qboolean p
if( ( cent->currentState.weapon == WP_ABUILD ||
cent->currentState.weapon == WP_ABUILD2 ) && ps->stats[ STAT_MISC ] )
return;
-
+
value = ps->persistant[ PERS_CREDIT ];
if( value > -1 )
{
@@ -589,14 +589,14 @@ static void CG_DrawPlayerCreditsValue( rectDef_t *rect, vec4_t color, qboolean p
color[ 3 ] = 0.0f;
}
}
-
+
trap_R_SetColor( color );
if( padding )
CG_DrawFieldPadded( rect->x, rect->y, 4, rect->w / 4, rect->h, value );
else
CG_DrawField( rect->x, rect->y, 1, rect->w, rect->h, value );
-
+
trap_R_SetColor( NULL );
}
}
@@ -617,7 +617,7 @@ static void CG_DrawPlayerBankValue( rectDef_t *rect, vec4_t color, qboolean padd
CG_DrawFieldPadded( rect->x, rect->y, 4, rect->w / 4, rect->h, value );
else
CG_DrawField( rect->x, rect->y, 1, rect->w, rect->h, value );
-
+
trap_R_SetColor( NULL );
}
}
@@ -651,7 +651,7 @@ static void CG_DrawPlayerStamina1( rectDef_t *rect, vec4_t color, qhandle_t shad
progress = 0.0f;
color[ 3 ] = HH_MIN_ALPHA + ( progress * HH_ALPHA_DIFF );
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -678,7 +678,7 @@ static void CG_DrawPlayerStamina2( rectDef_t *rect, vec4_t color, qhandle_t shad
progress = 0.0f;
color[ 3 ] = HH_MIN_ALPHA + ( progress * HH_ALPHA_DIFF );
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -704,7 +704,7 @@ static void CG_DrawPlayerStamina3( rectDef_t *rect, vec4_t color, qhandle_t shad
progress = 0.0f;
color[ 3 ] = HH_MIN_ALPHA + ( progress * HH_ALPHA_DIFF );
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -730,7 +730,7 @@ static void CG_DrawPlayerStamina4( rectDef_t *rect, vec4_t color, qhandle_t shad
progress = 0.0f;
color[ 3 ] = HH_MIN_ALPHA + ( progress * HH_ALPHA_DIFF );
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -750,7 +750,7 @@ static void CG_DrawPlayerStaminaBolt( rectDef_t *rect, vec4_t color, qhandle_t s
color[ 3 ] = HH_MIN_ALPHA;
else
color[ 3 ] = HH_MAX_ALPHA;
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -770,7 +770,7 @@ static void CG_DrawPlayerClipsRing( rectDef_t *rect, vec4_t color, qhandle_t sha
float maxDelay;
cent = &cg_entities[ cg.snap->ps.clientNum ];
-
+
switch( cent->currentState.weapon )
{
case WP_ABUILD:
@@ -797,7 +797,7 @@ static void CG_DrawPlayerClipsRing( rectDef_t *rect, vec4_t color, qhandle_t sha
}
break;
}
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -817,16 +817,16 @@ static void CG_DrawPlayerBuildTimerRing( rectDef_t *rect, vec4_t color, qhandle_
float maxDelay;
cent = &cg_entities[ cg.snap->ps.clientNum ];
-
+
maxDelay = (float)BG_FindBuildDelayForWeapon( cent->currentState.weapon );
-
+
if( buildTime > maxDelay )
buildTime = maxDelay;
progress = ( maxDelay - buildTime ) / maxDelay;
color[ 3 ] = AH_MIN_ALPHA + ( progress * AH_ALPHA_DIFF );
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -841,12 +841,12 @@ static void CG_DrawPlayerBoosted( rectDef_t *rect, vec4_t color, qhandle_t shade
{
playerState_t *ps = &cg.snap->ps;
qboolean boosted = ps->stats[ STAT_STATE ] & SS_BOOSTED;
-
+
if( boosted )
color[ 3 ] = AH_MAX_ALPHA;
else
color[ 3 ] = AH_MIN_ALPHA;
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -870,12 +870,12 @@ static void CG_DrawPlayerBoosterBolt( rectDef_t *rect, vec4_t color, qhandle_t s
if( ps->stats[ STAT_BOOSTTIME ] > BOOST_TIME - 3000 )
{
qboolean flash = ( ps->stats[ STAT_BOOSTTIME ] / 500 ) % 2;
-
+
if( flash )
localColor[ 3 ] = 1.0f;
}
}
-
+
trap_R_SetColor( localColor );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -897,7 +897,7 @@ static void CG_DrawPlayerPoisonBarbs( rectDef_t *rect, vec4_t color, qhandle_t s
int iconsize, numBarbs, i;
BG_UnpackAmmoArray( ps->weapon, ps->ammo, ps->powerups, &numBarbs, NULL );
-
+
if( height > width )
{
vertical = qtrue;
@@ -908,20 +908,20 @@ static void CG_DrawPlayerPoisonBarbs( rectDef_t *rect, vec4_t color, qhandle_t s
vertical = qfalse;
iconsize = height;
}
-
+
if( color[ 3 ] != 0.0 )
trap_R_SetColor( color );
-
+
for( i = 0; i < numBarbs; i ++ )
{
if( vertical )
y += iconsize;
else
x += iconsize;
-
+
CG_DrawPic( x, y, iconsize, iconsize, shader );
}
-
+
trap_R_SetColor( NULL );
}
@@ -939,7 +939,7 @@ static void CG_DrawPlayerWallclimbing( rectDef_t *rect, vec4_t color, qhandle_t
color[ 3 ] = AH_MAX_ALPHA;
else
color[ 3 ] = AH_MIN_ALPHA;
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -951,7 +951,7 @@ static void CG_DrawPlayerStamina( rectDef_t *rect, vec4_t color, float scale,
playerState_t *ps = &cg.snap->ps;
int stamina = ps->stats[ STAT_STAMINA ];
float progress = ( (float)stamina + (float)MAX_STAMINA ) / ( (float)MAX_STAMINA * 2.0f );
-
+
CG_DrawProgressBar( rect, color, scale, align, textStyle, special, progress );
}
@@ -987,7 +987,7 @@ static void CG_DrawPlayerAmmoValue( rectDef_t *rect, vec4_t color )
if( value > 999 )
value = 999;
-
+
if( value > -1 )
{
trap_R_SetColor( color );
@@ -1021,7 +1021,7 @@ static void CG_DrawHumanScanner( rectDef_t *rect, qhandle_t shader, vec4_t color
CG_Scanner( rect, shader, color );
}
-
+
/*
==============
CG_DrawUsableBuildable
@@ -1032,7 +1032,7 @@ static void CG_DrawUsableBuildable( rectDef_t *rect, qhandle_t shader, vec4_t co
vec3_t view, point;
trace_t trace;
entityState_t *es;
-
+
AngleVectors( cg.refdefViewAngles, view, NULL, NULL );
VectorMA( cg.refdef.vieworg, 64, view, point );
CG_Trace( &trace, cg.refdef.vieworg, NULL, NULL,
@@ -1048,7 +1048,7 @@ static void CG_DrawUsableBuildable( rectDef_t *rect, qhandle_t shader, vec4_t co
( !BG_FindUsesEnergyForWeapon( cg.snap->ps.weapon ) ||
BG_FindInfinteAmmoForWeapon( cg.snap->ps.weapon ) ) )
return;
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -1075,15 +1075,15 @@ static void CG_DrawPlayerBuildTimer( rectDef_t *rect, vec4_t color )
case WP_ABUILD:
progress = (float)ps->stats[ STAT_MISC ] / (float)ABUILDER_BASE_DELAY;
break;
-
+
case WP_ABUILD2:
progress = (float)ps->stats[ STAT_MISC ] / (float)ABUILDER_ADV_DELAY;
break;
-
+
case WP_HBUILD:
progress = (float)ps->stats[ STAT_MISC ] / (float)HBUILD_DELAY;
break;
-
+
case WP_HBUILD2:
progress = (float)ps->stats[ STAT_MISC ] / (float)HBUILD2_DELAY;
break;
@@ -1095,14 +1095,14 @@ static void CG_DrawPlayerBuildTimer( rectDef_t *rect, vec4_t color )
if( !ps->stats[ STAT_MISC ] )
return;
-
+
index = (int)( progress * 8.0f );
if( index > 7 )
index = 7;
else if( index < 0 )
index = 0;
-
+
if( cg.time - cg.lastBuildAttempt <= BUILD_DELAY_TIME )
{
if( ( ( cg.time - cg.lastBuildAttempt ) / 300 ) % 2 )
@@ -1112,7 +1112,7 @@ static void CG_DrawPlayerBuildTimer( rectDef_t *rect, vec4_t color )
color[ 3 ] = 1.0f;
}
}
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h,
cgs.media.buildWeaponTimerPie[ index ] );
@@ -1141,7 +1141,7 @@ static void CG_DrawPlayerClipsValue( rectDef_t *rect, vec4_t color )
default:
BG_UnpackAmmoArray( cent->currentState.weapon, ps->ammo, ps->powerups, NULL, &value );
-
+
if( value > -1 )
{
trap_R_SetColor( color );
@@ -1194,7 +1194,7 @@ static void CG_DrawPlayerHealthCross( rectDef_t *rect, vec4_t color, qhandle_t s
color[ 0 ] = 1.0f;
color[ 1 ] = color[ 2 ] = 0.0f;
}
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
@@ -1223,7 +1223,7 @@ static void CG_DrawProgressLabel( rectDef_t *rect, float text_x, float text_y, v
default:
tx = 0.0f;
}
-
+
if( fraction < 1.0f )
CG_Text_Paint( rect->x + text_x + tx, rect->y + text_y, scale, white,
s, 0, 0, ITEM_TEXTSTYLE_NORMAL );
@@ -1283,17 +1283,17 @@ static void CG_DrawLevelShot( rectDef_t *rect )
const char *info;
qhandle_t levelshot;
qhandle_t detail;
-
+
info = CG_ConfigString( CS_SERVERINFO );
s = Info_ValueForKey( info, "mapname" );
levelshot = trap_R_RegisterShaderNoMip( va( "levelshots/%s.tga", s ) );
-
+
if( !levelshot )
levelshot = trap_R_RegisterShaderNoMip( "gfx/2d/load_screen" );
-
+
trap_R_SetColor( NULL );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, levelshot );
-
+
// blend a detail texture over it
detail = trap_R_RegisterShader( "levelShotDetail" );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, detail );
@@ -1306,16 +1306,16 @@ static void CG_DrawLoadingString( rectDef_t *rect, float text_x, float text_y, v
int pos, i;
char buffer[ 1024 ];
char *end;
-
+
if( !s[ 0 ] )
return;
-
+
strcpy( buffer, s );
tw = CG_Text_Width( s, scale, 0 );
th = scale * 40.0f;
pos = i = 0;
-
+
while( pos < strlen( s ) )
{
strcpy( buffer, &s[ pos ] );
@@ -1324,10 +1324,10 @@ static void CG_DrawLoadingString( rectDef_t *rect, float text_x, float text_y, v
while( tw > rect->w )
{
end = strrchr( buffer, ' ' );
-
+
if( end == NULL )
break;
-
+
*end = '\0';
tw = CG_Text_Width( buffer, scale, 0 );
}
@@ -1349,10 +1349,10 @@ static void CG_DrawLoadingString( rectDef_t *rect, float text_x, float text_y, v
default:
tx = 0.0f;
}
-
+
CG_Text_Paint( tx + text_x, rect->y + text_y + i * ( th + 3 ), scale, color,
buffer, 0, 0, textStyle );
-
+
pos += strlen( buffer ) + 1;
i++;
}
@@ -1362,7 +1362,7 @@ static void CG_DrawLevelName( rectDef_t *rect, float text_x, float text_y,
vec4_t color, float scale, int align, int textStyle )
{
const char *s;
-
+
s = CG_ConfigString( CS_MESSAGE );
CG_DrawLoadingString( rect, text_x, text_y, color, scale, align, textStyle, s );
@@ -1372,7 +1372,7 @@ static void CG_DrawMOTD( rectDef_t *rect, float text_x, float text_y,
vec4_t color, float scale, int align, int textStyle )
{
const char *s;
-
+
s = CG_ConfigString( CS_MOTD );
CG_DrawLoadingString( rect, text_x, text_y, color, scale, align, textStyle, s );
@@ -1385,7 +1385,7 @@ static void CG_DrawHostname( rectDef_t *rect, float text_x, float text_y,
const char *info;
info = CG_ConfigString( CS_SERVERINFO );
-
+
Q_strncpyz( buffer, Info_ValueForKey( info, "sv_hostname" ), 1024 );
Q_CleanStr( buffer );
@@ -1434,7 +1434,7 @@ float CG_GetValue( int ownerDraw )
BG_UnpackAmmoArray( cent->currentState.weapon, ps->ammo, ps->powerups,
&value, NULL );
-
+
return value;
}
break;
@@ -1445,7 +1445,7 @@ float CG_GetValue( int ownerDraw )
BG_UnpackAmmoArray( cent->currentState.weapon, ps->ammo, ps->powerups,
NULL, &value );
-
+
return value;
}
break;
@@ -1455,7 +1455,7 @@ float CG_GetValue( int ownerDraw )
default:
break;
}
-
+
return -1;
}
@@ -1512,19 +1512,19 @@ static void CG_Text_Paint_Limit( float *maxX, float x, float y, float scale,
float max = *maxX;
float useScale;
fontInfo_t *font = &cgDC.Assets.textFont;
-
+
if( scale <= cg_smallFont.value )
font = &cgDC.Assets.smallFont;
else if( scale > cg_bigFont.value )
font = &cgDC.Assets.bigFont;
-
+
useScale = scale * font->glyphScale;
trap_R_SetColor( color );
- len = strlen( text );
-
+ len = strlen( text );
+
if( limit > 0 && len > limit )
len = limit;
-
+
count = 0;
while( s && *s && count < len )
@@ -1532,7 +1532,7 @@ static void CG_Text_Paint_Limit( float *maxX, float x, float y, float scale,
glyph = &font->glyphs[ (int)*s ];
//TTimo: FIXME: getting nasty warnings without the cast,
//hopefully this doesn't break the VM build
-
+
if( Q_IsColorString( s ) )
{
memcpy( newColor, g_color_table[ ColorIndex( *(s+1) ) ], sizeof( newColor ) );
@@ -1544,17 +1544,17 @@ static void CG_Text_Paint_Limit( float *maxX, float x, float y, float scale,
else
{
float yadj = useScale * glyph->top;
-
+
if( CG_Text_Width( s, useScale, 1 ) + x > max )
{
*maxX = 0;
break;
}
-
- CG_Text_PaintChar( x, y - yadj,
+
+ CG_Text_PaintChar( x, y - yadj,
glyph->imageWidth,
glyph->imageHeight,
- useScale,
+ useScale,
glyph->s,
glyph->t,
glyph->s2,
@@ -1566,7 +1566,7 @@ static void CG_Text_Paint_Limit( float *maxX, float x, float y, float scale,
s++;
}
}
-
+
trap_R_SetColor( NULL );
}
}
@@ -1594,7 +1594,7 @@ static void CG_DrawTeamSpectators( rectDef_t *rect, float scale, vec4_t color, q
if( cg.time > cg.spectatorTime )
{
cg.spectatorTime = cg.time + 10;
-
+
if( cg.spectatorPaintX <= rect->x + 2 )
{
if( cg.spectatorOffset < cg.spectatorLen )
@@ -1611,36 +1611,36 @@ static void CG_DrawTeamSpectators( rectDef_t *rect, float scale, vec4_t color, q
else
{
cg.spectatorOffset = 0;
-
+
if( cg.spectatorPaintX2 >= 0 )
cg.spectatorPaintX = cg.spectatorPaintX2;
else
cg.spectatorPaintX = rect->x + rect->w - 2;
-
+
cg.spectatorPaintX2 = -1;
}
}
else
{
cg.spectatorPaintX--;
-
+
if( cg.spectatorPaintX2 >= 0 )
cg.spectatorPaintX2--;
}
}
maxX = rect->x + rect->w - 2;
-
+
CG_Text_Paint_Limit( &maxX, cg.spectatorPaintX, rect->y + rect->h - 3, scale, color,
- &cg.spectatorList[ cg.spectatorOffset ], 0, 0 );
-
+ &cg.spectatorList[ cg.spectatorOffset ], 0, 0 );
+
if( cg.spectatorPaintX2 >= 0 )
{
float maxX2 = rect->x + rect->w - 2;
CG_Text_Paint_Limit( &maxX2, cg.spectatorPaintX2, rect->y + rect->h - 3, scale,
- color, cg.spectatorList, 0, cg.spectatorOffset );
+ color, cg.spectatorList, 0, cg.spectatorOffset );
}
-
+
if( cg.spectatorOffset && maxX > 0 )
{
// if we have an offset ( we are skipping the first part of the string ) and we fit the string
@@ -1662,7 +1662,7 @@ static void CG_DrawStageReport( rectDef_t *rect, float text_x, float text_y,
{
char s[ MAX_TOKEN_CHARS ];
int tx, w, kills;
-
+
if( cg.snap->ps.persistant[ PERS_TEAM ] == TEAM_SPECTATOR && !cg.intermissionStarted )
return;
@@ -1677,7 +1677,7 @@ static void CG_DrawStageReport( rectDef_t *rect, float text_x, float text_y,
else if( cg.snap->ps.stats[ STAT_PTEAM ] == PTE_ALIENS )
{
kills = cgs.alienNextStageThreshold - cgs.alienKills;
-
+
if( cgs.alienNextStageThreshold < 0 )
Com_sprintf( s, MAX_TOKEN_CHARS, "Stage %d", cgs.alienStage + 1 );
else if( kills == 1 )
@@ -1690,7 +1690,7 @@ static void CG_DrawStageReport( rectDef_t *rect, float text_x, float text_y,
else if( cg.snap->ps.stats[ STAT_PTEAM ] == PTE_HUMANS )
{
kills = cgs.humanNextStageThreshold - cgs.humanKills;
-
+
if( cgs.humanNextStageThreshold < 0 )
Com_sprintf( s, MAX_TOKEN_CHARS, "Stage %d", cgs.humanStage + 1 );
else if( kills == 1 )
@@ -1700,9 +1700,9 @@ static void CG_DrawStageReport( rectDef_t *rect, float text_x, float text_y,
Com_sprintf( s, MAX_TOKEN_CHARS, "Stage %d, %d kills for next stage",
cgs.humanStage + 1, kills );
}
-
+
w = CG_Text_Width( s, scale, 0 );
-
+
switch( align )
{
case ITEM_ALIGN_LEFT:
@@ -1747,7 +1747,7 @@ static void CG_DrawFPS( rectDef_t *rect, float text_x, float text_y,
if( !cg_drawFPS.integer )
return;
-
+
// don't use serverTime, because that will be drifting to
// correct for internet lag changes, timescales, timedemos, etc
t = trap_Milliseconds( );
@@ -1756,25 +1756,25 @@ static void CG_DrawFPS( rectDef_t *rect, float text_x, float text_y,
previousTimes[ index % FPS_FRAMES ] = frameTime;
index++;
-
+
if( index > FPS_FRAMES )
{
// average multiple frames together to smooth changes out a bit
total = 0;
-
+
for( i = 0 ; i < FPS_FRAMES ; i++ )
total += previousTimes[ i ];
-
+
if( !total )
total = 1;
-
+
fps = 1000 * FPS_FRAMES / total;
s = va( "%d", fps );
w = CG_Text_Width( "0", scale, 0 );
strLength = CG_DrawStrlen( s );
totalWidth = CG_Text_Width( FPS_STRING, scale, 0 ) + w * strLength;
-
+
switch( align )
{
case ITEM_ALIGN_LEFT:
@@ -1792,7 +1792,7 @@ static void CG_DrawFPS( rectDef_t *rect, float text_x, float text_y,
default:
tx = 0.0f;
}
-
+
if( scalableText )
{
for( i = 0; i < strLength; i++ )
@@ -1801,7 +1801,7 @@ static void CG_DrawFPS( rectDef_t *rect, float text_x, float text_y,
c[ 0 ] = s[ i ];
c[ 1 ] = '\0';
-
+
CG_Text_Paint( text_x + tx + i * w, rect->y + text_y, scale, color, c, 0, 0, textStyle );
}
}
@@ -1811,7 +1811,7 @@ static void CG_DrawFPS( rectDef_t *rect, float text_x, float text_y,
CG_DrawField( rect->x, rect->y, 3, rect->w / 3, rect->h, fps );
trap_R_SetColor( NULL );
}
-
+
if( scalableText )
CG_Text_Paint( text_x + tx + i * w, rect->y + text_y, scale, color, FPS_STRING, 0, 0, textStyle );
}
@@ -1896,7 +1896,7 @@ static void CG_DrawTimer( rectDef_t *rect, float text_x, float text_y,
w = CG_Text_Width( "0", scale, 0 );
strLength = CG_DrawStrlen( s );
totalWidth = w * strLength;
-
+
switch( align )
{
case ITEM_ALIGN_LEFT:
@@ -1921,7 +1921,7 @@ static void CG_DrawTimer( rectDef_t *rect, float text_x, float text_y,
c[ 0 ] = s[ i ];
c[ 1 ] = '\0';
-
+
CG_Text_Paint( text_x + tx + i * w, rect->y + text_y, scale, color, c, 0, 0, textStyle );
}
}
@@ -1939,11 +1939,11 @@ static void CG_DrawSnapshot( rectDef_t *rect, float text_x, float text_y,
if( !cg_drawSnapshot.integer )
return;
-
+
s = va( "time:%d snap:%d cmd:%d", cg.snap->serverTime,
cg.latestSnapshotNum, cgs.serverCommandSequence );
w = CG_Text_Width( s, scale, 0 );
-
+
switch( align )
{
case ITEM_ALIGN_LEFT:
@@ -2047,7 +2047,7 @@ static void CG_DrawDisconnect( void )
// draw the phone jack if we are completely past our buffers
cmdNum = trap_GetCurrentCmdNumber( ) - CMD_BACKUP + 1;
trap_GetUserCmd( cmdNum, &cmd );
-
+
// special check for map_restart
if( cmd.serverTime <= cg.snap->ps.commandTime || cmd.serverTime > cg.time )
return;
@@ -2099,11 +2099,11 @@ static void CG_DrawLagometer( rectDef_t *rect, float text_x, float text_y,
Vector4Copy( textColor, adjustedColor );
adjustedColor[ 3 ] = 0.25f;
-
+
trap_R_SetColor( adjustedColor );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, cgs.media.whiteShader );
trap_R_SetColor( NULL );
-
+
//
// draw the graph
//
@@ -2128,7 +2128,7 @@ static void CG_DrawLagometer( rectDef_t *rect, float text_x, float text_y,
i = ( lagometer.frameCount - 1 - a ) & ( LAG_SAMPLES - 1 );
v = lagometer.frameSamples[ i ];
v *= vscale;
-
+
if( v > 0 )
{
if( color != 1 )
@@ -2136,10 +2136,10 @@ static void CG_DrawLagometer( rectDef_t *rect, float text_x, float text_y,
color = 1;
trap_R_SetColor( g_color_table[ ColorIndex( COLOR_YELLOW ) ] );
}
-
+
if( v > range )
v = range;
-
+
trap_R_DrawStretchPic( ax + aw - a, mid - v, 1, v, 0, 0, 0, 0, cgs.media.whiteShader );
}
else if( v < 0 )
@@ -2149,11 +2149,11 @@ static void CG_DrawLagometer( rectDef_t *rect, float text_x, float text_y,
color = 2;
trap_R_SetColor( g_color_table[ ColorIndex( COLOR_BLUE ) ] );
}
-
+
v = -v;
if( v > range )
v = range;
-
+
trap_R_DrawStretchPic( ax + aw - a, mid, 1, v, 0, 0, 0, 0, cgs.media.whiteShader );
}
}
@@ -2166,7 +2166,7 @@ static void CG_DrawLagometer( rectDef_t *rect, float text_x, float text_y,
{
i = ( lagometer.snapshotCount - 1 - a ) & ( LAG_SAMPLES - 1 );
v = lagometer.snapshotSamples[ i ];
-
+
if( v > 0 )
{
if( lagometer.snapshotFlags[ i ] & SNAPFLAG_RATE_DELAYED )
@@ -2182,16 +2182,16 @@ static void CG_DrawLagometer( rectDef_t *rect, float text_x, float text_y,
if( color != 3 )
{
color = 3;
-
+
trap_R_SetColor( g_color_table[ ColorIndex( COLOR_GREEN ) ] );
}
}
-
+
v = v * vscale;
-
+
if( v > range )
v = range;
-
+
trap_R_DrawStretchPic( ax + aw - a, ay + ah - v, 1, v, 0, 0, 0, 0, cgs.media.whiteShader );
}
else if( v < 0 )
@@ -2201,7 +2201,7 @@ static void CG_DrawLagometer( rectDef_t *rect, float text_x, float text_y,
color = 4; // RED for dropped snapshots
trap_R_SetColor( g_color_table[ ColorIndex( COLOR_RED ) ] );
}
-
+
trap_R_DrawStretchPic( ax + aw - a, ay + ah - range, 1, range, 0, 0, 0, 0, cgs.media.whiteShader );
}
}
@@ -2224,7 +2224,7 @@ static void CG_DrawLagometer( rectDef_t *rect, float text_x, float text_y,
ping += previousPings[ i ];
ping /= PING_FRAMES;
-
+
s = va( "%d", ping );
ax = rect->x + ( rect->w / 2.0f ) - ( CG_Text_Width( s, scale, 0 ) / 2.0f ) + text_x;
ay = rect->y + ( rect->h / 2.0f ) + ( CG_Text_Height( s, scale, 0 ) / 2.0f ) + text_y;
@@ -2260,7 +2260,7 @@ static void CG_DrawConsole( rectDef_t *rect, float text_x, float text_y, vec4_t
h = rect->h;
textItem.text = cg.consoleText;
-
+
textItem.parent = &dummyParent;
memcpy( textItem.window.foreColor, color, sizeof( vec4_t ) );
textItem.window.flags = 0;
@@ -2283,7 +2283,7 @@ static void CG_DrawConsole( rectDef_t *rect, float text_x, float text_y, vec4_t
textItem.window.rect.x = x;
break;
}
-
+
textItem.window.rect.y = y;
textItem.window.rect.w = w;
textItem.window.rect.h = h;
@@ -2318,14 +2318,14 @@ void CG_DrawWeaponIcon( rectDef_t *rect, vec4_t color )
BG_UnpackAmmoArray( cent->currentState.weapon, ps->ammo, ps->powerups, &ammo, &clips );
BG_FindAmmoForWeapon( cent->currentState.weapon, &maxAmmo, NULL );
-
+
// don't display if dead
if( cg.predictedPlayerState.stats[ STAT_HEALTH ] <= 0 )
return;
if( cent->currentState.weapon == 0 )
return;
-
+
CG_RegisterWeapon( cent->currentState.weapon );
if( clips == 0 && !BG_FindInfinteAmmoForWeapon( cent->currentState.weapon ) )
@@ -2338,7 +2338,7 @@ void CG_DrawWeaponIcon( rectDef_t *rect, vec4_t color )
color[ 1 ] = color[ 2 ] = 0.0f;
}
}
-
+
if( cg.predictedPlayerState.stats[ STAT_PTEAM ] == PTE_ALIENS && CG_AtHighestClass( ) )
{
if( cg.time - cg.lastEvolveAttempt <= NO_CREDITS_TIME )
@@ -2347,7 +2347,7 @@ void CG_DrawWeaponIcon( rectDef_t *rect, vec4_t color )
color[ 3 ] = 0.0f;
}
}
-
+
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, cg_weapons[ cent->currentState.weapon ].weaponIcon );
trap_R_SetColor( NULL );
@@ -2388,13 +2388,13 @@ static void CG_DrawCrosshair( void )
return;
wi = &cg_weapons[ cg.snap->ps.weapon ];
-
+
w = h = wi->crossHairSize;
x = cg_crosshairX.integer;
y = cg_crosshairY.integer;
CG_AdjustFrom640( &x, &y, &w, &h );
-
+
hShader = wi->crossHair;
if( hShader != 0 )
@@ -2424,7 +2424,7 @@ static void CG_ScanForCrosshairEntity( void )
CG_Trace( &trace, start, vec3_origin, vec3_origin, end,
cg.snap->ps.clientNum, CONTENTS_SOLID|CONTENTS_BODY );
-
+
if( trace.entityNum >= MAX_CLIENTS )
return;
@@ -2434,14 +2434,14 @@ static void CG_ScanForCrosshairEntity( void )
return;
team = cgs.clientinfo[ trace.entityNum ].team;
-
+
if( cg.snap->ps.persistant[ PERS_TEAM ] != TEAM_SPECTATOR )
{
//only display team names of those on the same team as this player
if( team != cg.snap->ps.stats[ STAT_PTEAM ] )
return;
}
-
+
// update the fade timer
cg.crosshairClientNum = trace.entityNum;
cg.crosshairClientTime = cg.time;
@@ -2461,10 +2461,10 @@ static void CG_DrawCrosshairNames( rectDef_t *rect, float scale, int textStyle )
if( !cg_drawCrosshair.integer )
return;
-
+
if( !cg_drawCrosshairNames.integer )
return;
-
+
if( cg.renderingThirdPerson )
return;
@@ -2616,7 +2616,7 @@ void CG_OwnerDraw( float x, float y, float w, float h, float text_x,
case CG_STAGE_REPORT_TEXT:
CG_DrawStageReport( &rect, text_x, text_y, color, scale, align, textStyle );
break;
-
+
//loading screen
case CG_LOAD_LEVELSHOT:
CG_DrawLevelShot( &rect );
@@ -2651,7 +2651,7 @@ void CG_OwnerDraw( float x, float y, float w, float h, float text_x,
case CG_LOAD_HOSTNAME:
CG_DrawHostname( &rect, text_x, text_y, color, scale, align, textStyle );
break;
-
+
case CG_FPS:
CG_DrawFPS( &rect, text_x, text_y, scale, color, align, textStyle, qtrue );
break;
@@ -2673,23 +2673,23 @@ void CG_OwnerDraw( float x, float y, float w, float h, float text_x,
case CG_LAGOMETER:
CG_DrawLagometer( &rect, text_x, text_y, scale, color );
break;
-
+
case CG_CONSOLE:
CG_DrawConsole( &rect, text_x, text_y, color, scale, align, textStyle );
break;
-
+
default:
break;
}
}
-void CG_MouseEvent( int x, int y )
+void CG_MouseEvent( int x, int y )
{
int n;
if( ( cg.predictedPlayerState.pm_type == PM_NORMAL ||
cg.predictedPlayerState.pm_type == PM_SPECTATOR ) &&
- cg.showScores == qfalse )
+ cg.showScores == qfalse )
{
trap_Key_SetCatcher( 0 );
return;
@@ -2755,7 +2755,7 @@ CG_EventHandling
void CG_EventHandling( int type )
{
cgs.eventHandling = type;
-
+
if( type == CGAME_EVENT_NONE )
CG_HideTeamMenu( );
}
@@ -2790,14 +2790,14 @@ void CG_KeyEvent( int key, qboolean down )
int CG_ClientNumFromName( const char *p )
{
int i;
-
+
for( i = 0; i < cgs.maxclients; i++ )
{
if( cgs.clientinfo[ i ].infoValid &&
Q_stricmp( cgs.clientinfo[ i ].name, p ) == 0 )
return i;
}
-
+
return -1;
}
@@ -2824,7 +2824,7 @@ CG_DrawLighting
static void CG_DrawLighting( void )
{
centity_t *cent;
-
+
cent = &cg_entities[ cg.snap->ps.clientNum ];
//fade to black if stamina is low
@@ -2873,7 +2873,7 @@ void CG_CenterPrint( const char *str, int y, int charWidth )
{
if( *s == '\n' )
cg.centerPrintLines++;
-
+
s++;
}
}
@@ -2913,10 +2913,10 @@ static void CG_DrawCenterString( void )
{
if( !start[ l ] || start[ l ] == '\n' )
break;
-
+
linebuffer[ l ] = start[ l ];
}
-
+
linebuffer[ l ] = 0;
w = CG_Text_Width( linebuffer, 0.5, 0 );
@@ -2927,10 +2927,10 @@ static void CG_DrawCenterString( void )
while( *start && ( *start != '\n' ) )
start++;
-
+
if( !*start )
break;
-
+
start++;
}
@@ -2967,10 +2967,10 @@ static void CG_DrawVote( void )
}
sec = ( VOTE_TIME - ( cg.time - cgs.voteTime ) ) / 1000;
-
+
if( sec < 0 )
sec = 0;
-
+
s = va( "VOTE(%i): \"%s\" Yes:%i No:%i", sec, cgs.voteString, cgs.voteYes, cgs.voteNo );
CG_Text_Paint( 8, 340, 0.3f, white, s, 0, 0, ITEM_TEXTSTYLE_NORMAL );
}
@@ -3004,13 +3004,13 @@ static void CG_DrawTeamVote( void )
}
sec = ( VOTE_TIME - ( cg.time - cgs.teamVoteTime[ cs_offset ] ) ) / 1000;
-
+
if( sec < 0 )
sec = 0;
-
+
s = va( "TEAMVOTE(%i): \"%s\" Yes:%i No:%i", sec, cgs.teamVoteString[ cs_offset ],
cgs.teamVoteYes[cs_offset], cgs.teamVoteNo[ cs_offset ] );
-
+
CG_Text_Paint( 8, 360, 0.3f, white, s, 0, 0, ITEM_TEXTSTYLE_NORMAL );
}
@@ -3022,7 +3022,7 @@ static qboolean CG_DrawScoreboard( )
if( menuScoreboard )
menuScoreboard->window.flags &= ~WINDOW_FORCED;
-
+
if( cg_paused.integer )
{
cg.deferredPlayerLoading = 0;
@@ -3042,7 +3042,7 @@ static qboolean CG_DrawScoreboard( )
cg.killerName[ 0 ] = 0;
firstTime = qtrue;
return qfalse;
- }
+ }
if( menuScoreboard == NULL )
@@ -3055,7 +3055,7 @@ static qboolean CG_DrawScoreboard( )
CG_SetScoreSelection( menuScoreboard );
firstTime = qfalse;
}
-
+
Menu_Paint( menuScoreboard, qtrue );
}
@@ -3071,7 +3071,7 @@ static void CG_DrawIntermission( void )
{
if( cg_drawStatus.integer )
Menu_Paint( Menus_FindByName( "default_hud" ), qtrue );
-
+
cg.scoreFadeTime = cg.time;
cg.scoreBoardShowing = CG_DrawScoreboard( );
}
@@ -3169,7 +3169,7 @@ static void CG_Draw2D( void )
menuDef_t *menu = NULL, *defaultMenu;
color[ 0 ] = color[ 1 ] = color[ 2 ] = color[ 3 ] = 1.0f;
-
+
// if we are taking a levelshot for the menu, don't draw anything
if( cg.levelShot )
return;
@@ -3186,9 +3186,9 @@ static void CG_Draw2D( void )
//TA: draw the lighting effects e.g. nvg
CG_DrawLighting( );
-
+
defaultMenu = Menus_FindByName( "default_hud" );
-
+
if( cg.snap->ps.persistant[ PERS_TEAM ] == TEAM_SPECTATOR )
{
w = CG_Text_Width( SPECTATOR_STRING, 0.7f, 0 );
@@ -3196,14 +3196,14 @@ static void CG_Draw2D( void )
}
else
menu = Menus_FindByName( BG_FindHudNameForClass( cg.predictedPlayerState.stats[ STAT_PCLASS ] ) );
-
+
if( !( cg.snap->ps.stats[ STAT_STATE ] & SS_INFESTING ) &&
!( cg.snap->ps.stats[ STAT_STATE ] & SS_HOVELING ) && menu &&
( cg.snap->ps.stats[ STAT_HEALTH ] > 0 ) )
{
if( cg_drawStatus.integer )
Menu_Paint( menu, qtrue );
-
+
CG_DrawCrosshair( );
}
else if( cg_drawStatus.integer )
@@ -3216,7 +3216,7 @@ static void CG_Draw2D( void )
// don't draw center string if scoreboard is up
cg.scoreBoardShowing = CG_DrawScoreboard( );
-
+
if( !cg.scoreBoardShowing )
CG_DrawCenterString( );
}
@@ -3259,7 +3259,7 @@ void CG_DrawActive( stereoFrame_t stereoView )
// offset vieworg appropriately if we're doing stereo separation
VectorCopy( cg.refdef.vieworg, baseOrg );
-
+
if( separation != 0 )
VectorMA( cg.refdef.vieworg, -separation, cg.refdef.viewaxis[ 1 ],
cg.refdef.vieworg );
diff --git a/src/cgame/cg_drawtools.c b/src/cgame/cg_drawtools.c
index 05c06b65..b1f0d9ab 100644
--- a/src/cgame/cg_drawtools.c
+++ b/src/cgame/cg_drawtools.c
@@ -14,7 +14,7 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
-
+
#include "cg_local.h"
/*
@@ -28,7 +28,7 @@ void CG_DrawPlane( vec3_t origin, vec3_t down, vec3_t right, qhandle_t shader )
{
polyVert_t verts[ 4 ];
vec3_t temp;
-
+
VectorCopy( origin, verts[ 0 ].xyz );
verts[ 0 ].st[ 0 ] = 0;
verts[ 0 ].st[ 1 ] = 0;
@@ -36,7 +36,7 @@ void CG_DrawPlane( vec3_t origin, vec3_t down, vec3_t right, qhandle_t shader )
verts[ 0 ].modulate[ 1 ] = 255;
verts[ 0 ].modulate[ 2 ] = 255;
verts[ 0 ].modulate[ 3 ] = 255;
-
+
VectorAdd( origin, right, temp );
VectorCopy( temp, verts[ 1 ].xyz );
verts[ 1 ].st[ 0 ] = 1;
@@ -45,7 +45,7 @@ void CG_DrawPlane( vec3_t origin, vec3_t down, vec3_t right, qhandle_t shader )
verts[ 1 ].modulate[ 1 ] = 255;
verts[ 1 ].modulate[ 2 ] = 255;
verts[ 1 ].modulate[ 3 ] = 255;
-
+
VectorAdd( origin, right, temp );
VectorAdd( temp, down, temp );
VectorCopy( temp, verts[ 2 ].xyz );
@@ -55,7 +55,7 @@ void CG_DrawPlane( vec3_t origin, vec3_t down, vec3_t right, qhandle_t shader )
verts[ 2 ].modulate[ 1 ] = 255;
verts[ 2 ].modulate[ 2 ] = 255;
verts[ 2 ].modulate[ 3 ] = 255;
-
+
VectorAdd( origin, down, temp );
VectorCopy( temp, verts[ 3 ].xyz );
verts[ 3 ].st[ 0 ] = 0;
@@ -64,7 +64,7 @@ void CG_DrawPlane( vec3_t origin, vec3_t down, vec3_t right, qhandle_t shader )
verts[ 3 ].modulate[ 1 ] = 255;
verts[ 3 ].modulate[ 2 ] = 255;
verts[ 3 ].modulate[ 3 ] = 255;
-
+
trap_R_AddPolyToScene( shader, 4, verts );
}
@@ -179,7 +179,7 @@ void CG_DrawFadePic( float x, float y, float width, float height, vec4_t fcolor,
float inverse;
inverse = 100 - amount;
-
+
CG_AdjustFrom640( &x, &y, &width, &height );
finalcolor[ 0 ] = ( ( inverse * fcolor[ 0 ] ) + ( amount * tcolor[ 0 ] ) ) / 100;
diff --git a/src/cgame/cg_ents.c b/src/cgame/cg_ents.c
index df269155..c4adf46b 100644
--- a/src/cgame/cg_ents.c
+++ b/src/cgame/cg_ents.c
@@ -79,7 +79,7 @@ void CG_DrawBoundingBox( vec3_t origin, vec3_t mins, vec3_t maxs )
pmp[ 0 ] = origin[ 0 ] + maxs[ 0 ];
pmp[ 1 ] = origin[ 1 ] + mins[ 1 ];
pmp[ 2 ] = origin[ 2 ] + maxs[ 2 ];
-
+
ppm[ 0 ] = origin[ 0 ] + maxs[ 0 ];
ppm[ 1 ] = origin[ 1 ] + maxs[ 1 ];
ppm[ 2 ] = origin[ 2 ] + mins[ 2 ];
@@ -215,12 +215,12 @@ static void CG_EntityEffects( centity_t *cent )
{
if( cent->currentState.eType != ET_SPEAKER )
{
- trap_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin, vec3_origin,
+ trap_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin, vec3_origin,
cgs.gameSounds[ cent->currentState.loopSound ] );
}
else
{
- trap_S_AddRealLoopingSound( cent->currentState.number, cent->lerpOrigin, vec3_origin,
+ trap_S_AddRealLoopingSound( cent->currentState.number, cent->lerpOrigin, vec3_origin,
cgs.gameSounds[ cent->currentState.loopSound ] );
}
}
@@ -328,7 +328,7 @@ static void CG_LaunchMissile( centity_t *cent )
weapon = es->weapon;
if( weapon > WP_NUM_WEAPONS )
weapon = WP_NONE;
-
+
wi = &cg_weapons[ weapon ];
weaponMode = es->generic1;
@@ -359,12 +359,12 @@ static void CG_Missile( centity_t *cent )
weapon = es->weapon;
if( weapon > WP_NUM_WEAPONS )
weapon = WP_NONE;
-
+
wi = &cg_weapons[ weapon ];
weaponMode = es->generic1;
-
+
wim = &wi->wim[ weaponMode ];
-
+
// calculate the axis
VectorCopy( es->angles, cent->lerpAngles );
@@ -417,11 +417,11 @@ static void CG_Missile( centity_t *cent )
RotateAroundDirection( ent.axis, cg.time / 4 );
else
RotateAroundDirection( ent.axis, es->time );
-
+
if( wim->missileAnimates )
{
int timeSinceStart = cg.time - es->time;
-
+
if( wim->missileAnimLooping )
{
ent.frame = wim->missileAnimStartFrame +
@@ -432,13 +432,13 @@ static void CG_Missile( centity_t *cent )
{
ent.frame = wim->missileAnimStartFrame +
(int)( ( timeSinceStart / 1000.0f ) * wim->missileAnimFrameRate );
-
+
if( ent.frame > ( wim->missileAnimStartFrame + wim->missileAnimNumFrames ) )
ent.frame = wim->missileAnimStartFrame + wim->missileAnimNumFrames;
}
}
}
-
+
//only refresh if there is something to display
if( wim->missileSprite || wim->missileModel )
trap_R_AddRefEntityToScene( &ent );
@@ -552,7 +552,7 @@ static void CG_Portal( centity_t *cent )
#define SETBOUNDS(v1,v2,r) ((v1)[0]=(-r/2),(v1)[1]=(-r/2),(v1)[2]=(-r/2),\
(v2)[0]=(r/2),(v2)[1]=(r/2),(v2)[2]=(r/2))
#define RADIUSSTEP 0.5f
-
+
#define FLARE_OFF 0
#define FLARE_NOFADE 1
#define FLARE_TIMEFADE 2
@@ -576,12 +576,12 @@ static void CG_LightFlare( centity_t *cent )
int entityNum;
es = &cent->currentState;
-
+
if( cg.renderingThirdPerson )
entityNum = MAGIC_TRACE_HACK;
else
entityNum = cg.predictedPlayerState.clientNum;
-
+
//don't draw light flares
if( cg_lightFlare.integer == FLARE_OFF )
return;
@@ -589,7 +589,7 @@ static void CG_LightFlare( centity_t *cent )
//flare is "off"
if( es->eFlags & EF_NODRAW )
return;
-
+
CG_Trace( &tr, cg.refdef.vieworg, NULL, NULL, es->angles2,
entityNum, MASK_SHOT );
@@ -597,16 +597,16 @@ static void CG_LightFlare( centity_t *cent )
//it definately cannot be seen
if( tr.fraction < 1.0f || tr.allsolid )
return;
-
+
memset( &flare, 0, sizeof( flare ) );
-
+
flare.reType = RT_SPRITE;
flare.customShader = cgs.gameShaders[ es->modelindex ];
flare.shaderRGBA[ 0 ] = 0xFF;
flare.shaderRGBA[ 1 ] = 0xFF;
flare.shaderRGBA[ 2 ] = 0xFF;
flare.shaderRGBA[ 3 ] = 0xFF;
-
+
//flares always drawn before the rest of the scene
flare.renderfx |= RF_DEPTHHACK;
@@ -620,7 +620,7 @@ static void CG_LightFlare( centity_t *cent )
//flare is too close to camera to be drawn
if( len < es->generic1 )
return;
-
+
//don't bother for flares behind the view plane
if( DotProduct( delta, cg.refdef.viewaxis[ 0 ] ) < 0.0 )
return;
@@ -635,31 +635,31 @@ static void CG_LightFlare( centity_t *cent )
srcRadius = srLocal = flare.radius / 2.0f;
else
srcRadius = srLocal = len / es->origin2[ 2 ];
-
+
maxAngle = es->origin2[ 1 ];
if( maxAngle > 0.0f )
{
float radiusMod = 1.0f - ( 180.0f - RAD2DEG(
acos( DotProduct( delta, forward ) ) ) ) / maxAngle;
-
+
if( es->eFlags & EF_NODRAW )
flare.radius *= radiusMod;
else if( radiusMod < 0.0f )
flare.radius = 0.0f;
- }
+ }
if( flare.radius < 0.0f )
flare.radius = 0.0f;
-
+
VectorMA( flare.origin, -flare.radius, delta, end );
VectorMA( cg.refdef.vieworg, flare.radius, delta, start );
-
+
if( cg_lightFlare.integer == FLARE_REALFADE )
{
//draw "correct" albeit inefficient flares
srLocal = cent->lfs.lastSrcRadius;
-
+
//flare radius is likely to be the same as last frame so start with it
do
{
@@ -669,9 +669,9 @@ static void CG_LightFlare( centity_t *cent )
entityNum, MASK_SHOT );
} while( ( tr.fraction == 1.0f && !tr.startsolid ) && ( srLocal < srcRadius ) );
-
+
srLocal -= RADIUSSTEP;
-
+
//shink the flare until there is a los
do
{
@@ -681,7 +681,7 @@ static void CG_LightFlare( centity_t *cent )
srLocal -= RADIUSSTEP;
} while( ( tr.fraction < 1.0f || tr.startsolid ) && ( srLocal > 0.0f ) );
-
+
ratio = srLocal / srcRadius;
cent->lfs.lastSrcRadius = srLocal;
@@ -710,7 +710,7 @@ static void CG_LightFlare( centity_t *cent )
if( cent->lfs.lastTime + es->time > cg.time )
ratio = (float)( cg.time - cent->lfs.lastTime ) / es->time;
}
-
+
//fade flare down
if( !cent->lfs.status )
{
@@ -743,13 +743,13 @@ static void CG_LightFlare( centity_t *cent )
cent->lfs.lastRatio = ratio;
cent->lfs.lastRadius = flare.radius;
-
+
if( ratio < 1.0f )
{
flare.radius *= ratio;
flare.shaderRGBA[ 3 ] = (byte)( (float)flare.shaderRGBA[ 3 ] * ratio );
}
-
+
if( flare.radius <= 0.0f )
return;
@@ -774,14 +774,14 @@ static void CG_Lev2ZapChain( centity_t *cent )
{
source = &cg_entities[ es->powerups ];
target = &cg_entities[ es->time ];
-
+
if( es->powerups == cg.predictedPlayerState.clientNum )
VectorCopy( cg.predictedPlayerState.origin, start );
else
VectorCopy( source->currentState.pos.trBase, start );
-
+
VectorCopy( target->currentState.pos.trBase, end );
-
+
CG_DynamicLightningBolt( cgs.media.lightningShader, start, end,
1+((cg.time%((i+2)*(i+3)))+i)%2, 7 + (float)(i%3)*5 + 6.0*random(),
qtrue, 1.0, 0, i*i*3 );
@@ -791,10 +791,10 @@ static void CG_Lev2ZapChain( centity_t *cent )
{
source = &cg_entities[ es->time ];
target = &cg_entities[ es->time2 ];
-
+
VectorCopy( source->currentState.pos.trBase, start );
VectorCopy( target->currentState.pos.trBase, end );
-
+
CG_DynamicLightningBolt( cgs.media.lightningShader, start, end,
1+((cg.time%((i+2)*(i+3)))+i)%2, 7 + (float)(i%3)*5 + 6.0*random(),
qtrue, 1.0, 0, i*i*3 );
@@ -804,10 +804,10 @@ static void CG_Lev2ZapChain( centity_t *cent )
{
source = &cg_entities[ es->time2 ];
target = &cg_entities[ es->constantLight ];
-
+
VectorCopy( source->currentState.pos.trBase, start );
VectorCopy( target->currentState.pos.trBase, end );
-
+
CG_DynamicLightningBolt( cgs.media.lightningShader, start, end,
1+((cg.time%((i+2)*(i+3)))+i)%2, 7 + (float)(i%3)*5 + 6.0*random(),
qtrue, 1.0, 0, i*i*3 );
@@ -834,7 +834,7 @@ void CG_AdjustPositionForMover( const vec3_t in, int moverNum, int fromTime, int
}
cent = &cg_entities[ moverNum ];
-
+
if( cent->currentState.eType != ET_MOVER )
{
VectorCopy( in, out );
@@ -948,10 +948,10 @@ CG_CEntityPVSEnter
static void CG_CEntityPVSEnter( centity_t *cent )
{
entityState_t *es = &cent->currentState;
-
+
if( cg_debugPVS.integer )
CG_Printf( "Entity %d entered PVS\n", cent->currentState.number );
-
+
switch( es->eType )
{
case ET_MISSILE:
@@ -999,7 +999,7 @@ static void CG_AddCEntity( centity_t *cent )
// event-only entities will have been dealt with already
if( cent->currentState.eType >= ET_EVENTS )
return;
-
+
// calculate the current origin
CG_CalcEntityLerpPositions( cent );
@@ -1011,64 +1011,64 @@ static void CG_AddCEntity( centity_t *cent )
default:
CG_Error( "Bad entity type: %i\n", cent->currentState.eType );
break;
-
+
case ET_INVISIBLE:
case ET_PUSH_TRIGGER:
case ET_TELEPORT_TRIGGER:
break;
-
+
case ET_GENERAL:
CG_General( cent );
break;
-
+
case ET_CORPSE:
CG_Corpse( cent );
break;
-
+
case ET_PLAYER:
CG_Player( cent );
break;
-
+
case ET_BUILDABLE:
CG_Buildable( cent );
break;
-
+
case ET_MISSILE:
CG_Missile( cent );
break;
-
+
case ET_MOVER:
CG_Mover( cent );
break;
-
+
case ET_BEAM:
CG_Beam( cent );
break;
-
+
case ET_PORTAL:
CG_Portal( cent );
break;
-
+
case ET_SPEAKER:
CG_Speaker( cent );
break;
-
+
case ET_PARTICLE_SYSTEM:
CG_ParticleSystemEntity( cent );
break;
-
+
case ET_ANIMMAPOBJ:
CG_animMapObj( cent );
break;
-
+
case ET_MODELDOOR:
CG_ModelDoor( cent );
break;
-
+
case ET_LIGHTFLARE:
CG_LightFlare( cent );
break;
-
+
case ET_LEV2_ZAP_CHAIN:
CG_Lev2ZapChain( cent );
break;
@@ -1093,7 +1093,7 @@ void CG_AddPacketEntities( void )
int delta;
delta = ( cg.nextSnap->serverTime - cg.snap->serverTime );
-
+
if( delta == 0 )
cg.frameInterpolation = 0;
else
@@ -1138,7 +1138,7 @@ void CG_AddPacketEntities( void )
cent = &cg_entities[ cg.snap->entities[ num ].number ];
cent->valid = qtrue;
}
-
+
for( num = 0; num < MAX_GENTITIES; num++ )
{
cent = &cg_entities[ num ];
@@ -1157,7 +1157,7 @@ void CG_AddPacketEntities( void )
cent = &cg_entities[ cg.snap->entities[ num ].number ];
CG_AddCEntity( cent );
}
-
+
//make an attempt at drawing bounding boxes of selected entity types
if( cg_drawBBOX.integer )
{
@@ -1166,10 +1166,10 @@ void CG_AddPacketEntities( void )
float x, zd, zu;
vec3_t mins, maxs;
entityState_t *es;
-
+
cent = &cg_entities[ cg.snap->entities[ num ].number ];
es = &cent->currentState;
-
+
switch( es->eType )
{
case ET_BUILDABLE:
diff --git a/src/cgame/cg_event.c b/src/cgame/cg_event.c
index 64f23f52..fa46fe36 100644
--- a/src/cgame/cg_event.c
+++ b/src/cgame/cg_event.c
@@ -42,7 +42,7 @@ static void CG_Obituary( entityState_t *ent )
if( target < 0 || target >= MAX_CLIENTS )
CG_Error( "CG_Obituary: target out of range" );
-
+
ci = &cgs.clientinfo[ target ];
if( attacker < 0 || attacker >= MAX_CLIENTS )
@@ -54,7 +54,7 @@ static void CG_Obituary( entityState_t *ent )
attackerInfo = CG_ConfigString( CS_PLAYERS + attacker );
targetInfo = CG_ConfigString( CS_PLAYERS + target );
-
+
if( !targetInfo )
return;
@@ -136,7 +136,7 @@ static void CG_Obituary( entityState_t *ent )
else
message = "toasted himself";
break;
-
+
case MOD_LCANNON_SPLASH:
if( gender == GENDER_FEMALE )
message = "irradiated herself";
@@ -145,7 +145,7 @@ static void CG_Obituary( entityState_t *ent )
else
message = "irradiated himself";
break;
-
+
case MOD_GRENADE:
if( gender == GENDER_FEMALE )
message = "blew herself up";
@@ -154,7 +154,7 @@ static void CG_Obituary( entityState_t *ent )
else
message = "blew himself up";
break;
-
+
default:
if( gender == GENDER_FEMALE )
message = "killed herself";
@@ -235,7 +235,7 @@ static void CG_Obituary( entityState_t *ent )
message = "couldn't escape";
message2 = "'s grenade";
break;
-
+
case MOD_ABUILDER_CLAW:
message = "should leave";
message2 = "'s buildings alone";
@@ -291,7 +291,7 @@ static void CG_Obituary( entityState_t *ent )
BG_FindHumanNameForClassNum( PCL_ALIEN_LEVEL4 ) );
message2 = className;
break;
-
+
case MOD_POISON:
message = "should have used antitox against";
message2 = "'s poison";
@@ -302,8 +302,8 @@ static void CG_Obituary( entityState_t *ent )
BG_FindHumanNameForClassNum( PCL_ALIEN_LEVEL1 ) );
message2 = className;
break;
-
-
+
+
case MOD_TELEFRAG:
message = "tried to invade";
message2 = "'s personal space";
@@ -398,7 +398,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
clientNum = es->clientNum;
if( clientNum < 0 || clientNum >= MAX_CLIENTS )
clientNum = 0;
-
+
ci = &cgs.clientinfo[ clientNum ];
switch( event )
@@ -418,7 +418,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
cgs.media.footsteps[ ci->footsteps ][ rand( ) & 3 ] );
}
break;
-
+
case EV_FOOTSTEP_METAL:
DEBUGNAME( "EV_FOOTSTEP_METAL" );
if( cg_footsteps.integer && ci->footsteps != FOOTSTEP_NONE )
@@ -431,7 +431,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
cgs.media.footsteps[ FOOTSTEP_METAL ][ rand( ) & 3 ] );
}
break;
-
+
case EV_FOOTSTEP_SQUELCH:
DEBUGNAME( "EV_FOOTSTEP_SQUELCH" );
if( cg_footsteps.integer && ci->footsteps != FOOTSTEP_NONE )
@@ -440,7 +440,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
cgs.media.footsteps[ FOOTSTEP_FLESH ][ rand( ) & 3 ] );
}
break;
-
+
case EV_FOOTSPLASH:
DEBUGNAME( "EV_FOOTSPLASH" );
if( cg_footsteps.integer && ci->footsteps != FOOTSTEP_NONE )
@@ -449,7 +449,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
cgs.media.footsteps[ FOOTSTEP_SPLASH ][ rand( ) & 3 ] );
}
break;
-
+
case EV_FOOTWADE:
DEBUGNAME( "EV_FOOTWADE" );
if( cg_footsteps.integer && ci->footsteps != FOOTSTEP_NONE )
@@ -458,7 +458,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
cgs.media.footsteps[ FOOTSTEP_SPLASH ][ rand( ) & 3 ] );
}
break;
-
+
case EV_SWIM:
DEBUGNAME( "EV_SWIM" );
if( cg_footsteps.integer && ci->footsteps != FOOTSTEP_NONE )
@@ -472,7 +472,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
case EV_FALL_SHORT:
DEBUGNAME( "EV_FALL_SHORT" );
trap_S_StartSound( NULL, es->number, CHAN_AUTO, cgs.media.landSound );
-
+
if( clientNum == cg.predictedPlayerState.clientNum )
{
// smooth landing z changes
@@ -480,12 +480,12 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
cg.landTime = cg.time;
}
break;
-
+
case EV_FALL_MEDIUM:
DEBUGNAME( "EV_FALL_MEDIUM" );
// use normal pain sound
trap_S_StartSound( NULL, es->number, CHAN_VOICE, CG_CustomSound( es->number, "*pain100_1.wav" ) );
-
+
if( clientNum == cg.predictedPlayerState.clientNum )
{
// smooth landing z changes
@@ -493,12 +493,12 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
cg.landTime = cg.time;
}
break;
-
+
case EV_FALL_FAR:
DEBUGNAME( "EV_FALL_FAR" );
trap_S_StartSound (NULL, es->number, CHAN_AUTO, CG_CustomSound( es->number, "*fall1.wav" ) );
cent->pe.painTime = cg.time; // don't play a pain sound right after this
-
+
if( clientNum == cg.predictedPlayerState.clientNum )
{
// smooth landing z changes
@@ -515,28 +515,28 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
case EV_STEP_4:
case EV_STEP_8:
case EV_STEP_12:
- case EV_STEP_16: // smooth out step up transitions
+ case EV_STEP_16: // smooth out step up transitions
case EV_STEPDN_4:
case EV_STEPDN_8:
case EV_STEPDN_12:
- case EV_STEPDN_16: // smooth out step down transitions
+ case EV_STEPDN_16: // smooth out step down transitions
DEBUGNAME( "EV_STEP" );
{
- float oldStep;
- int delta;
- int step;
+ float oldStep;
+ int delta;
+ int step;
if( clientNum != cg.predictedPlayerState.clientNum )
break;
-
+
// if we are interpolating, we don't need to smooth steps
if( cg.demoPlayback || ( cg.snap->ps.pm_flags & PMF_FOLLOW ) ||
cg_nopredict.integer || cg_synchronousClients.integer )
break;
-
+
// check for stepping up before a previous step is completed
delta = cg.time - cg.stepTime;
-
+
if( delta < steptime )
oldStep = cg.stepChange * ( steptime - delta ) / steptime;
else
@@ -553,7 +553,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
step = 4 * ( event - EV_STEP_4 + 1 );
cg.stepChange = oldStep + step;
}
-
+
if( cg.stepChange > MAX_STEP_CHANGE )
cg.stepChange = MAX_STEP_CHANGE;
else if( cg.stepChange < -MAX_STEP_CHANGE )
@@ -563,49 +563,27 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
break;
}
- case EV_JUMP_PAD:
- DEBUGNAME( "EV_JUMP_PAD" );
- // CG_Printf( "EV_JUMP_PAD w/effect #%i\n", es->eventParm );
- {
- localEntity_t *smoke;
- vec3_t up = { 0, 0, 1 };
-
-
- smoke = CG_SmokePuff( cent->lerpOrigin, up,
- 32,
- 1, 1, 1, 0.33f,
- 1000,
- cg.time, 0,
- LEF_PUFF_DONT_SCALE,
- cgs.media.smokePuffShader );
- }
-
- // boing sound at origin, jump sound on player
- trap_S_StartSound( cent->lerpOrigin, -1, CHAN_VOICE, cgs.media.jumpPadSound );
- trap_S_StartSound( NULL, es->number, CHAN_VOICE, CG_CustomSound( es->number, "*jump1.wav" ) );
- break;
-
case EV_JUMP:
DEBUGNAME( "EV_JUMP" );
trap_S_StartSound( NULL, es->number, CHAN_VOICE, CG_CustomSound( es->number, "*jump1.wav" ) );
-
+
if( BG_ClassHasAbility( cg.predictedPlayerState.stats[ STAT_PCLASS ], SCA_WALLJUMPER ) )
- {
+ {
vec3_t surfNormal, refNormal = { 0.0f, 0.0f, 1.0f };
vec3_t rotAxis;
if( clientNum != cg.predictedPlayerState.clientNum )
break;
-
+
//set surfNormal
VectorCopy( cg.predictedPlayerState.grapplePoint, surfNormal );
-
+
//if we are moving from one surface to another smooth the transition
if( !VectorCompare( surfNormal, cg.lastNormal ) && surfNormal[ 2 ] != 1.0f )
{
CrossProduct( refNormal, surfNormal, rotAxis );
VectorNormalize( rotAxis );
-
+
//add the op
CG_addSmoothOp( rotAxis, 15.0f, 1.0f );
}
@@ -613,45 +591,45 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
//copy the current normal to the lastNormal
VectorCopy( surfNormal, cg.lastNormal );
}
-
+
break;
-
+
case EV_LEV1_GRAB:
DEBUGNAME( "EV_LEV1_GRAB" );
trap_S_StartSound( NULL, es->number, CHAN_VOICE, cgs.media.alienL1Grab );
break;
-
+
case EV_LEV4_CHARGE_PREPARE:
DEBUGNAME( "EV_LEV4_CHARGE_PREPARE" );
trap_S_StartSound( NULL, es->number, CHAN_VOICE, cgs.media.alienL4ChargePrepare );
break;
-
+
case EV_LEV4_CHARGE_START:
DEBUGNAME( "EV_LEV4_CHARGE_START" );
//FIXME: stop cgs.media.alienL4ChargePrepare playing here
trap_S_StartSound( NULL, es->number, CHAN_VOICE, cgs.media.alienL4ChargeStart );
break;
-
+
case EV_TAUNT:
DEBUGNAME( "EV_TAUNT" );
trap_S_StartSound( NULL, es->number, CHAN_VOICE, CG_CustomSound( es->number, "*taunt.wav" ) );
break;
-
+
case EV_WATER_TOUCH:
DEBUGNAME( "EV_WATER_TOUCH" );
trap_S_StartSound( NULL, es->number, CHAN_AUTO, cgs.media.watrInSound );
break;
-
+
case EV_WATER_LEAVE:
DEBUGNAME( "EV_WATER_LEAVE" );
trap_S_StartSound( NULL, es->number, CHAN_AUTO, cgs.media.watrOutSound );
break;
-
+
case EV_WATER_UNDER:
DEBUGNAME( "EV_WATER_UNDER" );
trap_S_StartSound( NULL, es->number, CHAN_AUTO, cgs.media.watrUnSound );
break;
-
+
case EV_WATER_CLEAR:
DEBUGNAME( "EV_WATER_CLEAR" );
trap_S_StartSound( NULL, es->number, CHAN_AUTO, CG_CustomSound( es->number, "*gasp.wav" ) );
@@ -662,26 +640,25 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
//
case EV_NOAMMO:
DEBUGNAME( "EV_NOAMMO" );
- // trap_S_StartSound (NULL, es->number, CHAN_AUTO, cgs.media.noAmmoSound );
{
}
break;
-
+
case EV_CHANGE_WEAPON:
DEBUGNAME( "EV_CHANGE_WEAPON" );
trap_S_StartSound( NULL, es->number, CHAN_AUTO, cgs.media.selectSound );
break;
-
+
case EV_FIRE_WEAPON:
DEBUGNAME( "EV_FIRE_WEAPON" );
CG_FireWeapon( cent, WPM_PRIMARY );
break;
-
+
case EV_FIRE_WEAPON2:
DEBUGNAME( "EV_FIRE_WEAPON2" );
CG_FireWeapon( cent, WPM_SECONDARY );
break;
-
+
case EV_FIRE_WEAPON3:
DEBUGNAME( "EV_FIRE_WEAPON3" );
CG_FireWeapon( cent, WPM_TERTIARY );
@@ -708,7 +685,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
DEBUGNAME( "EV_BUILD_CONSTRUCT" );
//do something useful here
break;
-
+
case EV_BUILD_DESTROY:
DEBUGNAME( "EV_BUILD_DESTROY" );
//do something useful here
@@ -836,7 +813,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
trap_S_StopLoopingSound( es->number );
es->loopSound = 0;
break;
-
+
case EV_DEBUG_LINE:
DEBUGNAME( "EV_DEBUG_LINE" );
CG_Beam( cent );
@@ -906,7 +883,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
CG_SetParticleSystemCent( ps, cent );
CG_AttachParticleSystemToCent( ps );
}
-
+
if( es->number == cg.clientNum )
cg.spawnTime = cg.time;
break;
@@ -920,7 +897,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
cg.lastEvolveAttempt = cg.time;
}
break;
-
+
case EV_ALIEN_ACIDTUBE:
DEBUGNAME( "EV_ALIEN_ACIDTUBE" );
{
@@ -962,24 +939,31 @@ void CG_CheckEvents( centity_t *cent )
// check for event-only entities
if( cent->currentState.eType > ET_EVENTS )
{
+ entity_event_t event = cent->currentState.eType - ET_EVENTS;
+
if( cent->previousEvent )
return; // already fired
-
+
cent->previousEvent = 1;
cent->currentState.event = cent->currentState.eType - ET_EVENTS;
- }
- else
- {
- // check for events riding with another entity
- if( cent->currentState.event == cent->previousEvent )
- return;
+
+ // Move the pointer to the entity that the
+ // event was originally attached to
+ if( cent->currentState.eFlags & EF_PLAYER_EVENT )
+ cent = &cg_entities[ cent->currentState.otherEntityNum ];
- cent->previousEvent = cent->currentState.event;
- if( ( cent->currentState.event & ~EV_EVENT_BITS ) == 0 )
- return;
+ cent->currentState.event = event;
}
+ // check for events riding with another entity
+ if( cent->currentState.event == cent->previousEvent )
+ return;
+
+ cent->previousEvent = cent->currentState.event;
+ if( ( cent->currentState.event & ~EV_EVENT_BITS ) == 0 )
+ return;
+
// calculate the position at exactly the frame time
BG_EvaluateTrajectory( &cent->currentState.pos, cg.snap->serverTime, cent->lerpOrigin );
CG_SetEntitySoundPosition( cent );
diff --git a/src/cgame/cg_local.h b/src/cgame/cg_local.h
index 7af0525b..d6b07714 100644
--- a/src/cgame/cg_local.h
+++ b/src/cgame/cg_local.h
@@ -165,18 +165,18 @@ typedef enum
typedef struct pMoveValues_u
{
pDirType_t dirType;
-
+
//PMD_LINEAR
- vec3_t dir;
+ vec3_t dir;
float dirRandAngle;
-
+
//PMD_POINT
vec3_t point;
float pointRandAngle;
-
+
float mag;
float magRandFrac;
-
+
float parentVelFrac;
float parentVelFracRandFrac;
} pMoveValues_t;
@@ -185,10 +185,10 @@ typedef struct pLerpValues_s
{
int delay;
float delayRandFrac;
-
+
float initial;
float initialRandFrac;
-
+
float final;
float finalRandFrac;
@@ -201,10 +201,10 @@ typedef struct baseParticle_s
vec3_t displacement;
float randDisplacement;
float normalDisplacement;
-
+
pMoveType_t velMoveType;
pMoveValues_t velMoveValues;
-
+
pMoveType_t accMoveType;
pMoveValues_t accMoveValues;
@@ -224,7 +224,7 @@ typedef struct baseParticle_s
char onDeathSystemName[ MAX_QPATH ];
qhandle_t onDeathSystemHandle;
-
+
//particle invariant stuff
char shaderNames[ MAX_QPATH ][ MAX_SHADER_FRAMES ];
qhandle_t shaders[ MAX_SHADER_FRAMES ];
@@ -242,7 +242,7 @@ typedef struct baseParticleEjector_s
{
baseParticle_t *particles[ MAX_PARTICLES_PER_EJECTOR ];
int numParticles;
-
+
pLerpValues_t eject; //zero period indicates creation of all particles at once
int totalParticles; //can be infinite
@@ -288,13 +288,13 @@ typedef struct psAttachment_s
//PMT_STATIC
vec3_t origin;
-
+
//PMT_TAG
refEntity_t re; //FIXME: should be pointers?
refEntity_t parent; //
qhandle_t model;
char tagName[ MAX_STRING_CHARS ];
-
+
//PMT_CENT_ANGLES
int centNum;
@@ -306,14 +306,14 @@ typedef struct psAttachment_s
typedef struct particleSystem_s
{
baseParticleSystem_t *class;
-
+
psAttachmentType_t attachType;
psAttachment_t attachment;
qboolean attached; //is the particle system attached to anything
qboolean valid;
qboolean lazyRemove; //mark this system for later removal
-
+
} particleSystem_t;
@@ -326,9 +326,9 @@ typedef struct particleEjector_s
int count;
int totalParticles;
-
+
int nextEjectionTime;
-
+
qboolean valid;
} particleEjector_t;
@@ -338,13 +338,13 @@ typedef struct particle_s
{
baseParticle_t *class;
particleEjector_t *parent;
-
+
int birthTime;
int lifeTime;
-
+
vec3_t origin;
vec3_t velocity;
-
+
pMoveType_t accMoveType;
pMoveValues_t accMoveValues;
@@ -355,7 +355,7 @@ typedef struct particle_s
pLerpValues_t radius;
pLerpValues_t alpha;
pLerpValues_t rotation;
-
+
qboolean valid;
int sortKey;
@@ -402,7 +402,7 @@ typedef struct
{
float time;
float timeMod;
-
+
vec3_t rotAxis;
float rotAngle;
} smooth_t;
@@ -494,7 +494,7 @@ typedef struct centity_s
particleSystem_t *entityPS;
qboolean entityPSMissing;
-
+
qboolean valid;
qboolean oldValid;
} centity_t;
@@ -651,12 +651,12 @@ typedef struct
char headSkinName[ MAX_QPATH ];
char redTeam[ MAX_TEAMNAME ];
char blueTeam[ MAX_TEAMNAME ];
-
+
qboolean newAnims; // true if using the new mission pack animations
qboolean fixedlegs; // true if legs yaw is always the same as torso yaw
qboolean fixedtorso; // true if torso never changes yaw
qboolean nonsegmented; // true if model is Q2 style nonsegmented
-
+
vec3_t headOffset; // move head in icon views
footstep_t footsteps;
gender_t gender; // from model
@@ -750,7 +750,7 @@ typedef struct weaponInfo_s
sfxHandle_t readySound;
qboolean disableIn3rdPerson;
-
+
weaponInfoMode_t wim[ WPM_NUM_WEAPONMODES ];
} weaponInfo_t;
@@ -766,7 +766,7 @@ typedef struct
{
qboolean looped;
qboolean enabled;
-
+
sfxHandle_t sound;
} sound_t;
@@ -790,13 +790,13 @@ typedef struct
vec3_t alienBuildablePos[ MAX_GENTITIES ];
int alienBuildableTimes[ MAX_GENTITIES ];
int numAlienBuildables;
-
+
vec3_t humanBuildablePos[ MAX_GENTITIES ];
int numHumanBuildables;
-
+
vec3_t alienClientPos[ MAX_CLIENTS ];
int numAlienClients;
-
+
vec3_t humanClientPos[ MAX_CLIENTS ];
int numHumanClients;
@@ -827,7 +827,7 @@ typedef struct
qboolean demoPlayback;
qboolean levelShot; // taking a level menu screenshot
- int deferredPlayerLoading;
+ int deferredPlayerLoading;
qboolean loading; // don't defer players at initial startup
qboolean intermissionStarted; // don't play voice rewards, because game will end shortly
@@ -962,7 +962,7 @@ typedef struct
int voiceChatTime;
int voiceChatBufferIn;
int voiceChatBufferOut;
-
+
// warmup countdown
int warmup;
int warmupCount;
@@ -1015,9 +1015,9 @@ typedef struct
int weapon1Time; //TA: time when BUTTON_ATTACK went t->f f->t
int weapon2Time; //TA: time when BUTTON_ATTACK2 went t->f f->t
int weapon3Time; //TA: time when BUTTON_USE_HOLDABLE went t->f f->t
- qboolean weapon1Firing;
- qboolean weapon2Firing;
- qboolean weapon3Firing;
+ qboolean weapon1Firing;
+ qboolean weapon2Firing;
+ qboolean weapon3Firing;
int poisonedTime;
@@ -1040,7 +1040,7 @@ typedef struct
consoleLine_t consoleLines[ MAX_CONSOLE_LINES ];
int numConsoleLines;
qboolean consoleValid;
-
+
particleSystem_t *poisonCloudPS;
} cg_t;
@@ -1085,7 +1085,7 @@ typedef struct
qhandle_t gibSpark1;
qhandle_t gibSpark2;
-
+
qhandle_t smoke2;
qhandle_t machinegunBrassModel;
@@ -1120,7 +1120,7 @@ typedef struct
qhandle_t flameExplShader;
qhandle_t creepShader;
-
+
qhandle_t scannerShader;
qhandle_t scannerBlipShader;
qhandle_t scannerLineShader;
@@ -1160,8 +1160,6 @@ typedef struct
// sounds
sfxHandle_t tracerSound;
sfxHandle_t selectSound;
- sfxHandle_t useNothingSound;
- sfxHandle_t wearOffSound;
sfxHandle_t footsteps[ FOOTSTEP_TOTAL ][ 4 ];
sfxHandle_t gibSound;
sfxHandle_t gibBounce1Sound;
@@ -1170,12 +1168,10 @@ typedef struct
sfxHandle_t metalGibBounceSound;
sfxHandle_t teleInSound;
sfxHandle_t teleOutSound;
- sfxHandle_t noAmmoSound;
sfxHandle_t respawnSound;
sfxHandle_t talkSound;
sfxHandle_t landSound;
sfxHandle_t fallSound;
- sfxHandle_t jumpPadSound;
sfxHandle_t hgrenb1aSound;
sfxHandle_t hgrenb2aSound;
@@ -1191,20 +1187,20 @@ typedef struct
sfxHandle_t jetpackDescendSound;
sfxHandle_t jetpackIdleSound;
sfxHandle_t jetpackAscendSound;
-
+
qhandle_t jetPackDescendPS;
qhandle_t jetPackHoverPS;
qhandle_t jetPackAscendPS;
-
+
sfxHandle_t medkitUseSound;
-
+
sfxHandle_t alienStageTransition;
sfxHandle_t humanStageTransition;
-
+
sfxHandle_t alienOvermindAttack;
sfxHandle_t alienOvermindDying;
sfxHandle_t alienOvermindSpawns;
-
+
sfxHandle_t alienBuildableExplosion;
sfxHandle_t alienBuildableDamage;
sfxHandle_t alienBuildablePrebuild;
@@ -1215,7 +1211,7 @@ typedef struct
sfxHandle_t alienL1Grab;
sfxHandle_t alienL4ChargePrepare;
sfxHandle_t alienL4ChargeStart;
-
+
qhandle_t cursor;
qhandle_t selectCursor;
qhandle_t sizeCursor;
@@ -1227,13 +1223,13 @@ typedef struct
qhandle_t larmourHeadSkin;
qhandle_t larmourLegsSkin;
qhandle_t larmourTorsoSkin;
-
+
qhandle_t jetpackModel;
qhandle_t jetpackFlashModel;
qhandle_t battpackModel;
-
+
sfxHandle_t repeaterUseSound;
-
+
sfxHandle_t buildableRepairSound;
sfxHandle_t buildableRepairedSound;
@@ -1242,7 +1238,7 @@ typedef struct
qhandle_t alienAcidTubePS;
sfxHandle_t alienEvolveSound;
-
+
qhandle_t humanBuildableDamagedPS;
qhandle_t humanBuildableDestroyedPS;
qhandle_t alienBuildableDamagedPS;
@@ -1309,7 +1305,7 @@ typedef struct
int humanKills;
int alienNextStageThreshold;
int humanNextStageThreshold;
-
+
int numAlienSpawns;
int numHumanSpawns;
@@ -1320,13 +1316,13 @@ typedef struct
qhandle_t gameShaders[ MAX_SHADERS ];
qhandle_t gameParticleSystems[ MAX_GAME_PARTICLE_SYSTEMS ];
sfxHandle_t gameSounds[ MAX_SOUNDS ];
-
+
int numInlineModels;
qhandle_t inlineDrawModel[ MAX_MODELS ];
vec3_t inlineModelMidpoints[ MAX_MODELS ];
clientInfo_t clientinfo[ MAX_CLIENTS ];
-
+
//TA: corpse info
clientInfo_t corpseinfo[ MAX_CLIENTS ];
@@ -1612,9 +1608,9 @@ void CG_ModelDoor( centity_t *cent );
void CG_BuildSolidList( void );
int CG_PointContents( const vec3_t point, int passEntityNum );
-void CG_Trace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
+void CG_Trace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
int skipNumber, int mask );
-void CG_CapTrace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
+void CG_CapTrace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
int skipNumber, int mask );
void CG_PredictPlayerState( void );
@@ -1735,7 +1731,7 @@ int CG_AddTrailJunc( int headJuncIndex, qhandle_t shader, int spawnTim
int CG_AddSparkJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailLife,
float alphaStart, float alphaEnd, float startWidth, float endWidth );
int CG_AddSmokeJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailLife,
- float alpha, float startWidth, float endWidth );
+ float alpha, float startWidth, float endWidth );
int CG_AddFireJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailLife,
float alpha, float startWidth, float endWidth );
void CG_AddTrails( void );
@@ -1788,7 +1784,7 @@ void CG_DestroyParticleSystem( particleSystem_t **ps );
qboolean CG_IsParticleSystemInfinite( particleSystem_t *ps );
qboolean CG_IsParticleSystemValid( particleSystem_t **ps );
-
+
void CG_SetParticleSystemCent( particleSystem_t *ps, centity_t *cent );
void CG_AttachParticleSystemToCent( particleSystem_t *ps );
void CG_SetParticleSystemTag( particleSystem_t *ps, refEntity_t parent, qhandle_t model, char *tagName );
@@ -1805,10 +1801,10 @@ void CG_ParticleSystemEntity( centity_t *cent );
//
// cg_ptr.c
-//
+//
int CG_ReadPTRCode( void );
void CG_WritePTRCode( int code );
-
+
//
//===============================================
@@ -1937,7 +1933,7 @@ void trap_R_SetColor( const float *rgba ); // NULL = 1,1,1,1
void trap_R_DrawStretchPic( float x, float y, float w, float h,
float s1, float t1, float s2, float t2, qhandle_t hShader );
void trap_R_ModelBounds( clipHandle_t model, vec3_t mins, vec3_t maxs );
-int trap_R_LerpTag( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame,
+int trap_R_LerpTag( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame,
float frac, const char *tagName );
void trap_R_RemapShader( const char *oldShader, const char *newShader, const char *timeOffset );
diff --git a/src/cgame/cg_main.c b/src/cgame/cg_main.c
index fd890426..be99e312 100644
--- a/src/cgame/cg_main.c
+++ b/src/cgame/cg_main.c
@@ -14,7 +14,7 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
-
+
#include "cg_local.h"
#include "../ui/ui_shared.h"
@@ -43,43 +43,43 @@ int vmMain( int command, int arg0, int arg1, int arg2, int arg3,
case CG_INIT:
CG_Init( arg0, arg1, arg2 );
return 0;
-
+
case CG_SHUTDOWN:
CG_Shutdown( );
return 0;
-
+
case CG_CONSOLE_COMMAND:
return CG_ConsoleCommand( );
-
+
case CG_DRAW_ACTIVE_FRAME:
CG_DrawActiveFrame( arg0, arg1, arg2 );
return 0;
-
+
case CG_CROSSHAIR_PLAYER:
return CG_CrosshairPlayer( );
-
+
case CG_LAST_ATTACKER:
return CG_LastAttacker( );
-
+
case CG_KEY_EVENT:
CG_KeyEvent( arg0, arg1 );
return 0;
-
+
case CG_MOUSE_EVENT:
cgDC.cursorx = cgs.cursorX;
cgDC.cursory = cgs.cursorY;
CG_MouseEvent( arg0, arg1 );
return 0;
-
+
case CG_EVENT_HANDLING:
CG_EventHandling( arg0 );
return 0;
-
+
default:
CG_Error( "vmMain: unknown command %i", command );
break;
}
-
+
return -1;
}
@@ -308,7 +308,7 @@ static cvarTable_t cvarTable[ ] =
{ &cg_disableWarningDialogs, "cg_disableWarningDialogs", "0", CVAR_ARCHIVE },
{ &cg_disableScannerPlane, "cg_disableScannerPlane", "0", CVAR_ARCHIVE },
{ &cg_hudFiles, "cg_hudFiles", "ui/hud.txt", CVAR_ARCHIVE},
-
+
{ &ui_currentClass, "ui_currentClass", "0", 0 },
{ &ui_carriage, "ui_carriage", "", 0 },
{ &ui_stages, "ui_stages", "0 0", 0 },
@@ -319,7 +319,7 @@ static cvarTable_t cvarTable[ ] =
{ &ui_alienTeamVoteActive, "ui_alienTeamVoteActive", "0", 0 },
{ &cg_debugRandom, "cg_debugRandom", "0", 0 },
-
+
// the following variables are created in other parts of the system,
// but we also reference them here
@@ -370,7 +370,7 @@ void CG_RegisterCvars( void )
//repress standard Q3 console
trap_Cvar_Set( "con_notifytime", "-2" );
-
+
// see if we are also running the server on this machine
trap_Cvar_VariableStringBuffer( "sv_running", var, sizeof( var ) );
cgs.localServer = atoi( var );
@@ -383,7 +383,7 @@ void CG_RegisterCvars( void )
}
-/*
+/*
===================
CG_ForceModelChange
===================
@@ -397,7 +397,7 @@ static void CG_ForceModelChange( void )
const char *clientInfo;
clientInfo = CG_ConfigString( CS_PLAYERS + i );
-
+
if( !clientInfo[ 0 ] )
continue;
@@ -456,11 +456,11 @@ void CG_RemoveConsoleLine( void )
offset = cg.consoleLines[ 0 ].length;
totalLength = strlen( cg.consoleText ) - offset;
-
+
//slide up consoleText
for( i = 0; i <= totalLength; i++ )
cg.consoleText[ i ] = cg.consoleText[ i + offset ];
-
+
//pop up the first consoleLine
for( i = 0; i < cg.numConsoleLines; i++ )
cg.consoleLines[ i ] = cg.consoleLines[ i + 1 ];
@@ -481,7 +481,7 @@ void CG_TAUIConsole( const char *text )
cg.consoleLines[ cg.numConsoleLines ].length = strlen( text );
cg.numConsoleLines++;
}
-
+
}
void QDECL CG_Printf( const char *msg, ... )
@@ -544,7 +544,7 @@ void QDECL Com_Printf( const char *msg, ... ) {
cg.consoleLines[ cg.numConsoleLines ].length = strlen( text );
cg.numConsoleLines++;
}
-
+
CG_Printf ("%s", text);
}
@@ -579,7 +579,7 @@ Test if a specific file exists or not
qboolean CG_FileExists( char *filename )
{
fileHandle_t f;
-
+
if( trap_FS_FOpenFile( filename, &f, FS_READ ) > 0 )
{
//file exists so close it
@@ -610,15 +610,13 @@ static void CG_RegisterSounds( void )
cgs.media.alienOvermindAttack = trap_S_RegisterSound( "sound/announcements/overmindattack.wav", qtrue );
cgs.media.alienOvermindDying = trap_S_RegisterSound( "sound/announcements/overminddying.wav", qtrue );
cgs.media.alienOvermindSpawns = trap_S_RegisterSound( "sound/announcements/overmindspawns.wav", qtrue );
-
+
cgs.media.alienL1Grab = trap_S_RegisterSound( "sound/player/level1/grab.wav", qtrue );
cgs.media.alienL4ChargePrepare = trap_S_RegisterSound( "sound/player/level4/charge_prepare.wav", qtrue );
cgs.media.alienL4ChargeStart = trap_S_RegisterSound( "sound/player/level4/charge_start.wav", qtrue );
-
+
cgs.media.tracerSound = trap_S_RegisterSound( "sound/weapons/machinegun/buletby1.wav", qfalse );
cgs.media.selectSound = trap_S_RegisterSound( "sound/weapons/change.wav", qfalse );
- cgs.media.wearOffSound = trap_S_RegisterSound( "sound/items/wearoff.wav", qfalse );
- cgs.media.useNothingSound = trap_S_RegisterSound( "sound/items/use_nothing.wav", qfalse );
cgs.media.gibSound = trap_S_RegisterSound( "sound/player/gibsplt1.wav", qfalse );
cgs.media.gibBounce1Sound = trap_S_RegisterSound( "sound/player/gibimp1.wav", qfalse );
cgs.media.gibBounce2Sound = trap_S_RegisterSound( "sound/player/gibimp2.wav", qfalse );
@@ -628,8 +626,6 @@ static void CG_RegisterSounds( void )
cgs.media.teleOutSound = trap_S_RegisterSound( "sound/world/teleout.wav", qfalse );
cgs.media.respawnSound = trap_S_RegisterSound( "sound/items/respawn1.wav", qfalse );
- cgs.media.noAmmoSound = trap_S_RegisterSound( "sound/weapons/noammo.wav", qfalse );
-
cgs.media.talkSound = trap_S_RegisterSound( "sound/player/talk.wav", qfalse );
cgs.media.landSound = trap_S_RegisterSound( "sound/player/land1.wav", qfalse );
@@ -637,8 +633,6 @@ static void CG_RegisterSounds( void )
cgs.media.watrOutSound = trap_S_RegisterSound( "sound/player/watr_out.wav", qfalse );
cgs.media.watrUnSound = trap_S_RegisterSound( "sound/player/watr_un.wav", qfalse );
- cgs.media.jumpPadSound = trap_S_RegisterSound( "sound/world/jumppad.wav", qfalse );
-
for( i = 0; i < 4; i++ )
{
Com_sprintf( name, sizeof( name ), "sound/player/footsteps/step%i.wav", i + 1 );
@@ -666,10 +660,10 @@ static void CG_RegisterSounds( void )
for( i = 1 ; i < MAX_SOUNDS ; i++ )
{
soundName = CG_ConfigString( CS_SOUNDS + i );
-
+
if( !soundName[ 0 ] )
break;
-
+
if( soundName[ 0 ] == '*' )
continue; // custom sound
@@ -680,15 +674,15 @@ static void CG_RegisterSounds( void )
cgs.media.jetpackDescendSound = trap_S_RegisterSound( "sound/upgrades/jetpack/low.wav", qfalse );
cgs.media.jetpackIdleSound = trap_S_RegisterSound( "sound/upgrades/jetpack/idle.wav", qfalse );
cgs.media.jetpackAscendSound = trap_S_RegisterSound( "sound/upgrades/jetpack/hi.wav", qfalse );
-
+
cgs.media.medkitUseSound = trap_S_RegisterSound( "sound/upgrades/medkit/medkit.wav", qfalse );
cgs.media.alienEvolveSound = trap_S_RegisterSound( "sound/player/alienevolve.wav", qfalse );
-
+
cgs.media.alienBuildableExplosion = trap_S_RegisterSound( "sound/buildables/alien/explosion.wav", qfalse );
cgs.media.alienBuildableDamage = trap_S_RegisterSound( "sound/buildables/alien/damage.wav", qfalse );
cgs.media.alienBuildablePrebuild = trap_S_RegisterSound( "sound/buildables/alien/prebuild.wav", qfalse );
-
+
cgs.media.humanBuildableExplosion = trap_S_RegisterSound( "sound/buildables/human/explosion.wav", qfalse );
cgs.media.humanBuildablePrebuild = trap_S_RegisterSound( "sound/buildables/human/prebuild.wav", qfalse );
cgs.media.metalGibBounceSound = trap_S_RegisterSound( "sound/buildables/human/fragmentbounce.wav", qfalse );
@@ -696,15 +690,15 @@ static void CG_RegisterSounds( void )
for( i = 0; i < 4; i++ )
cgs.media.humanBuildableDamage[ i ] = trap_S_RegisterSound(
va( "sound/buildables/human/damage%d.wav", i ), qfalse );
-
+
cgs.media.hgrenb1aSound = trap_S_RegisterSound( "sound/weapons/grenade/hgrenb1a.wav", qfalse );
cgs.media.hgrenb2aSound = trap_S_RegisterSound( "sound/weapons/grenade/hgrenb2a.wav", qfalse );
-
+
cgs.media.repeaterUseSound = trap_S_RegisterSound( "sound/buildables/repeater/use.wav", qfalse );
-
+
cgs.media.buildableRepairSound = trap_S_RegisterSound( "sound/buildables/human/repair.wav", qfalse );
cgs.media.buildableRepairedSound = trap_S_RegisterSound( "sound/buildables/human/repaired.wav", qfalse );
-
+
cgs.media.lCannonWarningSound = trap_S_RegisterSound( "models/weapons/lcannon/warning.wav", qfalse );
}
@@ -754,7 +748,7 @@ static void CG_RegisterGraphics( void )
trap_R_LoadWorldMap( cgs.mapname );
CG_UpdateMediaFraction( 0.66f );
-
+
for( i = 0; i < 11; i++ )
cgs.media.numberShaders[ i ] = trap_R_RegisterShader( sb_nums[ i ] );
@@ -773,12 +767,12 @@ static void CG_RegisterGraphics( void )
cgs.media.greenBloodTrailShader = trap_R_RegisterShader( "greenBloodTrail" );
cgs.media.greenBloodMarkShader = trap_R_RegisterShader( "greenBloodMark" );
cgs.media.explosionTrailShader = trap_R_RegisterShader( "explosionTrail" );
-
+
cgs.media.creepShader = trap_R_RegisterShader( "creep" );
-
+
cgs.media.scannerBlipShader = trap_R_RegisterShader( "gfx/2d/blip" );
cgs.media.scannerLineShader = trap_R_RegisterShader( "gfx/2d/stalk" );
-
+
cgs.media.waterBubbleShader = trap_R_RegisterShader( "waterBubble" );
cgs.media.tracerShader = trap_R_RegisterShader( "gfx/misc/tracer" );
@@ -787,7 +781,7 @@ static void CG_RegisterGraphics( void )
cgs.media.backTileShader = trap_R_RegisterShader( "gfx/2d/backtile" );
cgs.media.noammoShader = trap_R_RegisterShader( "icons/noammo" );
cgs.media.friendShader = trap_R_RegisterShader( "sprites/foe" );
-
+
//TA: building shaders
cgs.media.greenBuildShader = trap_R_RegisterShader("gfx/2d/greenbuild" );
@@ -797,7 +791,7 @@ static void CG_RegisterGraphics( void )
for( i = 0; i < 8; i++ )
cgs.media.buildWeaponTimerPie[ i ] = trap_R_RegisterShader( buildWeaponTimerPieShaders[ i ] );
-
+
cgs.media.upgradeClassIconShader = trap_R_RegisterShader( "icons/icona_upgrade.tga" );
cgs.media.machinegunBrassModel = trap_R_RegisterModel( "models/weapons2/shells/m_shell.md3" );
@@ -822,15 +816,15 @@ static void CG_RegisterGraphics( void )
cgs.media.metalGib6 = trap_R_RegisterModel( "models/fx/metal_gibs/m_gib6.md3" );
cgs.media.metalGib7 = trap_R_RegisterModel( "models/fx/metal_gibs/m_gib7.md3" );
cgs.media.metalGib8 = trap_R_RegisterModel( "models/fx/metal_gibs/m_gib8.md3" );
-
+
cgs.media.gibSpark1 = trap_R_RegisterShader( "models/fx/metal_gibs/spark.jpg" );
cgs.media.gibSpark2 = trap_R_RegisterShader( "models/fx/metal_gibs/spark2.jpg" );
-
+
cgs.media.alienGib1 = trap_R_RegisterModel( "models/fx/alien_gibs/a_gib1.md3" );
cgs.media.alienGib2 = trap_R_RegisterModel( "models/fx/alien_gibs/a_gib2.md3" );
cgs.media.alienGib3 = trap_R_RegisterModel( "models/fx/alien_gibs/a_gib3.md3" );
cgs.media.alienGib4 = trap_R_RegisterModel( "models/fx/alien_gibs/a_gib4.md3" );
-
+
cgs.media.smoke2 = trap_R_RegisterModel( "models/weapons2/shells/s_shell.md3" );
cgs.media.balloonShader = trap_R_RegisterShader( "sprites/balloon3" );
@@ -873,7 +867,7 @@ static void CG_RegisterGraphics( void )
// register the inline models
cgs.numInlineModels = trap_CM_NumInlineModels( );
-
+
for( i = 1; i < cgs.numInlineModels; i++ )
{
char name[ 10 ];
@@ -881,10 +875,10 @@ static void CG_RegisterGraphics( void )
int j;
Com_sprintf( name, sizeof( name ), "*%i", i );
-
+
cgs.inlineDrawModel[ i ] = trap_R_RegisterModel( name );
trap_R_ModelBounds( cgs.inlineDrawModel[ i ], mins, maxs );
-
+
for( j = 0 ; j < 3 ; j++ )
cgs.inlineModelMidpoints[ i ][ j ] = mins[ j ] + 0.5 * ( maxs[ j ] - mins[ j ] );
}
@@ -895,7 +889,7 @@ static void CG_RegisterGraphics( void )
const char *modelName;
modelName = CG_ConfigString( CS_MODELS + i );
-
+
if( !modelName[ 0 ] )
break;
@@ -910,7 +904,7 @@ static void CG_RegisterGraphics( void )
const char *shaderName;
shaderName = CG_ConfigString( CS_SHADERS + i );
-
+
if( !shaderName[ 0 ] )
break;
@@ -925,7 +919,7 @@ static void CG_RegisterGraphics( void )
const char *psName;
psName = CG_ConfigString( CS_PARTICLE_SYSTEMS + i );
-
+
if( !psName[ 0 ] )
break;
@@ -934,7 +928,7 @@ static void CG_RegisterGraphics( void )
}
-/*
+/*
=======================
CG_BuildSpectatorString
@@ -943,17 +937,17 @@ CG_BuildSpectatorString
void CG_BuildSpectatorString( void )
{
int i;
-
+
cg.spectatorList[ 0 ] = 0;
-
+
for( i = 0; i < MAX_CLIENTS; i++ )
{
if( cgs.clientinfo[ i ].infoValid && cgs.clientinfo[ i ].team == PTE_NONE )
Q_strcat( cg.spectatorList, sizeof( cg.spectatorList ), va( "%s " S_COLOR_WHITE, cgs.clientinfo[ i ].name ) );
}
-
+
i = strlen( cg.spectatorList );
-
+
if( i != cg.spectatorLen )
{
cg.spectatorLen = i;
@@ -974,13 +968,13 @@ static void CG_RegisterClients( void )
int i;
cg.charModelFraction = 0.0f;
-
+
//precache all the models/sounds/etc
for( i = PCL_NONE + 1; i < PCL_NUM_CLASSES; i++ )
{
CG_PrecacheClientInfo( i, BG_FindModelNameForClass( i ),
BG_FindSkinNameForClass( i ) );
-
+
cg.charModelFraction = (float)i / (float)PCL_NUM_CLASSES;
trap_UpdateScreen( );
}
@@ -988,14 +982,14 @@ static void CG_RegisterClients( void )
cgs.media.larmourHeadSkin = trap_R_RegisterSkin( "models/players/human_base/head_light.skin" );
cgs.media.larmourLegsSkin = trap_R_RegisterSkin( "models/players/human_base/lower_light.skin" );
cgs.media.larmourTorsoSkin = trap_R_RegisterSkin( "models/players/human_base/upper_light.skin" );
-
+
cgs.media.jetpackModel = trap_R_RegisterModel( "models/players/human_base/jetpack.md3" );
cgs.media.jetpackFlashModel = trap_R_RegisterModel( "models/players/human_base/jetpack_flash.md3" );
cgs.media.battpackModel = trap_R_RegisterModel( "models/players/human_base/battpack.md3" );
-
+
cg.charModelFraction = 1.0f;
trap_UpdateScreen( );
-
+
//load all the clientinfos of clients already connected to the server
for( i = 0; i < MAX_CLIENTS; i++ )
{
@@ -1059,13 +1053,13 @@ char *CG_GetMenuBuffer( const char *filename )
static char buf[ MAX_MENUFILE ];
len = trap_FS_FOpenFile( filename, &f, FS_READ );
-
+
if( !f )
{
trap_Print( va( S_COLOR_RED "menu file not found: %s, using default\n", filename ) );
return NULL;
}
-
+
if( len >= MAX_MENUFILE )
{
trap_Print( va( S_COLOR_RED "menu file too large: %s is %i, max allowed is %i",
@@ -1088,10 +1082,10 @@ qboolean CG_Asset_Parse( int handle )
if( !trap_PC_ReadToken( handle, &token ) )
return qfalse;
-
+
if( Q_stricmp( token.string, "{" ) != 0 )
return qfalse;
-
+
while( 1 )
{
if( !trap_PC_ReadToken( handle, &token ) )
@@ -1104,10 +1098,10 @@ qboolean CG_Asset_Parse( int handle )
if( Q_stricmp( token.string, "font" ) == 0 )
{
int pointSize;
-
+
if( !PC_String_Parse( handle, &tempStr ) || !PC_Int_Parse( handle, &pointSize ) )
return qfalse;
-
+
cgDC.registerFont( tempStr, pointSize, &cgDC.Assets.textFont );
continue;
}
@@ -1116,10 +1110,10 @@ qboolean CG_Asset_Parse( int handle )
if( Q_stricmp( token.string, "smallFont" ) == 0 )
{
int pointSize;
-
+
if( !PC_String_Parse( handle, &tempStr ) || !PC_Int_Parse( handle, &pointSize ) )
return qfalse;
-
+
cgDC.registerFont( tempStr, pointSize, &cgDC.Assets.smallFont );
continue;
}
@@ -1128,7 +1122,7 @@ qboolean CG_Asset_Parse( int handle )
if( Q_stricmp( token.string, "bigfont" ) == 0 )
{
int pointSize;
-
+
if( !PC_String_Parse( handle, &tempStr ) || !PC_Int_Parse( handle, &pointSize ) )
return qfalse;
@@ -1171,7 +1165,7 @@ qboolean CG_Asset_Parse( int handle )
{
if( !PC_String_Parse( handle, &tempStr ) )
return qfalse;
-
+
cgDC.Assets.itemFocusSound = trap_S_RegisterSound( tempStr, qfalse );
continue;
}
@@ -1223,7 +1217,7 @@ qboolean CG_Asset_Parse( int handle )
{
if( !PC_Float_Parse( handle, &cgDC.Assets.shadowX ) )
return qfalse;
-
+
continue;
}
@@ -1244,7 +1238,7 @@ qboolean CG_Asset_Parse( int handle )
continue;
}
}
-
+
return qfalse; // bk001204 - why not?
}
@@ -1254,10 +1248,10 @@ void CG_ParseMenu( const char *menuFile )
int handle;
handle = trap_PC_LoadSource( menuFile );
-
+
if( !handle )
handle = trap_PC_LoadSource( "ui/testhud.menu" );
-
+
if( !handle )
return;
@@ -1284,7 +1278,7 @@ void CG_ParseMenu( const char *menuFile )
if( CG_Asset_Parse( handle ) )
continue;
else
- break;
+ break;
}
@@ -1294,7 +1288,7 @@ void CG_ParseMenu( const char *menuFile )
Menu_New( handle );
}
}
-
+
trap_PC_FreeSource( handle );
}
@@ -1310,14 +1304,14 @@ qboolean CG_Load_Menu( char **p )
while( 1 )
{
token = COM_ParseExt( p, qtrue );
-
+
if( Q_stricmp( token, "}" ) == 0 )
return qtrue;
if( !token || token[ 0 ] == 0 )
return qfalse;
- CG_ParseMenu( token );
+ CG_ParseMenu( token );
}
return qfalse;
}
@@ -1335,12 +1329,12 @@ void CG_LoadMenus( const char *menuFile )
start = trap_Milliseconds( );
len = trap_FS_FOpenFile( menuFile, &f, FS_READ );
-
+
if( !f )
{
trap_Error( va( S_COLOR_YELLOW "menu file not found: %s, using default\n", menuFile ) );
len = trap_FS_FOpenFile( "ui/hud.txt", &f, FS_READ );
-
+
if( !f )
trap_Error( va( S_COLOR_RED "default menu file not found: ui/hud.txt, unable to continue!\n", menuFile ) );
}
@@ -1356,7 +1350,7 @@ void CG_LoadMenus( const char *menuFile )
trap_FS_Read( buf, len, f );
buf[ len ] = 0;
trap_FS_FCloseFile( f );
-
+
COM_Compress( buf );
Menu_Reset( );
@@ -1366,7 +1360,7 @@ void CG_LoadMenus( const char *menuFile )
while( 1 )
{
token = COM_ParseExt( &p, qtrue );
-
+
if( !token || token[ 0 ] == 0 || token[ 0 ] == '}' )
break;
@@ -1396,7 +1390,7 @@ static qboolean CG_OwnerDrawHandleKey( int ownerDraw, int flags, float *special,
static int CG_FeederCount( float feederID )
{
int i, count = 0;
-
+
if( feederID == FEEDER_ALIENTEAM_LIST )
{
for( i = 0; i < cg.numScores; i++ )
@@ -1413,7 +1407,7 @@ static int CG_FeederCount( float feederID )
count++;
}
}
-
+
return count;
}
@@ -1424,16 +1418,16 @@ void CG_SetScoreSelection( void *p )
playerState_t *ps = &cg.snap->ps;
int i, alien, human;
int feeder;
-
+
alien = human = 0;
-
+
for( i = 0; i < cg.numScores; i++ )
{
if( cg.scores[ i ].team == PTE_ALIENS )
alien++;
else if( cg.scores[ i ].team == PTE_HUMANS )
human++;
-
+
if( ps->clientNum == cg.scores[ i ].client )
cg.selectedScore = i;
}
@@ -1444,13 +1438,13 @@ void CG_SetScoreSelection( void *p )
feeder = FEEDER_ALIENTEAM_LIST;
i = alien;
-
+
if( cg.scores[ cg.selectedScore ].team == PTE_HUMANS )
{
feeder = FEEDER_HUMANTEAM_LIST;
i = human;
}
-
+
Menu_SetFeederSelection(menu, feeder, i, NULL);
}
@@ -1459,7 +1453,7 @@ static clientInfo_t * CG_InfoFromScoreIndex( int index, int team, int *scoreInde
{
int i, count;
count = 0;
-
+
for( i = 0; i < cg.numScores; i++ )
{
if( cg.scores[ i ].team == team )
@@ -1472,7 +1466,7 @@ static clientInfo_t * CG_InfoFromScoreIndex( int index, int team, int *scoreInde
count++;
}
}
-
+
*scoreIndex = index;
return &cgs.clientinfo[ cg.scores[ index ].client ];
}
@@ -1501,7 +1495,7 @@ static const char *CG_FeederItemText( float feederID, int index, int column, qha
else if( cg.snap->ps.pm_type == PM_SPECTATOR || cg.snap->ps.pm_flags & PMF_FOLLOW ||
team == cg.snap->ps.stats[ STAT_PTEAM ] || cg.intermissionStarted )
showIcons = qtrue;
-
+
if( info && info->infoValid )
{
switch( column )
@@ -1513,7 +1507,7 @@ static const char *CG_FeederItemText( float feederID, int index, int column, qha
*handle = cg_weapons[ sp->weapon ].weaponIcon;
}
break;
-
+
case 1:
if( showIcons )
{
@@ -1529,36 +1523,36 @@ static const char *CG_FeederItemText( float feederID, int index, int column, qha
case WP_ALEVEL3_UPG:
*handle = cgs.media.upgradeClassIconShader;
break;
-
+
default:
break;
}
}
}
break;
-
+
case 2:
if( ( atoi( CG_ConfigString( CS_CLIENTS_READY ) ) & ( 1 << sp->client ) ) &&
cg.intermissionStarted )
return "Ready";
break;
-
+
case 3:
return info->name;
break;
-
+
case 4:
return va( "%d", info->score );
break;
-
+
case 5:
return va( "%4d", sp->time );
break;
-
+
case 6:
if( sp->ping == -1 )
return "connecting";
-
+
return va( "%4d", sp->ping );
break;
}
@@ -1577,7 +1571,7 @@ static void CG_FeederSelection( float feederID, int index )
int i, count;
int team = ( feederID == FEEDER_ALIENTEAM_LIST ) ? PTE_ALIENS : PTE_HUMANS;
count = 0;
-
+
for( i = 0; i < cg.numScores; i++ )
{
if( cg.scores[ i ].team == team )
@@ -1593,7 +1587,7 @@ static void CG_FeederSelection( float feederID, int index )
static float CG_Cvar_Get( const char *cvar )
{
char buff[ 128 ];
-
+
memset( buff, 0, sizeof( buff ) );
trap_Cvar_VariableStringBuffer( cvar, buff, sizeof( buff ) );
return atof( buff );
@@ -1605,7 +1599,7 @@ void CG_Text_PaintWithCursor( float x, float y, float scale, vec4_t color, const
CG_Text_Paint( x, y, scale, color, text, 0, limit, style );
}
-static int CG_OwnerDrawWidth( int ownerDraw, float scale )
+static int CG_OwnerDrawWidth( int ownerDraw, float scale )
{
switch( ownerDraw )
{
@@ -1613,7 +1607,7 @@ static int CG_OwnerDrawWidth( int ownerDraw, float scale )
return CG_Text_Width( CG_GetKillerText( ), scale, 0 );
break;
}
-
+
return 0;
}
@@ -1664,7 +1658,7 @@ void CG_LoadHudMenu( )
cgDC.registerModel = &trap_R_RegisterModel;
cgDC.modelBounds = &trap_R_ModelBounds;
cgDC.fillRect = &CG_FillRect;
- cgDC.drawRect = &CG_DrawRect;
+ cgDC.drawRect = &CG_DrawRect;
cgDC.drawSides = &CG_DrawSides;
cgDC.drawTopBottom = &CG_DrawTopBottom;
cgDC.clearScene = &trap_R_ClearScene;
@@ -1692,8 +1686,8 @@ void CG_LoadHudMenu( )
//cgDC.getBindingBuf = &trap_Key_GetBindingBuf;
//cgDC.keynumToStringBuf = &trap_Key_KeynumToStringBuf;
//cgDC.executeText = &trap_Cmd_ExecuteText;
- cgDC.Error = &Com_Error;
- cgDC.Print = &Com_Printf;
+ cgDC.Error = &Com_Error;
+ cgDC.Print = &Com_Printf;
cgDC.ownerDrawWidth = &CG_OwnerDrawWidth;
//cgDC.Pause = &CG_Pause;
cgDC.registerSound = &trap_S_RegisterSound;
@@ -1703,14 +1697,14 @@ void CG_LoadHudMenu( )
cgDC.stopCinematic = &CG_StopCinematic;
cgDC.drawCinematic = &CG_DrawCinematic;
cgDC.runCinematicFrame = &CG_RunCinematicFrame;
-
+
Init_Display( &cgDC );
Menu_Reset( );
-
+
trap_Cvar_VariableStringBuffer( "cg_hudFiles", buff, sizeof( buff ) );
hudSet = buff;
-
+
if( hudSet[ 0 ] == '\0' )
hudSet = "ui/hud.txt";
@@ -1720,14 +1714,6 @@ void CG_LoadHudMenu( )
void CG_AssetCache( void )
{
cgDC.Assets.gradientBar = trap_R_RegisterShaderNoMip( ASSET_GRADIENTBAR );
- cgDC.Assets.fxBasePic = trap_R_RegisterShaderNoMip( ART_FX_BASE );
- cgDC.Assets.fxPic[ 0 ] = trap_R_RegisterShaderNoMip( ART_FX_RED );
- cgDC.Assets.fxPic[ 1 ] = trap_R_RegisterShaderNoMip( ART_FX_YELLOW );
- cgDC.Assets.fxPic[ 2 ] = trap_R_RegisterShaderNoMip( ART_FX_GREEN );
- cgDC.Assets.fxPic[ 3 ] = trap_R_RegisterShaderNoMip( ART_FX_TEAL );
- cgDC.Assets.fxPic[ 4 ] = trap_R_RegisterShaderNoMip( ART_FX_BLUE );
- cgDC.Assets.fxPic[ 5 ] = trap_R_RegisterShaderNoMip( ART_FX_CYAN );
- cgDC.Assets.fxPic[ 6 ] = trap_R_RegisterShaderNoMip( ART_FX_WHITE );
cgDC.Assets.scrollBar = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR );
cgDC.Assets.scrollBarArrowDown = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWDOWN );
cgDC.Assets.scrollBarArrowUp = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWUP );
@@ -1767,11 +1753,11 @@ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum )
//inform UI to repress cursor whilst loading
trap_Cvar_Set( "ui_loading", "1" );
-
+
//TA: load overrides
BG_InitClassOverrides( );
BG_InitBuildableOverrides( );
-
+
//TA: dyn memory
CG_InitMemory( );
@@ -1800,7 +1786,7 @@ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum )
// check version
s = CG_ConfigString( CS_GAME_VERSION );
-
+
if( strcmp( s, GAME_VERSION ) )
CG_Error( "Client/Server game mismatch: %s/%s", GAME_VERSION, s );
@@ -1816,19 +1802,19 @@ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum )
CG_LoadParticleSystems( );
CG_UpdateMediaFraction( 0.05f );
-
+
CG_RegisterSounds( );
CG_UpdateMediaFraction( 0.60f );
CG_RegisterGraphics( );
CG_UpdateMediaFraction( 0.90f );
-
+
CG_InitWeapons( );
CG_UpdateMediaFraction( 0.95f );
-
+
CG_InitUpgrades( );
CG_UpdateMediaFraction( 1.0f );
-
+
//TA:
CG_InitBuildables( );
@@ -1853,7 +1839,7 @@ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum )
trap_S_ClearLoopingSounds( qtrue );
cg.consoleValid = qtrue;
-
+
trap_Cvar_Set( "ui_loading", "0" );
}
diff --git a/src/cgame/cg_marks.c b/src/cgame/cg_marks.c
index deb31c4d..b9c09009 100644
--- a/src/cgame/cg_marks.c
+++ b/src/cgame/cg_marks.c
@@ -14,7 +14,7 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
-
+
#include "cg_local.h"
/*
@@ -47,7 +47,7 @@ void CG_InitMarkPolys( void )
cg_activeMarkPolys.nextMark = &cg_activeMarkPolys;
cg_activeMarkPolys.prevMark = &cg_activeMarkPolys;
cg_freeMarkPolys = cg_markPolys;
-
+
for( i = 0; i < MAX_MARK_POLYS - 1; i++ )
cg_markPolys[ i ].nextMark = &cg_markPolys[ i + 1 ];
}
@@ -89,7 +89,7 @@ markPoly_t *CG_AllocMark( void )
// no free entities, so free the one at the end of the chain
// remove the oldest active entity
time = cg_activeMarkPolys.prevMark->time;
-
+
while( cg_activeMarkPolys.prevMark && time == cg_activeMarkPolys.prevMark->time )
CG_FreeMarkPoly( cg_activeMarkPolys.prevMark );
}
@@ -123,7 +123,7 @@ passed to the renderer.
#define MAX_MARK_FRAGMENTS 128
#define MAX_MARK_POINTS 384
-void CG_ImpactMark( qhandle_t markShader, const vec3_t origin, const vec3_t dir,
+void CG_ImpactMark( qhandle_t markShader, const vec3_t origin, const vec3_t dir,
float orientation, float red, float green, float blue, float alpha,
qboolean alphaFade, float radius, qboolean temporary )
{
@@ -216,7 +216,7 @@ void CG_ImpactMark( qhandle_t markShader, const vec3_t origin, const vec3_t dir,
mark->color[ 2 ] = blue;
mark->color[ 3 ] = alpha;
memcpy( mark->verts, verts, mf->numPoints * sizeof( verts[ 0 ] ) );
- markTotal++;
+ markTotal++;
}
}
diff --git a/src/cgame/cg_mem.c b/src/cgame/cg_mem.c
index d0cd29ec..959bd4b0 100644
--- a/src/cgame/cg_mem.c
+++ b/src/cgame/cg_mem.c
@@ -76,7 +76,7 @@ void *CG_Alloc( int size )
}
}
}
-
+
if( !ptr && smallest )
{
// We found a slot big enough
diff --git a/src/cgame/cg_particles.c b/src/cgame/cg_particles.c
index 9f9ef167..b6a52d90 100644
--- a/src/cgame/cg_particles.c
+++ b/src/cgame/cg_particles.c
@@ -91,7 +91,7 @@ static void CG_DestroyParticle( particle_t *p )
if( p->class->onDeathSystemName[ 0 ] != '\0' )
{
particleSystem_t *ps;
-
+
ps = CG_SpawnNewParticleSystem( p->class->childSystemHandle );
if( CG_IsParticleSystemValid( &ps ) )
@@ -101,7 +101,7 @@ static void CG_DestroyParticle( particle_t *p )
CG_AttachParticleSystemToOrigin( ps );
}
}
-
+
p->valid = qfalse;
}
@@ -124,7 +124,7 @@ static particle_t *CG_SpawnNewParticle( baseParticle_t *bp, particleEjector_t *p
for( i = 0; i < MAX_PARTICLES; i++ )
{
p = &particles[ i ];
-
+
if( !p->valid )
{
memset( p, 0, sizeof( particle_t ) );
@@ -135,49 +135,49 @@ static particle_t *CG_SpawnNewParticle( baseParticle_t *bp, particleEjector_t *p
p->birthTime = cg.time;
p->lifeTime = (int)CG_RandomiseValue( (float)bp->lifeTime, bp->lifeTimeRandFrac );
-
+
p->radius.delay = (int)CG_RandomiseValue( (float)bp->radius.delay, bp->radius.delayRandFrac );
p->radius.initial = CG_RandomiseValue( bp->radius.initial, bp->radius.initialRandFrac );
p->radius.final = CG_RandomiseValue( bp->radius.final, bp->radius.finalRandFrac );
-
+
p->alpha.delay = (int)CG_RandomiseValue( (float)bp->alpha.delay, bp->alpha.delayRandFrac );
p->alpha.initial = CG_RandomiseValue( bp->alpha.initial, bp->alpha.initialRandFrac );
p->alpha.final = CG_RandomiseValue( bp->alpha.final, bp->alpha.finalRandFrac );
-
+
p->rotation.delay = (int)CG_RandomiseValue( (float)bp->rotation.delay, bp->rotation.delayRandFrac );
p->rotation.initial = CG_RandomiseValue( bp->rotation.initial, bp->rotation.initialRandFrac );
p->rotation.final = CG_RandomiseValue( bp->rotation.final, bp->rotation.finalRandFrac );
-
+
switch( ps->attachType )
{
case PSA_STATIC:
if( !ps->attachment.staticValid )
return NULL;
-
+
VectorCopy( ps->attachment.origin, p->origin );
break;
case PSA_TAG:
if( !ps->attachment.tagValid )
return NULL;
-
+
AxisCopy( axisDefault, ps->attachment.re.axis );
CG_PositionRotatedEntityOnTag( &ps->attachment.re, &ps->attachment.parent,
ps->attachment.model, ps->attachment.tagName );
VectorCopy( ps->attachment.re.origin, p->origin );
break;
-
+
case PSA_CENT_ORIGIN:
if( !ps->attachment.centValid )
return NULL;
-
+
VectorCopy( cent->lerpOrigin, p->origin );
break;
-
+
case PSA_PARTICLE:
if( !ps->attachment.particleValid )
return NULL;
-
+
//find a particle which has ps as a child
for( j = 0; j < MAX_PARTICLES; j++ )
{
@@ -193,47 +193,47 @@ static particle_t *CG_SpawnNewParticle( baseParticle_t *bp, particleEjector_t *p
if( j == MAX_PARTICLES )
{
//didn't find the parent, so it's probably died already
-
+
//prevent further (expensive) attempts at particle creation
ps->attachment.particleValid = qfalse;
return NULL;
}
break;
}
-
+
VectorAdd( p->origin, bp->displacement, p->origin );
-
+
for( j = 0; j <= 2; j++ )
p->origin[ j ] += ( crandom( ) * bp->randDisplacement );
switch( bp->velMoveType )
{
case PMT_STATIC:
-
+
if( bp->velMoveValues.dirType == PMD_POINT )
VectorSubtract( bp->velMoveValues.point, p->origin, p->velocity );
else if( bp->velMoveValues.dirType == PMD_LINEAR )
VectorCopy( bp->velMoveValues.dir, p->velocity );
-
+
break;
case PMT_TAG:
-
+
if( !ps->attachment.tagValid )
return NULL;
-
+
if( bp->velMoveValues.dirType == PMD_POINT )
VectorSubtract( ps->attachment.re.origin, p->origin, p->velocity );
else if( bp->velMoveValues.dirType == PMD_LINEAR )
VectorCopy( ps->attachment.re.axis[ 0 ], p->velocity );
-
+
break;
case PMT_CENT_ANGLES:
-
+
if( !ps->attachment.centValid )
return NULL;
-
+
if( bp->velMoveValues.dirType == PMD_POINT )
VectorSubtract( cent->lerpOrigin, p->origin, p->velocity );
else if( bp->velMoveValues.dirType == PMD_LINEAR )
@@ -241,23 +241,23 @@ static particle_t *CG_SpawnNewParticle( baseParticle_t *bp, particleEjector_t *p
AngleVectors( cent->lerpAngles, forward, NULL, NULL );
VectorCopy( forward, p->velocity );
}
-
+
break;
-
+
case PMT_NORMAL:
-
+
if( !ps->attachment.normalValid )
return NULL;
-
+
VectorCopy( ps->attachment.normal, p->velocity );
//normal displacement
VectorNormalize( p->velocity );
VectorMA( p->origin, bp->normalDisplacement, p->velocity, p->origin );
-
+
break;
}
-
+
VectorNormalize( p->velocity );
CG_SpreadVector( p->velocity, bp->velMoveValues.dirRandAngle );
VectorScale( p->velocity,
@@ -270,16 +270,16 @@ static particle_t *CG_SpawnNewParticle( baseParticle_t *bp, particleEjector_t *p
CG_RandomiseValue( bp->velMoveValues.parentVelFrac, bp->velMoveValues.parentVelFracRandFrac ),
cent->currentState.pos.trDelta, p->velocity );
}
-
+
p->lastEvalTime = cg.time;
p->valid = qtrue;
-
+
//this particle has a child particle system attached
if( bp->childSystemName[ 0 ] != '\0' )
{
particleSystem_t *ps;
-
+
ps = CG_SpawnNewParticleSystem( bp->childSystemHandle );
if( CG_IsParticleSystemValid( &ps ) )
@@ -289,7 +289,7 @@ static particle_t *CG_SpawnNewParticle( baseParticle_t *bp, particleEjector_t *p
CG_AttachParticleSystemToParticle( ps );
}
}
-
+
break;
}
}
@@ -337,13 +337,13 @@ static void CG_SpawnNewParticles( void )
{
for( j = 0; j < bpe->numParticles; j++ )
CG_SpawnNewParticle( bpe->particles[ j ], pe );
-
+
if( pe->count > 0 )
pe->count--;
//calculate next ejection time
lerpFrac = 1.0 - ( (float)pe->count / (float)pe->totalParticles );
- pe->nextEjectionTime = cg.time + (int)CG_RandomiseValue(
+ pe->nextEjectionTime = cg.time + (int)CG_RandomiseValue(
CG_LerpValues( pe->ejectPeriod.initial,
pe->ejectPeriod.final,
lerpFrac ),
@@ -359,7 +359,7 @@ static void CG_SpawnNewParticles( void )
for( j = 0; j < MAX_PARTICLES; j++ )
{
p = &particles[ j ];
-
+
if( p->valid && p->parent == pe )
count++;
}
@@ -389,7 +389,7 @@ static particleEjector_t *CG_SpawnNewParticleEjector( baseParticleEjector_t *bpe
for( i = 0; i < MAX_PARTICLE_EJECTORS; i++ )
{
pe = &particleEjectors[ i ];
-
+
if( !pe->valid )
{
memset( pe, 0, sizeof( particleEjector_t ) );
@@ -408,10 +408,10 @@ static particleEjector_t *CG_SpawnNewParticleEjector( baseParticleEjector_t *bpe
(int)round( CG_RandomiseValue( (float)bpe->totalParticles, bpe->totalParticlesRandFrac ) );
pe->valid = qtrue;
-
+
if( cg_debugParticles.integer >= 1 )
CG_Printf( "PE %s created\n", ps->class->name );
-
+
break;
}
}
@@ -438,11 +438,11 @@ particleSystem_t *CG_SpawnNewParticleSystem( qhandle_t psHandle )
CG_Printf( S_COLOR_RED "ERROR: a particle system has not been registered yet\n" );
return NULL;
}
-
+
for( i = 0; i < MAX_PARTICLE_SYSTEMS; i++ )
{
ps = &particleSystems[ i ];
-
+
if( !ps->valid )
{
memset( ps, 0, sizeof( particleSystem_t ) );
@@ -452,7 +452,7 @@ particleSystem_t *CG_SpawnNewParticleSystem( qhandle_t psHandle )
ps->valid = qtrue;
ps->lazyRemove = qfalse;
-
+
for( j = 0; j < bps->numEjectors; j++ )
CG_SpawnNewParticleEjector( bps->ejectors[ j ], ps );
@@ -483,17 +483,17 @@ qhandle_t CG_RegisterParticleSystem( char *name )
for( i = 0; i < MAX_PARTICLE_SYSTEMS; i++ )
{
bps = &baseParticleSystems[ i ];
-
+
if( !strcmp( bps->name, name ) )
{
//already registered
if( bps->registered )
return i + 1;
-
+
for( j = 0; j < bps->numEjectors; j++ )
{
bpe = bps->ejectors[ j ];
-
+
for( l = 0; l < bpe->numParticles; l++ )
{
bp = bpe->particles[ l ];
@@ -508,7 +508,7 @@ qhandle_t CG_RegisterParticleSystem( char *name )
//the system deals with it
CG_RegisterParticleSystem( bp->childSystemName );
}
-
+
if( bp->onDeathSystemName[ 0 ] != '\0' )
{
//don't care about a handle for children since
@@ -520,7 +520,7 @@ qhandle_t CG_RegisterParticleSystem( char *name )
if( cg_debugParticles.integer >= 1 )
CG_Printf( "Registered particle system %s\n", name );
-
+
bps->registered = qtrue;
//avoid returning 0
@@ -599,7 +599,7 @@ static void CG_ParseValueAndVariance( char *token, float *value, float *variance
Q_strncpyz( varianceBuffer, token, sizeof( varianceBuffer ) );
variancePtr = strchr( valueBuffer, '~' );
-
+
//variance included
if( variancePtr )
{
@@ -607,7 +607,7 @@ static void CG_ParseValueAndVariance( char *token, float *value, float *variance
variancePtr++;
localValue = atof_neg( valueBuffer, allowNegative );
-
+
varEndPointer = strchr( variancePtr, '%' );
if( varEndPointer )
@@ -651,7 +651,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
while( 1 )
{
token = COM_Parse( text_p );
-
+
if( !token )
break;
@@ -667,7 +667,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
if( !Q_stricmp( token, "cull" ) )
{
bp->bounceCull = qtrue;
-
+
bp->bounceFrac = -1.0f;
bp->bounceFracRandFrac = 0.0f;
}
@@ -686,7 +686,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
if( !Q_stricmp( token, "sync" ) )
bp->framerate = 0.0f;
else
@@ -699,10 +699,10 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
Q_strncpyz( bp->shaderNames[ bp->numFrames++ ], token, MAX_QPATH );
token = COM_ParseExt( text_p, qfalse );
}
-
+
if( !token )
break;
-
+
continue;
}
///
@@ -711,7 +711,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
if( !Q_stricmp( token, "static" ) )
bp->velMoveType = PMT_STATIC;
else if( !Q_stricmp( token, "tag" ) )
@@ -728,7 +728,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
if( !Q_stricmp( token, "linear" ) )
bp->velMoveValues.dirType = PMD_LINEAR;
else if( !Q_stricmp( token, "point" ) )
@@ -741,7 +741,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
CG_ParseValueAndVariance( token, &number, &randFrac, qfalse );
bp->velMoveValues.mag = number;
@@ -754,7 +754,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
CG_ParseValueAndVariance( token, &number, &randFrac, qfalse );
bp->velMoveValues.parentVelFrac = number;
@@ -769,18 +769,18 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
bp->velMoveValues.dir[ i ] = atof_neg( token, qtrue );
}
-
+
token = COM_Parse( text_p );
if( !token )
break;
-
+
CG_ParseValueAndVariance( token, NULL, &randFrac, qfalse );
bp->velMoveValues.dirRandAngle = randFrac;
-
+
continue;
}
else if( !Q_stricmp( token, "velocityPoint" ) )
@@ -790,18 +790,18 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
bp->velMoveValues.point[ i ] = atof_neg( token, qtrue );
}
-
+
token = COM_Parse( text_p );
if( !token )
break;
-
+
CG_ParseValueAndVariance( token, NULL, &randFrac, qfalse );
bp->velMoveValues.pointRandAngle = randFrac;
-
+
continue;
}
///
@@ -810,7 +810,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
if( !Q_stricmp( token, "static" ) )
bp->accMoveType = PMT_STATIC;
else if( !Q_stricmp( token, "tag" ) )
@@ -827,7 +827,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
if( !Q_stricmp( token, "linear" ) )
bp->accMoveValues.dirType = PMD_LINEAR;
else if( !Q_stricmp( token, "point" ) )
@@ -840,7 +840,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
CG_ParseValueAndVariance( token, &number, &randFrac, qfalse );
bp->accMoveValues.mag = number;
@@ -855,18 +855,18 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
bp->accMoveValues.dir[ i ] = atof_neg( token, qtrue );
}
-
+
token = COM_Parse( text_p );
if( !token )
break;
-
+
CG_ParseValueAndVariance( token, NULL, &randFrac, qfalse );
bp->accMoveValues.dirRandAngle = randFrac;
-
+
continue;
}
else if( !Q_stricmp( token, "accelerationPoint" ) )
@@ -876,18 +876,18 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
bp->accMoveValues.point[ i ] = atof_neg( token, qtrue );
}
-
+
token = COM_Parse( text_p );
if( !token )
break;
-
+
CG_ParseValueAndVariance( token, NULL, &randFrac, qfalse );
bp->accMoveValues.pointRandAngle = randFrac;
-
+
continue;
}
///
@@ -898,10 +898,10 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
bp->displacement[ i ] = atof_neg( token, qtrue );
}
-
+
token = COM_Parse( text_p );
if( !token )
break;
@@ -917,7 +917,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
token = COM_Parse( text_p );
if( !token )
break;
-
+
bp->normalDisplacement = atof_neg( token, qtrue );
continue;
@@ -1077,7 +1077,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
break;
Q_strncpyz( bp->childSystemName, token, MAX_QPATH );
-
+
continue;
}
else if( !Q_stricmp( token, "onDeathSystem" ) )
@@ -1087,7 +1087,7 @@ static qboolean CG_ParseParticle( baseParticle_t *bp, char **text_p )
break;
Q_strncpyz( bp->onDeathSystemName, token, MAX_QPATH );
-
+
continue;
}
else if( !Q_stricmp( token, "}" ) )
@@ -1119,7 +1119,7 @@ static qboolean CG_ParseParticleEjector( baseParticleEjector_t *bpe, char **text
while( 1 )
{
token = COM_Parse( text_p );
-
+
if( !token )
break;
@@ -1173,7 +1173,7 @@ static qboolean CG_ParseParticleEjector( baseParticleEjector_t *bpe, char **text
break;
bpe->eject.initial = atoi_neg( token, qfalse );
-
+
token = COM_Parse( text_p );
if( !token )
break;
@@ -1182,7 +1182,7 @@ static qboolean CG_ParseParticleEjector( baseParticleEjector_t *bpe, char **text
bpe->eject.final = PARTICLES_SAME_AS_INITIAL;
else
bpe->eject.final = atoi_neg( token, qfalse );
-
+
token = COM_Parse( text_p );
if( !token )
break;
@@ -1243,7 +1243,7 @@ static qboolean CG_ParseParticleSystem( baseParticleSystem_t *bps, char **text_p
while( 1 )
{
token = COM_Parse( text_p );
-
+
if( !token )
break;
@@ -1259,7 +1259,7 @@ static qboolean CG_ParseParticleSystem( baseParticleSystem_t *bps, char **text_p
}
bpe = &baseParticleEjectors[ numBaseParticleEjectors ];
-
+
//check for infinite count + zero period
if( bpe->totalParticles == PARTICLES_INFINITE &&
( bpe->eject.initial == 0.0f || bpe->eject.final == 0.0f ) )
@@ -1293,7 +1293,7 @@ static qboolean CG_ParseParticleSystem( baseParticleSystem_t *bps, char **text_p
{
if( cg_debugParticles.integer >= 1 )
CG_Printf( "Parsed particle system %s\n", name );
-
+
return qtrue; //reached the end of this particle system
}
else
@@ -1334,7 +1334,7 @@ static qboolean CG_ParseParticleFile( const char *fileName )
CG_Printf( S_COLOR_RED "ERROR: particle file %s too long\n", fileName );
return qfalse;
}
-
+
trap_FS_Read( text, len, f );
text[ len ] = 0;
trap_FS_FCloseFile( f );
@@ -1346,7 +1346,7 @@ static qboolean CG_ParseParticleFile( const char *fileName )
while( 1 )
{
token = COM_Parse( &text_p );
-
+
if( !token )
break;
@@ -1366,9 +1366,9 @@ static qboolean CG_ParseParticleFile( const char *fileName )
return qfalse;
}
}
-
+
Q_strncpyz( baseParticleSystems[ numBaseParticleSystems ].name, psName, MAX_QPATH );
-
+
if( !CG_ParseParticleSystem( &baseParticleSystems[ numBaseParticleSystems ], &text_p, psName ) )
{
CG_Printf( S_COLOR_RED "ERROR: %s: failed to parse particle system %s\n", fileName, psName );
@@ -1377,7 +1377,7 @@ static qboolean CG_ParseParticleFile( const char *fileName )
//start parsing particle systems again
psNameSet = qfalse;
-
+
if( numBaseParticleSystems == MAX_BASEPARTICLE_SYSTEMS )
{
CG_Printf( S_COLOR_RED "ERROR: maximum number of particle systems (%d) reached\n", MAX_BASEPARTICLE_EJECTORS );
@@ -1385,7 +1385,7 @@ static qboolean CG_ParseParticleFile( const char *fileName )
}
else
numBaseParticleSystems++;
-
+
continue;
}
else
@@ -1433,25 +1433,25 @@ void CG_LoadParticleSystems( void )
baseParticleSystem_t *bps = &baseParticleSystems[ i ];
memset( bps, 0, sizeof( baseParticleSystem_t ) );
}
-
+
for( i = 0; i < MAX_BASEPARTICLE_EJECTORS; i++ )
{
baseParticleEjector_t *bpe = &baseParticleEjectors[ i ];
memset( bpe, 0, sizeof( baseParticleEjector_t ) );
}
-
+
for( i = 0; i < MAX_BASEPARTICLES; i++ )
{
baseParticle_t *bp = &baseParticles[ i ];
memset( bp, 0, sizeof( baseParticle_t ) );
}
-
+
//and bring in the new
for( i = 0; i < MAX_PARTICLE_FILES; i++ )
{
s[ i ] = CG_ConfigString( CS_PARTICLE_FILES + i );
-
+
if( strlen( s[ i ] ) > 0 )
{
CG_Printf( "...loading '%s'\n", s[ i ] );
@@ -1533,7 +1533,7 @@ void CG_AttachParticleSystemToCent( particleSystem_t *ps )
CG_Printf( S_COLOR_YELLOW "WARNING: tried to modify a NULL particle system\n" );
return;
}
-
+
ps->attachType = PSA_CENT_ORIGIN;
ps->attached = qtrue;
}
@@ -1552,7 +1552,7 @@ void CG_SetParticleSystemCent( particleSystem_t *ps, centity_t *cent )
CG_Printf( S_COLOR_YELLOW "WARNING: tried to modify a NULL particle system\n" );
return;
}
-
+
ps->attachment.centValid = qtrue;
ps->attachment.centNum = cent->currentState.number;
}
@@ -1571,7 +1571,7 @@ void CG_AttachParticleSystemToTag( particleSystem_t *ps )
CG_Printf( S_COLOR_YELLOW "WARNING: tried to modify a NULL particle system\n" );
return;
}
-
+
ps->attachType = PSA_TAG;
ps->attached = qtrue;
}
@@ -1591,7 +1591,7 @@ void CG_SetParticleSystemTag( particleSystem_t *ps, refEntity_t parent,
CG_Printf( S_COLOR_YELLOW "WARNING: tried to modify a NULL particle system\n" );
return;
}
-
+
ps->attachment.tagValid = qtrue;
ps->attachment.parent = parent;
ps->attachment.model = model;
@@ -1612,7 +1612,7 @@ void CG_AttachParticleSystemToOrigin( particleSystem_t *ps )
CG_Printf( S_COLOR_YELLOW "WARNING: tried to modify a NULL particle system\n" );
return;
}
-
+
ps->attachType = PSA_STATIC;
ps->attached = qtrue;
}
@@ -1631,7 +1631,7 @@ void CG_SetParticleSystemOrigin( particleSystem_t *ps, vec3_t origin )
CG_Printf( S_COLOR_YELLOW "WARNING: tried to modify a NULL particle system\n" );
return;
}
-
+
ps->attachment.staticValid = qtrue;
VectorCopy( origin, ps->attachment.origin );
}
@@ -1650,7 +1650,7 @@ void CG_AttachParticleSystemToParticle( particleSystem_t *ps )
CG_Printf( S_COLOR_YELLOW "WARNING: tried to modify a NULL particle system\n" );
return;
}
-
+
ps->attachType = PSA_PARTICLE;
ps->attached = qtrue;
}
@@ -1669,7 +1669,7 @@ void CG_SetParticleSystemParentParticle( particleSystem_t *ps, particle_t *p )
CG_Printf( S_COLOR_YELLOW "WARNING: tried to modify a NULL particle system\n" );
return;
}
-
+
ps->attachment.particleValid = qtrue;
p->childSystem = ps;
}
@@ -1688,7 +1688,7 @@ void CG_SetParticleSystemNormal( particleSystem_t *ps, vec3_t normal )
CG_Printf( S_COLOR_YELLOW "WARNING: tried to modify a NULL particle system\n" );
return;
}
-
+
ps->attachment.normalValid = qtrue;
VectorCopy( normal, ps->attachment.normal );
VectorNormalize( ps->attachment.normal );
@@ -1702,7 +1702,7 @@ CG_DestroyParticleSystem
Destroy a particle system
This doesn't actually invalidate anything, it just stops
-particle ejectors from producing new particles so the
+particle ejectors from producing new particles so the
garbage collector will eventually remove this system.
However is does set the pointer to NULL so the user is
unable to manipulate this particle system any longer.
@@ -1712,20 +1712,20 @@ void CG_DestroyParticleSystem( particleSystem_t **ps )
{
int i;
particleEjector_t *pe;
-
+
if( *ps == NULL || !(*ps)->valid )
{
CG_Printf( S_COLOR_YELLOW "WARNING: tried to destroy a NULL particle system\n" );
return;
}
-
+
if( cg_debugParticles.integer >= 1 )
CG_Printf( "PS destroyed\n" );
for( i = 0; i < MAX_PARTICLE_EJECTORS; i++ )
{
pe = &particleEjectors[ i ];
-
+
if( pe->valid && pe->parent == *ps )
pe->totalParticles = pe->count = 0;
}
@@ -1750,21 +1750,21 @@ qboolean CG_IsParticleSystemInfinite( particleSystem_t *ps )
CG_Printf( S_COLOR_YELLOW "WARNING: tried to test a NULL particle system\n" );
return qfalse;
}
-
+
if( !ps->valid )
{
CG_Printf( S_COLOR_YELLOW "WARNING: tried to test an invalid particle system\n" );
return qfalse;
}
-
+
//don't bother checking already invalid systems
if( !ps->valid )
return qfalse;
-
+
for( i = 0; i < MAX_PARTICLE_EJECTORS; i++ )
{
pe = &particleEjectors[ i ];
-
+
if( pe->valid && pe->parent == ps )
{
if( pe->totalParticles == PARTICLES_INFINITE )
@@ -1812,15 +1812,15 @@ static void CG_GarbageCollectParticleSystems( void )
{
ps = &particleSystems[ i ];
count = 0;
-
+
//don't bother checking already invalid systems
if( !ps->valid )
continue;
-
+
for( j = 0; j < MAX_PARTICLE_EJECTORS; j++ )
{
pe = &particleEjectors[ j ];
-
+
if( pe->valid && pe->parent == ps )
count++;
}
@@ -1830,7 +1830,7 @@ static void CG_GarbageCollectParticleSystems( void )
//check systems where the parent cent has left the PVS
//( local player entity is always valid )
- if( ps->attachment.centValid && ps->attachment.centNum != cg.clientNum )
+ if( ps->attachment.centValid && ps->attachment.centNum != cg.snap->ps.clientNum )
{
if( !cg_entities[ ps->attachment.centNum ].valid )
ps->lazyRemove = qtrue;
@@ -1879,37 +1879,37 @@ static void CG_EvaluateParticlePhysics( particle_t *p )
float deltaTime, bounce, radius, dot;
trace_t trace;
centity_t *cent;
-
+
switch( bp->accMoveType )
{
case PMT_STATIC:
-
+
if( bp->accMoveValues.dirType == PMD_POINT )
VectorSubtract( bp->accMoveValues.point, p->origin, acceleration );
else if( bp->accMoveValues.dirType == PMD_LINEAR )
VectorCopy( bp->accMoveValues.dir, acceleration );
-
+
break;
case PMT_TAG:
-
+
if( !ps->attachment.tagValid )
return;
-
+
if( bp->accMoveValues.dirType == PMD_POINT )
VectorSubtract( ps->attachment.re.origin, p->origin, acceleration );
else if( bp->accMoveValues.dirType == PMD_LINEAR )
VectorCopy( ps->attachment.re.axis[ 0 ], acceleration );
-
+
break;
case PMT_CENT_ANGLES:
-
+
if( !ps->attachment.centValid )
return;
-
+
cent = &cg_entities[ ps->attachment.centNum ];
-
+
if( bp->accMoveValues.dirType == PMD_POINT )
VectorSubtract( cent->lerpOrigin, p->origin, acceleration );
else if( bp->accMoveValues.dirType == PMD_LINEAR )
@@ -1917,21 +1917,21 @@ static void CG_EvaluateParticlePhysics( particle_t *p )
AngleVectors( cent->lerpAngles, forward, NULL, NULL );
VectorCopy( forward, acceleration );
}
-
+
break;
-
+
case PMT_NORMAL:
-
+
if( !ps->attachment.normalValid )
return;
-
+
VectorCopy( ps->attachment.normal, acceleration );
-
+
break;
}
#define MAX_ACC_RADIUS 1000.0f
-
+
if( bp->accMoveValues.dirType == PMD_POINT )
{
//FIXME: so this fall off is a bit... odd -- it works..
@@ -1942,9 +1942,9 @@ static void CG_EvaluateParticlePhysics( particle_t *p )
scale = 1.0f;
else if( scale < 0.1f )
scale = 0.1f;
-
+
scale *= CG_RandomiseValue( bp->accMoveValues.mag, bp->accMoveValues.magRandFrac );
-
+
VectorNormalize( acceleration );
CG_SpreadVector( acceleration, bp->accMoveValues.dirRandAngle );
VectorScale( acceleration, scale, acceleration );
@@ -1957,13 +1957,13 @@ static void CG_EvaluateParticlePhysics( particle_t *p )
CG_RandomiseValue( bp->accMoveValues.mag, bp->accMoveValues.magRandFrac ),
acceleration );
}
-
+
radius = CG_LerpValues( p->radius.initial,
p->radius.final,
CG_CalculateTimeFrac( p->birthTime,
p->lifeTime,
p->radius.delay ) );
-
+
VectorSet( mins, -radius, -radius, -radius );
VectorSet( maxs, radius, radius, radius );
@@ -1973,19 +1973,19 @@ static void CG_EvaluateParticlePhysics( particle_t *p )
VectorMA( p->velocity, deltaTime, acceleration, p->velocity );
VectorMA( p->origin, deltaTime, p->velocity, newOrigin );
p->lastEvalTime = cg.time;
-
+
if( !ps->attachment.centValid )
CG_Trace( &trace, p->origin, mins, maxs, newOrigin, -1, CONTENTS_SOLID );
else
CG_Trace( &trace, p->origin, mins, maxs, newOrigin, ps->attachment.centNum, CONTENTS_SOLID );
-
+
//not hit anything or not a collider
if( trace.fraction == 1.0f || bounce == 0.0f )
{
VectorCopy( newOrigin, p->origin );
return;
}
-
+
//remove particles that get into a CONTENTS_NODROP brush
if( ( trap_CM_PointContents( trace.endpos, 0 ) & CONTENTS_NODROP ) ||
( bp->cullOnStartSolid && trace.startsolid ) || bp->bounceCull )
@@ -2016,17 +2016,17 @@ static void CG_Radix( int bits, int size, particle_t *source, particle_t *dest )
int count[ 256 ];
int index[ 256 ];
int i;
-
+
memset( count, 0, sizeof( count ) );
-
+
for( i = 0; i < size; i++ )
count[ GETKEY( source[ i ].sortKey, bits ) ]++;
index[ 0 ] = 0;
-
+
for( i = 1; i < 256; i++ )
index[ i ] = index[ i - 1 ] + count[ i - 1 ];
-
+
for( i = 0; i < size; i++ )
dest[ index[ GETKEY( source[ i ].sortKey, bits ) ]++ ] = source[ i ];
}
@@ -2076,20 +2076,20 @@ static void CG_CompactAndSortParticles( void )
}
numParticles = i;
-
+
//set sort keys
for( i = 0; i < numParticles; i++ )
{
VectorSubtract( particles[ i ].origin, cg.refdef.vieworg, delta );
particles[ i ].sortKey = (int)DotProduct( delta, delta );
}
-
+
CG_RadixSort( particles, sortParticles, numParticles );
-
+
//reverse order of particles array
for( i = 0; i < numParticles; i++ )
sortParticles[ i ] = particles[ numParticles - i - 1 ];
-
+
for( i = 0; i < numParticles; i++ )
particles[ i ] = sortParticles[ i ];
}
@@ -2109,7 +2109,7 @@ static void CG_RenderParticle( particle_t *p )
baseParticle_t *bp = p->class;
vec3_t alight, dlight, lightdir;
int i;
-
+
memset( &re, 0, sizeof( refEntity_t ) );
for( i = 0; i <= 3; re.shaderRGBA[ i++ ] = 0xFF );
@@ -2119,19 +2119,19 @@ static void CG_RenderParticle( particle_t *p )
re.reType = RT_SPRITE;
re.shaderTime = p->birthTime / 1000.0f; //FIXME: allow user to change?
- re.shaderRGBA[ 3 ] = (byte)( (float)0xFF *
+ re.shaderRGBA[ 3 ] = (byte)( (float)0xFF *
CG_LerpValues( p->alpha.initial,
p->alpha.final,
CG_CalculateTimeFrac( p->birthTime,
p->lifeTime,
p->alpha.delay ) ) );
-
+
re.radius = CG_LerpValues( p->radius.initial,
p->radius.final,
CG_CalculateTimeFrac( p->birthTime,
p->lifeTime,
p->radius.delay ) );
-
+
re.rotation = CG_LerpValues( p->rotation.initial,
p->rotation.final,
CG_CalculateTimeFrac( p->birthTime,
@@ -2185,10 +2185,10 @@ void CG_AddParticles( void )
int i;
particle_t *p;
int numPS = 0, numPE = 0, numP = 0;
-
+
//remove expired particle systems
CG_GarbageCollectParticleSystems( );
-
+
//check each ejector and introduce any new particles
CG_SpawnNewParticles( );
@@ -2199,7 +2199,7 @@ void CG_AddParticles( void )
for( i = 0; i < MAX_PARTICLES; i++ )
{
p = &particles[ i ];
-
+
if( p->valid )
{
if( p->birthTime + p->lifeTime > cg.time )
@@ -2218,11 +2218,11 @@ void CG_AddParticles( void )
for( i = 0; i < MAX_PARTICLE_SYSTEMS; i++ )
if( particleSystems[ i ].valid )
numPS++;
-
+
for( i = 0; i < MAX_PARTICLE_EJECTORS; i++ )
if( particleEjectors[ i ].valid )
numPE++;
-
+
for( i = 0; i < MAX_PARTICLES; i++ )
if( particles[ i ].valid )
numP++;
@@ -2243,7 +2243,7 @@ void CG_ParticleSystemEntity( centity_t *cent )
entityState_t *es;
es = &cent->currentState;
-
+
if( es->eFlags & EF_NODRAW )
{
if( CG_IsParticleSystemValid( &cent->entityPS ) && CG_IsParticleSystemInfinite( cent->entityPS ) )
@@ -2251,7 +2251,7 @@ void CG_ParticleSystemEntity( centity_t *cent )
return;
}
-
+
if( !CG_IsParticleSystemValid( &cent->entityPS ) && !cent->entityPSMissing )
{
cent->entityPS = CG_SpawnNewParticleSystem( cgs.gameParticleSystems[ es->modelindex ] );
diff --git a/src/cgame/cg_players.c b/src/cgame/cg_players.c
index 280675ca..18a32efc 100644
--- a/src/cgame/cg_players.c
+++ b/src/cgame/cg_players.c
@@ -14,7 +14,7 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
-
+
#include "cg_local.h"
char *cg_customSoundNames[ MAX_CUSTOM_SOUNDS ] =
@@ -106,7 +106,7 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
CG_Printf( "File %s too long\n", filename );
return qfalse;
}
-
+
trap_FS_Read( text, len, f );
text[ len ] = 0;
trap_FS_FCloseFile( f );
@@ -127,7 +127,7 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
{
prev = text_p; // so we can unget
token = COM_Parse( &text_p );
-
+
if( !token )
break;
@@ -166,13 +166,13 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
ci->headOffset[ i ] = atof( token );
}
-
+
continue;
}
else if( !Q_stricmp( token, "sex" ) )
{
token = COM_Parse( &text_p );
-
+
if( !token )
break;
@@ -182,7 +182,7 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
ci->gender = GENDER_NEUTER;
else
ci->gender = GENDER_MALE;
-
+
continue;
}
else if( !Q_stricmp( token, "fixedlegs" ) )
@@ -207,7 +207,7 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
text_p = prev; // unget the token
break;
}
-
+
Com_Printf( "unknown token '%s' is %s\n", token, filename );
}
@@ -217,7 +217,7 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
for( i = 0; i < MAX_PLAYER_ANIMATIONS; i++ )
{
token = COM_Parse( &text_p );
-
+
if( !*token )
{
if( i >= TORSO_GETFLAG && i <= TORSO_NEGATIVE )
@@ -231,12 +231,12 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
animations[ i ].flipflop = qfalse;
continue;
}
-
+
break;
}
-
+
animations[ i ].firstFrame = atoi( token );
-
+
// leg only frames are adjusted to not count the upper body only frames
if( i == LEGS_WALKCR )
skip = animations[ LEGS_WALKCR ].firstFrame - animations[ TORSO_GESTURE ].firstFrame;
@@ -247,11 +247,11 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
token = COM_Parse( &text_p );
if( !*token )
break;
-
+
animations[ i ].numFrames = atoi( token );
animations[ i ].reversed = qfalse;
animations[ i ].flipflop = qfalse;
-
+
// if numFrames is negative the animation is reversed
if( animations[ i ].numFrames < 0 )
{
@@ -260,14 +260,14 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
}
token = COM_Parse( &text_p );
-
+
if( !*token )
break;
animations[ i ].loopFrames = atoi( token );
token = COM_Parse( &text_p );
-
+
if( !*token )
break;
@@ -318,20 +318,20 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
for( i = 0; i < MAX_NONSEG_PLAYER_ANIMATIONS; i++ )
{
token = COM_Parse( &text_p );
-
+
if( !*token )
break;
-
+
animations[ i ].firstFrame = atoi( token );
-
+
token = COM_Parse( &text_p );
if( !*token )
break;
-
+
animations[ i ].numFrames = atoi( token );
animations[ i ].reversed = qfalse;
animations[ i ].flipflop = qfalse;
-
+
// if numFrames is negative the animation is reversed
if( animations[ i ].numFrames < 0 )
{
@@ -340,14 +340,14 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
}
token = COM_Parse( &text_p );
-
+
if( !*token )
break;
animations[ i ].loopFrames = atoi( token );
token = COM_Parse( &text_p );
-
+
if( !*token )
break;
@@ -364,7 +364,7 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
CG_Printf( "Error parsing animation file: %s", filename );
return qfalse;
}
-
+
// walk backward animation
memcpy( &animations[ NSPA_WALKBACK ], &animations[ NSPA_WALK ], sizeof( animation_t ) );
animations[ NSPA_WALKBACK ].reversed = qtrue;
@@ -553,7 +553,7 @@ static void CG_LoadClientInfo( clientInfo_t *ci )
for( i = 0; i < MAX_CUSTOM_SOUNDS; i++ )
{
s = cg_customSoundNames[ i ];
-
+
if( !s )
break;
@@ -561,7 +561,7 @@ static void CG_LoadClientInfo( clientInfo_t *ci )
if( !CG_FileExists( va( "sound/player/%s/%s", dir, s + 1 ) ) )
{
//file doesn't exist
-
+
if( i == 11 || i == 8 ) //fall or falling
{
ci->sounds[ i ] = trap_S_RegisterSound( "sound/null.wav", qfalse );
@@ -572,7 +572,7 @@ static void CG_LoadClientInfo( clientInfo_t *ci )
s = cg_customSoundNames[ 7 ]; //pain100_1
else if( i == 10 ) //drown
s = cg_customSoundNames[ 0 ]; //death1
-
+
ci->sounds[ i ] = trap_S_RegisterSound( va( "sound/player/%s/%s", dir, s + 1 ), qfalse );
if( !ci->sounds[ i ] )
ci->sounds[ i ] = trap_S_RegisterSound( va( "sound/player/%s/%s", fallback, s + 1 ), qfalse );
@@ -658,10 +658,10 @@ static int CG_GetCorpseNum( pClass_t class )
for( i = PCL_NONE + 1; i < PCL_NUM_CLASSES; i++ )
{
match = &cgs.corpseinfo[ i ];
-
+
if( !match->infoValid )
continue;
-
+
if( !Q_stricmp( modelName, match->modelName )
&& !Q_stricmp( skinName, match->skinName ) )
{
@@ -688,7 +688,7 @@ static qboolean CG_ScanForExistingClientInfo( clientInfo_t *ci )
for( i = PCL_NONE + 1; i < PCL_NUM_CLASSES; i++ )
{
match = &cgs.corpseinfo[ i ];
-
+
if( !match->infoValid )
continue;
@@ -741,8 +741,8 @@ void CG_PrecacheClientInfo( pClass_t class, char *model, char *skin )
newInfo.infoValid = qtrue;
//TA: actually register the models
- CG_LoadClientInfo( &newInfo );
*ci = newInfo;
+ CG_LoadClientInfo( ci );
}
@@ -815,13 +815,13 @@ void CG_NewClientInfo( int clientNum )
v = Info_ValueForKey( configstring, "g_blueteam" );
Q_strncpyz( newInfo.blueTeam, v, MAX_TEAMNAME );
-
+
// model
v = Info_ValueForKey( configstring, "model" );
Q_strncpyz( newInfo.modelName, v, sizeof( newInfo.modelName ) );
slash = strchr( newInfo.modelName, '/' );
-
+
if( !slash )
{
// modelName didn not include a skin name
@@ -841,7 +841,7 @@ void CG_NewClientInfo( int clientNum )
Q_strncpyz( newInfo.headModelName, v, sizeof( newInfo.headModelName ) );
slash = strchr( newInfo.headModelName, '/' );
-
+
if( !slash )
{
// modelName didn not include a skin name
@@ -854,14 +854,14 @@ void CG_NewClientInfo( int clientNum )
*slash = 0;
}
- // scan for an existing clientinfo that matches this modelname
- // so we can avoid loading checks if possible
- if( !CG_ScanForExistingClientInfo( &newInfo ) )
- CG_LoadClientInfo( &newInfo );
-
// replace whatever was there with the new one
newInfo.infoValid = qtrue;
*ci = newInfo;
+
+ // scan for an existing clientinfo that matches this modelname
+ // so we can avoid loading checks if possible
+ if( !CG_ScanForExistingClientInfo( ci ) )
+ CG_LoadClientInfo( ci );
}
@@ -938,19 +938,19 @@ static void CG_RunLerpFrame( clientInfo_t *ci, lerpFrame_t *lf, int newAnimation
anim = lf->animation;
if( !anim->frameLerp )
return; // shouldn't happen
-
+
if( cg.time < lf->animationTime )
lf->frameTime = lf->animationTime; // initial lerp
else
lf->frameTime = lf->oldFrameTime + anim->frameLerp;
-
+
f = ( lf->frameTime - lf->animationTime ) / anim->frameLerp;
f *= speedScale; // adjust for haste, etc
numFrames = anim->numFrames;
-
+
if( anim->flipflop )
numFrames *= 2;
-
+
if( f >= numFrames )
{
f -= numFrames;
@@ -967,7 +967,7 @@ static void CG_RunLerpFrame( clientInfo_t *ci, lerpFrame_t *lf, int newAnimation
lf->frameTime = cg.time;
}
}
-
+
if( anim->reversed )
lf->frame = anim->firstFrame + anim->numFrames - 1 - f;
else if( anim->flipflop && f>=anim->numFrames )
@@ -978,7 +978,7 @@ static void CG_RunLerpFrame( clientInfo_t *ci, lerpFrame_t *lf, int newAnimation
if( cg.time > lf->frameTime )
{
lf->frameTime = cg.time;
-
+
if( cg_debugAnim.integer )
CG_Printf( "Clamp lf->frameTime\n" );
}
@@ -989,7 +989,7 @@ static void CG_RunLerpFrame( clientInfo_t *ci, lerpFrame_t *lf, int newAnimation
if( lf->oldFrameTime > cg.time )
lf->oldFrameTime = cg.time;
-
+
// calculate current lerp value
if( lf->frameTime == lf->oldFrameTime )
lf->backlerp = 0;
@@ -1108,7 +1108,7 @@ static void CG_SwingAngles( float destination, float swingTolerance, float clamp
{
// see if a swing should be started
swing = AngleSubtract( *angle, destination );
-
+
if( swing > swingTolerance || swing < -swingTolerance )
*swinging = qtrue;
}
@@ -1120,7 +1120,7 @@ static void CG_SwingAngles( float destination, float swingTolerance, float clamp
// so it doesn't seem so linear
swing = AngleSubtract( destination, *angle );
scale = fabs( swing );
-
+
if( scale < swingTolerance * 0.5 )
scale = 0.5;
else if( scale < swingTolerance )
@@ -1132,7 +1132,7 @@ static void CG_SwingAngles( float destination, float swingTolerance, float clamp
if( swing >= 0 )
{
move = cg.frametime * scale * speed;
-
+
if( move >= swing )
{
move = swing;
@@ -1143,7 +1143,7 @@ static void CG_SwingAngles( float destination, float swingTolerance, float clamp
else if( swing < 0 )
{
move = cg.frametime * scale * -speed;
-
+
if( move <= swing )
{
move = swing;
@@ -1171,7 +1171,7 @@ static void CG_AddPainTwitch( centity_t *cent, vec3_t torsoAngles )
float f;
t = cg.time - cent->pe.painTime;
-
+
if( t >= PAIN_TWITCH_TIME )
return;
@@ -1239,7 +1239,7 @@ static void CG_PlayerAngles( centity_t *cent, vec3_t srcAngles,
if( dir < 0 || dir > 7 )
CG_Error( "Bad player movement angle" );
}
-
+
legsAngles[ YAW ] = headAngles[ YAW ] + movementOffsets[ dir ];
torsoAngles[ YAW ] = headAngles[ YAW ] + 0.25 * movementOffsets[ dir ];
@@ -1258,7 +1258,7 @@ static void CG_PlayerAngles( centity_t *cent, vec3_t srcAngles,
CG_SwingAngles( legsAngles[ YAW ], 40, 90, cg_swingSpeed.value,
&cent->pe.legs.yawAngle, &cent->pe.legs.yawing );
}
-
+
torsoAngles[ YAW ] = cent->pe.torso.yawAngle;
legsAngles[ YAW ] = cent->pe.legs.yawAngle;
@@ -1275,7 +1275,7 @@ static void CG_PlayerAngles( centity_t *cent, vec3_t srcAngles,
//
clientNum = cent->currentState.clientNum;
-
+
if( clientNum >= 0 && clientNum < MAX_CLIENTS )
{
ci = &cgs.clientinfo[ clientNum ];
@@ -1289,7 +1289,7 @@ static void CG_PlayerAngles( centity_t *cent, vec3_t srcAngles,
// lean towards the direction of travel
VectorCopy( cent->currentState.pos.trDelta, velocity );
speed = VectorNormalize( velocity );
-
+
if( speed )
{
vec3_t axis[ 3 ];
@@ -1311,7 +1311,7 @@ static void CG_PlayerAngles( centity_t *cent, vec3_t srcAngles,
if( clientNum >= 0 && clientNum < MAX_CLIENTS )
{
ci = &cgs.clientinfo[ clientNum ];
-
+
if( ci->fixedlegs )
{
legsAngles[ YAW ] = torsoAngles[ YAW ];
@@ -1349,7 +1349,7 @@ static void CG_PlayerWWSmoothing( centity_t *cent, vec3_t in[ 3 ], vec3_t out[ 3
vec3_t ceilingNormal = { 0.0f, 0.0f, -1.0f };
float stLocal, sFraction, rotAngle;
vec3_t inAxis[ 3 ], lastAxis[ 3 ], outAxis[ 3 ];
-
+
//set surfNormal
if( !( es->eFlags & EF_WALLCLIMBCEILING ) )
VectorCopy( es->angles2, surfNormal );
@@ -1386,7 +1386,7 @@ static void CG_PlayerWWSmoothing( centity_t *cent, vec3_t in[ 3 ], vec3_t out[ 3
VectorNormalize( rotAxis );
}
-
+
//iterate through smooth array
for( i = 0; i < MAXSMOOTHS; i++ )
{
@@ -1401,7 +1401,7 @@ static void CG_PlayerWWSmoothing( centity_t *cent, vec3_t in[ 3 ], vec3_t out[ 3
}
}
}
-
+
//iterate through ops
for( i = MAXSMOOTHS - 1; i >= 0; i-- )
{
@@ -1461,7 +1461,7 @@ static void CG_PlayerNonSegAngles( centity_t *cent, vec3_t srcAngles, vec3_t non
cent->pe.nonseg.yawAngle = localAngles[ YAW ];
cent->pe.nonseg.yawing = qfalse;
}
-
+
// --------- yaw -------------
// allow yaw to drift a bit
@@ -1484,7 +1484,7 @@ static void CG_PlayerNonSegAngles( centity_t *cent, vec3_t srcAngles, vec3_t non
if( dir < 0 || dir > 7 )
CG_Error( "Bad player movement angle" );
}
-
+
// torso
if( cent->currentState.eFlags & EF_DEAD )
{
@@ -1496,21 +1496,21 @@ static void CG_PlayerNonSegAngles( centity_t *cent, vec3_t srcAngles, vec3_t non
CG_SwingAngles( localAngles[ YAW ], 40, 90, cg_swingSpeed.value,
&cent->pe.nonseg.yawAngle, &cent->pe.nonseg.yawing );
}
-
+
localAngles[ YAW ] = cent->pe.nonseg.yawAngle;
// --------- pitch -------------
//NO PITCH!
-
+
// --------- roll -------------
// lean towards the direction of travel
VectorCopy( cent->currentState.pos.trDelta, velocity );
speed = VectorNormalize( velocity );
-
+
if( speed )
{
vec3_t axis[ 3 ];
@@ -1559,7 +1559,7 @@ static void CG_PlayerUpgrades( centity_t *cent, refEntity_t *torso )
VectorCopy( torso->lightingOrigin, jetpack.lightingOrigin );
jetpack.shadowPlane = torso->shadowPlane;
jetpack.renderfx = torso->renderfx;
-
+
jetpack.hModel = cgs.media.jetpackModel;
//identity matrix
@@ -1569,7 +1569,7 @@ static void CG_PlayerUpgrades( centity_t *cent, refEntity_t *torso )
CG_PositionRotatedEntityOnTag( &jetpack, torso, torso->hModel, "tag_head" );
trap_R_AddRefEntityToScene( &jetpack );
-
+
if( active & ( 1 << UP_JETPACK ) )
{
if( es->pos.trDelta[ 2 ] > 10.0f )
@@ -1578,11 +1578,11 @@ static void CG_PlayerUpgrades( centity_t *cent, refEntity_t *torso )
{
if( CG_IsParticleSystemValid( &cent->jetPackPS ) )
CG_DestroyParticleSystem( &cent->jetPackPS );
-
+
cent->jetPackPS = CG_SpawnNewParticleSystem( cgs.media.jetPackAscendPS );
cent->jetPackState = JPS_ASCENDING;
}
-
+
trap_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin,
vec3_origin, cgs.media.jetpackAscendSound );
}
@@ -1592,11 +1592,11 @@ static void CG_PlayerUpgrades( centity_t *cent, refEntity_t *torso )
{
if( CG_IsParticleSystemValid( &cent->jetPackPS ) )
CG_DestroyParticleSystem( &cent->jetPackPS );
-
+
cent->jetPackPS = CG_SpawnNewParticleSystem( cgs.media.jetPackDescendPS );
cent->jetPackState = JPS_DESCENDING;
}
-
+
trap_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin,
vec3_origin, cgs.media.jetpackDescendSound );
}
@@ -1606,15 +1606,15 @@ static void CG_PlayerUpgrades( centity_t *cent, refEntity_t *torso )
{
if( CG_IsParticleSystemValid( &cent->jetPackPS ) )
CG_DestroyParticleSystem( &cent->jetPackPS );
-
+
cent->jetPackPS = CG_SpawnNewParticleSystem( cgs.media.jetPackHoverPS );
cent->jetPackState = JPS_HOVERING;
}
-
+
trap_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin,
vec3_origin, cgs.media.jetpackIdleSound );
}
-
+
memset( &flash, 0, sizeof( flash ) );
VectorCopy( torso->lightingOrigin, flash.lightingOrigin );
flash.shadowPlane = torso->shadowPlane;
@@ -1628,7 +1628,7 @@ static void CG_PlayerUpgrades( centity_t *cent, refEntity_t *torso )
CG_PositionRotatedEntityOnTag( &flash, &jetpack, jetpack.hModel, "tag_flash" );
trap_R_AddRefEntityToScene( &flash );
-
+
if( CG_IsParticleSystemValid( &cent->jetPackPS ) )
{
CG_SetParticleSystemTag( cent->jetPackPS, jetpack, jetpack.hModel, "tag_flash" );
@@ -1654,7 +1654,7 @@ static void CG_PlayerUpgrades( centity_t *cent, refEntity_t *torso )
VectorCopy( torso->lightingOrigin, battpack.lightingOrigin );
battpack.shadowPlane = torso->shadowPlane;
battpack.renderfx = torso->renderfx;
-
+
battpack.hModel = cgs.media.battpackModel;
//identity matrix
@@ -1665,13 +1665,13 @@ static void CG_PlayerUpgrades( centity_t *cent, refEntity_t *torso )
trap_R_AddRefEntityToScene( &battpack );
}
-
+
if( es->eFlags & EF_BLOBLOCKED )
{
vec3_t temp, origin, up = { 0.0f, 0.0f, 1.0f };
trace_t tr;
float size;
-
+
VectorCopy( es->pos.trBase, temp );
temp[ 2 ] -= 4096.0f;
@@ -1764,7 +1764,7 @@ static qboolean CG_PlayerShadow( centity_t *cent, float *shadowPlane, pClass_t c
BG_FindBBoxForClass( class, mins, maxs, NULL, NULL, NULL );
mins[ 2 ] = 0.0f;
maxs[ 2 ] = 2.0f;
-
+
if( es->eFlags & EF_WALLCLIMB )
{
if( es->eFlags & EF_WALLCLIMBCEILING )
@@ -1772,7 +1772,7 @@ static qboolean CG_PlayerShadow( centity_t *cent, float *shadowPlane, pClass_t c
else
VectorCopy( es->angles2, surfNormal );
}
-
+
*shadowPlane = 0;
if( cg_shadows.integer == 0 )
@@ -1836,7 +1836,7 @@ static void CG_PlayerSplash( centity_t *cent )
// if the feet aren't in liquid, don't make a mark
// this won't handle moving water brushes, but they wouldn't draw right anyway...
contents = trap_CM_PointContents( end, 0 );
-
+
if( !( contents & ( CONTENTS_WATER | CONTENTS_SLIME | CONTENTS_LAVA ) ) )
return;
@@ -1845,7 +1845,7 @@ static void CG_PlayerSplash( centity_t *cent )
// if the head isn't out of liquid, don't make a mark
contents = trap_CM_PointContents( start, 0 );
-
+
if( contents & ( CONTENTS_SOLID | CONTENTS_WATER | CONTENTS_SLIME | CONTENTS_LAVA ) )
return;
@@ -1918,7 +1918,7 @@ int CG_LightVerts( vec3_t normal, int numVerts, polyVert_t *verts )
for( i = 0; i < numVerts; i++ )
{
incoming = DotProduct( normal, lightDir );
-
+
if( incoming <= 0 )
{
verts[ i ].modulate[ 0 ] = ambientLight[ 0 ];
@@ -1926,24 +1926,24 @@ int CG_LightVerts( vec3_t normal, int numVerts, polyVert_t *verts )
verts[ i ].modulate[ 2 ] = ambientLight[ 2 ];
verts[ i ].modulate[ 3 ] = 255;
continue;
- }
-
+ }
+
j = ( ambientLight[ 0 ] + incoming * directedLight[ 0 ] );
-
+
if( j > 255 )
j = 255;
-
+
verts[ i ].modulate[ 0 ] = j;
j = ( ambientLight[ 1 ] + incoming * directedLight[ 1 ] );
-
+
if( j > 255 )
j = 255;
verts[ i ].modulate[ 1 ] = j;
j = ( ambientLight[ 2 ] + incoming * directedLight[ 2 ] );
-
+
if( j > 255 )
j = 255;
@@ -1972,7 +1972,7 @@ int CG_LightFromDirection( vec3_t point, vec3_t direction )
trap_R_LightForPoint( point, ambientLight, directedLight, lightDir );
incoming = DotProduct( direction, lightDir );
-
+
if( incoming <= 0 )
{
result[ 0 ] = ambientLight[ 0 ];
@@ -1980,23 +1980,23 @@ int CG_LightFromDirection( vec3_t point, vec3_t direction )
result[ 2 ] = ambientLight[ 2 ];
return (int)( (float)( result[ 0 ] + result[ 1 ] + result[ 2 ] ) / 3.0f );
}
-
+
j = ( ambientLight[ 0 ] + incoming * directedLight[ 0 ] );
-
+
if( j > 255 )
j = 255;
result[ 0 ] = j;
j = ( ambientLight[ 1 ] + incoming * directedLight[ 1 ] );
-
+
if( j > 255 )
j = 255;
result[ 1 ] = j;
j = ( ambientLight[ 2 ] + incoming * directedLight[ 2 ] );
-
+
if( j > 255 )
j = 255;
@@ -2036,7 +2036,7 @@ CG_Player
void CG_Player( centity_t *cent )
{
clientInfo_t *ci;
-
+
//TA: NOTE: legs is used for nonsegmented models
// this helps reduce code to be changed
refEntity_t legs;
@@ -2089,7 +2089,7 @@ void CG_Player( centity_t *cent )
BG_FindBBoxForClass( class, mins, maxs, NULL, NULL, NULL );
CG_DrawBoundingBox( cent->lerpOrigin, mins, maxs );
}
-
+
memset( &legs, 0, sizeof( legs ) );
memset( &torso, 0, sizeof( torso ) );
memset( &head, 0, sizeof( head ) );
@@ -2103,7 +2103,7 @@ void CG_Player( centity_t *cent )
AxisToAngles( tempAxis2, angles );
else
VectorCopy( cent->lerpAngles, angles );
-
+
//normalise the pitch
if( angles[ PITCH ] < -180.0f )
angles[ PITCH ] += 360.0f;
@@ -2115,7 +2115,7 @@ void CG_Player( centity_t *cent )
CG_PlayerNonSegAngles( cent, angles, legs.axis );
AxisCopy( legs.axis, tempAxis );
-
+
//rotate the legs axis to back to the wall
if( es->eFlags & EF_WALLCLIMB &&
BG_RotateAxis( es->angles2, legs.axis, tempAxis, qfalse, es->eFlags & EF_WALLCLIMBCEILING ) )
@@ -2184,7 +2184,7 @@ void CG_Player( centity_t *cent )
VectorSet( surfNormal, 0.0f, 0.0f, -1.0f );
else
VectorCopy( es->angles2, surfNormal );
-
+
BG_FindBBoxForClass( class, mins, maxs, NULL, NULL, NULL );
VectorMA( legs.origin, -TRACE_DEPTH, surfNormal, end );
@@ -2208,7 +2208,7 @@ void CG_Player( centity_t *cent )
VectorScale( legs.axis[ 0 ], scale, legs.axis[ 0 ] );
VectorScale( legs.axis[ 1 ], scale, legs.axis[ 1 ] );
VectorScale( legs.axis[ 2 ], scale, legs.axis[ 2 ] );
-
+
legs.nonNormalizedAxes = qtrue;
}
@@ -2216,7 +2216,7 @@ void CG_Player( centity_t *cent )
VectorMA( legs.origin, BG_FindZOffsetForClass( class ), surfNormal, legs.origin );
VectorCopy( legs.origin, legs.lightingOrigin );
VectorCopy( legs.origin, legs.oldorigin ); // don't positionally lerp at all
-
+
trap_R_AddRefEntityToScene( &legs );
// if the model failed, allow the default nullmodel to be displayed
@@ -2234,7 +2234,7 @@ void CG_Player( centity_t *cent )
torso.customSkin = cgs.media.larmourTorsoSkin;
else
torso.customSkin = ci->torsoSkin;
-
+
if( !torso.hModel )
return;
@@ -2256,7 +2256,7 @@ void CG_Player( centity_t *cent )
head.customSkin = cgs.media.larmourHeadSkin;
else
head.customSkin = ci->headSkin;
-
+
if( !head.hModel )
return;
@@ -2285,11 +2285,11 @@ void CG_Player( centity_t *cent )
{
if( CG_IsParticleSystemValid( &cent->muzzlePS ) )
CG_DestroyParticleSystem( &cent->muzzlePS );
-
+
if( CG_IsParticleSystemValid( &cent->jetPackPS ) )
CG_DestroyParticleSystem( &cent->jetPackPS );
}
-
+
VectorCopy( surfNormal, cent->pe.lastNormal );
}
@@ -2313,12 +2313,12 @@ void CG_Corpse( centity_t *cent )
float scale;
corpseNum = CG_GetCorpseNum( es->clientNum );
-
+
if( corpseNum < 0 || corpseNum >= MAX_CLIENTS )
CG_Error( "Bad corpseNum on corpse entity: %d", corpseNum );
ci = &cgs.corpseinfo[ corpseNum ];
-
+
// it is possible to see corpses from disconnected players that may
// not have valid clientinfo
if( !ci->infoValid )
@@ -2333,7 +2333,7 @@ void CG_Corpse( centity_t *cent )
origin[ 2 ] -= ( liveZ[ 2 ] - deadZ[ 2 ] );
VectorCopy( es->angles, cent->lerpAngles );
-
+
// get the rotation information
if( !ci->nonsegmented )
CG_PlayerAngles( cent, cent->lerpAngles, legs.axis, torso.axis, head.axis );
@@ -2407,10 +2407,10 @@ void CG_Corpse( centity_t *cent )
VectorScale( legs.axis[ 0 ], scale, legs.axis[ 0 ] );
VectorScale( legs.axis[ 1 ], scale, legs.axis[ 1 ] );
VectorScale( legs.axis[ 2 ], scale, legs.axis[ 2 ] );
-
+
legs.nonNormalizedAxes = qtrue;
}
-
+
//CG_AddRefEntityWithPowerups( &legs, es->powerups, ci->team );
trap_R_AddRefEntityToScene( &legs );
diff --git a/src/cgame/cg_playerstate.c b/src/cgame/cg_playerstate.c
index df568cdd..4837df9b 100644
--- a/src/cgame/cg_playerstate.c
+++ b/src/cgame/cg_playerstate.c
@@ -41,7 +41,7 @@ void CG_DamageFeedback( int yawByte, int pitchByte, int damage )
// the lower on health you are, the greater the view kick will be
health = cg.snap->ps.stats[STAT_HEALTH];
-
+
if( health < 40 )
scale = 1;
else
@@ -51,7 +51,7 @@ void CG_DamageFeedback( int yawByte, int pitchByte, int damage )
if( kick < 5 )
kick = 5;
-
+
if( kick > 10 )
kick = 10;
@@ -84,12 +84,12 @@ void CG_DamageFeedback( int yawByte, int pitchByte, int damage )
dir[ 1 ] = left;
dir[ 2 ] = 0;
dist = VectorLength( dir );
-
+
if( dist < 0.1f )
dist = 0.1f;
cg.v_dmg_roll = kick * left;
-
+
cg.v_dmg_pitch = -kick * front;
if( front <= 0.1 )
@@ -102,7 +102,7 @@ void CG_DamageFeedback( int yawByte, int pitchByte, int damage )
// clamp the position
if( cg.damageX > 1.0 )
cg.damageX = 1.0;
-
+
if( cg.damageX < - 1.0 )
cg.damageX = -1.0;
@@ -200,7 +200,7 @@ void CG_CheckChangedPredictableEvents( playerState_t *ps )
centity_t *cent;
cent = &cg.predictedPlayerEntity;
-
+
for( i = ps->eventSequence - MAX_PS_EVENTS; i < ps->eventSequence; i++ )
{
//
diff --git a/src/cgame/cg_predict.c b/src/cgame/cg_predict.c
index d66fd653..dc6c9dd5 100644
--- a/src/cgame/cg_predict.c
+++ b/src/cgame/cg_predict.c
@@ -129,7 +129,7 @@ static void CG_ClipMoveToEntities ( const vec3_t start, const vec3_t mins, const
if( i == cg_numSolidEntities )
BG_FindBBoxForClass( ( ent->powerups >> 8 ) & 0xFF, bmins, bmaxs, NULL, NULL, NULL );
-
+
cmodel = trap_CM_TempBoxModel( bmins, bmaxs );
VectorCopy( vec3_origin, angles );
VectorCopy( cent->lerpOrigin, origin );
@@ -154,7 +154,7 @@ static void CG_ClipMoveToEntities ( const vec3_t start, const vec3_t mins, const
}
else if( trace.startsolid )
tr->startsolid = qtrue;
-
+
if( tr->allsolid )
return;
}
@@ -165,7 +165,7 @@ static void CG_ClipMoveToEntities ( const vec3_t start, const vec3_t mins, const
CG_Trace
================
*/
-void CG_Trace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
+void CG_Trace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
int skipNumber, int mask )
{
trace_t t;
@@ -183,7 +183,7 @@ void CG_Trace( trace_t *result, const vec3_t start, const vec3_t mins, const ve
CG_CapTrace
================
*/
-void CG_CapTrace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
+void CG_CapTrace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
int skipNumber, int mask )
{
trace_t t;
@@ -224,7 +224,7 @@ int CG_PointContents( const vec3_t point, int passEntityNum )
continue;
cmodel = trap_CM_InlineModel( ent->modelindex );
-
+
if( !cmodel )
continue;
@@ -280,16 +280,16 @@ static void CG_InterpolatePlayerState( qboolean grabAngles )
i = next->ps.bobCycle;
if( i < prev->ps.bobCycle )
i += 256; // handle wraparound
-
+
out->bobCycle = prev->ps.bobCycle + f * ( i - prev->ps.bobCycle );
for( i = 0; i < 3; i++ )
{
out->origin[ i ] = prev->ps.origin[ i ] + f * ( next->ps.origin[ i ] - prev->ps.origin[ i ] );
-
+
if( !grabAngles )
out->viewangles[ i ] = LerpAngle( prev->ps.viewangles[ i ], next->ps.viewangles[ i ], f );
-
+
out->velocity[ i ] = prev->ps.velocity[ i ] +
f * (next->ps.velocity[ i ] - prev->ps.velocity[ i ] );
}
@@ -341,8 +341,6 @@ static void CG_TouchTriggerPrediction( void )
if( ent->eType == ET_TELEPORT_TRIGGER )
cg.hyperspace = qtrue;
- else if( ent->eType == ET_PUSH_TRIGGER )
- BG_TouchJumpPad( &cg.predictedPlayerState, ent );
}
// if we didn't touch a jump pad this pmove frame
@@ -425,7 +423,7 @@ void CG_PredictPlayerState( void )
cg_pmove.tracemask = MASK_PLAYERSOLID & ~CONTENTS_BODY;
else
cg_pmove.tracemask = MASK_PLAYERSOLID;
-
+
if( cg.snap->ps.persistant[ PERS_TEAM ] == TEAM_SPECTATOR )
cg_pmove.tracemask &= ~CONTENTS_BODY; // spectators can fly through bodies
@@ -441,13 +439,13 @@ void CG_PredictPlayerState( void )
// the last good position we had
cmdNum = current - CMD_BACKUP + 1;
trap_GetUserCmd( cmdNum, &oldestCmd );
-
+
if( oldestCmd.serverTime > cg.snap->ps.commandTime &&
oldestCmd.serverTime < cg.time )
{ // special check for map_restart
if( cg_showmiss.integer )
CG_Printf( "exceeded PACKET_BACKUP on commands\n" );
-
+
return;
}
@@ -479,7 +477,7 @@ void CG_PredictPlayerState( void )
// run cmds
moved = qfalse;
-
+
for( cmdNum = current - CMD_BACKUP + 1; cmdNum <= current; cmdNum++ )
{
// get the command
@@ -510,10 +508,10 @@ void CG_PredictPlayerState( void )
{
// a teleport will not cause an error decay
VectorClear( cg.predictedError );
-
+
if( cg_showmiss.integer )
CG_Printf( "PredictionTeleport\n" );
-
+
cg.thisFrameTeleport = qfalse;
}
else
@@ -527,10 +525,10 @@ void CG_PredictPlayerState( void )
if( !VectorCompare( oldPlayerState.origin, adjusted ) )
CG_Printf("prediction error\n");
}
-
+
VectorSubtract( oldPlayerState.origin, adjusted, delta );
len = VectorLength( delta );
-
+
if( len > 0.1 )
{
if( cg_showmiss.integer )
@@ -543,18 +541,18 @@ void CG_PredictPlayerState( void )
t = cg.time - cg.predictedErrorTime;
f = ( cg_errorDecay.value - t ) / cg_errorDecay.value;
-
+
if( f < 0 )
f = 0;
if( f > 0 && cg_showmiss.integer )
CG_Printf( "Double prediction decay: %f\n", f );
-
+
VectorScale( cg.predictedError, f, cg.predictedError );
}
else
VectorClear( cg.predictedError );
-
+
VectorAdd( delta, cg.predictedError, cg.predictedError );
cg.predictedErrorTime = cg.oldTime;
}
diff --git a/src/cgame/cg_ptr.c b/src/cgame/cg_ptr.c
index e0aaaf64..c31e5e40 100644
--- a/src/cgame/cg_ptr.c
+++ b/src/cgame/cg_ptr.c
@@ -38,7 +38,7 @@ int CG_ReadPTRCode( void )
// should never happen - malformed write
if( len >= sizeof( text ) - 1 )
return 0;
-
+
trap_FS_Read( text, len, f );
text[ len ] = 0;
trap_FS_FCloseFile( f );
@@ -59,13 +59,13 @@ void CG_WritePTRCode( int code )
fileHandle_t f;
Com_sprintf( text, 16, "%d", code );
-
+
// open file
if( trap_FS_FOpenFile( PTRC_FILE, &f, FS_WRITE ) < 0 )
return;
// write the code
trap_FS_Write( text, strlen( text ), f );
-
+
trap_FS_FCloseFile( f );
}
diff --git a/src/cgame/cg_public.h b/src/cgame/cg_public.h
index ecc948c1..39d1a402 100644
--- a/src/cgame/cg_public.h
+++ b/src/cgame/cg_public.h
@@ -14,7 +14,7 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
-#define CMD_BACKUP 64
+#define CMD_BACKUP 64
#define CMD_MASK (CMD_BACKUP - 1)
// allow a lot of command backups for very fast systems
// multiple commands may be combined into a single packet, so this
@@ -215,7 +215,7 @@ typedef enum
CG_LAST_ATTACKER,
// int (*CG_LastAttacker)( void );
- CG_KEY_EVENT,
+ CG_KEY_EVENT,
// void (*CG_KeyEvent)( int key, qboolean down );
CG_MOUSE_EVENT,
diff --git a/src/cgame/cg_scanner.c b/src/cgame/cg_scanner.c
index c0686865..6c2a9997 100644
--- a/src/cgame/cg_scanner.c
+++ b/src/cgame/cg_scanner.c
@@ -38,7 +38,7 @@ void CG_UpdateEntityPositions( void )
VectorCopy( cg.refdef.vieworg, entityPositions.origin );
VectorCopy( cg.refdefViewAngles, entityPositions.vangles );
entityPositions.lastUpdateTime = cg.time;
-
+
entityPositions.numAlienBuildables = 0;
entityPositions.numHumanBuildables = 0;
entityPositions.numAlienClients = 0;
@@ -47,7 +47,7 @@ void CG_UpdateEntityPositions( void )
for( i = 0; i < cg.snap->numEntities; i++ )
{
cent = &cg_entities[ cg.snap->entities[ i ].number ];
-
+
if( cent->currentState.eType == ET_BUILDABLE )
{
//TA: add to list of item positions (for creep)
@@ -57,7 +57,7 @@ void CG_UpdateEntityPositions( void )
entityPositions.numAlienBuildables ] );
entityPositions.alienBuildableTimes[
entityPositions.numAlienBuildables ] = cent->miscTime;
-
+
if( entityPositions.numAlienBuildables < MAX_GENTITIES )
entityPositions.numAlienBuildables++;
}
@@ -86,7 +86,7 @@ void CG_UpdateEntityPositions( void )
{
VectorCopy( cent->lerpOrigin, entityPositions.humanClientPos[
entityPositions.numHumanClients ] );
-
+
if( entityPositions.numHumanClients < MAX_CLIENTS )
entityPositions.numHumanClients++;
}
@@ -126,7 +126,7 @@ static void CG_DrawBlips( rectDef_t *rect, vec3_t origin, vec4_t colour )
alphaMod = FAR_ALPHA +
( ( drawOrigin[ 1 ] + ( rect->h / 2.0f ) ) / rect->h ) * ( NEAR_ALPHA - FAR_ALPHA );
-
+
localColour[ 3 ] *= alphaMod;
localColour[ 3 ] *= ( 0.5f + ( timeFractionSinceRefresh * 0.5f ) );
@@ -145,7 +145,7 @@ static void CG_DrawBlips( rectDef_t *rect, vec3_t origin, vec4_t colour )
CG_DrawPic( rect->x + ( rect->w / 2 ) - ( STALKWIDTH / 2 ) - drawOrigin[ 0 ],
rect->y + ( rect->h / 2 ) + drawOrigin[ 1 ],
STALKWIDTH, -drawOrigin[ 2 ], cgs.media.scannerLineShader );
-
+
CG_DrawPic( rect->x + ( rect->w / 2 ) - ( BLIPX / 2 ) - drawOrigin[ 0 ],
rect->y + ( rect->h / 2 ) - ( BLIPY / 2 ) + drawOrigin[ 1 ] - drawOrigin[ 2 ],
BLIPX, BLIPY, cgs.media.scannerBlipShader );
@@ -184,7 +184,7 @@ static void CG_DrawDir( rectDef_t *rect, vec3_t origin, vec4_t colour )
VectorSet( normal, 0.0f, 0.0f, 1.0f );
AngleVectors( entityPositions.vangles, view, NULL, NULL );
-
+
ProjectPointOnPlane( noZOrigin, origin, normal );
ProjectPointOnPlane( noZview, view, normal );
VectorNormalize( noZOrigin );
@@ -221,9 +221,9 @@ void CG_AlienSense( rectDef_t *rect )
vec3_t relOrigin;
vec4_t buildable = { 1.0f, 0.0f, 0.0f, 0.7f };
vec4_t client = { 0.0f, 0.0f, 1.0f, 0.7f };
-
+
VectorCopy( entityPositions.origin, origin );
-
+
//draw human buildables
for( i = 0; i < entityPositions.numHumanBuildables; i++ )
{
@@ -233,7 +233,7 @@ void CG_AlienSense( rectDef_t *rect )
if( VectorLength( relOrigin ) < ALIENSENSE_RANGE )
CG_DrawDir( rect, relOrigin, buildable );
}
-
+
//draw human clients
for( i = 0; i < entityPositions.numHumanClients; i++ )
{
@@ -259,13 +259,13 @@ void CG_Scanner( rectDef_t *rect, qhandle_t shader, vec4_t color )
vec4_t hIbelow;
vec4_t aIabove = { 1.0f, 0.0f, 0.0f, 0.75f };
vec4_t aIbelow = { 1.0f, 0.0f, 0.0f, 0.5f };
-
+
Vector4Copy( color, hIabove );
hIabove[ 3 ] *= 1.5f;
Vector4Copy( color, hIbelow );
-
+
VectorCopy( entityPositions.origin, origin );
-
+
//draw human buildables below scanner plane
for( i = 0; i < entityPositions.numHumanBuildables; i++ )
{
@@ -275,7 +275,7 @@ void CG_Scanner( rectDef_t *rect, qhandle_t shader, vec4_t color )
if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) )
CG_DrawBlips( rect, relOrigin, hIbelow );
}
-
+
//draw alien buildables below scanner plane
for( i = 0; i < entityPositions.numAlienBuildables; i++ )
{
@@ -285,7 +285,7 @@ void CG_Scanner( rectDef_t *rect, qhandle_t shader, vec4_t color )
if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) )
CG_DrawBlips( rect, relOrigin, aIbelow );
}
-
+
//draw human clients below scanner plane
for( i = 0; i < entityPositions.numHumanClients; i++ )
{
@@ -295,7 +295,7 @@ void CG_Scanner( rectDef_t *rect, qhandle_t shader, vec4_t color )
if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) )
CG_DrawBlips( rect, relOrigin, hIbelow );
}
-
+
//draw alien buildables below scanner plane
for( i = 0; i < entityPositions.numAlienClients; i++ )
{
@@ -305,14 +305,14 @@ void CG_Scanner( rectDef_t *rect, qhandle_t shader, vec4_t color )
if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) )
CG_DrawBlips( rect, relOrigin, aIbelow );
}
-
+
if( !cg_disableScannerPlane.integer )
{
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
trap_R_SetColor( NULL );
}
-
+
//draw human buildables above scanner plane
for( i = 0; i < entityPositions.numHumanBuildables; i++ )
{
@@ -332,7 +332,7 @@ void CG_Scanner( rectDef_t *rect, qhandle_t shader, vec4_t color )
if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] > 0 ) )
CG_DrawBlips( rect, relOrigin, aIabove );
}
-
+
//draw human clients above scanner plane
for( i = 0; i < entityPositions.numHumanClients; i++ )
{
diff --git a/src/cgame/cg_servercmds.c b/src/cgame/cg_servercmds.c
index 3f73fb75..e2391127 100644
--- a/src/cgame/cg_servercmds.c
+++ b/src/cgame/cg_servercmds.c
@@ -30,7 +30,7 @@ static void CG_ParseScores( void )
int i;
cg.numScores = atoi( CG_Argv( 1 ) );
-
+
if( cg.numScores > MAX_CLIENTS )
cg.numScores = MAX_CLIENTS;
@@ -38,7 +38,7 @@ static void CG_ParseScores( void )
cg.teamScores[ 1 ] = atoi( CG_Argv( 3 ) );
memset( cg.scores, 0, sizeof( cg.scores ) );
-
+
if( cg_debugRandom.integer )
CG_Printf( "cg.numScores: %d\n", cg.numScores );
@@ -54,12 +54,12 @@ static void CG_ParseScores( void )
if( cg.scores[ i ].client < 0 || cg.scores[ i ].client >= MAX_CLIENTS )
cg.scores[ i ].client = 0;
-
+
cgs.clientinfo[ cg.scores[ i ].client ].score = cg.scores[ i ].score;
cgs.clientinfo[ cg.scores[ i ].client ].powerups = 0;
cg.scores[ i ].team = cgs.clientinfo[ cg.scores[ i ].client ].team;
- }
+ }
}
/*
@@ -156,7 +156,7 @@ void CG_SetConfigValues( void )
sscanf( CG_ConfigString( CS_STAGES ), "%d %d %d %d %d %d", &cgs.alienStage, &cgs.humanStage,
&cgs.alienKills, &cgs.humanKills, &cgs.alienNextStageThreshold, &cgs.humanNextStageThreshold );
sscanf( CG_ConfigString( CS_SPAWNS ), "%d %d", &cgs.numAlienSpawns, &cgs.numHumanSpawns );
-
+
cgs.levelStartTime = atoi( CG_ConfigString( CS_LEVEL_START_TIME ) );
cg.warmup = atoi( CG_ConfigString( CS_WARMUP ) );
}
@@ -176,18 +176,18 @@ void CG_ShaderStateChanged( void )
char *n, *t;
o = CG_ConfigString( CS_SHADERSTATE );
-
+
while( o && *o )
{
n = strstr( o, "=" );
-
+
if( n && *n )
{
strncpy( originalShader, o, n - o );
originalShader[ n - o ] = 0;
n++;
t = strstr( n, ":" );
-
+
if( t && *t )
{
strncpy( newShader, n, t - n );
@@ -195,10 +195,10 @@ void CG_ShaderStateChanged( void )
}
else
break;
-
+
t++;
o = strstr( t, "@" );
-
+
if( o )
{
strncpy( timeOffset, t, o - t );
@@ -281,15 +281,15 @@ static void CG_ConfigStringModified( void )
{
stage_t oldAlienStage = cgs.alienStage;
stage_t oldHumanStage = cgs.humanStage;
-
+
sscanf( str, "%d %d %d %d %d %d",
&cgs.alienStage, &cgs.humanStage,
&cgs.alienKills, &cgs.humanKills,
&cgs.alienNextStageThreshold, &cgs.humanNextStageThreshold );
-
+
if( cgs.alienStage != oldAlienStage )
CG_AnnounceAlienStageTransistion( oldAlienStage, cgs.alienStage );
-
+
if( cgs.humanStage != oldHumanStage )
CG_AnnounceHumanStageTransistion( oldHumanStage, cgs.humanStage );
}
@@ -322,7 +322,7 @@ static void CG_ConfigStringModified( void )
else if( num >= CS_TEAMVOTE_TIME && num <= CS_TEAMVOTE_TIME + 1 )
{
int cs_offset = num - CS_TEAMVOTE_TIME;
-
+
cgs.teamVoteTime[ cs_offset ] = atoi( str );
cgs.teamVoteModified[ cs_offset ] = qtrue;
@@ -426,7 +426,7 @@ static void CG_AddToTeamChat( const char *str )
str++;
p -= ( p - ls );
}
-
+
*p = 0;
cgs.teamChatMsgTimes[ cgs.teamChatPos % chatHeight ] = cg.time;
@@ -447,10 +447,10 @@ static void CG_AddToTeamChat( const char *str )
*p++ = *str++;
continue;
}
-
+
if( *str == ' ' )
ls = p;
-
+
*p++ = *str++;
len++;
}
@@ -484,9 +484,9 @@ static void CG_MapRestart( void )
CG_InitLocalEntities( );
CG_InitMarkPolys( );
- // Ridah, trails
- CG_ClearTrails( );
- // done.
+ // Ridah, trails
+ CG_ClearTrails( );
+ // done.
// make sure the "3 frags left" warnings play again
cg.fraglimitWarnings = 0;
@@ -526,7 +526,7 @@ static void CG_RemoveChatEscapeChar( char *text )
{
if( text[ i ] == '\x19' )
continue;
-
+
text[ l++ ] = text[ i ];
}
@@ -546,7 +546,7 @@ static void CG_SetUIVars( void )
char carriageCvar[ MAX_TOKEN_CHARS ];
*carriageCvar = 0;
-
+
//determine what the player is carrying
for( i = WP_NONE + 1; i < WP_NUM_WEAPONS; i++ )
{
@@ -561,12 +561,12 @@ static void CG_SetUIVars( void )
strcat( carriageCvar, va( "U%d ", i ) );
}
strcat( carriageCvar, "$" );
-
+
trap_Cvar_Set( "ui_carriage", carriageCvar );
-
+
trap_Cvar_Set( "ui_stages", va( "%d %d", cgs.alienStage, cgs.humanStage ) );
}
-
+
/*
==============
@@ -585,7 +585,7 @@ void CG_Menu( int menu )
case MN_A_BUILD: trap_SendConsoleCommand( "menu tremulous_alienbuild\n" ); break;
case MN_H_BUILD: trap_SendConsoleCommand( "menu tremulous_humanbuild\n" ); break;
case MN_H_ARMOURY: trap_SendConsoleCommand( "menu tremulous_humanarmoury\n" ); break;
-
+
case MN_A_TEAMFULL:
trap_Cvar_Set( "ui_dialog", "The alien team has too many players. Please wait until "
"slots become available or join the human team." );
@@ -607,9 +607,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There is no room to build here\n" );
-
+
break;
-
+
case MN_H_NOPOWER:
if( !cg_disableWarningDialogs.integer )
{
@@ -619,9 +619,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There is no power remaining\n" );
-
+
break;
-
+
case MN_H_NOTPOWERED:
if( !cg_disableWarningDialogs.integer )
{
@@ -631,9 +631,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "This buildable is not powered\n" );
-
+
break;
-
+
case MN_H_NORMAL:
if( !cg_disableWarningDialogs.integer )
{
@@ -643,9 +643,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "Cannot build on this surface\n" );
-
+
break;
-
+
case MN_H_REACTOR:
if( !cg_disableWarningDialogs.integer )
{
@@ -655,9 +655,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There can only be one Reactor\n" );
-
+
break;
-
+
case MN_H_REPEATER:
if( !cg_disableWarningDialogs.integer )
{
@@ -667,9 +667,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There is no power here\n" );
-
+
break;
-
+
case MN_H_NODCC:
if( !cg_disableWarningDialogs.integer )
{
@@ -679,9 +679,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There is no Defense Computer\n" );
-
+
break;
-
+
case MN_H_TNODEWARN:
if( !cg_disableWarningDialogs.integer )
{
@@ -691,9 +691,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "This Telenode will not be powered\n" );
-
+
break;
-
+
case MN_H_RPTWARN:
if( !cg_disableWarningDialogs.integer )
{
@@ -703,9 +703,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "This Repeater will not be powered\n" );
-
+
break;
-
+
case MN_H_RPTWARN2:
if( !cg_disableWarningDialogs.integer )
{
@@ -714,9 +714,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "This area already has power\n" );
-
+
break;
-
+
case MN_H_NOSLOTS:
if( !cg_disableWarningDialogs.integer )
{
@@ -726,9 +726,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "You have no room to carry this\n" );
-
+
break;
-
+
case MN_H_NOFUNDS:
if( !cg_disableWarningDialogs.integer )
{
@@ -738,9 +738,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "Insufficient funds\n" );
-
+
break;
-
+
case MN_H_ITEMHELD:
if( !cg_disableWarningDialogs.integer )
{
@@ -750,13 +750,13 @@ void CG_Menu( int menu )
}
else
CG_Printf( "You already hold this item\n" );
-
+
break;
-
-
+
+
//===============================
-
+
case MN_A_NOROOM:
if( !cg_disableWarningDialogs.integer )
{
@@ -766,9 +766,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There is no room to build here\n" );
-
+
break;
-
+
case MN_A_NOCREEP:
if( !cg_disableWarningDialogs.integer )
{
@@ -778,9 +778,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There is no creep here\n" );
-
+
break;
-
+
case MN_A_NOOVMND:
if( !cg_disableWarningDialogs.integer )
{
@@ -790,9 +790,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There is no Overmind\n" );
-
+
break;
-
+
case MN_A_OVERMIND:
if( !cg_disableWarningDialogs.integer )
{
@@ -802,9 +802,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There can only be one Overmind\n" );
-
+
break;
-
+
case MN_A_NOASSERT:
if( !cg_disableWarningDialogs.integer )
{
@@ -814,9 +814,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "The Overmind cannot control any more structures\n" );
-
+
break;
-
+
case MN_A_SPWNWARN:
if( !cg_disableWarningDialogs.integer )
{
@@ -826,9 +826,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "This spawn will not be controlled by an Overmind\n" );
-
+
break;
-
+
case MN_A_NORMAL:
if( !cg_disableWarningDialogs.integer )
{
@@ -838,9 +838,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "Cannot build on this surface\n" );
-
+
break;
-
+
case MN_A_NOEROOM:
if( !cg_disableWarningDialogs.integer )
{
@@ -850,9 +850,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There is no room to evolve here\n" );
-
+
break;
-
+
case MN_A_TOOCLOSE:
if( !cg_disableWarningDialogs.integer )
{
@@ -863,9 +863,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "This location is too close to the enemy to evolve\n" );
-
+
break;
-
+
case MN_A_NOOVMND_EVOLVE:
if( !cg_disableWarningDialogs.integer )
{
@@ -875,9 +875,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "There is no Overmind\n" );
-
+
break;
-
+
case MN_A_HOVEL_OCCUPIED:
if( !cg_disableWarningDialogs.integer )
{
@@ -887,9 +887,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "This Hovel is occupied by another builder\n" );
-
+
break;
-
+
case MN_A_HOVEL_BLOCKED:
if( !cg_disableWarningDialogs.integer )
{
@@ -899,9 +899,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "The exit to this Hovel is currently blocked\n" );
-
+
break;
-
+
case MN_A_HOVEL_EXIT:
if( !cg_disableWarningDialogs.integer )
{
@@ -911,9 +911,9 @@ void CG_Menu( int menu )
}
else
CG_Printf( "The exit to this Hovel would always be blocked\n" );
-
+
break;
-
+
case MN_A_INFEST:
trap_Cvar_Set( "ui_currentClass", va( "%d %d", cg.snap->ps.stats[ STAT_PCLASS ],
cg.snap->ps.persistant[ PERS_CREDIT ] ) );
@@ -973,7 +973,7 @@ static void CG_ServerCommand( void )
CG_RemoveChatEscapeChar( text );
CG_Printf( "%s\n", text );
}
-
+
return;
}
@@ -986,7 +986,7 @@ static void CG_ServerCommand( void )
CG_Printf( "%s\n", text );
return;
}
-
+
if( !strcmp( cmd, "scores" ) )
{
CG_ParseScores( );
@@ -1024,7 +1024,7 @@ static void CG_ServerCommand( void )
{
if( trap_Argc( ) == 2 )
CG_TAUIConsole( CG_Argv( 1 ) );
-
+
return;
}
@@ -1033,10 +1033,10 @@ static void CG_ServerCommand( void )
{
if( trap_Argc( ) == 2 && !cg.demoPlayback )
CG_Menu( atoi( CG_Argv( 1 ) ) );
-
+
return;
}
-
+
//the server thinks this client should close all menus
if( !strcmp( cmd, "serverclosemenus" ) )
{
@@ -1066,7 +1066,7 @@ static void CG_ServerCommand( void )
return;
}
-
+
// server requests a ptrc
if( !strcmp( cmd, "ptrcrequest" ) )
{
@@ -1075,28 +1075,28 @@ static void CG_ServerCommand( void )
trap_SendClientCommand( va( "ptrcverify %d", code ) );
return;
}
-
+
// server issues a ptrc
if( !strcmp( cmd, "ptrcissue" ) )
{
if( trap_Argc( ) == 2 )
{
int code = atoi( CG_Argv( 1 ) );
-
+
CG_WritePTRCode( code );
}
-
+
return;
}
-
+
// reply to ptrcverify
if( !strcmp( cmd, "ptrcconfirm" ) )
{
trap_SendConsoleCommand( "menu ptrc_popmenu\n" );
-
+
return;
}
-
+
CG_Printf( "Unknown client game command: %s\n", cmd );
}
diff --git a/src/cgame/cg_snapshot.c b/src/cgame/cg_snapshot.c
index 0e8103fb..4a5722ae 100644
--- a/src/cgame/cg_snapshot.c
+++ b/src/cgame/cg_snapshot.c
@@ -34,7 +34,7 @@ static void CG_ResetEntity( centity_t *cent )
VectorCopy( cent->currentState.origin, cent->lerpOrigin );
VectorCopy( cent->currentState.angles, cent->lerpAngles );
-
+
if( cent->currentState.eType == ET_PLAYER )
CG_ResetPlayerEntity( cent );
}
@@ -68,7 +68,7 @@ static void CG_TransitionEntity( centity_t *cent )
CG_SetInitialSnapshot
This will only happen on the very first snapshot, or
-on tourney restarts. All other times will use
+on tourney restarts. All other times will use
CG_TransitionSnapshot instead.
FIXME: Also called by map_restart?
@@ -154,7 +154,7 @@ static void CG_TransitionSnapshot( void )
{
cent = &cg_entities[ cg.snap->entities[ i ].number ];
CG_TransitionEntity( cent );
-
+
// remember time of snapshot this entity was last updated in
cent->snapShotTime = cg.snap->serverTime;
}
@@ -253,7 +253,7 @@ static snapshot_t *CG_ReadNextSnapshot( void )
if( cg.latestSnapshotNum > cgs.processedSnapshotNum + 1000 )
{
- CG_Printf( "WARNING: CG_ReadNextSnapshot: way out of range, %i > %i",
+ CG_Printf( "WARNING: CG_ReadNextSnapshot: way out of range, %i > %i",
cg.latestSnapshotNum, cgs.processedSnapshotNum );
}
@@ -274,7 +274,7 @@ static snapshot_t *CG_ReadNextSnapshot( void )
{
//continue;
}
-
+
// if it succeeded, return
if( r )
{
@@ -325,7 +325,7 @@ void CG_ProcessSnapshots( void )
// see what the latest snapshot the client system has is
trap_GetCurrentSnapshotNumber( &n, &cg.latestSnapshotTime );
-
+
if( n != cg.latestSnapshotNum )
{
if( n < cg.latestSnapshotNum )
@@ -333,7 +333,7 @@ void CG_ProcessSnapshots( void )
// this should never happen
CG_Error( "CG_ProcessSnapshots: n < cg.latestSnapshotNum" );
}
-
+
cg.latestSnapshotNum = n;
}
@@ -343,7 +343,7 @@ void CG_ProcessSnapshots( void )
while( !cg.snap )
{
snap = CG_ReadNextSnapshot( );
-
+
if( !snap )
{
// we can't continue until we get a snapshot
@@ -395,7 +395,7 @@ void CG_ProcessSnapshots( void )
// this can happen right after a vid_restart
cg.time = cg.snap->serverTime;
}
-
+
if( cg.nextSnap != NULL && cg.nextSnap->serverTime <= cg.time )
CG_Error( "CG_ProcessSnapshots: cg.nextSnap->serverTime <= cg.time" );
}
diff --git a/src/cgame/cg_syscalls.c b/src/cgame/cg_syscalls.c
index b89751e2..f556035d 100644
--- a/src/cgame/cg_syscalls.c
+++ b/src/cgame/cg_syscalls.c
@@ -46,7 +46,7 @@ void trap_Error( const char *fmt )
int trap_Milliseconds( void )
{
- return syscall( CG_MILLISECONDS );
+ return syscall( CG_MILLISECONDS );
}
void trap_Cvar_Register( vmCvar_t *vmCvar, const char *varName, const char *defaultValue, int flags )
@@ -89,7 +89,7 @@ int trap_FS_FOpenFile( const char *qpath, fileHandle_t *f, fsMode_t mode )
return syscall( CG_FS_FOPENFILE, qpath, f, mode );
}
-void trap_FS_Read( void *buffer, int len, fileHandle_t f )
+void trap_FS_Read( void *buffer, int len, fileHandle_t f )
{
syscall( CG_FS_READ, buffer, len, f );
}
@@ -200,7 +200,7 @@ void trap_CM_TransformedCapsuleTrace( trace_t *results, const vec3_t start, con
syscall( CG_CM_TRANSFORMEDCAPSULETRACE, results, start, end, mins, maxs, model, brushmask, origin, angles );
}
-int trap_CM_MarkFragments( int numPoints, const vec3_t *points,
+int trap_CM_MarkFragments( int numPoints, const vec3_t *points,
const vec3_t projection,
int maxPoints, vec3_t pointBuffer,
int maxFragments, markFragment_t *fragmentBuffer )
@@ -274,7 +274,7 @@ qhandle_t trap_R_RegisterSkin( const char *name )
return syscall( CG_R_REGISTERSKIN, name );
}
-qhandle_t trap_R_RegisterShader( const char *name )
+qhandle_t trap_R_RegisterShader( const char *name )
{
return syscall( CG_R_REGISTERSHADER, name );
}
@@ -334,7 +334,7 @@ void trap_R_SetColor( const float *rgba )
syscall( CG_R_SETCOLOR, rgba );
}
-void trap_R_DrawStretchPic( float x, float y, float w, float h,
+void trap_R_DrawStretchPic( float x, float y, float w, float h,
float s1, float t1, float s2, float t2, qhandle_t hShader )
{
syscall( CG_R_DRAWSTRETCHPIC, PASSFLOAT(x), PASSFLOAT(y), PASSFLOAT(w), PASSFLOAT(h),
@@ -345,7 +345,7 @@ void trap_R_ModelBounds( clipHandle_t model, vec3_t mins, vec3_t maxs ) {
syscall( CG_R_MODELBOUNDS, model, mins, maxs );
}
-int trap_R_LerpTag( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame,
+int trap_R_LerpTag( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame,
float frac, const char *tagName )
{
return syscall( CG_R_LERPTAG, tag, mod, startFrame, endFrame, PASSFLOAT(frac), tagName );
@@ -476,7 +476,7 @@ int trap_CIN_PlayCinematic( const char *arg0, int xpos, int ypos, int width, int
{
return syscall(CG_CIN_PLAYCINEMATIC, arg0, xpos, ypos, width, height, bits);
}
-
+
// stops playing the cinematic and ends it. should always return FMV_EOF
// cinematics must be stopped in reverse order of when they are started
e_status trap_CIN_StopCinematic( int handle )
@@ -490,14 +490,14 @@ e_status trap_CIN_RunCinematic( int handle )
{
return syscall(CG_CIN_RUNCINEMATIC, handle);
}
-
+
// draws the current frame
void trap_CIN_DrawCinematic( int handle )
{
syscall(CG_CIN_DRAWCINEMATIC, handle);
}
-
+
// allows you to resize the animation dynamically
void trap_CIN_SetExtents( int handle, int x, int y, int w, int h )
diff --git a/src/cgame/cg_trails.c b/src/cgame/cg_trails.c
index 8839a757..30347e61 100644
--- a/src/cgame/cg_trails.c
+++ b/src/cgame/cg_trails.c
@@ -64,7 +64,7 @@ void CG_ClearTrails( void )
trailJuncs[ i ].inuse = qfalse;
}
-
+
trailJuncs[ MAX_TRAILJUNCS - 1 ].nextGlobal = NULL;
initTrails = qtrue;
@@ -89,15 +89,15 @@ trailJunc_t *CG_SpawnTrailJunc( trailJunc_t *headJunc )
// select the first free trail, and remove it from the list
j = freeTrails;
freeTrails = j->nextGlobal;
-
+
if( freeTrails )
freeTrails->prevGlobal = NULL;
j->nextGlobal = activeTrails;
-
+
if( activeTrails )
activeTrails->prevGlobal = j;
-
+
activeTrails = j;
j->prevGlobal = NULL;
j->inuse = qtrue;
@@ -110,7 +110,7 @@ trailJunc_t *CG_SpawnTrailJunc( trailJunc_t *headJunc )
if( headJunc == headTrails )
{
headTrails = headJunc->nextHead;
-
+
if( headTrails )
headTrails->prevHead = NULL;
}
@@ -118,18 +118,18 @@ trailJunc_t *CG_SpawnTrailJunc( trailJunc_t *headJunc )
{
if( headJunc->nextHead )
headJunc->nextHead->prevHead = headJunc->prevHead;
-
+
if( headJunc->prevHead )
headJunc->prevHead->nextHead = headJunc->nextHead;
}
headJunc->prevHead = NULL;
headJunc->nextHead = NULL;
}
-
+
// make us the headTrail
if( headTrails )
headTrails->prevHead = j;
-
+
j->nextHead = headTrails;
j->prevHead = NULL;
headTrails = j;
@@ -172,7 +172,7 @@ int CG_AddTrailJunc( int headJuncIndex, qhandle_t shader, int spawnTime, int sTy
headJunc = NULL;
j = CG_SpawnTrailJunc( headJunc );
-
+
if( !j )
{
// CG_Printf("couldnt spawn trail junc\n");
@@ -181,13 +181,13 @@ int CG_AddTrailJunc( int headJuncIndex, qhandle_t shader, int spawnTime, int sTy
if( alphaStart > 1.0 )
alphaStart = 1.0;
-
+
if( alphaStart < 0.0 )
alphaStart = 0.0;
-
+
if( alphaEnd > 1.0 )
alphaEnd = 1.0;
-
+
if( alphaEnd < 0.0 )
alphaEnd = 0.0;
@@ -247,7 +247,7 @@ int CG_AddSparkJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailL
headJunc = NULL;
j = CG_SpawnTrailJunc( headJunc );
-
+
if( !j )
return 0;
@@ -300,7 +300,7 @@ int CG_AddSmokeJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailL
headJunc = NULL;
j = CG_SpawnTrailJunc( headJunc );
-
+
if( !j )
return 0;
@@ -353,33 +353,33 @@ void CG_FreeTrailJunc( trailJunc_t *junc )
// make it non-active
junc->inuse = qfalse;
junc->freed = qtrue;
-
+
if( junc->nextGlobal )
junc->nextGlobal->prevGlobal = junc->prevGlobal;
-
+
if( junc->prevGlobal )
junc->prevGlobal->nextGlobal = junc->nextGlobal;
-
+
if( junc == activeTrails )
activeTrails = junc->nextGlobal;
// if it's a head, remove it
if( junc == headTrails )
headTrails = junc->nextHead;
-
+
if( junc->nextHead )
junc->nextHead->prevHead = junc->prevHead;
-
+
if( junc->prevHead )
junc->prevHead->nextHead = junc->nextHead;
-
+
junc->nextHead = NULL;
junc->prevHead = NULL;
// stick it in the free list
junc->prevGlobal = NULL;
junc->nextGlobal = freeTrails;
-
+
if( freeTrails )
freeTrails->prevGlobal = junc;
@@ -428,7 +428,7 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
float sInc = 0.0f, s = 0.0f; // TTimo: init
trailJunc_t *j, *jNext;
vec3_t fwd, up, p, v;
-
+
// clipping vars
#define TRAIL_FADE_CLOSE_DIST 64.0
#define TRAIL_FADE_FAR_SCALE 4.0
@@ -440,48 +440,48 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
{
j = trail;
VectorCopy( j->pos, p );
- VectorMA( p, -j->width * 2, vup, p );
- VectorMA( p, -j->width * 2, vright, p );
+ VectorMA( p, -j->width * 2, vup, p );
+ VectorMA( p, -j->width * 2, vright, p );
VectorCopy( p, verts[ 0 ].xyz );
- verts[ 0 ].st[ 0 ] = 0;
- verts[ 0 ].st[ 1 ] = 0;
- verts[ 0 ].modulate[ 0 ] = 255;
- verts[ 0 ].modulate[ 1 ] = 255;
- verts[ 0 ].modulate[ 2 ] = 255;
+ verts[ 0 ].st[ 0 ] = 0;
+ verts[ 0 ].st[ 1 ] = 0;
+ verts[ 0 ].modulate[ 0 ] = 255;
+ verts[ 0 ].modulate[ 1 ] = 255;
+ verts[ 0 ].modulate[ 2 ] = 255;
verts[ 0 ].modulate[ 3 ] = (unsigned char)( j->alpha * 255.0 );
VectorCopy( j->pos, p );
- VectorMA( p, -j->width * 2, vup, p );
- VectorMA( p, j->width * 2, vright, p );
- VectorCopy( p, verts[ 1 ].xyz );
- verts[ 1 ].st[ 0 ] = 0;
- verts[ 1 ].st[ 1 ] = 1;
- verts[ 1 ].modulate[ 0 ] = 255;
- verts[ 1 ].modulate[ 1 ] = 255;
- verts[ 1 ].modulate[ 2 ] = 255;
- verts[ 1 ].modulate[ 3 ] = (unsigned char)( j->alpha * 255.0 );
+ VectorMA( p, -j->width * 2, vup, p );
+ VectorMA( p, j->width * 2, vright, p );
+ VectorCopy( p, verts[ 1 ].xyz );
+ verts[ 1 ].st[ 0 ] = 0;
+ verts[ 1 ].st[ 1 ] = 1;
+ verts[ 1 ].modulate[ 0 ] = 255;
+ verts[ 1 ].modulate[ 1 ] = 255;
+ verts[ 1 ].modulate[ 2 ] = 255;
+ verts[ 1 ].modulate[ 3 ] = (unsigned char)( j->alpha * 255.0 );
VectorCopy( j->pos, p );
- VectorMA( p, j->width * 2, vup, p );
- VectorMA( p, j->width * 2, vright, p );
- VectorCopy( p, verts[ 2 ].xyz );
- verts[ 2 ].st[ 0 ] = 1;
- verts[ 2 ].st[ 1 ] = 1;
- verts[ 2 ].modulate[ 0 ] = 255;
- verts[ 2 ].modulate[ 1 ] = 255;
- verts[ 2 ].modulate[ 2 ] = 255;
- verts[ 2 ].modulate[ 3 ] = (unsigned char)( j->alpha * 255.0 );
+ VectorMA( p, j->width * 2, vup, p );
+ VectorMA( p, j->width * 2, vright, p );
+ VectorCopy( p, verts[ 2 ].xyz );
+ verts[ 2 ].st[ 0 ] = 1;
+ verts[ 2 ].st[ 1 ] = 1;
+ verts[ 2 ].modulate[ 0 ] = 255;
+ verts[ 2 ].modulate[ 1 ] = 255;
+ verts[ 2 ].modulate[ 2 ] = 255;
+ verts[ 2 ].modulate[ 3 ] = (unsigned char)( j->alpha * 255.0 );
VectorCopy( j->pos, p );
- VectorMA( p, j->width * 2, vup, p );
- VectorMA( p, -j->width * 2, vright, p );
- VectorCopy( p, verts[ 3 ].xyz );
- verts[ 3 ].st[ 0 ] = 1;
- verts[ 3 ].st[ 1 ] = 0;
- verts[ 3 ].modulate[ 0 ] = 255;
- verts[ 3 ].modulate[ 1 ] = 255;
- verts[ 3 ].modulate[ 2 ] = 255;
- verts[ 3 ].modulate[ 3 ] = (unsigned char)( j->alpha * 255.0 );
+ VectorMA( p, j->width * 2, vup, p );
+ VectorMA( p, -j->width * 2, vright, p );
+ VectorCopy( p, verts[ 3 ].xyz );
+ verts[ 3 ].st[ 0 ] = 1;
+ verts[ 3 ].st[ 1 ] = 0;
+ verts[ 3 ].modulate[ 0 ] = 255;
+ verts[ 3 ].modulate[ 1 ] = 255;
+ verts[ 3 ].modulate[ 2 ] = 255;
+ verts[ 3 ].modulate[ 3 ] = (unsigned char)( j->alpha * 255.0 );
trap_R_AddPolyToScene( cgs.media.sparkFlareShader, 4, verts );
}
@@ -496,7 +496,7 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
j = trail;
numJuncs = 0;
sInc = 0;
-
+
while( j )
{
numJuncs++;
@@ -552,7 +552,7 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
VectorMA( up, 0.3, v, up );
else
VectorMA( up, -0.3, v, up );
-
+
VectorNormalize( up );
}
}
@@ -561,7 +561,7 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
{
ProjectPointOntoVector( cg.refdef.vieworg, j->pos, jNext->pos, viewProj );
viewDist = Distance( viewProj, cg.refdef.vieworg );
-
+
if( viewDist < ( TRAIL_FADE_CLOSE_DIST * TRAIL_FADE_FAR_SCALE ) )
{
if( viewDist < TRAIL_FADE_CLOSE_DIST )
@@ -584,10 +584,10 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
VectorCopy( p, verts[ i ].xyz );
verts[ i ].st[ 0 ] = s;
verts[ i ].st[ 1 ] = 1.0;
-
+
for( k = 0; k < 3; k++ )
verts[ i ].modulate[ k ] = (unsigned char)( j->color[ k ] * 255.0 );
-
+
verts[ i ].modulate[ 3 ] = (unsigned char)( j->alpha * 255.0 );
// blend this with the previous junc
@@ -607,10 +607,10 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
VectorCopy( p, verts[ i ].xyz );
verts[ i ].st[ 0 ] = s;
verts[ i ].st[ 1 ] = 0.0;
-
+
for( k = 0; k < 3; k++ )
verts[ i ].modulate[ k ] = (unsigned char)( j->color[ k ] * 255.0 );
-
+
verts[ i ].modulate[ 3 ] = (unsigned char)( j->alpha * 255.0 );
// blend this with the previous junc
@@ -640,10 +640,10 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
VectorCopy( p, verts[ i ].xyz );
verts[ i ].st[ 0 ] = s;
verts[ i ].st[ 1 ] = 0.0;
-
+
for( k = 0; k < 3; k++ )
verts[ i ].modulate[ k ] = (unsigned char)( jNext->color[ k ] * 255.0 );
-
+
verts[ i ].modulate[ 3 ] = (unsigned char)( jNext->alpha * 255.0 );
i++;
@@ -652,10 +652,10 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
VectorCopy( p, verts[ i ].xyz );
verts[ i ].st[ 0 ] = s;
verts[ i ].st[ 1 ] = 1.0;
-
+
for( k = 0; k < 3; k++ )
verts[ i ].modulate[ k ] = (unsigned char)( jNext->color[ k ] * 255.0 );
-
+
verts[ i ].modulate[ 3 ] = (unsigned char)( jNext->alpha * 255.0 );
i++;
@@ -675,24 +675,24 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
VectorCopy( verts[ k ].xyz, mid.xyz );
mid.st[ 0 ] = verts[ k ].st[ 0 ];
mid.st[ 1 ] = verts[ k ].st[ 1 ];
-
+
for( l = 0; l < 4; l++ )
mod[ l ] = (float)verts[ k ].modulate[ l ];
-
+
for( n = 1; n < 4; n++ )
{
VectorAdd( verts[ k + n ].xyz, mid.xyz, mid.xyz );
mid.st[ 0 ] += verts[ k + n ].st[ 0 ];
mid.st[ 1 ] += verts[ k + n ].st[ 1 ];
-
+
for( l = 0; l < 4; l++ )
mod[ l ] += (float)verts[ k + n ].modulate[ l ];
}
-
+
VectorScale( mid.xyz, 0.25, mid.xyz );
mid.st[ 0 ] *= 0.25;
mid.st[ 1 ] *= 0.25;
-
+
for( l = 0; l < 4; l++ )
mid.modulate[ l ] = (unsigned char)( mod[ l ] / 4.0 );
@@ -701,13 +701,13 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
{
outVerts[ numOutVerts++ ] = verts[ k + n ];
outVerts[ numOutVerts++ ] = mid;
-
+
if( n < 3 )
outVerts[ numOutVerts++ ] = verts[ k + n + 1 ];
else
outVerts[ numOutVerts++ ] = verts[ k ];
}
-
+
}
if( !( trail->flags & TJFL_NOPOLYMERGE ) )
@@ -715,7 +715,7 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
else
{
int k;
-
+
for( k = 0; k < numOutVerts / 3; k++ )
trap_R_AddPolyToScene( trail->shader, 3, &outVerts[ k * 3 ] );
}
@@ -729,7 +729,7 @@ void CG_AddTrailToScene( trailJunc_t *trail, int iteration, int numJuncs )
else
{
int k;
-
+
for( k = 0; k < i / 4; k++ )
trap_R_AddPolyToScene( trail->shader, 4, &verts[ k * 4 ] );
}
@@ -764,34 +764,34 @@ void CG_AddTrails( void )
// update the settings for each junc
j = activeTrails;
-
+
while( j )
{
lifeFrac = (float)( cg.time - j->spawnTime ) / (float)( j->endTime - j->spawnTime );
-
+
if( lifeFrac >= 1.0 )
{
j->inuse = qfalse; // flag it as dead
j->width = j->widthEnd;
j->alpha = j->alphaEnd;
-
+
if( j->alpha > 1.0 )
j->alpha = 1.0;
else if( j->alpha < 0.0 )
j->alpha = 0.0;
-
+
VectorCopy( j->colorEnd, j->color );
}
else
{
j->width = j->widthStart + ( j->widthEnd - j->widthStart ) * lifeFrac;
j->alpha = j->alphaStart + ( j->alphaEnd - j->alphaStart ) * lifeFrac;
-
+
if( j->alpha > 1.0 )
j->alpha = 1.0;
else if( j->alpha < 0.0 )
j->alpha = 0.0;
-
+
VectorSubtract( j->colorEnd, j->colorStart, j->color );
VectorMA( j->colorStart, lifeFrac, j->color, j->color );
}
@@ -801,11 +801,11 @@ void CG_AddTrails( void )
// draw the trailHeads
j = headTrails;
-
+
while( j )
{
jNext = j->nextHead; // in case it gets removed
-
+
if( !j->inuse )
CG_FreeTrailJunc( j );
else
diff --git a/src/cgame/cg_view.c b/src/cgame/cg_view.c
index 454582db..0e98036d 100644
--- a/src/cgame/cg_view.c
+++ b/src/cgame/cg_view.c
@@ -68,13 +68,13 @@ void CG_TestModel_f( void )
memset( &cg.testModelEntity, 0, sizeof( cg.testModelEntity ) );
memset( &cg.testModelBarrelEntity, 0, sizeof( cg.testModelBarrelEntity ) );
-
+
if( trap_Argc( ) < 2 )
return;
Q_strncpyz( cg.testModelName, CG_Argv( 1 ), MAX_QPATH );
cg.testModelEntity.hModel = trap_R_RegisterModel( cg.testModelName );
-
+
Q_strncpyz( cg.testModelBarrelName, CG_Argv( 1 ), MAX_QPATH );
cg.testModelBarrelName[ strlen( cg.testModelBarrelName ) - 4 ] = '\0';
Q_strcat( cg.testModelBarrelName, MAX_QPATH, "_barrel.md3" );
@@ -86,7 +86,7 @@ void CG_TestModel_f( void )
cg.testModelEntity.frame = 1;
cg.testModelEntity.oldframe = 0;
}
-
+
if( !cg.testModelEntity.hModel )
{
CG_Printf( "Can't register model\n" );
@@ -101,7 +101,7 @@ void CG_TestModel_f( void )
AnglesToAxis( angles, cg.testModelEntity.axis );
cg.testGun = qfalse;
-
+
if( cg.testModelBarrelEntity.hModel )
{
angles[ YAW ] = 0;
@@ -135,10 +135,10 @@ void CG_TestModelNextFrame_f( void )
void CG_TestModelPrevFrame_f( void )
{
cg.testModelEntity.frame--;
-
+
if( cg.testModelEntity.frame < 0 )
cg.testModelEntity.frame = 0;
-
+
CG_Printf( "frame %i\n", cg.testModelEntity.frame );
}
@@ -151,7 +151,7 @@ void CG_TestModelNextSkin_f( void )
void CG_TestModelPrevSkin_f( void )
{
cg.testModelEntity.skinNum--;
-
+
if( cg.testModelEntity.skinNum < 0 )
cg.testModelEntity.skinNum = 0;
@@ -165,7 +165,7 @@ static void CG_AddTestModel( void )
// re-register the model, because the level may have changed
cg.testModelEntity.hModel = trap_R_RegisterModel( cg.testModelName );
cg.testModelBarrelEntity.hModel = trap_R_RegisterModel( cg.testModelBarrelName );
-
+
if( !cg.testModelEntity.hModel )
{
CG_Printf( "Can't register model\n" );
@@ -235,7 +235,7 @@ static void CG_CalcVrect( void )
else
size = cg_viewsize.integer;
}
-
+
cg.refdef.width = cgs.glconfig.vidWidth * size / 100;
cg.refdef.width &= ~1;
@@ -268,7 +268,7 @@ static void CG_OffsetThirdPersonView( void )
float focusDist;
float forwardScale, sideScale;
vec3_t surfNormal;
-
+
if( cg.predictedPlayerState.stats[ STAT_STATE ] & SS_WALLCLIMBING )
{
if( cg.predictedPlayerState.stats[ STAT_STATE ] & SS_WALLCLIMBINGCEILING )
@@ -278,7 +278,7 @@ static void CG_OffsetThirdPersonView( void )
}
else
VectorSet( surfNormal, 0.0f, 0.0f, 1.0f );
-
+
VectorMA( cg.refdef.vieworg, cg.predictedPlayerState.viewheight, surfNormal, cg.refdef.vieworg );
VectorCopy( cg.refdefViewAngles, focusAngles );
@@ -346,10 +346,10 @@ static void CG_OffsetThirdPersonView( void )
static void CG_StepOffset( void )
{
float steptime;
- int timeDelta;
+ int timeDelta;
vec3_t normal;
playerState_t *ps = &cg.predictedPlayerState;
-
+
if( ps->stats[ STAT_STATE ] & SS_WALLCLIMBING )
{
if( ps->stats[ STAT_STATE ] & SS_WALLCLIMBINGCEILING )
@@ -359,31 +359,31 @@ static void CG_StepOffset( void )
}
else
VectorSet( normal, 0.0f, 0.0f, 1.0f );
-
+
if( cg.snap->ps.persistant[ PERS_TEAM ] == TEAM_SPECTATOR )
steptime = 200;
else
steptime = BG_FindSteptimeForClass( ps->stats[ STAT_PCLASS ] );
-
- // smooth out stair climbing
- timeDelta = cg.time - cg.stepTime;
- if( timeDelta < steptime )
+
+ // smooth out stair climbing
+ timeDelta = cg.time - cg.stepTime;
+ if( timeDelta < steptime )
{
- float stepChange = cg.stepChange
- * (steptime - timeDelta) / steptime;
+ float stepChange = cg.stepChange
+ * (steptime - timeDelta) / steptime;
if( ps->stats[ STAT_STATE ] & SS_WALLCLIMBING )
VectorMA( cg.refdef.vieworg, -stepChange, normal, cg.refdef.vieworg );
else
- cg.refdef.vieworg[ 2 ] -= stepChange;
- }
+ cg.refdef.vieworg[ 2 ] -= stepChange;
+ }
}
#define PCLOUD_ROLL_AMPLITUDE 25.0f
#define PCLOUD_ROLL_FREQUENCY 0.4f
#define PCLOUD_ZOOM_AMPLITUDE 15
#define PCLOUD_ZOOM_FREQUENCY 0.7f
-
+
/*
===============
@@ -405,7 +405,7 @@ static void CG_OffsetFirstPersonView( void )
float bob2;
vec3_t normal, baseOrigin;
playerState_t *ps = &cg.predictedPlayerState;
-
+
if( ps->stats[ STAT_STATE ] & SS_WALLCLIMBING )
{
if( ps->stats[ STAT_STATE ] & SS_WALLCLIMBINGCEILING )
@@ -415,7 +415,7 @@ static void CG_OffsetFirstPersonView( void )
}
else
VectorSet( normal, 0.0f, 0.0f, 1.0f );
-
+
if( cg.snap->ps.pm_type == PM_INTERMISSION )
return;
@@ -478,15 +478,15 @@ static void CG_OffsetFirstPersonView( void )
// add angles based on bob
//TA: bob amount is class dependant
-
+
if( cg.snap->ps.persistant[ PERS_TEAM ] == TEAM_SPECTATOR )
bob2 = 0.0f;
else
bob2 = BG_FindBobForClass( cg.predictedPlayerState.stats[ STAT_PCLASS ] );
-
+
#define LEVEL4_FEEDBACK 10.0f
-
+
//give a charging player some feedback
if( ps->weapon == WP_ALEVEL4 )
{
@@ -500,7 +500,7 @@ static void CG_OffsetFirstPersonView( void )
bob2 *= ( 1.0f + fraction * LEVEL4_FEEDBACK );
}
}
-
+
if( bob2 != 0.0f )
{
// make sure the bob is visible even at low speeds
@@ -509,20 +509,20 @@ static void CG_OffsetFirstPersonView( void )
delta = cg.bobfracsin * ( bob2 ) * speed;
if( cg.predictedPlayerState.pm_flags & PMF_DUCKED )
delta *= 3; // crouching
-
+
angles[ PITCH ] += delta;
delta = cg.bobfracsin * ( bob2 ) * speed;
if( cg.predictedPlayerState.pm_flags & PMF_DUCKED )
delta *= 3; // crouching accentuates roll
-
+
if( cg.bobcycle & 1 )
delta = -delta;
-
+
angles[ ROLL ] += delta;
}
#define LEVEL3_FEEDBACK 20.0f
-
+
//provide some feedback for pouncing
if( cg.predictedPlayerState.weapon == WP_ALEVEL3 ||
cg.predictedPlayerState.weapon == WP_ALEVEL3_UPG )
@@ -541,7 +541,7 @@ static void CG_OffsetFirstPersonView( void )
fraction1 = 1.0f;
fraction2 = -sin( fraction1 * M_PI / 2 );
-
+
VectorMA( origin, LEVEL3_FEEDBACK * fraction2, forward, origin );
}
}
@@ -573,25 +573,25 @@ static void CG_OffsetFirstPersonView( void )
rFraction = 1.0f;
if( uFraction > 1.0f )
uFraction = 1.0f;
-
+
fFraction2 = -sin( fFraction * M_PI / 2 );
rFraction2 = -sin( rFraction * M_PI / 2 );
uFraction2 = -sin( uFraction * M_PI / 2 );
-
+
if( cmd.forwardmove > 0 )
VectorMA( origin, STRUGGLE_DIST * fFraction, forward, origin );
else if( cmd.forwardmove < 0 )
VectorMA( origin, -STRUGGLE_DIST * fFraction, forward, origin );
else
cg.forwardMoveTime = cg.time;
-
+
if( cmd.rightmove > 0 )
VectorMA( origin, STRUGGLE_DIST * rFraction, right, origin );
else if( cmd.rightmove < 0 )
VectorMA( origin, -STRUGGLE_DIST * rFraction, right, origin );
else
cg.rightMoveTime = cg.time;
-
+
if( cmd.upmove > 0 )
VectorMA( origin, STRUGGLE_DIST * uFraction, up, origin );
else if( cmd.upmove < 0 )
@@ -618,12 +618,12 @@ static void CG_OffsetFirstPersonView( void )
if( cg.predictedPlayerState.stats[ STAT_PTEAM ] == PTE_HUMANS )
{
angles[PITCH] += cg.bobfracsin * bob2 * 0.5;
-
+
//TA: heavy breathing effects //FIXME: sound
if( cg.predictedPlayerState.stats[ STAT_STAMINA ] < 0 )
{
float deltaBreath = (float)(
- cg.predictedPlayerState.stats[ STAT_STAMINA ] < 0 ?
+ cg.predictedPlayerState.stats[ STAT_STAMINA ] < 0 ?
-cg.predictedPlayerState.stats[ STAT_STAMINA ] :
cg.predictedPlayerState.stats[ STAT_STAMINA ] ) / 200.0;
float deltaAngle = cos( (float)cg.time/150.0 ) * deltaBreath;
@@ -642,7 +642,7 @@ static void CG_OffsetFirstPersonView( void )
VectorMA( origin, ps->viewheight, normal, origin );
else
origin[ 2 ] += cg.predictedPlayerState.viewheight;
-
+
// smooth out duck height changes
timeDelta = cg.time - cg.duckTime;
if( timeDelta < DUCK_TIME)
@@ -653,7 +653,7 @@ static void CG_OffsetFirstPersonView( void )
// add bob height
bob = cg.bobfracsin * cg.xyspeed * bob2;
-
+
if( bob > 6 )
bob = 6;
@@ -666,7 +666,7 @@ static void CG_OffsetFirstPersonView( void )
// add fall height
delta = cg.time - cg.landTime;
-
+
if( delta < LAND_DEFLECT_TIME )
{
f = delta / LAND_DEFLECT_TIME;
@@ -761,7 +761,7 @@ static int CG_CalcFov( void )
fov_x = 180 - temp2;
}
-
+
// account for zooms
zoomFov = BG_FindZoomFovForWeapon( cg.predictedPlayerState.weapon );
if ( zoomFov < 1 )
@@ -799,7 +799,7 @@ static int CG_CalcFov( void )
// warp if underwater
contents = CG_PointContents( cg.refdef.vieworg, -1 );
-
+
if( contents & ( CONTENTS_WATER | CONTENTS_SLIME | CONTENTS_LAVA ) )
{
phase = cg.time / 1000.0 * WAVE_FREQUENCY * M_PI * 2;
@@ -821,7 +821,7 @@ static int CG_CalcFov( void )
fov_x += v;
fov_y += v;
}
-
+
// set it
cg.refdef.fov_x = fov_x;
@@ -858,7 +858,7 @@ static void CG_DamageBlendBlob( void )
maxTime = DAMAGE_TIME;
t = cg.time - cg.damageTime;
-
+
if( t <= 0 || t >= maxTime )
return;
@@ -984,7 +984,7 @@ static void CG_smoothWWTransitions( playerState_t *ps, const vec3_t in, vec3_t o
VectorCopy( ps->grapplePoint, surfNormal );
else
VectorCopy( ceilingNormal, surfNormal );
-
+
AnglesToAxis( in, inAxis );
//if we are moving from one surface to another smooth the transition
@@ -1021,7 +1021,7 @@ static void CG_smoothWWTransitions( playerState_t *ps, const vec3_t in, vec3_t o
timeMod = 1.0f;
}
-
+
//add the op
CG_addSmoothOp( rotAxis, rotAngle, timeMod );
}
@@ -1030,7 +1030,7 @@ static void CG_smoothWWTransitions( playerState_t *ps, const vec3_t in, vec3_t o
for( i = MAXSMOOTHS - 1; i >= 0; i-- )
{
smoothTime = (int)( cg_wwSmoothTime.integer * cg.sList[ i ].timeMod );
-
+
//if this op has time remaining, perform it
if( cg.time < cg.sList[ i ].time + smoothTime )
{
@@ -1135,7 +1135,7 @@ static int CG_CalcViewValues( void )
VectorCopy( ps->origin, cg.refdef.vieworg );
VectorCopy( ps->viewangles, cg.refdefViewAngles );
AnglesToAxis( cg.refdefViewAngles, cg.refdef.viewaxis );
-
+
return CG_CalcFov( );
}
@@ -1169,7 +1169,7 @@ static int CG_CalcViewValues( void )
t = cg.time - cg.predictedErrorTime;
f = ( cg_errorDecay.value - t ) / cg_errorDecay.value;
-
+
if( f > 0 && f < 1 )
VectorMA( cg.refdef.vieworg, f, cg.predictedError, cg.refdef.vieworg );
else
@@ -1182,7 +1182,7 @@ static int CG_CalcViewValues( void )
if( CG_IsParticleSystemValid( &cg.poisonCloudPS ) )
CG_DestroyParticleSystem( &cg.poisonCloudPS );
}
-
+
if( cg.renderingThirdPerson )
{
// back away from character
@@ -1217,10 +1217,10 @@ void CG_AddBufferedSound( sfxHandle_t sfx )
{
if( !sfx )
return;
-
+
cg.soundBuffer[ cg.soundBufferIn ] = sfx;
cg.soundBufferIn = ( cg.soundBufferIn + 1 ) % MAX_SOUNDBUFFER;
-
+
if( cg.soundBufferIn == cg.soundBufferOut )
cg.soundBufferOut++;
}
@@ -1315,7 +1315,7 @@ void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demo
CG_AddMarks( );
CG_AddLocalEntities( );
}
-
+
CG_AddViewWeapon( &cg.predictedPlayerState );
//after CG_AddViewWeapon
@@ -1324,7 +1324,7 @@ void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demo
CG_AddParticles( );
//TA: wolf trails stuff
- CG_AddTrails( ); // this must come last, so the trails dropped this frame get drawn
+ CG_AddTrails( ); // this must come last, so the trails dropped this frame get drawn
}
// add buffered sounds
@@ -1333,14 +1333,14 @@ void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demo
// finish up the rest of the refdef
if( cg.testModelEntity.hModel )
CG_AddTestModel( );
-
+
cg.refdef.time = cg.time;
memcpy( cg.refdef.areamask, cg.snap->areamask, sizeof( cg.refdef.areamask ) );
//remove expired console lines
if( cg.consoleLines[ 0 ].time + cg_consoleLatency.integer < cg.time && cg_consoleLatency.integer > 0 )
CG_RemoveConsoleLine( );
-
+
// update audio positions
trap_S_Respatialize( cg.snap->ps.clientNum, cg.refdef.vieworg, cg.refdef.viewaxis, inwater );
@@ -1348,14 +1348,14 @@ void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demo
if( stereoView != STEREO_RIGHT )
{
cg.frametime = cg.time - cg.oldTime;
-
+
if( cg.frametime < 0 )
cg.frametime = 0;
-
+
cg.oldTime = cg.time;
CG_AddLagometerFrameInfo( );
}
-
+
if( cg_timescale.value != cg_timescaleFadeEnd.value )
{
if( cg_timescale.value < cg_timescaleFadeEnd.value )
@@ -1370,7 +1370,7 @@ void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demo
if( cg_timescale.value < cg_timescaleFadeEnd.value )
cg_timescale.value = cg_timescaleFadeEnd.value;
}
-
+
if( cg_timescaleFadeSpeed.value )
trap_Cvar_Set( "timescale", va( "%f", cg_timescale.value ) );
}
diff --git a/src/cgame/cg_weapons.c b/src/cgame/cg_weapons.c
index df33af35..dcef9f82 100644
--- a/src/cgame/cg_weapons.c
+++ b/src/cgame/cg_weapons.c
@@ -130,7 +130,7 @@ static void CG_ShotgunEjectBrass( centity_t *cent )
xoffset[ 2 ] = offset[ 0 ] * v[ 0 ][ 2 ] + offset[ 1 ] * v[ 1 ][ 2 ] + offset[ 2 ] * v[ 2 ][ 2 ];
VectorAdd( cent->lerpOrigin, xoffset, re->origin );
VectorCopy( re->origin, le->pos.trBase );
-
+
if( CG_PointContents( re->origin, -1 ) & CONTENTS_WATER )
waterScale = 0.10f;
@@ -166,7 +166,7 @@ void CG_TeslaTrail( vec3_t start, vec3_t end, int srcENum, int destENum )
{
localEntity_t *le;
refEntity_t *re;
-
+
//add a bunch of bolt segments
le = CG_AllocLocalEntity( );
re = &le->refEntity;
@@ -212,9 +212,9 @@ void CG_RegisterUpgrade( int upgradeNum )
if( !BG_FindNameForUpgrade( upgradeNum ) )
CG_Error( "Couldn't find upgrade %i", upgradeNum );
-
+
upgradeInfo->humanName = BG_FindHumanNameForUpgrade( upgradeNum );
-
+
//la la la la la, i'm not listening!
if( upgradeNum == UP_GRENADE )
upgradeInfo->upgradeIcon = cg_weapons[ WP_GRENADE ].weaponIcon;
@@ -256,7 +256,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
while( 1 )
{
token = COM_Parse( text_p );
-
+
if( !token )
break;
@@ -270,7 +270,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
break;
wim->missileModel = trap_R_RegisterModel( token );
-
+
if( !wim->missileModel )
CG_Printf( S_COLOR_RED "ERROR: missile model not found %s\n", token );
@@ -279,16 +279,16 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
else if( !Q_stricmp( token, "missileSprite" ) )
{
int size = 0;
-
+
token = COM_Parse( text_p );
if( !token )
break;
size = atoi( token );
-
+
if( size < 0 )
size = 0;
-
+
token = COM_Parse( text_p );
if( !token )
break;
@@ -296,7 +296,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
wim->missileSprite = trap_R_RegisterShader( token );
wim->missileSpriteSize = size;
wim->usesSpriteMissle = qtrue;
-
+
if( !wim->missileSprite )
CG_Printf( S_COLOR_RED "ERROR: missile sprite not found %s\n", token );
@@ -315,27 +315,27 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
token = COM_Parse( text_p );
if( !token )
break;
-
- wim->missileAnimStartFrame = atoi( token );
-
+
+ wim->missileAnimStartFrame = atoi( token );
+
token = COM_Parse( text_p );
if( !token )
break;
-
- wim->missileAnimNumFrames = atoi( token );
-
+
+ wim->missileAnimNumFrames = atoi( token );
+
token = COM_Parse( text_p );
if( !token )
break;
-
- wim->missileAnimFrameRate = atoi( token );
-
+
+ wim->missileAnimFrameRate = atoi( token );
+
token = COM_Parse( text_p );
if( !token )
break;
-
- wim->missileAnimLooping = atoi( token );
-
+
+ wim->missileAnimLooping = atoi( token );
+
continue;
}
else if( !Q_stricmp( token, "missileParticleSystem" ) )
@@ -345,7 +345,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
break;
wim->missileParticleSystem = CG_RegisterParticleSystem( token );
-
+
if( !wim->missileParticleSystem )
CG_Printf( S_COLOR_RED "ERROR: missile particle system not found %s\n", token );
@@ -358,7 +358,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
break;
wim->muzzleParticleSystem = CG_RegisterParticleSystem( token );
-
+
if( !wim->muzzleParticleSystem )
CG_Printf( S_COLOR_RED "ERROR: muzzle particle system not found %s\n", token );
@@ -371,7 +371,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
break;
wim->impactParticleSystem = CG_RegisterParticleSystem( token );
-
+
if( !wim->impactParticleSystem )
CG_Printf( S_COLOR_RED "ERROR: impact particle system not found %s\n", token );
@@ -384,7 +384,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
break;
wim->impactModel = trap_R_RegisterModel( token );
-
+
if( !wim->impactModel )
CG_Printf( S_COLOR_RED "ERROR: impact model not found %s\n", token );
@@ -393,7 +393,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
break;
wim->impactModelShader = trap_R_RegisterShader( token );
-
+
if( !wim->impactModelShader )
CG_Printf( S_COLOR_RED "ERROR: impact model shader not found %s\n", token );
@@ -402,23 +402,23 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
else if( !Q_stricmp( token, "impactMark" ) )
{
int size = 0;
-
+
token = COM_Parse( text_p );
if( !token )
break;
size = atoi( token );
-
+
if( size < 0 )
size = 0;
-
+
token = COM_Parse( text_p );
if( !token )
break;
wim->impactMark = trap_R_RegisterShader( token );
wim->impactMarkSize = size;
-
+
if( !wim->impactMark )
CG_Printf( S_COLOR_RED "ERROR: impact mark shader not found %s\n", token );
@@ -427,47 +427,47 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
else if( !Q_stricmp( token, "impactSound" ) )
{
int index = 0;
-
+
token = COM_Parse( text_p );
if( !token )
break;
index = atoi( token );
-
+
if( index < 0 )
index = 0;
else if( index > 3 )
index = 3;
-
+
token = COM_Parse( text_p );
if( !token )
break;
wim->impactSound[ index ] = trap_S_RegisterSound( token, qfalse );
-
+
continue;
}
else if( !Q_stricmp( token, "impactFleshSound" ) )
{
int index = 0;
-
+
token = COM_Parse( text_p );
if( !token )
break;
index = atoi( token );
-
+
if( index < 0 )
index = 0;
else if( index > 3 )
index = 3;
-
+
token = COM_Parse( text_p );
if( !token )
break;
wim->impactFleshSound[ index ] = trap_S_RegisterSound( token, qfalse );
-
+
continue;
}
else if( !Q_stricmp( token, "impactDlightColor" ) )
@@ -480,22 +480,22 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
wim->impactDlightColor[ i ] = atof( token );
}
-
+
continue;
}
else if( !Q_stricmp( token, "impactDlight" ) )
{
int size = 0;
-
+
token = COM_Parse( text_p );
if( !token )
break;
size = atoi( token );
-
+
if( size < 0 )
size = 0;
-
+
wim->impactDlight = size;
continue;
@@ -516,7 +516,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
wim->flashDlightColor[ i ] = atof( token );
}
-
+
continue;
}
else if( !Q_stricmp( token, "continuousFlash" ) )
@@ -535,22 +535,22 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
wim->missileDlightColor[ i ] = atof( token );
}
-
+
continue;
}
else if( !Q_stricmp( token, "missileDlight" ) )
{
int size = 0;
-
+
token = COM_Parse( text_p );
if( !token )
break;
size = atoi( token );
-
+
if( size < 0 )
size = 0;
-
+
wim->missileDlight = size;
continue;
@@ -562,7 +562,7 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
break;
wim->firingSound = trap_S_RegisterSound( token, qfalse );
-
+
continue;
}
else if( !Q_stricmp( token, "missileSound" ) )
@@ -572,30 +572,30 @@ static qboolean CG_ParseWeaponModeSection( weaponInfoMode_t *wim, char **text_p
break;
wim->missileSound = trap_S_RegisterSound( token, qfalse );
-
+
continue;
}
else if( !Q_stricmp( token, "flashSound" ) )
{
int index = 0;
-
+
token = COM_Parse( text_p );
if( !token )
break;
index = atoi( token );
-
+
if( index < 0 )
index = 0;
else if( index > 3 )
index = 3;
-
+
token = COM_Parse( text_p );
if( !token )
break;
wim->flashSound[ index ] = trap_S_RegisterSound( token, qfalse );
-
+
continue;
}
else if( !Q_stricmp( token, "}" ) )
@@ -637,7 +637,7 @@ static qboolean CG_ParseWeaponFile( const char *filename, weaponInfo_t *wi )
CG_Printf( "File %s too long\n", filename );
return qfalse;
}
-
+
trap_FS_Read( text, len, f );
text[ len ] = 0;
trap_FS_FCloseFile( f );
@@ -649,7 +649,7 @@ static qboolean CG_ParseWeaponFile( const char *filename, weaponInfo_t *wi )
while( 1 )
{
token = COM_Parse( &text_p );
-
+
if( !token )
break;
@@ -671,7 +671,7 @@ static qboolean CG_ParseWeaponFile( const char *filename, weaponInfo_t *wi )
//start parsing ejectors again
weaponMode = WPM_NONE;
-
+
continue;
}
else if( !Q_stricmp( token, "primary" ) )
@@ -692,13 +692,13 @@ static qboolean CG_ParseWeaponFile( const char *filename, weaponInfo_t *wi )
else if( !Q_stricmp( token, "weaponModel" ) )
{
char path[ MAX_QPATH ];
-
+
token = COM_Parse( &text_p );
if( !token )
break;
wi->weaponModel = trap_R_RegisterModel( token );
-
+
if( !wi->weaponModel )
CG_Printf( S_COLOR_RED "ERROR: weapon model not found %s\n", token );
@@ -719,7 +719,7 @@ static qboolean CG_ParseWeaponFile( const char *filename, weaponInfo_t *wi )
if( !wi->handsModel )
wi->handsModel = trap_R_RegisterModel( "models/weapons2/shotgun/shotgun_hand.md3" );
-
+
continue;
}
else if( !Q_stricmp( token, "idleSound" ) )
@@ -729,7 +729,7 @@ static qboolean CG_ParseWeaponFile( const char *filename, weaponInfo_t *wi )
break;
wi->readySound = trap_S_RegisterSound( token, qfalse );
-
+
continue;
}
else if( !Q_stricmp( token, "icon" ) )
@@ -739,7 +739,7 @@ static qboolean CG_ParseWeaponFile( const char *filename, weaponInfo_t *wi )
break;
wi->weaponIcon = wi->ammoIcon = trap_R_RegisterShader( token );
-
+
if( !wi->weaponIcon )
CG_Printf( S_COLOR_RED "ERROR: weapon icon not found %s\n", token );
@@ -748,23 +748,23 @@ static qboolean CG_ParseWeaponFile( const char *filename, weaponInfo_t *wi )
else if( !Q_stricmp( token, "crosshair" ) )
{
int size = 0;
-
+
token = COM_Parse( &text_p );
if( !token )
break;
size = atoi( token );
-
+
if( size < 0 )
size = 0;
-
+
token = COM_Parse( &text_p );
if( !token )
break;
wi->crossHair = trap_R_RegisterShader( token );
wi->crossHairSize = size;
-
+
if( !wi->crossHair )
CG_Printf( S_COLOR_RED "ERROR: weapon crosshair not found %s\n", token );
@@ -809,14 +809,14 @@ void CG_RegisterWeapon( int weaponNum )
if( !BG_FindNameForWeapon( weaponNum ) )
CG_Error( "Couldn't find weapon %i", weaponNum );
-
+
Com_sprintf( path, MAX_QPATH, "models/weapons/%s/weapon.cfg", BG_FindNameForWeapon( weaponNum ) );
-
+
weaponInfo->humanName = BG_FindHumanNameForWeapon( weaponNum );
if( !CG_ParseWeaponFile( path, weaponInfo ) )
Com_Printf( S_COLOR_RED "ERROR: failed to parse %s\n", path );
-
+
// calc midpoint for rotation
trap_R_ModelBounds( weaponInfo->weaponModel, mins, maxs );
for( i = 0 ; i < 3 ; i++ )
@@ -855,7 +855,7 @@ void CG_InitWeapons( void )
for( i = WP_NONE + 1; i < WP_NUM_WEAPONS; i++ )
CG_RegisterWeapon( i );
-
+
cgs.media.lightningShader = trap_R_RegisterShader( "models/ammo/tesla/tesla_bolt");
cgs.media.lightningExplosionModel = trap_R_RegisterModel( "models/weaphits/crackle.md3" );
}
@@ -921,7 +921,7 @@ static void CG_CalculateWeaponPosition( vec3_t origin, vec3_t angles )
// gun angles from bobbing
//TA: bob amount is class dependant
bob = BG_FindBobForClass( cg.predictedPlayerState.stats[ STAT_PCLASS ] );
-
+
if( bob != 0 )
{
angles[ ROLL ] += scale * cg.bobfracsin * 0.005;
@@ -1004,12 +1004,19 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
weapon_t weaponNum;
weaponMode_t weaponMode;
weaponInfo_t *weapon;
- centity_t *nonPredictedCent;
qboolean noGunModel;
+ qboolean firing;
weaponNum = cent->currentState.weapon;
weaponMode = cent->currentState.generic1;
-
+
+ if( ( ( cent->currentState.eFlags & EF_FIRING ) && weaponMode == WPM_PRIMARY ) ||
+ ( ( cent->currentState.eFlags & EF_FIRING2 ) && weaponMode == WPM_SECONDARY ) ||
+ ( ( cent->currentState.eFlags & EF_FIRING3 ) && weaponMode == WPM_TERTIARY ) )
+ firing = qtrue;
+ else
+ firing = qfalse;
+
CG_RegisterWeapon( weaponNum );
weapon = &cg_weapons[ weaponNum ];
@@ -1033,13 +1040,13 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
cg.weapon1Time = cg.time;
cg.weapon1Firing = ( cg.predictedPlayerState.eFlags & EF_FIRING );
}
-
+
if( cg.weapon2Firing != ( cg.predictedPlayerState.eFlags & EF_FIRING2 ) )
{
cg.weapon2Time = cg.time;
cg.weapon2Firing = ( cg.predictedPlayerState.eFlags & EF_FIRING2 );
}
-
+
if( cg.weapon3Firing != ( cg.predictedPlayerState.eFlags & EF_FIRING3 ) )
{
cg.weapon3Time = cg.time;
@@ -1050,13 +1057,12 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
gun.hModel = weapon->weaponModel;
noGunModel = ( ( !ps || cg.renderingThirdPerson ) && weapon->disableIn3rdPerson ) || !gun.hModel;
-
+
if( !ps )
{
// add weapon ready sound
- if( ( cent->currentState.eFlags & EF_FIRING ) && weapon->wim[ weaponMode ].firingSound )
+ if( firing && weapon->wim[ weaponMode ].firingSound )
{
- // lightning gun and guantlet make a different sound when fire is held down
trap_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin, vec3_origin,
weapon->wim[ weaponMode ].firingSound );
}
@@ -1090,15 +1096,6 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
}
}
- // make sure we aren't looking at cg.predictedPlayerEntity for LG
- nonPredictedCent = &cg_entities[ cent->currentState.clientNum ];
-
- // if the index of the nonPredictedCent is not the same as the clientNum
- // then this is a fake player (like on teh single player podiums), so
- // go ahead and use the cent
- if( ( nonPredictedCent - cg_entities ) != cent->currentState.clientNum )
- nonPredictedCent = cent;
-
if( CG_IsParticleSystemValid( &cent->muzzlePS ) )
{
if( ps || cg.renderingThirdPerson ||
@@ -1111,16 +1108,12 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
}
//if the PS is infinite disable it when not firing
- if( ( ( !( cent->currentState.eFlags & EF_FIRING ) && weaponMode == WPM_PRIMARY ) ||
- ( !( cent->currentState.eFlags & EF_FIRING2 ) && weaponMode == WPM_SECONDARY ) ||
- ( !( cent->currentState.eFlags & EF_FIRING3 ) && weaponMode == WPM_TERTIARY ) ) &&
- CG_IsParticleSystemInfinite( cent->muzzlePS ) )
+ if( !firing && CG_IsParticleSystemInfinite( cent->muzzlePS ) )
CG_DestroyParticleSystem( &cent->muzzlePS );
}
-
+
// add the flash
- if( !( weapon->wim[ weaponMode ].continuousFlash &&
- ( nonPredictedCent->currentState.eFlags & EF_FIRING ) ) )
+ if( !weapon->wim[ weaponMode ].continuousFlash || !firing )
{
// impulse flash
if( cg.time - cent->muzzleFlashTime > MUZZLE_FLASH_TIME )
@@ -1144,7 +1137,7 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
CG_PositionRotatedEntityOnTag( &flash, parent, parent->hModel, "tag_weapon" );
else
CG_PositionRotatedEntityOnTag( &flash, &gun, weapon->weaponModel, "tag_flash" );
-
+
trap_R_AddRefEntityToScene( &flash );
}
@@ -1154,7 +1147,7 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
if( weapon->wim[ weaponMode ].muzzleParticleSystem && cent->muzzlePsTrigger )
{
cent->muzzlePS = CG_SpawnNewParticleSystem( weapon->wim[ weaponMode ].muzzleParticleSystem );
-
+
if( noGunModel )
CG_SetParticleSystemTag( cent->muzzlePS, *parent, parent->hModel, "tag_weapon" );
else
@@ -1164,7 +1157,7 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
CG_AttachParticleSystemToTag( cent->muzzlePS );
cent->muzzlePsTrigger = qfalse;
}
-
+
// make a dlight for the flash
if( weapon->wim[ weaponMode ].flashDlightColor[ 0 ] ||
weapon->wim[ weaponMode ].flashDlightColor[ 1 ] ||
@@ -1208,7 +1201,7 @@ void CG_AddViewWeapon( playerState_t *ps )
//TA: no weapon carried - can't draw it
if( weapon == WP_NONE )
return;
-
+
if( ps->pm_type == PM_INTERMISSION )
return;
@@ -1221,7 +1214,7 @@ void CG_AddViewWeapon( playerState_t *ps )
if( ps->stats[ STAT_MISC ] > ( LCANNON_TOTAL_CHARGE - ( LCANNON_TOTAL_CHARGE / 3 ) ) )
trap_S_AddLoopingSound( ps->clientNum, ps->origin, vec3_origin, cgs.media.lCannonWarningSound );
}
-
+
// no gun if in third person view
if( cg.renderingThirdPerson )
return;
@@ -1233,10 +1226,10 @@ void CG_AddViewWeapon( playerState_t *ps )
VectorCopy( cg.refdef.vieworg, origin );
VectorMA( origin, -8, cg.refdef.viewaxis[ 2 ], origin );
-
+
if( cent->muzzlePS )
CG_SetParticleSystemOrigin( cent->muzzlePS, origin );
-
+
//check for particle systems
if( wi->wim[ weaponMode ].muzzleParticleSystem && cent->muzzlePsTrigger )
{
@@ -1246,7 +1239,7 @@ void CG_AddViewWeapon( playerState_t *ps )
CG_AttachParticleSystemToOrigin( cent->muzzlePS );
cent->muzzlePsTrigger = qfalse;
}
-
+
return;
}
@@ -1278,7 +1271,7 @@ void CG_AddViewWeapon( playerState_t *ps )
VectorMA( hand.origin, random( ) * fraction, cg.refdef.viewaxis[ 0 ], hand.origin );
VectorMA( hand.origin, random( ) * fraction, cg.refdef.viewaxis[ 1 ], hand.origin );
}
-
+
AnglesToAxis( angles, hand.axis );
// map torso animations to weapon animations
@@ -1326,7 +1319,7 @@ static qboolean CG_WeaponSelectable( weapon_t weapon )
//TA: this is a pain in the ass
//if( !ammo && !clips && !BG_FindInfinteAmmoForWeapon( i ) )
// return qfalse;
-
+
if( !BG_InventoryContainsWeapon( weapon, cg.snap->ps.stats ) )
return qfalse;
@@ -1386,7 +1379,7 @@ void CG_DrawItemSelect( rectDef_t *rect, vec4_t color )
else if( cg.weaponSelect > 32 && !CG_UpgradeSelectable( cg.weaponSelect ) )
CG_NextWeapon_f( );
}
-
+
// showing weapon select clears pickup item display, but not the blend blob
cg.itemPickupTime = 0;
@@ -1402,9 +1395,9 @@ void CG_DrawItemSelect( rectDef_t *rect, vec4_t color )
iconsize = height;
length = width / height;
}
-
+
selectWindow = length / 2;
-
+
for( i = WP_NONE + 1; i < WP_NUM_WEAPONS; i++ )
{
if( !BG_InventoryContainsWeapon( i, cg.snap->ps.stats ) )
@@ -1422,7 +1415,7 @@ void CG_DrawItemSelect( rectDef_t *rect, vec4_t color )
{
if( !BG_InventoryContainsUpgrade( i, cg.snap->ps.stats ) )
continue;
-
+
if( i == cg.weaponSelect - 32 )
selectedItem = numItems;
@@ -1435,7 +1428,7 @@ void CG_DrawItemSelect( rectDef_t *rect, vec4_t color )
{
int displacement = i - selectWindow;
int item = displacement + selectedItem;
-
+
if( ( item >= 0 ) && ( item < numItems ) )
{
trap_R_SetColor( color );
@@ -1444,7 +1437,7 @@ void CG_DrawItemSelect( rectDef_t *rect, vec4_t color )
CG_DrawPic( x, y, iconsize, iconsize, cg_weapons[ items[ item ] ].weaponIcon );
else if( items[ item ] > 32 )
CG_DrawPic( x, y, iconsize, iconsize, cg_upgrades[ items[ item ] - 32 ].upgradeIcon );
-
+
trap_R_SetColor( NULL );
/* if( displacement == 0 )
@@ -1469,13 +1462,13 @@ void CG_DrawItemSelectText( rectDef_t *rect, float scale, int textStyle )
int x, w;
char *name;
float *color;
-
+
color = CG_FadeColor( cg.weaponSelectTime, WEAPON_SELECT_TIME );
if( !color )
return;
-
+
trap_R_SetColor( color );
-
+
// draw the selected name
if( cg.weaponSelect <= 32 )
{
@@ -1520,7 +1513,7 @@ void CG_NextWeapon_f( void )
if( !cg.snap )
return;
-
+
if( cg.snap->ps.pm_flags & PMF_FOLLOW )
{
trap_SendClientCommand( "followprev\n" );
@@ -1547,7 +1540,7 @@ void CG_NextWeapon_f( void )
break;
}
}
-
+
if( i == 64 )
cg.weaponSelect = original;
}
@@ -1564,7 +1557,7 @@ void CG_PrevWeapon_f( void )
if( !cg.snap )
return;
-
+
if( cg.snap->ps.pm_flags & PMF_FOLLOW )
{
trap_SendClientCommand( "follownext\n" );
@@ -1579,7 +1572,7 @@ void CG_PrevWeapon_f( void )
cg.weaponSelect--;
if( cg.weaponSelect == -1 )
cg.weaponSelect = 63;
-
+
if( cg.weaponSelect <= 32 )
{
if( CG_WeaponSelectable( cg.weaponSelect ) )
@@ -1591,7 +1584,7 @@ void CG_PrevWeapon_f( void )
break;
}
}
-
+
if( i == 64 )
cg.weaponSelect = original;
}
@@ -1607,7 +1600,7 @@ void CG_Weapon_f( void )
if( !cg.snap )
return;
-
+
if( cg.snap->ps.pm_flags & PMF_FOLLOW )
return;
@@ -1650,7 +1643,7 @@ void CG_FireWeapon( centity_t *cent, weaponMode_t weaponMode )
es = &cent->currentState;
weaponNum = es->weapon;
-
+
if( weaponNum == WP_NONE )
return;
@@ -1659,7 +1652,7 @@ void CG_FireWeapon( centity_t *cent, weaponMode_t weaponMode )
CG_Error( "CG_FireWeapon: ent->weapon >= WP_NUM_WEAPONS" );
return;
}
-
+
wi = &cg_weapons[ weaponNum ];
// mark the entity as muzzle flashing, so when it is added it will
@@ -1668,18 +1661,18 @@ void CG_FireWeapon( centity_t *cent, weaponMode_t weaponMode )
if( wi->wim[ weaponMode ].muzzleParticleSystem )
{
- if( !( CG_IsParticleSystemValid( &cent->muzzlePS ) &&
- CG_IsParticleSystemInfinite( cent->muzzlePS ) ) )
+ if( !CG_IsParticleSystemValid( &cent->muzzlePS ) ||
+ !CG_IsParticleSystemInfinite( cent->muzzlePS ) )
cent->muzzlePsTrigger = qtrue;
}
-
+
// play a sound
for( c = 0; c < 4; c++ )
{
if( !wi->wim[ weaponMode ].flashSound[ c ] )
break;
}
-
+
if( c > 0 )
{
c = rand( ) % c;
@@ -1726,7 +1719,7 @@ void CG_MissileHitWall( weapon_t weaponNum, weaponMode_t weaponMode, int clientN
vec3_t lightColor = { 0.0f, 0.0f, 0.0f };
localEntity_t *le;
weaponInfo_t *weapon = &cg_weapons[ weaponNum ];
-
+
mark = weapon->wim[ weaponMode ].impactMark;
radius = weapon->wim[ weaponMode ].impactMarkSize;
mod = weapon->wim[ weaponMode ].impactModel;
@@ -1743,7 +1736,7 @@ void CG_MissileHitWall( weapon_t weaponNum, weaponMode_t weaponMode, int clientN
if( !weapon->wim[ weaponMode ].impactFleshSound[ c ] )
break;
}
-
+
if( c > 0 )
{
c = rand( ) % c;
@@ -1759,7 +1752,7 @@ void CG_MissileHitWall( weapon_t weaponNum, weaponMode_t weaponMode, int clientN
if( !weapon->wim[ weaponMode ].impactSound[ c ] )
break;
}
-
+
if( c > 0 )
{
c = rand( ) % c;
@@ -1776,7 +1769,7 @@ void CG_MissileHitWall( weapon_t weaponNum, weaponMode_t weaponMode, int clientN
CG_SetParticleSystemNormal( partSystem, dir );
CG_AttachParticleSystemToOrigin( partSystem );
}
-
+
//
// create the explosion
//
@@ -1803,7 +1796,7 @@ CG_MissileHitPlayer
void CG_MissileHitPlayer( weapon_t weaponNum, weaponMode_t weaponMode, vec3_t origin, vec3_t dir, int entityNum )
{
weaponInfo_t *weapon = &cg_weapons[ weaponNum ];
-
+
CG_Bleed( origin, entityNum );
if( weapon->wim[ weaponMode ].alwaysImpact )
@@ -1921,7 +1914,7 @@ static qboolean CG_CalcMuzzlePoint( int entityNum, vec3_t muzzle )
}
cent = &cg_entities[entityNum];
-
+
if( !cent->currentValid )
return qfalse;
@@ -1929,7 +1922,7 @@ static qboolean CG_CalcMuzzlePoint( int entityNum, vec3_t muzzle )
AngleVectors( cent->currentState.apos.trBase, forward, NULL, NULL );
anim = cent->currentState.legsAnim & ~ANIM_TOGGLEBIT;
-
+
if( anim == LEGS_WALKCR || anim == LEGS_IDLECR )
muzzle[ 2 ] += CROUCH_VIEWHEIGHT;
else
@@ -1960,7 +1953,7 @@ void CG_Bullet( vec3_t end, int sourceEntityNum, vec3_t normal, qboolean flesh,
if( CG_CalcMuzzlePoint( sourceEntityNum, start ) )
{
CG_BubbleTrail( start, end, 32 );
-
+
// draw a tracer
if( random( ) < cg_tracerChance.value )
CG_Tracer( start, end );
@@ -2041,7 +2034,7 @@ void CG_ShotgunFire( entityState_t *es )
VectorNormalize( v );
VectorScale( v, 32, v );
VectorAdd( es->pos.trBase, v, v );
-
+
CG_ShotgunPattern( es->pos.trBase, es->origin2, es->eventParm, es->otherEntityNum );
}
diff --git a/src/cgame/tr_types.h b/src/cgame/tr_types.h
index 6bff73ba..26240a2f 100644
--- a/src/cgame/tr_types.h
+++ b/src/cgame/tr_types.h
@@ -13,7 +13,7 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
-
+
#ifndef __TR_TYPES_H
#define __TR_TYPES_H
@@ -191,7 +191,7 @@ typedef struct
qboolean textureEnvAddAvailable;
int vidWidth, vidHeight;
-
+
// aspect is the screen's physical width / height, which may be different
// than scrWidth / scrHeight if the pixels are non-square
// normal screens should be 4/3, but wide aspect monitors may be 16/9