You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.5 KiB
100 lines
2.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// tf_bot_generator.h |
|
// Entity to spawn a collection of TFBots |
|
// Michael Booth, September 2009 |
|
|
|
#ifndef TF_BOT_GENERATOR_H |
|
#define TF_BOT_GENERATOR_H |
|
|
|
#include "bot/tf_bot.h" |
|
|
|
|
|
class CTFBotGenerator : public CPointEntity |
|
{ |
|
public: |
|
DECLARE_CLASS( CTFBotGenerator, CPointEntity ); |
|
DECLARE_DATADESC(); |
|
|
|
CTFBotGenerator( void ); |
|
virtual ~CTFBotGenerator() { } |
|
|
|
virtual void Activate(); |
|
|
|
void GeneratorThink( void ); |
|
void SpawnBot( void ); |
|
|
|
// Input. |
|
void InputEnable( inputdata_t &inputdata ); |
|
void InputDisable( inputdata_t &inputdata ); |
|
void InputSetSuppressFire( inputdata_t &inputdata ); |
|
void InputSetDisableDodge( inputdata_t &inputdata ); |
|
void InputSetDifficulty( inputdata_t &inputdata ); |
|
void InputCommandGotoActionPoint( inputdata_t &inputdata ); |
|
void InputSetAttentionFocus( inputdata_t &inputdata ); |
|
void InputClearAttentionFocus( inputdata_t &inputdata ); |
|
void InputSpawnBot( inputdata_t &inputdata ); |
|
void InputRemoveBots( inputdata_t &inputdata ); |
|
|
|
// Output |
|
void OnBotKilled( CTFBot *pBot ); |
|
|
|
private: |
|
bool m_bBotChoosesClass; |
|
bool m_bSuppressFire; |
|
bool m_bDisableDodge; |
|
bool m_bUseTeamSpawnpoint; |
|
bool m_bRetainBuildings; |
|
bool m_bExpended; |
|
int m_iOnDeathAction; |
|
int m_spawnCount; |
|
int m_spawnCountRemaining; |
|
int m_maxActiveCount; |
|
float m_spawnInterval; |
|
string_t m_className; |
|
string_t m_teamName; |
|
string_t m_actionPointName; |
|
string_t m_initialCommand; |
|
CHandle< CBaseEntity > m_moveGoal; |
|
int m_difficulty; |
|
bool m_bSpawnOnlyWhenTriggered; |
|
bool m_bEnabled; |
|
|
|
COutputEvent m_onSpawned; |
|
COutputEvent m_onExpended; |
|
COutputEvent m_onBotKilled; |
|
|
|
CUtlVector< CHandle< CTFBot > > m_spawnedBotVector; |
|
}; |
|
|
|
//--------------------------------------------------------------- |
|
// |
|
// Bot generator may have one of these as an argument, which |
|
// means "tell the bot I created to move here and do what this node says". |
|
// Things like "stay here", "move to <next task point>", "face towards <X>", "shoot at <Y>", etc |
|
// |
|
class CTFBotActionPoint : public CPointEntity |
|
{ |
|
DECLARE_CLASS( CTFBotActionPoint, CPointEntity ); |
|
public: |
|
DECLARE_DATADESC(); |
|
|
|
CTFBotActionPoint( void ); |
|
virtual ~CTFBotActionPoint() { } |
|
|
|
virtual void Activate(); |
|
|
|
bool IsWithinRange( CBaseEntity *entity ); |
|
void ReachedActionPoint( CTFBot* pBot ); |
|
|
|
CHandle< CBaseEntity > m_moveGoal; |
|
|
|
// reflected |
|
float m_stayTime; |
|
float m_desiredDistance; |
|
string_t m_nextActionPointName; |
|
string_t m_command; |
|
|
|
COutputEvent m_onReachedActionPoint; |
|
}; |
|
|
|
#endif // TF_BOT_GENERATOR_H
|
|
|