aboutsummaryrefslogtreecommitdiff
path: root/sp/src/game/server/ai_behavior_lead.h
diff options
context:
space:
mode:
authorJørgen P. Tjernø <[email protected]>2013-12-02 19:31:46 -0800
committerJørgen P. Tjernø <[email protected]>2013-12-02 19:46:31 -0800
commitf56bb35301836e56582a575a75864392a0177875 (patch)
treede61ddd39de3e7df52759711950b4c288592f0dc /sp/src/game/server/ai_behavior_lead.h
parentMark some more files as text. (diff)
downloadsource-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz
source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/game/server/ai_behavior_lead.h')
-rw-r--r--sp/src/game/server/ai_behavior_lead.h472
1 files changed, 236 insertions, 236 deletions
diff --git a/sp/src/game/server/ai_behavior_lead.h b/sp/src/game/server/ai_behavior_lead.h
index 67bc5870..d59a87d3 100644
--- a/sp/src/game/server/ai_behavior_lead.h
+++ b/sp/src/game/server/ai_behavior_lead.h
@@ -1,236 +1,236 @@
-//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-//=============================================================================//
-
-#ifndef AI_BEHAVIOR_LEAD_H
-#define AI_BEHAVIOR_LEAD_H
-
-#include "simtimer.h"
-#include "ai_behavior.h"
-
-#if defined( _WIN32 )
-#pragma once
-#endif
-
-typedef const char *AIConcept_t;
-
-// Speak concepts
-#define TLK_LEAD_START "TLK_LEAD_START"
-#define TLK_LEAD_ARRIVAL "TLK_LEAD_ARRIVAL"
-#define TLK_LEAD_SUCCESS "TLK_LEAD_SUCCESS"
-#define TLK_LEAD_FAILURE "lead_fail"
-#define TLK_LEAD_COMINGBACK "TLK_LEAD_COMINGBACK"
-#define TLK_LEAD_CATCHUP "TLK_LEAD_CATCHUP"
-#define TLK_LEAD_RETRIEVE "TLK_LEAD_RETRIEVE"
-#define TLK_LEAD_ATTRACTPLAYER "TLK_LEAD_ATTRACTPLAYER"
-#define TLK_LEAD_WAITOVER "TLK_LEAD_WAITOVER"
-#define TLK_LEAD_MISSINGWEAPON "TLK_LEAD_MISSING_WEAPON"
-#define TLK_LEAD_IDLE "TLK_LEAD_IDLE"
-
-//-----------------------------------------------------------------------------
-// class CAI_LeadBehavior
-//
-// Purpose:
-//
-//-----------------------------------------------------------------------------
-
-enum LeadBehaviorEvents_t
-{
- LBE_ARRIVAL,
- LBE_ARRIVAL_DONE,
- LBE_SUCCESS,
- LBE_FAILURE,
- LBE_DONE,
-};
-
-//-------------------------------------
-//
-// Handler class interface to listen to and modify actions of the lead behavior.
-// Could be an NPC, or another entity (like a goal entity)
-//
-
-class CAI_LeadBehaviorHandler
-{
-public:
- virtual void OnEvent( int event ) {}
- virtual const char *GetConceptModifiers( const char *pszConcept ) { return NULL; }
-};
-
-//-------------------------------------
-
-enum AI_LeadFlags_t
-{
- AILF_NO_DEF_SUCCESS = 0x01,
- AILF_NO_DEF_FAILURE = 0x02,
- AILF_USE_GOAL_FACING = 0x04,
-};
-
-struct AI_LeadArgs_t
-{
- const char *pszGoal;
- const char *pszWaitPoint;
- unsigned flags;
- float flWaitDistance;
- float flLeadDistance;
- float flRetrieveDistance;
- float flSuccessDistance;
- bool bRun;
- int iRetrievePlayer;
- int iRetrieveWaitForSpeak;
- int iComingBackWaitForSpeak;
- bool bStopScenesWhenPlayerLost;
- bool bDontSpeakStart;
- bool bLeadDuringCombat;
- bool bGagLeader;
-
- DECLARE_SIMPLE_DATADESC();
-};
-
-
-class CAI_LeadBehavior : public CAI_SimpleBehavior
-{
- DECLARE_CLASS( CAI_LeadBehavior, CAI_SimpleBehavior );
-public:
- CAI_LeadBehavior()
- : m_pSink(NULL),
- m_LostTimer( 3.0, 4.0 ),
- m_LostLOSTimer( 2.0, 3.0 )
- {
- memset( &m_args, 0, sizeof(m_args) );
- ClearGoal();
- }
-
- virtual void OnRestore();
-
- virtual const char *GetName() { return "Lead"; }
-
- virtual int DrawDebugTextOverlays( int text_offset );
- virtual bool IsNavigationUrgent();
-
- void LeadPlayer( const AI_LeadArgs_t &leadArgs, CAI_LeadBehaviorHandler *pSink = NULL );
- void StopLeading( void );
-
- virtual bool CanSelectSchedule();
- void BeginScheduleSelection();
-
- virtual bool IsCurTaskContinuousMove();
-
- bool SetGoal( const AI_LeadArgs_t &args );
- void ClearGoal() { m_goal = vec3_origin; m_waitpoint = vec3_origin; m_pSink = NULL; m_weaponname = NULL_STRING; }
- bool HasGoal() const { return (m_goal != vec3_origin); }
- bool HasWaitPoint() const { return (m_waitpoint != vec3_origin); }
-
- bool Connect( CAI_LeadBehaviorHandler *);
- bool Disconnect( CAI_LeadBehaviorHandler *);
-
- void SetWaitForWeapon( string_t iszWeaponName ) { m_weaponname = iszWeaponName; m_flWeaponSafetyTimeOut = gpGlobals->curtime + 60; }
-
- enum
- {
- // Schedules
- SCHED_LEAD_PLAYER = BaseClass::NEXT_SCHEDULE,
- SCHED_LEAD_PAUSE,
- SCHED_LEAD_PAUSE_COMBAT,
- SCHED_LEAD_RETRIEVE,
- SCHED_LEAD_RETRIEVE_WAIT,
- SCHED_LEAD_SUCCEED,
- SCHED_LEAD_AWAIT_SUCCESS,
- SCHED_LEAD_WAITFORPLAYER,
- SCHED_LEAD_WAITFORPLAYERIDLE,
- SCHED_LEAD_PLAYERNEEDSWEAPON,
- SCHED_LEAD_SPEAK_START,
- SCHED_LEAD_SPEAK_THEN_RETRIEVE_PLAYER,
- SCHED_LEAD_SPEAK_THEN_LEAD_PLAYER,
- NEXT_SCHEDULE,
-
- // Tasks
- TASK_GET_PATH_TO_LEAD_GOAL = BaseClass::NEXT_TASK,
- TASK_STOP_LEADING,
- TASK_LEAD_FACE_GOAL,
- TASK_LEAD_ARRIVE,
- TASK_LEAD_SUCCEED,
- TASK_LEAD_GET_PATH_TO_WAITPOINT,
- TASK_LEAD_WAVE_TO_PLAYER,
- TASK_LEAD_PLAYER_NEEDS_WEAPON,
- TASK_LEAD_SPEAK_START,
- TASK_LEAD_MOVE_TO_RANGE,
- TASK_LEAD_RETRIEVE_WAIT,
- TASK_LEAD_WALK_PATH,
- NEXT_TASK,
-
- // Conditions
- COND_LEAD_FOLLOWER_LOST = BaseClass::NEXT_CONDITION,
- COND_LEAD_FOLLOWER_LAGGING,
- COND_LEAD_FOLLOWER_NOT_LAGGING,
- COND_LEAD_FOLLOWER_VERY_CLOSE,
- COND_LEAD_SUCCESS,
- COND_LEAD_HAVE_FOLLOWER_LOS,
- COND_LEAD_FOLLOWER_MOVED_FROM_MARK,
- COND_LEAD_FOLLOWER_MOVING_TOWARDS_ME,
- NEXT_CONDITION
-
- };
-
-private:
-
- void GatherConditions();
- virtual int SelectSchedule();
- virtual int TranslateSchedule( int scheduleType );
- virtual void StartTask( const Task_t *pTask );
- virtual void RunTask( const Task_t *pTask );
-
- bool GetClosestPointOnRoute( const Vector &targetPos, Vector *pVecClosestPoint );
- bool PlayerIsAheadOfMe( bool bForce = false );
-
- bool Speak( AIConcept_t concept );
- bool IsSpeaking();
-
- // --------------------------------
- //
- // Sink notifiers. Isolated to limit exposure to actual sink storage,
- // provide debugging pinch pount, and allow for class-local logic
- // in addition to sink logic
- //
- void NotifyEvent( int event ) { if ( m_pSink ) m_pSink->OnEvent( event ) ; }
- const char * GetConceptModifiers( const char *pszConcept ) { return ( m_pSink ) ? m_pSink->GetConceptModifiers( pszConcept ) : NULL; }
-
- // --------------------------------
-
- AI_LeadArgs_t m_args;
- CAI_LeadBehaviorHandler *m_pSink;
- EHANDLE m_hSinkImplementor;
-
- // --------------------------------
-
- Vector m_goal;
- float m_goalyaw;
- Vector m_waitpoint;
- float m_waitdistance;
- float m_leaddistance;
- float m_retrievedistance;
- float m_successdistance;
- string_t m_weaponname;
- bool m_run;
- bool m_gagleader;
- bool m_hasspokenstart;
- bool m_hasspokenarrival;
- bool m_hasPausedScenes;
- float m_flSpeakNextNagTime;
- float m_flWeaponSafetyTimeOut;
- float m_flNextLeadIdle;
- bool m_bInitialAheadTest;
- CAI_MoveMonitor m_MoveMonitor;
-
- CRandStopwatch m_LostTimer;
- CRandStopwatch m_LostLOSTimer;
-
- DEFINE_CUSTOM_SCHEDULE_PROVIDER;
-
- DECLARE_DATADESC();
-};
-
-//-----------------------------------------------------------------------------
-
-#endif // AI_BEHAVIOR_LEAD_H
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef AI_BEHAVIOR_LEAD_H
+#define AI_BEHAVIOR_LEAD_H
+
+#include "simtimer.h"
+#include "ai_behavior.h"
+
+#if defined( _WIN32 )
+#pragma once
+#endif
+
+typedef const char *AIConcept_t;
+
+// Speak concepts
+#define TLK_LEAD_START "TLK_LEAD_START"
+#define TLK_LEAD_ARRIVAL "TLK_LEAD_ARRIVAL"
+#define TLK_LEAD_SUCCESS "TLK_LEAD_SUCCESS"
+#define TLK_LEAD_FAILURE "lead_fail"
+#define TLK_LEAD_COMINGBACK "TLK_LEAD_COMINGBACK"
+#define TLK_LEAD_CATCHUP "TLK_LEAD_CATCHUP"
+#define TLK_LEAD_RETRIEVE "TLK_LEAD_RETRIEVE"
+#define TLK_LEAD_ATTRACTPLAYER "TLK_LEAD_ATTRACTPLAYER"
+#define TLK_LEAD_WAITOVER "TLK_LEAD_WAITOVER"
+#define TLK_LEAD_MISSINGWEAPON "TLK_LEAD_MISSING_WEAPON"
+#define TLK_LEAD_IDLE "TLK_LEAD_IDLE"
+
+//-----------------------------------------------------------------------------
+// class CAI_LeadBehavior
+//
+// Purpose:
+//
+//-----------------------------------------------------------------------------
+
+enum LeadBehaviorEvents_t
+{
+ LBE_ARRIVAL,
+ LBE_ARRIVAL_DONE,
+ LBE_SUCCESS,
+ LBE_FAILURE,
+ LBE_DONE,
+};
+
+//-------------------------------------
+//
+// Handler class interface to listen to and modify actions of the lead behavior.
+// Could be an NPC, or another entity (like a goal entity)
+//
+
+class CAI_LeadBehaviorHandler
+{
+public:
+ virtual void OnEvent( int event ) {}
+ virtual const char *GetConceptModifiers( const char *pszConcept ) { return NULL; }
+};
+
+//-------------------------------------
+
+enum AI_LeadFlags_t
+{
+ AILF_NO_DEF_SUCCESS = 0x01,
+ AILF_NO_DEF_FAILURE = 0x02,
+ AILF_USE_GOAL_FACING = 0x04,
+};
+
+struct AI_LeadArgs_t
+{
+ const char *pszGoal;
+ const char *pszWaitPoint;
+ unsigned flags;
+ float flWaitDistance;
+ float flLeadDistance;
+ float flRetrieveDistance;
+ float flSuccessDistance;
+ bool bRun;
+ int iRetrievePlayer;
+ int iRetrieveWaitForSpeak;
+ int iComingBackWaitForSpeak;
+ bool bStopScenesWhenPlayerLost;
+ bool bDontSpeakStart;
+ bool bLeadDuringCombat;
+ bool bGagLeader;
+
+ DECLARE_SIMPLE_DATADESC();
+};
+
+
+class CAI_LeadBehavior : public CAI_SimpleBehavior
+{
+ DECLARE_CLASS( CAI_LeadBehavior, CAI_SimpleBehavior );
+public:
+ CAI_LeadBehavior()
+ : m_pSink(NULL),
+ m_LostTimer( 3.0, 4.0 ),
+ m_LostLOSTimer( 2.0, 3.0 )
+ {
+ memset( &m_args, 0, sizeof(m_args) );
+ ClearGoal();
+ }
+
+ virtual void OnRestore();
+
+ virtual const char *GetName() { return "Lead"; }
+
+ virtual int DrawDebugTextOverlays( int text_offset );
+ virtual bool IsNavigationUrgent();
+
+ void LeadPlayer( const AI_LeadArgs_t &leadArgs, CAI_LeadBehaviorHandler *pSink = NULL );
+ void StopLeading( void );
+
+ virtual bool CanSelectSchedule();
+ void BeginScheduleSelection();
+
+ virtual bool IsCurTaskContinuousMove();
+
+ bool SetGoal( const AI_LeadArgs_t &args );
+ void ClearGoal() { m_goal = vec3_origin; m_waitpoint = vec3_origin; m_pSink = NULL; m_weaponname = NULL_STRING; }
+ bool HasGoal() const { return (m_goal != vec3_origin); }
+ bool HasWaitPoint() const { return (m_waitpoint != vec3_origin); }
+
+ bool Connect( CAI_LeadBehaviorHandler *);
+ bool Disconnect( CAI_LeadBehaviorHandler *);
+
+ void SetWaitForWeapon( string_t iszWeaponName ) { m_weaponname = iszWeaponName; m_flWeaponSafetyTimeOut = gpGlobals->curtime + 60; }
+
+ enum
+ {
+ // Schedules
+ SCHED_LEAD_PLAYER = BaseClass::NEXT_SCHEDULE,
+ SCHED_LEAD_PAUSE,
+ SCHED_LEAD_PAUSE_COMBAT,
+ SCHED_LEAD_RETRIEVE,
+ SCHED_LEAD_RETRIEVE_WAIT,
+ SCHED_LEAD_SUCCEED,
+ SCHED_LEAD_AWAIT_SUCCESS,
+ SCHED_LEAD_WAITFORPLAYER,
+ SCHED_LEAD_WAITFORPLAYERIDLE,
+ SCHED_LEAD_PLAYERNEEDSWEAPON,
+ SCHED_LEAD_SPEAK_START,
+ SCHED_LEAD_SPEAK_THEN_RETRIEVE_PLAYER,
+ SCHED_LEAD_SPEAK_THEN_LEAD_PLAYER,
+ NEXT_SCHEDULE,
+
+ // Tasks
+ TASK_GET_PATH_TO_LEAD_GOAL = BaseClass::NEXT_TASK,
+ TASK_STOP_LEADING,
+ TASK_LEAD_FACE_GOAL,
+ TASK_LEAD_ARRIVE,
+ TASK_LEAD_SUCCEED,
+ TASK_LEAD_GET_PATH_TO_WAITPOINT,
+ TASK_LEAD_WAVE_TO_PLAYER,
+ TASK_LEAD_PLAYER_NEEDS_WEAPON,
+ TASK_LEAD_SPEAK_START,
+ TASK_LEAD_MOVE_TO_RANGE,
+ TASK_LEAD_RETRIEVE_WAIT,
+ TASK_LEAD_WALK_PATH,
+ NEXT_TASK,
+
+ // Conditions
+ COND_LEAD_FOLLOWER_LOST = BaseClass::NEXT_CONDITION,
+ COND_LEAD_FOLLOWER_LAGGING,
+ COND_LEAD_FOLLOWER_NOT_LAGGING,
+ COND_LEAD_FOLLOWER_VERY_CLOSE,
+ COND_LEAD_SUCCESS,
+ COND_LEAD_HAVE_FOLLOWER_LOS,
+ COND_LEAD_FOLLOWER_MOVED_FROM_MARK,
+ COND_LEAD_FOLLOWER_MOVING_TOWARDS_ME,
+ NEXT_CONDITION
+
+ };
+
+private:
+
+ void GatherConditions();
+ virtual int SelectSchedule();
+ virtual int TranslateSchedule( int scheduleType );
+ virtual void StartTask( const Task_t *pTask );
+ virtual void RunTask( const Task_t *pTask );
+
+ bool GetClosestPointOnRoute( const Vector &targetPos, Vector *pVecClosestPoint );
+ bool PlayerIsAheadOfMe( bool bForce = false );
+
+ bool Speak( AIConcept_t concept );
+ bool IsSpeaking();
+
+ // --------------------------------
+ //
+ // Sink notifiers. Isolated to limit exposure to actual sink storage,
+ // provide debugging pinch pount, and allow for class-local logic
+ // in addition to sink logic
+ //
+ void NotifyEvent( int event ) { if ( m_pSink ) m_pSink->OnEvent( event ) ; }
+ const char * GetConceptModifiers( const char *pszConcept ) { return ( m_pSink ) ? m_pSink->GetConceptModifiers( pszConcept ) : NULL; }
+
+ // --------------------------------
+
+ AI_LeadArgs_t m_args;
+ CAI_LeadBehaviorHandler *m_pSink;
+ EHANDLE m_hSinkImplementor;
+
+ // --------------------------------
+
+ Vector m_goal;
+ float m_goalyaw;
+ Vector m_waitpoint;
+ float m_waitdistance;
+ float m_leaddistance;
+ float m_retrievedistance;
+ float m_successdistance;
+ string_t m_weaponname;
+ bool m_run;
+ bool m_gagleader;
+ bool m_hasspokenstart;
+ bool m_hasspokenarrival;
+ bool m_hasPausedScenes;
+ float m_flSpeakNextNagTime;
+ float m_flWeaponSafetyTimeOut;
+ float m_flNextLeadIdle;
+ bool m_bInitialAheadTest;
+ CAI_MoveMonitor m_MoveMonitor;
+
+ CRandStopwatch m_LostTimer;
+ CRandStopwatch m_LostLOSTimer;
+
+ DEFINE_CUSTOM_SCHEDULE_PROVIDER;
+
+ DECLARE_DATADESC();
+};
+
+//-----------------------------------------------------------------------------
+
+#endif // AI_BEHAVIOR_LEAD_H