//========= 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 EventMap; EventMap m_ActiveEvents; }; CNPCEventResponseSystem *NPCEventResponse(); #endif // AI_EVENTRESPONSE_H