bool COrderAssist::Update()
{
	if ( !GetTargetEntity() || !GetTargetEntity()->IsAlive() )
		return true;

	return BaseClass::Update();
}
示例#2
0
bool COrderHeal::Update()
{
	CBaseEntity *pTarget = GetTargetEntity();
	if ( !pTarget || pTarget->m_iHealth >= pTarget->m_iMaxHealth )
		return true;

	return false;	
}
示例#3
0
bool COrderHeal::UpdateOnEvent( COrderEvent_Base *pEvent )
{
	if ( pEvent->GetType() == ORDER_EVENT_PLAYER_KILLED )
	{
		COrderEvent_PlayerKilled *pKilled = (COrderEvent_PlayerKilled*)pEvent;
		if ( pKilled->m_pPlayer == GetTargetEntity() )
			return true;
	}

	return BaseClass::UpdateOnEvent( pEvent );
}
bool COrderAssist::UpdateOnEvent( COrderEvent_Base *pEvent )
{
	if ( !GetTargetEntity() )
		return true;

	switch( pEvent->GetType() )
	{
		// If our boy dies, then he doesn't care about assistance anymore.
		case ORDER_EVENT_PLAYER_KILLED:
		{
			COrderEvent_PlayerKilled *pKilled = (COrderEvent_PlayerKilled*)pEvent;
			if ( pKilled->m_pPlayer == GetTargetEntity() )
				return true;
		}
		break;

		// Did we damage one of the enemies?
		case ORDER_EVENT_PLAYER_DAMAGED:
		{
			COrderEvent_PlayerDamaged *pPlayerDamaged = (COrderEvent_PlayerDamaged*)pEvent;
			if ( pPlayerDamaged->m_TakeDamageInfo.GetInflictor() == GetOwner() )
			{
				for ( int i=0; i < NUM_ASSIST_ENEMIES; i++ )
				{
					if ( pPlayerDamaged->m_pPlayerDamaged == m_Enemies[i].Get() )
					{
						// Reset the timer on the guy we're defending, in case we killed his
						// attacker really quickly.
//						CBaseTFPlayer *pPlayer = (CBaseTFPlayer*)GetTargetEntity();
//						pPlayer->m_flLastTimeDamagedByEnemy = 0;

						return true;
					}
				}
			}
		}
		break;
	}

	return BaseClass::UpdateOnEvent( pEvent );
}
示例#5
0
//-----------------------------------------------------------------------------
// Purpose: An event for this order's target has arrived. Return true if this order should be removed.
//-----------------------------------------------------------------------------
bool COrder::UpdateOnEvent( COrderEvent_Base *pEvent )
{
	// Default behavior is to get rid of the order if the object we're referencing
	// gets destroyed.
	if ( pEvent->GetType() == ORDER_EVENT_OBJECT_DESTROYED )
	{
		COrderEvent_ObjectDestroyed *pObjDestroyed = (COrderEvent_ObjectDestroyed*)pEvent;
		if ( pObjDestroyed->m_pObject == GetTargetEntity() )
			return true;
	}

	return false;
}
示例#6
0
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Purpose: for updates on the order. Return true if the order should be removed.
//-----------------------------------------------------------------------------
bool COrder::Update( void )
{
	// Orders with no targets & no owners don't go away on their own
	if ( !GetOwner() )
		return false;

	// Has it timed out?
	if( gpGlobals->curtime > m_flDieTime )
		return true;

	// Check to make sure we're still within the correct distance
	if ( m_flDistanceToRemove )
	{
		CBaseEntity *pTarget = GetTargetEntity();
		if ( pTarget )
		{
			// Have the player and the target moved away from each other?
			if ( (m_hOwningPlayer->GetAbsOrigin() - pTarget->GetAbsOrigin()).Length() > (m_flDistanceToRemove * 1.25) )
				return true;
		}
	}

	return false;
}
示例#7
0
//
// Make player 'orbit camera' rotate to face this point
//
void CClientCamera::SetOrbitTarget ( const CVector& vecPosition )
{
    if ( m_pCamera )
    {
        CClientEntity* pCameraTarget = GetTargetEntity ( );

        if ( pCameraTarget != nullptr )
        {
            CVector vecTargetPosition;
            pCameraTarget->GetPosition ( vecTargetPosition );
            if ( pCameraTarget->GetType () == CCLIENTPLAYER )
                vecTargetPosition.fZ += 0.6f;

            CVector vecDirection = vecPosition - vecTargetPosition;
            vecDirection.Normalize ();

            float fAngleHorz = -atan2 ( vecDirection.fX, vecDirection.fY ) - PI / 2;
            float fAngleVert = asin ( vecDirection.fZ );

            CCam* pCam = m_pCamera->GetCam ( m_pCamera->GetActiveCam () );
            pCam->SetDirection ( fAngleHorz, fAngleVert );
        }
    }
}