You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.7 KiB
126 lines
3.7 KiB
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#include "cbase.h" |
|
#include "baseanimating.h" |
|
|
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
|
|
class CProp_Hallucination : public CBaseAnimating |
|
{ |
|
public: |
|
DECLARE_CLASS( CProp_Hallucination, CBaseAnimating ); |
|
DECLARE_SERVERCLASS(); |
|
DECLARE_DATADESC(); |
|
|
|
CProp_Hallucination( void ); |
|
virtual void Precache( void ); |
|
virtual void Spawn( void ); |
|
virtual int DrawDebugTextOverlays( void ); |
|
void InputEnable( inputdata_t &inputdata ); |
|
void InputDisable( inputdata_t &inputdata ); |
|
void InputSetVisibleTime( inputdata_t &inputdata ); |
|
void InputSetRechargeTime( inputdata_t &inputdata ); |
|
|
|
CNetworkVar( bool, m_bEnabled ); |
|
float m_fStartEnabledChance; //0.0 - 100.0% chance that this hallucination will start enabled |
|
CNetworkVar( float, m_fVisibleTime ); //how long in seconds this hallucination can remain on screen from first sighting |
|
CNetworkVar( float, m_fRechargeTime ); //how long in seconds it takes the hallucination to recharge before becoming visible again. 0 to disable |
|
}; |
|
|
|
BEGIN_DATADESC( CProp_Hallucination ) |
|
DEFINE_FIELD( m_bEnabled, FIELD_BOOLEAN ), |
|
DEFINE_KEYFIELD( m_fStartEnabledChance, FIELD_FLOAT, "EnabledChance" ), |
|
DEFINE_KEYFIELD( m_fVisibleTime, FIELD_FLOAT, "VisibleTime" ), |
|
DEFINE_KEYFIELD( m_fRechargeTime, FIELD_FLOAT, "RechargeTime" ), |
|
DEFINE_INPUTFUNC( FIELD_VOID, "Enable", InputEnable ), |
|
DEFINE_INPUTFUNC( FIELD_VOID, "Disable", InputDisable ), |
|
DEFINE_INPUTFUNC( FIELD_FLOAT, "SetVisibleTime", InputSetVisibleTime ), |
|
DEFINE_INPUTFUNC( FIELD_FLOAT, "SetRechargeTime", InputSetRechargeTime ), |
|
END_DATADESC() |
|
|
|
IMPLEMENT_SERVERCLASS_ST( CProp_Hallucination, DT_Prop_Hallucination ) |
|
SendPropBool( SENDINFO(m_bEnabled) ), |
|
SendPropFloat( SENDINFO(m_fVisibleTime) ), |
|
SendPropFloat( SENDINFO(m_fRechargeTime) ), |
|
END_SEND_TABLE() |
|
|
|
LINK_ENTITY_TO_CLASS( prop_hallucination, CProp_Hallucination ); |
|
|
|
|
|
CProp_Hallucination::CProp_Hallucination( void ) |
|
{ |
|
} |
|
|
|
void CProp_Hallucination::Precache( void ) |
|
{ |
|
BaseClass::Precache(); |
|
PrecacheModel( m_ModelName.ToCStr() ); |
|
} |
|
|
|
void CProp_Hallucination::Spawn( void ) |
|
{ |
|
Precache(); |
|
BaseClass::Spawn(); |
|
SetModel( m_ModelName.ToCStr() ); |
|
|
|
if( m_fStartEnabledChance > 0.0f ) |
|
{ |
|
m_bEnabled = RandomFloat() <= (m_fStartEnabledChance * 0.01f); |
|
} |
|
} |
|
|
|
void CProp_Hallucination::InputEnable( inputdata_t &inputdata ) |
|
{ |
|
m_bEnabled = true; |
|
} |
|
|
|
void CProp_Hallucination::InputDisable( inputdata_t &inputdata ) |
|
{ |
|
m_bEnabled = false; |
|
} |
|
|
|
void CProp_Hallucination::InputSetVisibleTime( inputdata_t &inputdata ) |
|
{ |
|
m_fVisibleTime = inputdata.value.Float(); |
|
} |
|
|
|
void CProp_Hallucination::InputSetRechargeTime( inputdata_t &inputdata ) |
|
{ |
|
m_fRechargeTime = inputdata.value.Float(); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Draw debug overlays |
|
//----------------------------------------------------------------------------- |
|
int CProp_Hallucination::DrawDebugTextOverlays() |
|
{ |
|
int text_offset = BaseClass::DrawDebugTextOverlays(); |
|
|
|
if (m_debugOverlays & OVERLAY_TEXT_BIT) |
|
{ |
|
char tempstr[255]; |
|
|
|
Q_snprintf( tempstr, sizeof(tempstr), "%s", m_bEnabled ? "Enabled" : "Disabled" ); |
|
EntityText( text_offset++, tempstr, 0 ); |
|
|
|
Q_snprintf( tempstr, sizeof(tempstr), "Start Enabled Chance: %f%%", m_fStartEnabledChance ); |
|
EntityText( text_offset++, tempstr, 0 ); |
|
|
|
Q_snprintf( tempstr, sizeof(tempstr), "Visible Time: %fs", m_fVisibleTime.Get() ); |
|
EntityText( text_offset++, tempstr, 0 ); |
|
|
|
Q_snprintf( tempstr, sizeof(tempstr), "Recharge Time: %fs", m_fRechargeTime.Get() ); |
|
EntityText( text_offset++, tempstr, 0 ); |
|
} |
|
|
|
|
|
return text_offset; |
|
}
|
|
|