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.
104 lines
2.7 KiB
104 lines
2.7 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef DOD_AREA_CAPTURE_H |
|
#define DOD_AREA_CAPTURE_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "triggers.h" |
|
#include "dod_control_point.h" |
|
|
|
#define AREA_ATTEND_TIME 0.7f |
|
|
|
#define AREA_THINK_TIME 0.1f |
|
|
|
#define CAPTURE_NORMAL 0 |
|
#define CAPTURE_CATCHUP_ALIVEPLAYERS 1 |
|
|
|
#define MAX_CLIENT_AREAS 128 |
|
|
|
class CAreaCapture : public CBaseTrigger |
|
{ |
|
public: |
|
DECLARE_CLASS( CAreaCapture, CBaseTrigger ); |
|
|
|
virtual void Spawn( void ); |
|
virtual void Precache( void ); |
|
virtual bool KeyValue( const char *szKeyName, const char *szValue ); |
|
|
|
void area_SetIndex( int index ); |
|
|
|
bool IsActive( void ); |
|
|
|
bool CheckIfDeathCausesBlock( CDODPlayer *pVictim, CDODPlayer *pKiller ); |
|
|
|
private: |
|
void EXPORT AreaTouch( CBaseEntity *pOther ); |
|
void Think( void ); |
|
|
|
void StartCapture( int team, int capmode ); |
|
void EndCapture( int team ); |
|
void BreakCapture( bool bNotEnoughPlayers ); |
|
void SwitchCapture( int team ); |
|
void SendNumPlayers( CBasePlayer *pPlayer = NULL ); |
|
|
|
void SetOwner( int team ); //sets the owner of this point - useful for resetting all to -1 |
|
|
|
void InputEnable( inputdata_t &inputdata ); |
|
void InputDisable( inputdata_t &inputdata ); |
|
void InputRoundInit( inputdata_t &inputdata ); |
|
|
|
private: |
|
int m_iCapMode; //which capture mode we're in |
|
int m_bCapturing; |
|
int m_nCapturingTeam; //the team that is capturing this point |
|
int m_nOwningTeam; //the team that has captured this point |
|
float m_flCapTime; //the total time it takes to capture the area, in seconds |
|
float m_fTimeRemaining; //the time left in the capture |
|
|
|
int m_nAlliesNumCap; //number of allies required to cap |
|
int m_nAxisNumCap; //number of axis required to cap |
|
|
|
int m_nNumAllies; |
|
int m_nNumAxis; |
|
|
|
bool m_bAlliesCanCap; |
|
bool m_bAxisCanCap; |
|
|
|
//used for catchup capping |
|
int m_iCappingRequired; //how many players are currently capping |
|
int m_iCappingPlayers; //how many are required? |
|
|
|
bool m_bActive; |
|
|
|
COutputEvent m_AlliesStartOutput; |
|
COutputEvent m_AlliesBreakOutput; |
|
COutputEvent m_AlliesCapOutput; |
|
|
|
COutputEvent m_AxisStartOutput; |
|
COutputEvent m_AxisBreakOutput; |
|
COutputEvent m_AxisCapOutput; |
|
|
|
COutputEvent m_StartOutput; |
|
COutputEvent m_BreakOutput; |
|
COutputEvent m_CapOutput; |
|
|
|
int m_iAreaIndex; //index of this area among all other areas |
|
|
|
CControlPoint *m_pPoint; //the capture point that we are linked to! |
|
|
|
bool m_bRequiresObject; |
|
|
|
string_t m_iszCapPointName; //name of the cap point that we're linked to |
|
|
|
int m_iCapAttemptNumber; // number used to keep track of discrete cap attempts, for block tracking |
|
|
|
DECLARE_DATADESC(); |
|
}; |
|
|
|
#endif //DOD_AREA_CAPTURE_H
|