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.
48 lines
1.5 KiB
48 lines
1.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: AI system that makes NPCs verbally respond to game events |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef AI_EVENTRESPONSE_H |
|
#define AI_EVENTRESPONSE_H |
|
|
|
#include "utldict.h" |
|
|
|
#define NPCEVENTRESPONSE_DISTANCE_SQR (768 * 768) // Maximum distance for responding to NPCs |
|
#define NPCEVENTRESPONSE_REFIRE_TIME 15.0 // Time after giving a response before giving any more |
|
#define NPCEVENTRESPONSE_GIVEUP_TIME 4.0 // Time after a response trigger was fired before discarding it without responding |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: AI system that makes NPCs verbally respond to game events |
|
//----------------------------------------------------------------------------- |
|
class CNPCEventResponseSystem : public CAutoGameSystemPerFrame |
|
{ |
|
public: |
|
CNPCEventResponseSystem( char const *name ) : CAutoGameSystemPerFrame( name ) |
|
{ |
|
} |
|
|
|
void LevelInitPreEntity(); |
|
void FrameUpdatePreEntityThink(); |
|
void TriggerEvent( const char *pResponse, bool bForce, bool bCancelScript ); |
|
|
|
private: |
|
float m_flNextEventPoll; |
|
|
|
struct storedevent_t |
|
{ |
|
float flEventTime; |
|
float flNextResponseTime; |
|
bool bForce; |
|
bool bCancelScript; |
|
bool bPreventExpiration; |
|
}; |
|
|
|
typedef CUtlDict< storedevent_t, int > EventMap; |
|
EventMap m_ActiveEvents; |
|
}; |
|
|
|
CNPCEventResponseSystem *NPCEventResponse(); |
|
|
|
#endif // AI_EVENTRESPONSE_H
|