Beispiel #1
0
/*
============
sdGUIDFile::WriteBans
============
*/
bool sdGUIDFile::WriteBans( int& startIndex, idBitMsg& msg ) {
	CheckForUpdates();

	const int MAX_WRITE_BANS = 5;
	int count = 0;
	int i = startIndex + 1;
	for ( ; i < info.Num(); i++ ) {
		sdGUIDInfo& gInfo = info[ i ];
		if ( !gInfo.IsBanned() ) {
			continue;
		}

		count++;
		msg.WriteLong( i );
		idStr name;
		gInfo.GetPrintableName( name );
		msg.WriteString( name.c_str() );

		if ( count == MAX_WRITE_BANS ) {
			startIndex = i;
			return false;
		}
	}

	startIndex = -1;
	return true;
}
Beispiel #2
0
/*
================
sdProficiencyTable::WriteNetworkState
================
*/
void sdProficiencyTable::WriteNetworkState( const sdNetworkData& baseData, sdNetworkData& newData, idBitMsg& msg ) const {
	bool profChanged		= false;
	bool baseProfChanged	= false;
	bool spawnLevelChanged	= false;

	for ( int i = 0; i < points.Num(); i++ ) {
		newData.points[ i ] = points[ i ];
		profChanged |= newData.points[ i ] != baseData.points[ i ];
		newData.basePoints[ i ] = basePoints[ i ];
		baseProfChanged |= newData.basePoints[ i ] != baseData.basePoints[ i ];
		newData.spawnLevels[ i ] = spawnLevels[ i ];
		spawnLevelChanged |= newData.spawnLevels[ i ] != baseData.spawnLevels[ i ];
	}

	msg.WriteBool( profChanged );
	if ( profChanged ) {
		for ( int i = 0; i < points.Num(); i++ ) {
			msg.WriteDeltaFloat( baseData.points[ i ], newData.points[ i ] );
		}
	}
	msg.WriteBool( baseProfChanged );
	if ( baseProfChanged ) {
		for ( int i = 0; i < basePoints.Num(); i++ ) {
			msg.WriteDeltaFloat( baseData.basePoints[ i ], newData.basePoints[ i ] );
		}
	}
	msg.WriteBool( spawnLevelChanged );
	if ( spawnLevelChanged ) {
		for ( int i = 0; i < points.Num(); i++ ) {
			msg.WriteDeltaLong( baseData.spawnLevels[ i ], newData.spawnLevels[ i ] );
		}
	}

	if ( !baseData.fixedRank ) {
		newData.fixedRank = fixedRank;
		if ( fixedRank ) {
			msg.WriteBool( true );
			newData.fixedRankIndex = rank == NULL ? -1 : rank->Index();
			msg.WriteLong( newData.fixedRankIndex );
		} else {
			msg.WriteBool( false );
			newData.fixedRankIndex = -1;
		}
	} else {
		newData.fixedRank = true;
		newData.fixedRankIndex = baseData.fixedRankIndex;
	}
}
/*
================
idPhysics_Monster::WriteToSnapshot
================
*/
void idPhysics_Monster::WriteToSnapshot( idBitMsg& msg ) const
{
	msg.WriteFloat( current.origin[0] );
	msg.WriteFloat( current.origin[1] );
	msg.WriteFloat( current.origin[2] );
	msg.WriteFloat( current.velocity[0], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
	msg.WriteFloat( current.velocity[1], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
	msg.WriteFloat( current.velocity[2], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
	msg.WriteDeltaFloat( current.origin[0], current.localOrigin[0] );
	msg.WriteDeltaFloat( current.origin[1], current.localOrigin[1] );
	msg.WriteDeltaFloat( current.origin[2], current.localOrigin[2] );
	msg.WriteDeltaFloat( 0.0f, current.pushVelocity[0], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
	msg.WriteDeltaFloat( 0.0f, current.pushVelocity[1], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
	msg.WriteDeltaFloat( 0.0f, current.pushVelocity[2], MONSTER_VELOCITY_EXPONENT_BITS, MONSTER_VELOCITY_MANTISSA_BITS );
	msg.WriteLong( current.atRest );
	msg.WriteBits( current.onGround, 1 );
}
Beispiel #4
0
/*
=================
idEntityFx::WriteToSnapshot
=================
*/
void idEntityFx::WriteToSnapshot( idBitMsg &msg ) const {
	GetPhysics()->WriteToSnapshot( msg );
	WriteBindToSnapshot( msg );
	msg.WriteLong( ( fxEffect != NULL ) ? gameLocal.ServerRemapDecl( -1, DECL_FX, fxEffect->Index() ) : -1 );
	msg.WriteLong( started );
}