Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
2.8 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. //=============================================================================//
  6. #include "cbase.h"
  7. #include "ai_behavior_holster.h"
  8. // memdbgon must be the last include file in a .cpp file!!!
  9. #include "tier0/memdbgon.h"
  10. BEGIN_DATADESC( CAI_HolsterBehavior )
  11. DEFINE_FIELD( m_bWeaponOut, FIELD_BOOLEAN ),
  12. END_DATADESC();
  13. //-----------------------------------------------------------------------------
  14. // Purpose:
  15. //-----------------------------------------------------------------------------
  16. CAI_HolsterBehavior::CAI_HolsterBehavior()
  17. {
  18. // m_AssaultCue = CUE_NO_ASSAULT;
  19. }
  20. //-----------------------------------------------------------------------------
  21. // Purpose:
  22. // Input : *pTask -
  23. //-----------------------------------------------------------------------------
  24. void CAI_HolsterBehavior::StartTask( const Task_t *pTask )
  25. {
  26. switch( pTask->iTask )
  27. {
  28. case TASK_RANGE_ATTACK1:
  29. BaseClass::StartTask( pTask );
  30. break;
  31. default:
  32. BaseClass::StartTask( pTask );
  33. break;
  34. }
  35. }
  36. //-----------------------------------------------------------------------------
  37. // Purpose:
  38. // Input : *pTask -
  39. //-----------------------------------------------------------------------------
  40. void CAI_HolsterBehavior::RunTask( const Task_t *pTask )
  41. {
  42. switch( pTask->iTask )
  43. {
  44. case TASK_RANGE_ATTACK1:
  45. BaseClass::RunTask( pTask );
  46. break;
  47. default:
  48. BaseClass::RunTask( pTask );
  49. break;
  50. }
  51. }
  52. //-----------------------------------------------------------------------------
  53. // Purpose:
  54. // Output : Returns true on success, false on failure.
  55. //-----------------------------------------------------------------------------
  56. bool CAI_HolsterBehavior::CanSelectSchedule()
  57. {
  58. if ( !GetOuter()->IsInterruptable() )
  59. return false;
  60. if ( GetOuter()->HasCondition( COND_RECEIVED_ORDERS ) )
  61. return false;
  62. if ( GetEnemy() )
  63. {
  64. // make sure weapon is out
  65. if (!m_bWeaponOut)
  66. {
  67. return true;
  68. }
  69. }
  70. return false;
  71. }
  72. //-----------------------------------------------------------------------------
  73. // Purpose:
  74. // Output : int
  75. //-----------------------------------------------------------------------------
  76. int CAI_HolsterBehavior::SelectSchedule()
  77. {
  78. return BaseClass::SelectSchedule();
  79. }
  80. AI_BEGIN_CUSTOM_SCHEDULE_PROVIDER( CAI_HolsterBehavior )
  81. DECLARE_TASK( TASK_HOLSTER_WEAPON )
  82. DECLARE_TASK( TASK_DRAW_WEAPON )
  83. // DECLARE_CONDITION( COND_ )
  84. //=========================================================
  85. //=========================================================
  86. DEFINE_SCHEDULE
  87. (
  88. SCHED_HOLSTER_WEAPON,
  89. " Tasks"
  90. " TASK_STOP_MOVING 0"
  91. " TASK_HOLSTER_WEAPON 0"
  92. " "
  93. " Interrupts"
  94. )
  95. DEFINE_SCHEDULE
  96. (
  97. SCHED_DRAW_WEAPON,
  98. " Tasks"
  99. " TASK_STOP_MOVING 0"
  100. " TASK_DRAW_WEAPON 0"
  101. " "
  102. " Interrupts"
  103. )
  104. AI_END_CUSTOM_SCHEDULE_PROVIDER()