Counter Strike : Global Offensive Source Code
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.
|
|
//========= Copyright � 1996-2005, Valve LLC, All rights reserved. ============
//
//=============================================================================
#ifndef BASEMULTIPLAYERPLAYER_H
#define BASEMULTIPLAYERPLAYER_H
#pragma once
#include "ai_speech.h"
class CBasePlayer;
enum SpeechPriorityType { SPEECH_PRIORITY_LOW, SPEECH_PRIORITY_NORMAL, SPEECH_PRIORITY_MANUAL, SPEECH_PRIORITY_UNINTERRUPTABLE, }; //-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class CBaseMultiplayerPlayer : public CAI_ExpresserHost<CBasePlayer> {
DECLARE_CLASS( CBaseMultiplayerPlayer, CAI_ExpresserHost<CBasePlayer> ); DECLARE_ENT_SCRIPTDESC();
public:
CBaseMultiplayerPlayer(); ~CBaseMultiplayerPlayer();
virtual void Spawn( void );
virtual void PostConstructor( const char *szClassname ); virtual void ModifyOrAppendCriteria( AI_CriteriaSet& criteriaSet );
virtual bool SpeakIfAllowed( AIConcept_t concept, SpeechPriorityType priority, const char *modifiers = NULL, char *pszOutResponseChosen = NULL, size_t bufsize = 0, IRecipientFilter *filter = NULL ); void SpeakConcept( AI_Response &outresponse, int iConcept ); virtual bool SpeakConceptIfAllowed( int iConcept, const char *modifiers = NULL, char *pszOutResponseChosen = NULL, size_t bufsize = 0, IRecipientFilter *filter = NULL );
virtual bool CanHearAndReadChatFrom( CBasePlayer *pPlayer ); virtual bool CanSpeak( void ) { return true; }
virtual void Precache( void ) { #if !defined( DOTA_DLL ) && !defined( PORTAL2 )
PrecacheParticleSystem( "achieved" ); #endif
BaseClass::Precache(); }
virtual bool ClientCommand( const CCommand &args );
virtual bool CanSpeakVoiceCommand( void ) { return true; } virtual bool ShouldShowVoiceSubtitleToEnemy( void ); virtual void NoteSpokeVoiceCommand( const char *pszScenePlayed ) {}
virtual void OnAchievementEarned( int iAchievement ) {}
enum ChatIgnore { CHAT_IGNORE_NONE = 0, CHAT_IGNORE_BROADCAST, CHAT_IGNORE_BROADCAST_AND_TEAM, CHAT_IGNORE_EVERYTHING, };
int m_iIgnoreGlobalChat;
//---------------------------------
// Speech support
virtual CAI_Expresser *GetExpresser() { return m_pExpresser; } virtual CMultiplayer_Expresser *GetMultiplayerExpresser() { return m_pExpresser; }
void SetLastForcedChangeTeamTimeToNow( void ) { m_flLastForcedChangeTeamTime = gpGlobals->curtime; } float GetLastForcedChangeTeamTime( void ) { return m_flLastForcedChangeTeamTime; }
void SetTeamBalanceScore( int iScore ) { m_iBalanceScore = iScore; } int GetTeamBalanceScore( void ) { return m_iBalanceScore; }
virtual int CalculateTeamBalanceScore( void );
virtual void AwardAchievement( int iAchievement, int iCount = 1 ); int GetPerLifeCounterKV( const char *name ); void SetPerLifeCounterKV( const char *name, int value ); void ResetPerLifeCounters( void );
KeyValues *GetPerLifeCounterKeys( void ) { return m_pAchievementKV; }
void EscortScoringThink( void ); void StartScoringEscortPoints( float flRate ); void StopScoringEscortPoints( void ); float m_flAreaCaptureScoreAccumulator; float m_flCapPointScoreRate;
float GetConnectionTime( void ) { return m_flConnectionTime; }
#if !defined(NO_STEAM)
//----------------------------
// Steam handling
bool GetSteamID( CSteamID *pID ) const; uint64 GetSteamIDAsUInt64( void ) const; #endif
protected: virtual CAI_Expresser *CreateExpresser( void );
int m_iCurrentConcept; private: //---------------------------------
CMultiplayer_Expresser *m_pExpresser;
float m_flConnectionTime; float m_flLastForcedChangeTeamTime;
int m_iBalanceScore; // a score used to determine which players are switched to balance the teams
KeyValues *m_pAchievementKV; };
//-----------------------------------------------------------------------------
// Inline methods
//-----------------------------------------------------------------------------
inline CBaseMultiplayerPlayer *ToBaseMultiplayerPlayer( CBaseEntity *pEntity ) { if ( !pEntity || !pEntity->IsPlayer() ) return NULL; #if _DEBUG
return dynamic_cast<CBaseMultiplayerPlayer *>( pEntity ); #else
return static_cast<CBaseMultiplayerPlayer *>( pEntity ); #endif
}
#endif // BASEMULTIPLAYERPLAYER_H
|