diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/server/dod/dod_control_point.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/server/dod/dod_control_point.h')
| -rw-r--r-- | game/server/dod/dod_control_point.h | 164 |
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 |