mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-09-01 06:59:20 +00:00
upload "kind" alien swarm
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
#ifndef _INCLUDED_ASW_SPAWNER_H
|
||||
#define _INCLUDED_ASW_SPAWNER_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "asw_base_spawner.h"
|
||||
|
||||
//===============================================
|
||||
// An entity that spawns aliens over time
|
||||
//===============================================
|
||||
class CASW_Spawner : public CASW_Base_Spawner
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( CASW_Spawner, CASW_Base_Spawner );
|
||||
DECLARE_DATADESC();
|
||||
|
||||
CASW_Spawner();
|
||||
virtual ~CASW_Spawner();
|
||||
|
||||
virtual void Spawn();
|
||||
virtual void Precache();
|
||||
virtual void InitAlienClassName();
|
||||
virtual int DrawDebugTextOverlays();
|
||||
|
||||
Class_T Classify() { return (Class_T) CLASS_ASW_SPAWNER; }
|
||||
|
||||
virtual IASW_Spawnable_NPC* SpawnAlien( const char *szAlienClassName, const Vector &vecHullMins, const Vector &vecHullMaxs );
|
||||
virtual bool CanSpawn( const Vector &vecHullMins, const Vector &vecHullMaxs );
|
||||
bool MoveSpawnableTo(IASW_Spawnable_NPC* pAlien, CBaseEntity* pGoalEnt, bool bIgnoreMarines);
|
||||
void SpawnerThink();
|
||||
void SpawnOneAlien();
|
||||
|
||||
// get the hull size for the type of alien we're spawning
|
||||
const Vector& GetAlienMins();
|
||||
const Vector& GetAlienMaxs();
|
||||
|
||||
void SpawnedAllAliens();
|
||||
virtual void AlienKilled( CBaseEntity *pVictim );
|
||||
void MissionStart(); // called by gamerules when mission begins
|
||||
|
||||
bool ApplyCarnageMode( float fScaler, float fInvScaler );
|
||||
|
||||
enum SpawnerState_t
|
||||
{
|
||||
SST_StartSpawningWhenMissionStart,
|
||||
SST_WaitForInputs,
|
||||
SST_Spawning,
|
||||
SST_Finished,
|
||||
};
|
||||
|
||||
void SetSpawnerState( SpawnerState_t newState );
|
||||
|
||||
// inputs
|
||||
void InputSpawnAlien( inputdata_t &inputdata );
|
||||
void InputStartSpawning( inputdata_t &inputdata );
|
||||
void InputStopSpawning( inputdata_t &inputdata );
|
||||
void InputToggleSpawning( inputdata_t &inputdata );
|
||||
|
||||
protected:
|
||||
|
||||
// outputs
|
||||
COutputEvent m_OnAllSpawned;
|
||||
COutputEvent m_OnAllSpawnedDead;
|
||||
|
||||
int m_nMaxLiveAliens; // max number of NPCs that this spawner may have out at one time.
|
||||
int m_nNumAliens; // max number of NPCs that this spawner can create total
|
||||
bool m_bInfiniteAliens;
|
||||
float m_flSpawnInterval; // time between spawns
|
||||
float m_flSpawnIntervalJitter; // fractional variation applied to spawn interval each time to give it some randomness
|
||||
|
||||
int m_AlienClassNum; // integer from choice in Hammer, which sets the classname on Spawn
|
||||
string_t m_AlienClassName; // classname of the NPC(s) that will be created.
|
||||
|
||||
int m_nCurrentLiveAliens; // current number of live aliens
|
||||
|
||||
SpawnerState_t m_SpawnerState;
|
||||
|
||||
};
|
||||
|
||||
// scales up alien amounts (but makes them weaker)
|
||||
void ASW_ApplyCarnage_f(float fScaler);
|
||||
|
||||
#endif /* _INCLUDED_ASW_SPAWNER_H */
|
||||
Reference in New Issue
Block a user