//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef _INCLUDED_ASW_MARINE_HINT_H #define _INCLUDED_ASW_MARINE_HINT_H #ifdef _WIN32 #pragma once #endif #include "igamesystem.h" #include "ai_initutils.h" class CASW_Marine_Hint_Ent : public CServerOnlyEntity { DECLARE_CLASS( CASW_Marine_Hint_Ent, CServerOnlyEntity ); public: DECLARE_DATADESC(); virtual void Spawn(); }; class CASW_Marine_Hint_Node_Ent : public CNodeEnt { DECLARE_CLASS( CASW_Marine_Hint_Node_Ent, CNodeEnt ); public: DECLARE_DATADESC(); virtual void UpdateOnRemove(); }; class HintData_t { public: const Vector &GetAbsOrigin() { return m_vecPosition; } Vector m_vecPosition; float m_flYaw; int m_nHintIndex; }; //----------------------------------------------------------------------------- // Purpose: Stores positions for the marines to use while following //----------------------------------------------------------------------------- class CASW_Marine_Hint_Manager : protected CAutoGameSystem { typedef CAutoGameSystem BaseClass; public: CASW_Marine_Hint_Manager(); ~CASW_Marine_Hint_Manager(); void Reset(); virtual void LevelInitPreEntity(); virtual void LevelInitPostEntity(); virtual void LevelShutdownPostEntity(); void AddHint( CBaseEntity *pEnt ); int FindHints( const Vector &position, const float flMinDistance, const float flMaxDistance, CUtlVector *pResult ); int GetHintCount() { return m_Hints.Count(); } const Vector& GetHintPosition( int nHint ) { return m_Hints[ nHint ]->m_vecPosition; } float GetHintYaw( int nHint ) { return m_Hints[ nHint ]->m_flYaw; } protected: CUtlVector m_Hints; }; CASW_Marine_Hint_Manager* MarineHintManager(); #define INVALID_HINT_INDEX -1 #endif // _INCLUDED_ASW_MARINE_HINT_H