cstrike15_src/game/shared/cstrike15/smokegrenade_projectile.h
2025-06-04 03:22:50 +02:00

87 lines
2.1 KiB
C++

//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef SMOKEGRENADE_PROJECTILE_H
#define SMOKEGRENADE_PROJECTILE_H
#ifdef _WIN32
#pragma once
#endif
#include "basecsgrenade_projectile.h"
#if defined( CLIENT_DLL )
class C_SmokeGrenadeProjectile : public C_BaseCSGrenadeProjectile
{
public:
DECLARE_CLASS( C_SmokeGrenadeProjectile, C_BaseCSGrenadeProjectile );
DECLARE_NETWORKCLASS();
C_SmokeGrenadeProjectile() {}
virtual ~C_SmokeGrenadeProjectile();
virtual void PostDataUpdate( DataUpdateType_t updateType ) OVERRIDE;
virtual void OnDataChanged( DataUpdateType_t updateType ) OVERRIDE;
virtual GrenadeType_t GetGrenadeType( void ) { return GRENADE_TYPE_SMOKE; }
void SpawnSmokeEffect();
CNetworkVar( int, m_nSmokeEffectTickBegin );
CNetworkVar( bool, m_bDidSmokeEffect );
bool m_bSmokeEffectSpawned;
};
#else // GAME_DLL
class CSmokeGrenadeProjectile : public CBaseCSGrenadeProjectile
{
public:
DECLARE_CLASS( CSmokeGrenadeProjectile, CBaseCSGrenadeProjectile );
DECLARE_NETWORKCLASS();
public:
DECLARE_DATADESC();
// Overrides.
public:
virtual void Spawn();
virtual void Precache();
virtual void Detonate();
virtual void OnBounced( void );
virtual void BounceSound( void );
void Think_Detonate();
void Think_Fade();
void Think_Remove();
void SmokeDetonate( void );
void RemoveGrenadeFromLists( void );
virtual GrenadeType_t GetGrenadeType( void ) { return GRENADE_TYPE_SMOKE; }
virtual int UpdateTransmitState() { return SetTransmitState( FL_EDICT_ALWAYS ); }
// Grenade stuff.
public:
static CSmokeGrenadeProjectile* Create(
const Vector &position,
const QAngle &angles,
const Vector &velocity,
const AngularImpulse &angVelocity,
CBaseCombatCharacter *pOwner,
const CCSWeaponInfo& weaponInfo );
void SetTimer( float timer );
CNetworkVar( int, m_nSmokeEffectTickBegin );
CNetworkVar( bool, m_bDidSmokeEffect );
Vector m_vSmokeColor;
float m_flLastBounce;
};
#endif // GAME_DLL
#endif // SMOKEGRENADE_PROJECTILE_H