summaryrefslogtreecommitdiff
path: root/game/server/dod/dod_control_point.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/server/dod/dod_control_point.h')
-rw-r--r--game/server/dod/dod_control_point.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/game/server/dod/dod_control_point.h b/game/server/dod/dod_control_point.h
new file mode 100644
index 0000000..50905c3
--- /dev/null
+++ b/game/server/dod/dod_control_point.h
@@ -0,0 +1,164 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef DOD_CONTROL_POINT_H
+#define DOD_CONTROL_POINT_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "dod_player.h"
+
+#define CAP_ICON_ALLIES_FLAG 1
+#define CAP_ICON_BRIT_FLAG 27 //from dod_objectives.cpp
+
+#define CAP_POINT_HIDEFLAG (1<<0)
+#define CAP_POINT_HIDE_MODEL (1<<1)
+#define CAP_POINT_TICK_FOR_BOMBS_REMAINING (1<<2)
+
+#define PLAYER_POINTS_FOR_CAP 1
+#define PLAYER_POINTS_FOR_BLOCK 1
+#define PLAYER_POINTS_FOR_BOMB_PLANT 1
+#define PLAYER_POINTS_FOR_BOMB_EXPLODED 3
+
+
+class CControlPoint : public CBaseAnimating
+{
+
+public:
+ DECLARE_CLASS( CControlPoint, CBaseAnimating );
+ DECLARE_DATADESC();
+
+ CControlPoint();
+
+ virtual void Spawn( void );
+ virtual bool KeyValue( const char *szKeyName, const char *szValue );
+ virtual void Precache( void );
+
+ void Reset( 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 );
+
+ int PointValue( void );
+
+ void RoundRespawn( void ); //Mugsy - resetting
+ void TriggerTargets( void );
+
+ void SetActive( bool active );
+
+ bool PointIsVisible( void ) { return !( FBitSet( m_spawnflags, CAP_POINT_HIDEFLAG ) ); }
+
+ void SendCapString( int team, int iNumCappers, int *pCappingPlayers );
+
+ void SetOwner( int team, bool bMakeSound = true, int iNumCappers = 0, int *iCappingPlayers = NULL );
+ int GetOwner( void ) const;
+
+ int GetDefaultOwner( void ) const;
+
+ inline const char *GetName( void ) { return STRING(m_iszPrintName); }
+ int GetCPGroup( void );
+ int GetPointIndex( void ) { return m_iPointIndex; } //the mapper set index
+ void SetPointIndex( int index ) { m_iPointIndex = index; }
+ int GetAlliesIcon( void ) { return m_iAlliesIcon; }
+ int GetAxisIcon( void ) { return m_iAxisIcon; }
+ int GetNeutralIcon( void ) { return m_iNeutralIcon; }
+
+ int GetCurrentHudIconIndex( void );
+ int GetHudIconIndexForTeam( int team );
+ int GetTimerCapHudIcon( void );
+ int GetBombedHudIcon( void );
+
+ inline bool IsActive( void ) { return m_bActive; }
+
+ void SetNumCappersRequired( int alliesRequired, int axisRequired );
+
+ void CaptureBlocked( CDODPlayer *pPlayer );
+
+ // Bomb interface
+ void BombPlanted( float flTimerLength, CDODPlayer *pPlantingPlayer );
+ void BombExploded( CDODPlayer *pPlantingPlayer = NULL, int iPlantingTeam = TEAM_UNASSIGNED );
+ void BombDisarmed( CDODPlayer *pDisarmingPlayer );
+ void CancelBombPlanted( void );
+
+ int GetBombsRemaining( void ) { return m_iBombsRemaining; } // total bombs required
+ int GetBombsRequired( void ) { return m_iBombsRequired; } // number of bombs remaining
+
+private:
+ void InternalSetOwner( int team, bool bMakeSound = true, int iNumCappers = 0, int *iCappingPlayers = NULL );
+
+ int m_iTeam; //0 - clear, 2 - allies, 3 - axis
+ int m_iDefaultOwner; //team that initially owns the cap point
+ int m_iIndex; //the index of this point in the controlpointArray
+
+ string_t m_iszPrintName;
+
+ string_t m_iszAlliesCapSound; //the sound to play on cap
+ string_t m_iszAxisCapSound;
+ string_t m_iszResetSound;
+
+ string_t m_iszAlliesModel; //models to set the ent to on capture
+ string_t m_iszAxisModel;
+ string_t m_iszResetModel;
+
+ int m_iAlliesModelBodygroup;//which bodygroup to use in the model
+ int m_iAxisModelBodygroup;
+ int m_iResetModelBodygroup;
+
+ COutputEvent m_AlliesCapOutput; //outputs to fire when capped
+ COutputEvent m_AxisCapOutput;
+ COutputEvent m_PointResetOutput;
+
+ COutputEvent m_OwnerChangedToAllies;
+ COutputEvent m_OwnerChangedToAxis;
+
+ int m_iAlliesIcon; //custom hud sprites for cap point
+ int m_iAxisIcon;
+ int m_iNeutralIcon;
+ int m_iTimerCapIcon;
+ int m_iBombedIcon;
+
+ string_t m_iszAlliesIcon;
+ string_t m_iszAxisIcon;
+ string_t m_iszNeutralIcon;
+ string_t m_iszTimerCapIcon;
+ string_t m_iszBombedIcon;
+
+ 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;
+
+ int m_iAlliesRequired; // if we're controlled by an area cap,
+ int m_iAxisRequired; // these hold the number of cappers required. Used to calc point value
+
+ int m_iTimedPointsAllies; // timed points value of this flag, per team
+ int m_iTimedPointsAxis;
+
+ bool m_bBombPlanted;
+ float m_flBombExplodeTime;
+
+ int m_iBombsRemaining;
+ int m_iBombsRequired; // number of bombs required to flip this control point
+
+ bool m_bSetOwnerIsBombPlant; // temp flag to indicate if the set owner we're doing is the result of a bomb
+
+private:
+ CControlPoint( const CControlPoint & );
+};
+
+#endif //DOD_CONTROL_POINT_H \ No newline at end of file