aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/server/ai_eventresponse.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/game/server/ai_eventresponse.h')
-rw-r--r--mp/src/game/server/ai_eventresponse.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/mp/src/game/server/ai_eventresponse.h b/mp/src/game/server/ai_eventresponse.h
new file mode 100644
index 00000000..b428e5b4
--- /dev/null
+++ b/mp/src/game/server/ai_eventresponse.h
@@ -0,0 +1,48 @@
+//========= 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 \ No newline at end of file