1
0
mirror of https://github.com/alliedmodders/hl2sdk.git synced 2025-09-19 20:16:10 +08:00
Files
hl2sdk/game/server/point_worldtext.cpp
2025-02-19 18:39:00 -05:00

95 lines
3.1 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
#include "cbase.h"
#include "point_worldtext.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
LINK_ENTITY_TO_CLASS(point_worldtext, CPointWorldText);
BEGIN_DATADESC( CPointWorldText )
DEFINE_FIELD( m_szText, FIELD_STRING ),
DEFINE_FIELD( m_colTextColor, FIELD_COLOR32 ),
DEFINE_KEYFIELD( m_flTextSize, FIELD_FLOAT, "textsize" ),
DEFINE_KEYFIELD( m_flTextSpacingX, FIELD_FLOAT, "textspacingX" ),
DEFINE_KEYFIELD( m_flTextSpacingY, FIELD_FLOAT, "textspacingY" ),
DEFINE_KEYFIELD( m_nOrientation, FIELD_INTEGER, "orientation" ),
DEFINE_KEYFIELD( m_nFont, FIELD_INTEGER, "font" ),
DEFINE_KEYFIELD( m_bRainbow, FIELD_BOOLEAN, "rainbow" ),
DEFINE_INPUTFUNC( FIELD_STRING, "SetText", InputSetText ),
DEFINE_INPUTFUNC( FIELD_FLOAT, "SetTextSize", InputSetTextSize ),
DEFINE_INPUTFUNC( FIELD_FLOAT, "SetTextSpacingX", InputSetTextSpacingX ),
DEFINE_INPUTFUNC( FIELD_FLOAT, "SetTextSpacingY", InputSetTextSpacingY ),
DEFINE_INPUTFUNC( FIELD_COLOR32, "SetColor", InputSetColor ),
DEFINE_INPUTFUNC( FIELD_INTEGER, "SetOrientation", InputSetOrientation ),
DEFINE_INPUTFUNC( FIELD_INTEGER, "SetFont", InputSetFont ),
DEFINE_INPUTFUNC( FIELD_BOOLEAN, "SetRainbow", InputSetRainbow ),
END_DATADESC()
IMPLEMENT_SERVERCLASS_ST( CPointWorldText, DT_PointWorldText )
SendPropString( SENDINFO( m_szText ) ),
SendPropInt( SENDINFO( m_colTextColor ), 32, SPROP_UNSIGNED ),
SendPropFloat( SENDINFO( m_flTextSize ) ),
SendPropFloat( SENDINFO( m_flTextSpacingX ) ),
SendPropFloat( SENDINFO( m_flTextSpacingY ) ),
SendPropInt( SENDINFO( m_nOrientation ), 3, SPROP_UNSIGNED ),
SendPropInt( SENDINFO( m_nFont ), 16, SPROP_UNSIGNED ),
SendPropBool( SENDINFO( m_bRainbow ) ),
END_SEND_TABLE()
CPointWorldText::CPointWorldText() :
CBaseEntity()
{
V_memset( m_szText.GetForModify(), 0, sizeof( m_szText ) );
color32 tmp = { 255, 255, 255, 255 };
m_colTextColor = tmp;
m_flTextSize = 10.0f;
m_flTextSpacingX = 0.0f;
m_flTextSpacingY = 0.0f;
m_nOrientation = 0;
m_nFont = 0;
m_bRainbow = false;
}
CPointWorldText::~CPointWorldText()
{
}
//------------------------------------------------------------------------------
// Purpose : Send even though we don't have a model
//------------------------------------------------------------------------------
int CPointWorldText::UpdateTransmitState()
{
return SetTransmitState( FL_EDICT_PVSCHECK );
}
bool CPointWorldText::KeyValue( const char *szKeyName, const char *szValue )
{
if ( FStrEq( szKeyName, "message" ) )
{
V_strncpy( m_szText.GetForModify(), szValue, sizeof(m_szText) );
return true;
}
if ( FStrEq( szKeyName, "color" ) )
{
int r = 255, g = 255, b = 255, a = 255;
int nCount = sscanf( szValue, "%d %d %d %d", &r, &g, &b, &a );
color32 color = { (byte)r, (byte)g, (byte)b, (byte)a };
byte* pColor = &color.r;
for (int i = nCount; i < 4; i++)
pColor[i] = 255;
m_colTextColor = color;
return true;
}
return BaseClass::KeyValue( szKeyName, szValue );
}
void CPointWorldText::Spawn( void )
{
Precache();
SetSolid( SOLID_NONE );
BaseClass::Spawn();
}