//============ Copyright (c) Valve Corporation, All rights reserved. ============ // // // //=============================================================================== #ifndef IASW_SPAWN_SELECTION_H #define IASW_SPAWN_SELECTION_H #ifdef _WIN32 #pragma once #endif #include "tier1/strtools.h" #include "mathlib/vector.h" class IASWSpawnDefinitionEntry; // NOTE: Text version of these enum types is in asw_spawn_selection.cpp! enum { ASW_NPC_SPAWN_TYPE_INVALID = -1, ASW_NPC_SPAWN_TYPE_ANY = 0, ASW_NPC_SPAWN_TYPE_FIXED = 1, ASW_NPC_SPAWN_TYPE_WANDERER, ASW_NPC_SPAWN_TYPE_SWARM, ASW_NPC_SPAWN_TYPE_BOSS, ASW_NPC_SPAWN_TYPE_PROP, ASW_NPC_SPAWN_TYPE_ARENAWAVE, ASW_NPC_SPAWN_TYPE_CONSOLE, ASW_NPC_SPAWN_TYPE_SPAWNER, ASW_NPC_SPAWN_TYPE_BIFURCATE, ASW_NPC_SPAWN_TYPE_SPECIAL1, ASW_NPC_SPAWN_TYPE_SPECIAL2, // Has to be last. ASW_NPC_SPAWN_TYPE_COUNT }; class IASWSpawnDefinitionEntry { public: virtual const char *GetNPCClassname() = 0; virtual void GetSpawnCountRange( int &nMin, int &nMax ) = 0; virtual float GetEliteNPCChance( void ) = 0; virtual bool UseSpawners() = 0; }; class IASWSpawnDefinition { public: virtual int GetEntryCount() = 0; virtual IASWSpawnDefinitionEntry *GetEntry( int nEntry ) = 0; }; class IASWSpawnSelection { public: virtual IASWSpawnDefinition *GetSpawnDefinition( int nSpawnType ) = 0; virtual bool IsAvailableNPC( const char *szName ) = 0; virtual void SetCurrentSpawnSet( int iMissionDifficulty ) = 0; virtual bool SetCurrentSpawnSet( const char *szSetName ) = 0; virtual void DumpCurrentSpawnSet() = 0; }; // fixed spawn encounter in the mission class IASW_Encounter { public: virtual const Vector& GetEncounterPosition() = 0; virtual int GetNumSpawnDefs() = 0; virtual IASWSpawnDefinition* GetSpawnDef( int i ) = 0; virtual float GetEncounterRadius() = 0; }; #endif // IASW_SPAWN_SELECTION_H