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