mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-09-01 15:09:19 +00:00
upload "kind" alien swarm
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
#ifndef _INCLUDED_ASW_BARREL_EXPLOSIVE_H
|
||||
#define _INCLUDED_ASW_BARREL_EXPLOSIVE_H
|
||||
#pragma once
|
||||
|
||||
#include "props.h"
|
||||
#include "asw_prop_physics.h"
|
||||
#include "asw_shareddefs.h"
|
||||
|
||||
// experimental tech to make explosive barrels detonate one after another,
|
||||
// rather than all in one frame.
|
||||
class CDeferredExplosionQueue;
|
||||
|
||||
/// number of minimum seconds between explosions
|
||||
#define ASW_EXPLODING_PROP_INTERVAL (1.0/6.0)
|
||||
|
||||
/// one thing of this type is allowed to explode per frame.
|
||||
/// the rest enqueue themselves. It used to be a standalone
|
||||
/// IQueuedExplodable interface from which any entity could
|
||||
/// inherit, but that became problematic because if a class
|
||||
/// inherits from both CBaseEntity and an interface IFoo,
|
||||
/// there's no way to go from an EHANDLE to an (IFoo *)
|
||||
/// We can go back that route if eventually we want to blow
|
||||
/// up something that is not a prop_physics.
|
||||
class CASW_Exploding_Prop : public CASW_Prop_Physics
|
||||
{
|
||||
protected:
|
||||
/// enqueue this object to be exploded. It may explode immediately if nothing else is queued.
|
||||
/// "explode" means it'll call the Explode() function.
|
||||
/// You can pass along the CDamageInfo that caused the explosion if you need it for ExplodeNow later
|
||||
void QueueForExplode( const CTakeDamageInfo &damageInfo = CTakeDamageInfo() );
|
||||
/// inheritors must implement this. The queue will call this when it wants you to explode this frame.
|
||||
virtual void ExplodeNow( const CTakeDamageInfo &damageInfo ) = 0;
|
||||
|
||||
friend class CDeferredExplosionQueue;
|
||||
};
|
||||
|
||||
|
||||
class CASW_Barrel_Explosive : public CASW_Exploding_Prop
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( CASW_Barrel_Explosive, CASW_Prop_Physics );
|
||||
DECLARE_DATADESC();
|
||||
|
||||
CASW_Barrel_Explosive();
|
||||
virtual void Spawn( void );
|
||||
virtual void Precache( void );
|
||||
|
||||
virtual int OnTakeDamage( const CTakeDamageInfo &info );
|
||||
virtual void Event_Killed( const CTakeDamageInfo &info );
|
||||
virtual void DoExplosion( void );
|
||||
|
||||
virtual void OnDifficultyChanged( int iDifficulty );
|
||||
virtual void InitHealth();
|
||||
|
||||
// Classification
|
||||
virtual Class_T Classify( void ) { return (Class_T) CLASS_ASW_EXPLOSIVE_BARREL; }
|
||||
|
||||
protected:
|
||||
// from CASW_Exploding_Prop:
|
||||
virtual void ExplodeNow( const CTakeDamageInfo &info );
|
||||
|
||||
int m_iExplosionDamage;
|
||||
EHANDLE m_hAttacker;
|
||||
};
|
||||
|
||||
|
||||
#endif /* _INCLUDED_ASW_BARREL_EXPLOSIVE_H */
|
||||
Reference in New Issue
Block a user