mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-14 12:46:58 +00:00
1
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#ifndef TEAM_CONTROL_POINT_H
|
||||
#define TEAM_CONTROL_POINT_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "basemultiplayerplayer.h"
|
||||
|
||||
// Spawnflags
|
||||
#define SF_CAP_POINT_HIDEFLAG (1<<0)
|
||||
#define SF_CAP_POINT_HIDE_MODEL (1<<1)
|
||||
#define SF_CAP_POINT_HIDE_SHADOW (1<<2)
|
||||
#define SF_CAP_POINT_NO_CAP_SOUNDS (1<<3)
|
||||
#define SF_CAP_POINT_BOTS_IGNORE (1<<4)
|
||||
//#define SF_CAP_POINT_NO_ANNOUNCER (1<<4) Unused?
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
class CTeamControlPoint : public CBaseAnimating
|
||||
{
|
||||
DECLARE_CLASS( CTeamControlPoint, CBaseAnimating );
|
||||
public:
|
||||
DECLARE_DATADESC();
|
||||
|
||||
CTeamControlPoint();
|
||||
|
||||
// Derived, game-specific control points must override these functions
|
||||
public:
|
||||
// Used to find game specific entities
|
||||
virtual const char *GetControlPointMasterName( void ) { return "team_control_point_master"; }
|
||||
|
||||
public:
|
||||
virtual void Spawn( void );
|
||||
virtual bool KeyValue( const char *szKeyName, const char *szValue );
|
||||
virtual void Precache( void );
|
||||
virtual int DrawDebugTextOverlays( void );
|
||||
|
||||
//Inputs
|
||||
inline void Enable( inputdata_t &input ) { SetActive( false ); }
|
||||
inline void Disable( inputdata_t &input ) { SetActive( true ); }
|
||||
void InputReset( inputdata_t &input );
|
||||
void InputSetOwner( inputdata_t &input );
|
||||
void InputShowModel( inputdata_t &input );
|
||||
void InputHideModel( inputdata_t &input );
|
||||
void InputRoundActivate( inputdata_t &inputdata );
|
||||
void InputSetLocked( inputdata_t &inputdata );
|
||||
void InputSetUnlockTime( inputdata_t &inputdata );
|
||||
|
||||
// Owner handling
|
||||
void ForceOwner( int iTeam ); // used when selecting a specific round to play
|
||||
void SetOwner( int iCapTeam, bool bMakeSound = true, int iNumCappers = 0, int *iCappingPlayers = NULL );
|
||||
int GetOwner( void ) const;
|
||||
int GetDefaultOwner( void ) const;
|
||||
bool RandomOwnerOnRestart( void ){ return m_bRandomOwnerOnRestart; }
|
||||
|
||||
void SetActive( bool active );
|
||||
inline bool IsActive( void ) { return m_bActive; }
|
||||
void AnimThink( void );
|
||||
|
||||
bool PointIsVisible( void ) { return !( FBitSet( m_spawnflags, SF_CAP_POINT_HIDEFLAG ) ); }
|
||||
|
||||
inline const char *GetName( void ) { return STRING(m_iszPrintName); }
|
||||
int GetCPGroup( void );
|
||||
int GetPointIndex( void ) { return m_iPointIndex; }
|
||||
void SetPointIndex( int index ) { m_iPointIndex = index; }
|
||||
|
||||
int GetWarnOnCap( void ) { return m_iWarnOnCap; }
|
||||
string_t GetWarnSound( void ) { return m_iszWarnSound; }
|
||||
|
||||
int GetTeamIcon( int iTeam );
|
||||
|
||||
int GetCurrentHudIconIndex( void );
|
||||
int GetHudIconIndexForTeam( int iGameTeam );
|
||||
int GetHudOverlayIndexForTeam( int iGameTeam );
|
||||
int GetPreviousPointForTeam( int iGameTeam, int iPrevPoint );
|
||||
|
||||
void SetCappersRequiredForTeam( int iGameTeam, int iCappers );
|
||||
|
||||
void CaptureBlocked( CBaseMultiplayerPlayer *pPlayer, CBaseMultiplayerPlayer *pVictim );
|
||||
|
||||
int PointValue( void );
|
||||
|
||||
bool HasBeenContested( void ) const; // return true if this point has ever been contested, false if the enemy has never contested this point yet
|
||||
float LastContestedAt( void );
|
||||
void SetLastContestedAt( float flTime );
|
||||
|
||||
void UpdateCapPercentage( void );
|
||||
float GetTeamCapPercentage( int iTeam );
|
||||
|
||||
// The specified player took part in capping this point.
|
||||
virtual void PlayerCapped( CBaseMultiplayerPlayer *pPlayer );
|
||||
|
||||
// The specified player blocked the enemy team from capping this point.
|
||||
virtual void PlayerBlocked( CBaseMultiplayerPlayer *pPlayer );
|
||||
|
||||
void CaptureEnd( void );
|
||||
void CaptureStart( int iCapTeam, int iNumCappingPlayers, int *pCappingPlayers );
|
||||
void CaptureInterrupted( bool bBlocked );
|
||||
|
||||
virtual void StopLoopingSounds( void );
|
||||
|
||||
bool IsLocked( void ){ return m_bLocked; }
|
||||
bool ShouldBotsIgnore( void ) { return m_bBotsIgnore; }
|
||||
|
||||
void EXPORT UnlockThink( void );
|
||||
|
||||
private:
|
||||
void SendCapString( int iCapTeam, int iNumCappingPlayers, int *pCappingPlayers );
|
||||
void InternalSetOwner( int iCapTeam, bool bMakeSound = true, int iNumCappers = 0, int *iCappingPlayers = NULL );
|
||||
void HandleScoring( int iTeam );
|
||||
void InternalSetLocked( bool bLocked );
|
||||
|
||||
int m_iTeam;
|
||||
int m_iDefaultOwner; // Team that initially owns the cap point
|
||||
int m_iIndex; // The index of this point in the controlpointArray
|
||||
int m_iWarnOnCap; // Warn the team that owns the control point when the opposing team starts to capture it.
|
||||
string_t m_iszPrintName;
|
||||
string_t m_iszWarnSound; // Sound played if the team needs to be warned about this point being captured
|
||||
bool m_bRandomOwnerOnRestart; // Do we want to randomize the owner after a restart?
|
||||
bool m_bLocked;
|
||||
float m_flUnlockTime; // Time to unlock
|
||||
|
||||
// We store a copy of this data for each team, +1 for the un-owned state.
|
||||
struct perteamdata_t
|
||||
{
|
||||
perteamdata_t()
|
||||
{
|
||||
iszCapSound = NULL_STRING;
|
||||
iszModel = NULL_STRING;
|
||||
iModelBodygroup = -1;
|
||||
iIcon = 0;
|
||||
iszIcon = NULL_STRING;
|
||||
iOverlay = 0;
|
||||
iszOverlay = NULL_STRING;
|
||||
iPlayersRequired = 0;
|
||||
iTimedPoints = 0;
|
||||
for ( int i = 0; i < MAX_PREVIOUS_POINTS; i++ )
|
||||
{
|
||||
iszPreviousPoint[i] = NULL_STRING;
|
||||
}
|
||||
iTeamPoseParam = 0;
|
||||
}
|
||||
|
||||
string_t iszCapSound;
|
||||
string_t iszModel;
|
||||
int iModelBodygroup;
|
||||
int iTeamPoseParam;
|
||||
int iIcon;
|
||||
string_t iszIcon;
|
||||
int iOverlay;
|
||||
string_t iszOverlay;
|
||||
int iPlayersRequired;
|
||||
int iTimedPoints;
|
||||
string_t iszPreviousPoint[MAX_PREVIOUS_POINTS];
|
||||
};
|
||||
CUtlVector<perteamdata_t> m_TeamData;
|
||||
|
||||
COutputEvent m_OnCapReset;
|
||||
|
||||
COutputEvent m_OnCapTeam1;
|
||||
COutputEvent m_OnCapTeam2;
|
||||
|
||||
COutputEvent m_OnOwnerChangedToTeam1;
|
||||
COutputEvent m_OnOwnerChangedToTeam2;
|
||||
|
||||
COutputEvent m_OnRoundStartOwnedByTeam1;
|
||||
COutputEvent m_OnRoundStartOwnedByTeam2;
|
||||
|
||||
COutputEvent m_OnUnlocked;
|
||||
|
||||
int m_bPointVisible; //should this capture point be visible on the hud?
|
||||
int m_iPointIndex; //the mapper set index value of this control point
|
||||
|
||||
int m_iCPGroup; //the group that this control point belongs to
|
||||
bool m_bActive; //
|
||||
|
||||
string_t m_iszName; //Name used in cap messages
|
||||
|
||||
bool m_bStartDisabled;
|
||||
|
||||
float m_flLastContestedAt;
|
||||
|
||||
CSoundPatch *m_pCaptureInProgressSound;
|
||||
string_t m_iszCaptureStartSound;
|
||||
string_t m_iszCaptureEndSound;
|
||||
string_t m_iszCaptureInProgress;
|
||||
string_t m_iszCaptureInterrupted;
|
||||
bool m_bBotsIgnore;
|
||||
};
|
||||
|
||||
#endif // TEAM_CONTROL_POINT_H
|
||||
Reference in New Issue
Block a user