sqwarmed/sdk_src/public/missionchooser/iasw_spawn_selection.h

82 lines
1.9 KiB
C++

//============ 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