cctman.c 787 B

1234567891011121314151617181920212223
  1. class CCTMan : CCTBase
  2. {
  3. protected float m_MaximalActionDistanceSq;
  4. protected bool m_MustBeAlive;
  5. void CCTMan ( float maximal_target_distance = UAMaxDistances.DEFAULT, bool must_be_alive = true )
  6. {
  7. m_MaximalActionDistanceSq = maximal_target_distance * maximal_target_distance;
  8. m_MustBeAlive = must_be_alive;
  9. }
  10. override bool Can( PlayerBase player, ActionTarget target )
  11. {
  12. if( !target )
  13. return false;
  14. Object targetObject = target.GetObject();
  15. if ( !player || !targetObject || targetObject == player || !targetObject.IsMan() || !player.IsFacingTarget(targetObject) || ( m_MustBeAlive && targetObject.IsDamageDestroyed() ) )
  16. return false;
  17. return ( vector.DistanceSq(targetObject.GetPosition(), player.GetPosition()) <= m_MaximalActionDistanceSq );
  18. }
  19. };