//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBaseTFVehicle::FinishedBuilding( void ) { BaseClass::FinishedBuilding(); // See if we've finished building on a vehicle that has a passenger slot assigned to my buildpoint. CBaseObject *pParent = GetParentObject(); if ( pParent && pParent->IsAVehicle() ) { CBaseTFVehicle *pVehicle = static_cast<CBaseTFVehicle*>(pParent); int iRole = pVehicle->GetChildVehicleRole( this ); if ( iRole != -1 ) { // Is there a player in the role assigned to this buildpoint? CBaseTFPlayer *pExistingPlayer = static_cast<CBaseTFPlayer*>( pVehicle->GetPassenger( iRole ) ); if ( pExistingPlayer ) { // Remove the player from my parent vehicle and put them in me pExistingPlayer->LeaveVehicle(); // Get in the vehicle. pExistingPlayer->GetInVehicle( this, VEHICLE_DRIVER ); } } } }
//----------------------------------------------------------------------------- // Purpose: Try to board the vehicle //----------------------------------------------------------------------------- void CBaseTFVehicle::AttemptToBoardVehicle( CBaseTFPlayer *pPlayer ) { if ( !CanGetInVehicle( pPlayer ) ) return; // Locate the entry point. int nRole = LocateEntryPoint( pPlayer ); if ( nRole != -1 ) { // Set the owner flag. bool bOwner = ( pPlayer == GetOwner() ); if ( bOwner ) { // Check to see if a player exists at this location (role). CBaseTFPlayer *pExistingPlayer = static_cast<CBaseTFPlayer*>( GetPassenger( nRole ) ); if ( pExistingPlayer ) { pExistingPlayer->LeaveVehicle(); // Get in the vehicle. pPlayer->GetInVehicle( this, nRole ); // Then see if we can move the other player to another slot in this vehicle int nEmptyRole = GetEmptyRole(); if ( nEmptyRole != -1 ) { pExistingPlayer->GetInVehicle( this, nEmptyRole ); } return; } } // Get in the vehicle. pPlayer->GetInVehicle( this, nRole ); } }