mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
// NextBotCombatCharacter.h
|
||||
// Next generation bot system
|
||||
// Author: Michael Booth, April 2005
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
|
||||
#ifndef _NEXT_BOT_H_
|
||||
#define _NEXT_BOT_H_
|
||||
|
||||
#include "NextBotInterface.h"
|
||||
#include "NextBotManager.h"
|
||||
|
||||
#ifdef TERROR
|
||||
#include "player_lagcompensation.h"
|
||||
#endif
|
||||
|
||||
class NextBotCombatCharacter;
|
||||
struct animevent_t;
|
||||
|
||||
extern ConVar NextBotStop;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------
|
||||
//----------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* A Next Bot derived from CBaseCombatCharacter
|
||||
*/
|
||||
class NextBotCombatCharacter : public CBaseCombatCharacter, public INextBot
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( NextBotCombatCharacter, CBaseCombatCharacter );
|
||||
DECLARE_SERVERCLASS();
|
||||
DECLARE_DATADESC();
|
||||
|
||||
NextBotCombatCharacter( void );
|
||||
virtual ~NextBotCombatCharacter() { }
|
||||
|
||||
virtual void Spawn( void );
|
||||
|
||||
virtual Vector EyePosition( void );
|
||||
|
||||
virtual INextBot *MyNextBotPointer( void ) { return this; }
|
||||
|
||||
// Event hooks into NextBot system ---------------------------------------
|
||||
virtual int OnTakeDamage_Alive( const CTakeDamageInfo &info );
|
||||
virtual int OnTakeDamage_Dying( const CTakeDamageInfo &info );
|
||||
virtual void Event_Killed( const CTakeDamageInfo &info );
|
||||
virtual void HandleAnimEvent( animevent_t *event );
|
||||
virtual void OnNavAreaChanged( CNavArea *enteredArea, CNavArea *leftArea ); // invoked (by UpdateLastKnownArea) when we enter a new nav area (or it is reset to NULL)
|
||||
virtual void Touch( CBaseEntity *other );
|
||||
virtual void SetModel( const char *szModelName );
|
||||
virtual void Ignite( float flFlameLifetime, bool bNPCOnly = true, float flSize = 0.0f, bool bCalledByLevelDesigner = false );
|
||||
virtual void Ignite( float flFlameLifetime, CBaseEntity *pAttacker );
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
virtual bool IsUseableEntity( CBaseEntity *entity, unsigned int requiredCaps = 0 );
|
||||
void UseEntity( CBaseEntity *entity, USE_TYPE useType = USE_TOGGLE );
|
||||
|
||||
// Implement this if you use MOVETYPE_CUSTOM
|
||||
virtual void PerformCustomPhysics( Vector *pNewPosition, Vector *pNewVelocity, QAngle *pNewAngles, QAngle *pNewAngVelocity );
|
||||
|
||||
virtual bool BecomeRagdoll( const CTakeDamageInfo &info, const Vector &forceVector );
|
||||
|
||||
// hook to INextBot update
|
||||
void DoThink( void );
|
||||
|
||||
// expose to public
|
||||
int GetLastHitGroup( void ) const; // where on our body were we injured last
|
||||
|
||||
virtual bool IsAreaTraversable( const CNavArea *area ) const; // return true if we can use the given area
|
||||
|
||||
virtual CBaseCombatCharacter *GetLastAttacker( void ) const; // return the character who last attacked me
|
||||
|
||||
// begin INextBot public interface ----------------------------------------------------------------
|
||||
virtual NextBotCombatCharacter *GetEntity( void ) const { return const_cast< NextBotCombatCharacter * >( this ); }
|
||||
virtual NextBotCombatCharacter *GetNextBotCombatCharacter( void ) const { return const_cast< NextBotCombatCharacter * >( this ); }
|
||||
|
||||
|
||||
private:
|
||||
EHANDLE m_lastAttacker;
|
||||
|
||||
bool m_didModelChange;
|
||||
};
|
||||
|
||||
|
||||
inline CBaseCombatCharacter *NextBotCombatCharacter::GetLastAttacker( void ) const
|
||||
{
|
||||
return ( m_lastAttacker.Get() == NULL ) ? NULL : m_lastAttacker->MyCombatCharacterPointer();
|
||||
}
|
||||
|
||||
inline int NextBotCombatCharacter::GetLastHitGroup( void ) const
|
||||
{
|
||||
return LastHitGroup();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
class NextBotDestroyer
|
||||
{
|
||||
public:
|
||||
NextBotDestroyer( int team );
|
||||
bool operator() ( INextBot *bot );
|
||||
int m_team; // the team to delete bots from, or TEAM_ANY for any team
|
||||
};
|
||||
|
||||
#endif // _NEXT_BOT_H_
|
||||
Reference in New Issue
Block a user