84 lines
2.3 KiB
C++
84 lines
2.3 KiB
C++
#ifndef _INCLUDED_ASW_BASE_SPAWNER_H
|
|
#define _INCLUDED_ASW_BASE_SPAWNER_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "cbase.h"
|
|
#include "iasw_spawnable_npc.h"
|
|
#include "asw_shareddefs.h"
|
|
|
|
class CASW_Alien;
|
|
class CASW_Buzzer;
|
|
class IASW_Spawnable_NPC;
|
|
|
|
//===============================================
|
|
// Base alien spawner
|
|
//===============================================
|
|
class CASW_Base_Spawner : public CBaseEntity
|
|
{
|
|
public:
|
|
DECLARE_CLASS( CASW_Base_Spawner, CBaseEntity );
|
|
DECLARE_DATADESC();
|
|
|
|
CASW_Base_Spawner();
|
|
virtual ~CASW_Base_Spawner();
|
|
|
|
virtual void Spawn();
|
|
virtual void Precache();
|
|
|
|
virtual IASW_Spawnable_NPC* SpawnAlien( const char *szAlienClassName, const Vector &vecHullMins, const Vector &vecHullMaxs );
|
|
void RemoveObstructingProps( CBaseEntity *pChild );
|
|
virtual bool CanSpawn( const Vector &vecHullMins, const Vector &vecHullMaxs );
|
|
CBaseEntity* GetOrderTarget();
|
|
bool MoveSpawnableTo(IASW_Spawnable_NPC* pAlien, CBaseEntity* pGoalEnt, bool bIgnoreMarines);
|
|
|
|
virtual void AlienKilled( CBaseEntity *pVictim ) { }
|
|
|
|
CBaseEntity* GetAlienOrderTarget();
|
|
|
|
bool IsValidOnThisSkillLevel();
|
|
bool HasRecentlySpawned( float flRecent = 1.0f );
|
|
bool IsEnabled() { return m_bEnabled; }
|
|
|
|
// inputs
|
|
virtual void InputEnable( inputdata_t &inputdata );
|
|
virtual void InputDisable( inputdata_t &inputdata );
|
|
virtual void InputToggleEnabled( inputdata_t &inputdata );
|
|
|
|
protected:
|
|
// spawn if a marine is inside this radius or not?
|
|
bool m_bSpawnIfMarinesAreNear;
|
|
float m_flNearDistance;
|
|
|
|
// burrowing
|
|
string_t m_UnburrowIdleActivity;
|
|
string_t m_UnburrowActivity;
|
|
bool m_bStartBurrowed;
|
|
|
|
// skill level
|
|
int m_iMinSkillLevel;
|
|
int m_iMaxSkillLevel;
|
|
|
|
// give the alien this order when it spawns
|
|
AlienOrder_t m_AlienOrders;
|
|
string_t m_AlienOrderTargetName; // name of our moveto target
|
|
string_t m_AlienName; // name given to spawned aliens
|
|
EHANDLE m_hAlienOrderTarget;
|
|
|
|
// outputs
|
|
COutputEvent m_OnSpawned;
|
|
|
|
bool m_bLongRangeNPC; // NPC can see twice as far?
|
|
bool m_bCheckSpawnIsClear;
|
|
int m_iMoveAsideCount;
|
|
float m_flLastSpawnTime;
|
|
|
|
bool m_bEnabled;
|
|
};
|
|
|
|
#define ASW_SF_ALWAYS_INFINITE 1
|
|
#define ASW_SF_NO_UBER 2
|
|
#define ASW_SF_NEVER_SLEEP 4
|
|
|
|
#endif /* _INCLUDED_ASW_BASE_SPAWNER_H */ |