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.
61 lines
2.1 KiB
61 lines
2.1 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose: Control Zone entity
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
|
||
|
#ifndef CONTROLZONE_H
|
||
|
#define CONTROLZONE_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Defines a team zone of control
|
||
|
// Usually the parent of many trigger entities
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CControlZone : public CBaseEntity
|
||
|
{
|
||
|
public:
|
||
|
DECLARE_CLASS( CControlZone, CBaseEntity );
|
||
|
DECLARE_SERVERCLASS();
|
||
|
|
||
|
void Spawn( void );
|
||
|
void StartTouch( CBaseEntity * );
|
||
|
void EndTouch( CBaseEntity * );
|
||
|
void Think( void );
|
||
|
|
||
|
virtual int UpdateTransmitState();
|
||
|
|
||
|
// input functions
|
||
|
void InputLockControllingTeam( inputdata_t &inputdata );
|
||
|
void InputSetTeam( inputdata_t &inputdata );
|
||
|
|
||
|
// internal methods
|
||
|
void LockControllingTeam( void );
|
||
|
void ReevaluateControllingTeam( void );
|
||
|
void SetControllingTeam( CBaseEntity *pActivator, int newTeam );
|
||
|
|
||
|
// outputs
|
||
|
int GetControllingTeam( void ) { return m_ControllingTeam.Get(); };
|
||
|
COutputInt m_ControllingTeam; // outputs the team currently controlling this spot, whenever it changes - this is -1 when contended
|
||
|
|
||
|
public:
|
||
|
// Data
|
||
|
CNetworkVar( int, m_nZoneNumber );
|
||
|
int m_iDefendingTeam; // the original defeind team
|
||
|
int m_iLocked; // no more changes, until a reset it called
|
||
|
int m_iLockAfterChange; // auto-lock after the control zone changes hands through combat
|
||
|
float m_flTimeTillCaptured; // time that the control zone has to be uncontested for it to succesfully change teams
|
||
|
float m_flTimeTillContested; // time that the control zone has to be contested for for it to change to Contested mode (no team)
|
||
|
int m_iTryingToChangeToTeam; // the team is trying to change to
|
||
|
|
||
|
CUtlVector< CHandle<CBaseTFPlayer> > m_ZonePlayerList; // List of all players in the zone at the moment
|
||
|
int m_iPlayersInZone[MAX_TF_TEAMS+1]; // count of players in the zone divided by team
|
||
|
|
||
|
DECLARE_DATADESC();
|
||
|
};
|
||
|
|
||
|
#endif // CONTROLZONE_H
|