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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef AI_BEHAVIOR_POLICE_H
#define AI_BEHAVIOR_POLICE_H
#ifdef _WIN32
#pragma once
#endif
#include "ai_behavior.h"
#include "ai_goal_police.h"
#include "ai_sentence.h"
#define PATROL_RADIUS_RATIO 2.0f
#define POLICE_MAX_WARNINGS 4
class CAI_PolicingBehavior : public CAI_SimpleBehavior { DECLARE_CLASS( CAI_PolicingBehavior, CAI_SimpleBehavior ); public: DECLARE_DATADESC(); CAI_PolicingBehavior();
enum { // Schedules
SCHED_POLICE_RETURN_FROM_HARASS = BaseClass::NEXT_SCHEDULE, SCHED_POLICE_WARN_TARGET, SCHED_POLICE_HARASS_TARGET, SCHED_POLICE_SUPPRESS_TARGET, SCHED_POLICE_FACE_ALONG_GOAL, SCHED_POLICE_TRACK_TARGET, NEXT_SCHEDULE, // Tasks
TASK_POLICE_GET_PATH_TO_HARASS_GOAL = BaseClass::NEXT_TASK, TASK_POLICE_GET_PATH_TO_POLICE_GOAL, TASK_POLICE_FACE_ALONG_GOAL, TASK_POLICE_ANNOUNCE_HARASS, NEXT_TASK, // Conditions
COND_POLICE_TARGET_TOO_CLOSE_HARASS = BaseClass::NEXT_CONDITION, COND_POLICE_TARGET_TOO_CLOSE_SUPPRESS, NEXT_CONDITION, };
virtual const char *GetName() { return "Policing"; }
void Enable( CAI_PoliceGoal *pGoal ); void Disable( void ); bool CanSelectSchedule( void ); void BuildScheduleTestBits( void );
bool IsEnabled( void ) { return m_bEnabled; } bool TargetIsHostile( void );
bool ShouldKnockOutTarget( CBaseEntity *pTarget ); void KnockOutTarget( CBaseEntity *pTarget );
int SelectFailSchedule( int failedSchedule, int failedTask, AI_TaskFailureCode_t taskFailCode ); CBaseEntity *GetGoalTarget( void );
private: void HostSpeakSentence( const char *pSentence, SentencePriority_t nSoundPriority, SentenceCriteria_t nCriteria );
int TranslateSchedule( int scheduleType ); int SelectSchedule( void ); int SelectSuppressSchedule( void ); int SelectHarassSchedule( void ); Activity NPC_TranslateActivity( Activity newActivity ); void GatherConditions( void ); bool OverrideMoveFacing( const AILocalMoveGoal_t &move, float flInterval ); void StartTask( const Task_t *pTask ); void RunTask( const Task_t *pTask ); void AnnouncePolicing( void ); void HostSetBatonState( bool state ); bool HostBatonIsOn( void );
void SetTargetHostileDuration( float time ); bool MaintainGoalPosition( void );
protected:
bool m_bEnabled; bool m_bStartPolicing; float m_flNextHarassTime; float m_flAggressiveTime; int m_nNumWarnings; bool m_bTargetIsHostile; float m_flTargetHostileTime; CHandle<CAI_PoliceGoal> m_hPoliceGoal;
DEFINE_CUSTOM_SCHEDULE_PROVIDER; };
#endif // AI_BEHAVIOR_POLICE_H
|