diff options
Diffstat (limited to 'mp/src/game/server/message_entity.cpp')
| -rw-r--r-- | mp/src/game/server/message_entity.cpp | 382 |
1 files changed, 191 insertions, 191 deletions
diff --git a/mp/src/game/server/message_entity.cpp b/mp/src/game/server/message_entity.cpp index be0428dc..e5bb114b 100644 --- a/mp/src/game/server/message_entity.cpp +++ b/mp/src/game/server/message_entity.cpp @@ -1,191 +1,191 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//=============================================================================//
-
-#include "cbase.h"
-#include "basecombatweapon.h"
-#include "explode.h"
-#include "eventqueue.h"
-#include "gamerules.h"
-#include "ammodef.h"
-#include "in_buttons.h"
-#include "soundent.h"
-#include "ndebugoverlay.h"
-#include "vstdlib/random.h"
-#include "engine/IEngineSound.h"
-#include "game.h"
-
-#include "player.h"
-#include "entitylist.h"
-
-// memdbgon must be the last include file in a .cpp file!!!
-#include "tier0/memdbgon.h"
-
-// Spawnflags
-#define SF_MESSAGE_DISABLED 1
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class CMessageEntity : public CPointEntity
-{
- DECLARE_CLASS( CMessageEntity, CPointEntity );
-
-public:
- void Spawn( void );
- void Activate( void );
- void Think( void );
- void DrawOverlays(void);
-
- virtual void UpdateOnRemove();
-
- void InputEnable( inputdata_t &inputdata );
- void InputDisable( inputdata_t &inputdata );
-
- DECLARE_DATADESC();
-
-protected:
- int m_radius;
- string_t m_messageText;
- bool m_drawText;
- bool m_bDeveloperOnly;
- bool m_bEnabled;
-};
-
-LINK_ENTITY_TO_CLASS( point_message, CMessageEntity );
-
-BEGIN_DATADESC( CMessageEntity )
-
- DEFINE_KEYFIELD( m_radius, FIELD_INTEGER, "radius" ),
- DEFINE_KEYFIELD( m_messageText, FIELD_STRING, "message" ),
- DEFINE_KEYFIELD( m_bDeveloperOnly, FIELD_BOOLEAN, "developeronly" ),
- DEFINE_FIELD( m_drawText, FIELD_BOOLEAN ),
- DEFINE_FIELD( m_bEnabled, FIELD_BOOLEAN ),
-
- // Inputs
- DEFINE_INPUTFUNC( FIELD_VOID, "Enable", InputEnable ),
- DEFINE_INPUTFUNC( FIELD_VOID, "Disable", InputDisable ),
-
-END_DATADESC()
-
-static CUtlVector< CHandle< CMessageEntity > > g_MessageEntities;
-
-//-----------------------------------------
-// Spawn
-//-----------------------------------------
-void CMessageEntity::Spawn( void )
-{
- SetNextThink( gpGlobals->curtime + 0.1f );
- m_drawText = false;
- m_bDeveloperOnly = false;
- m_bEnabled = !HasSpawnFlags( SF_MESSAGE_DISABLED );
- //m_debugOverlays |= OVERLAY_TEXT_BIT; // make sure we always show the text
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-void CMessageEntity::Activate( void )
-{
- BaseClass::Activate();
-
- CHandle< CMessageEntity > h;
- h = this;
- g_MessageEntities.AddToTail( h );
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-void CMessageEntity::UpdateOnRemove()
-{
- BaseClass::UpdateOnRemove();
-
- CHandle< CMessageEntity > h;
- h = this;
- g_MessageEntities.FindAndRemove( h );
-
- BaseClass::UpdateOnRemove();
-}
-
-//-----------------------------------------
-// Think
-//-----------------------------------------
-void CMessageEntity::Think( void )
-{
- SetNextThink( gpGlobals->curtime + 0.1f );
-
- // check for player distance
- CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
-
- if ( !pPlayer || ( pPlayer->GetFlags() & FL_NOTARGET ) )
- return;
-
- Vector worldTargetPosition = pPlayer->EyePosition();
-
- // bail if player is too far away
- if ( (worldTargetPosition - GetAbsOrigin()).Length() > m_radius )
- {
- m_drawText = false;
- return;
- }
-
- // turn on text
- m_drawText = true;
-}
-
-//-------------------------------------------
-//-------------------------------------------
-void CMessageEntity::DrawOverlays(void)
-{
- if ( !m_drawText )
- return;
-
- if ( m_bDeveloperOnly && !g_pDeveloper->GetInt() )
- return;
-
- if ( !m_bEnabled )
- return;
-
- // display text if they are within range
- char tempstr[512];
- Q_snprintf( tempstr, sizeof(tempstr), "%s", STRING(m_messageText) );
- EntityText( 0, tempstr, 0);
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-void CMessageEntity::InputEnable( inputdata_t &inputdata )
-{
- m_bEnabled = true;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-void CMessageEntity::InputDisable( inputdata_t &inputdata )
-{
- m_bEnabled = false;
-}
-
-// This is a hack to make point_message stuff appear in developer 0 release builds
-// for now
-void DrawMessageEntities()
-{
- int c = g_MessageEntities.Count();
- for ( int i = c - 1; i >= 0; i-- )
- {
- CMessageEntity *me = g_MessageEntities[ i ];
- if ( !me )
- {
- g_MessageEntities.Remove( i );
- continue;
- }
-
- me->DrawOverlays();
- }
-}
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#include "cbase.h" +#include "basecombatweapon.h" +#include "explode.h" +#include "eventqueue.h" +#include "gamerules.h" +#include "ammodef.h" +#include "in_buttons.h" +#include "soundent.h" +#include "ndebugoverlay.h" +#include "vstdlib/random.h" +#include "engine/IEngineSound.h" +#include "game.h" + +#include "player.h" +#include "entitylist.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +// Spawnflags +#define SF_MESSAGE_DISABLED 1 + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CMessageEntity : public CPointEntity +{ + DECLARE_CLASS( CMessageEntity, CPointEntity ); + +public: + void Spawn( void ); + void Activate( void ); + void Think( void ); + void DrawOverlays(void); + + virtual void UpdateOnRemove(); + + void InputEnable( inputdata_t &inputdata ); + void InputDisable( inputdata_t &inputdata ); + + DECLARE_DATADESC(); + +protected: + int m_radius; + string_t m_messageText; + bool m_drawText; + bool m_bDeveloperOnly; + bool m_bEnabled; +}; + +LINK_ENTITY_TO_CLASS( point_message, CMessageEntity ); + +BEGIN_DATADESC( CMessageEntity ) + + DEFINE_KEYFIELD( m_radius, FIELD_INTEGER, "radius" ), + DEFINE_KEYFIELD( m_messageText, FIELD_STRING, "message" ), + DEFINE_KEYFIELD( m_bDeveloperOnly, FIELD_BOOLEAN, "developeronly" ), + DEFINE_FIELD( m_drawText, FIELD_BOOLEAN ), + DEFINE_FIELD( m_bEnabled, FIELD_BOOLEAN ), + + // Inputs + DEFINE_INPUTFUNC( FIELD_VOID, "Enable", InputEnable ), + DEFINE_INPUTFUNC( FIELD_VOID, "Disable", InputDisable ), + +END_DATADESC() + +static CUtlVector< CHandle< CMessageEntity > > g_MessageEntities; + +//----------------------------------------- +// Spawn +//----------------------------------------- +void CMessageEntity::Spawn( void ) +{ + SetNextThink( gpGlobals->curtime + 0.1f ); + m_drawText = false; + m_bDeveloperOnly = false; + m_bEnabled = !HasSpawnFlags( SF_MESSAGE_DISABLED ); + //m_debugOverlays |= OVERLAY_TEXT_BIT; // make sure we always show the text +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CMessageEntity::Activate( void ) +{ + BaseClass::Activate(); + + CHandle< CMessageEntity > h; + h = this; + g_MessageEntities.AddToTail( h ); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CMessageEntity::UpdateOnRemove() +{ + BaseClass::UpdateOnRemove(); + + CHandle< CMessageEntity > h; + h = this; + g_MessageEntities.FindAndRemove( h ); + + BaseClass::UpdateOnRemove(); +} + +//----------------------------------------- +// Think +//----------------------------------------- +void CMessageEntity::Think( void ) +{ + SetNextThink( gpGlobals->curtime + 0.1f ); + + // check for player distance + CBasePlayer *pPlayer = UTIL_GetLocalPlayer(); + + if ( !pPlayer || ( pPlayer->GetFlags() & FL_NOTARGET ) ) + return; + + Vector worldTargetPosition = pPlayer->EyePosition(); + + // bail if player is too far away + if ( (worldTargetPosition - GetAbsOrigin()).Length() > m_radius ) + { + m_drawText = false; + return; + } + + // turn on text + m_drawText = true; +} + +//------------------------------------------- +//------------------------------------------- +void CMessageEntity::DrawOverlays(void) +{ + if ( !m_drawText ) + return; + + if ( m_bDeveloperOnly && !g_pDeveloper->GetInt() ) + return; + + if ( !m_bEnabled ) + return; + + // display text if they are within range + char tempstr[512]; + Q_snprintf( tempstr, sizeof(tempstr), "%s", STRING(m_messageText) ); + EntityText( 0, tempstr, 0); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CMessageEntity::InputEnable( inputdata_t &inputdata ) +{ + m_bEnabled = true; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CMessageEntity::InputDisable( inputdata_t &inputdata ) +{ + m_bEnabled = false; +} + +// This is a hack to make point_message stuff appear in developer 0 release builds +// for now +void DrawMessageEntities() +{ + int c = g_MessageEntities.Count(); + for ( int i = c - 1; i >= 0; i-- ) + { + CMessageEntity *me = g_MessageEntities[ i ]; + if ( !me ) + { + g_MessageEntities.Remove( i ); + continue; + } + + me->DrawOverlays(); + } +} |