#ifndef CPUSHABLE_H #define CPUSHABLE_H class CPushable : public CBreakable { public: void Spawn ( void ); void Precache( void ); void Touch ( CBaseEntity *pOther ); void Move( CBaseEntity *pMover, int push ); void KeyValue( KeyValueData *pkvd ); void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); void EXPORT StopSound( void ); // virtual void SetActivator( CBaseEntity *pActivator ) { m_pPusher = pActivator; } virtual int ObjectCaps( void ) { return (CBaseEntity :: ObjectCaps() & ~FCAP_ACROSS_TRANSITION) | FCAP_CONTINUOUS_USE; } virtual int Save( CSave &save ); virtual int Restore( CRestore &restore ); inline float MaxSpeed( void ) { return m_maxSpeed; } // breakables use an overridden takedamage virtual int TakeDamage( entvars_t* pevInflictor, entvars_t* pevAttacker, float flDamage, int bitsDamageType ); static TYPEDESCRIPTION m_SaveData[]; static char *m_soundNames[3]; int m_lastSound; // no need to save/restore, just keeps the same sound from playing twice in a row float m_maxSpeed; float m_soundTime; }; #endif