summaryrefslogtreecommitdiff
path: root/game/server/dod/dod_area_capture.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/server/dod/dod_area_capture.h')
-rw-r--r--game/server/dod/dod_area_capture.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/game/server/dod/dod_area_capture.h b/game/server/dod/dod_area_capture.h
new file mode 100644
index 0000000..6fb57dd
--- /dev/null
+++ b/game/server/dod/dod_area_capture.h
@@ -0,0 +1,104 @@
+//========= 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 \ No newline at end of file