mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-20 12:36:05 +08:00
Update from SDK 2013
This commit is contained in:

committed by
Nicholas Hastings

parent
6d5c024820
commit
94b660e16e
@ -1,168 +1,242 @@
|
||||
//====== Copyright <20> 1996-2005, Valve Corporation, All rights reserved. =======
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#ifndef TEAM_OBJECTIVERESOURCE_H
|
||||
#define TEAM_OBJECTIVERESOURCE_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "shareddefs.h"
|
||||
|
||||
#define TEAM_ARRAY( index, team ) (index + (team * MAX_CONTROL_POINTS))
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: An entity that networks the state of the game's objectives.
|
||||
// May contain data for objectives that aren't used by your mod, but
|
||||
// the extra data will never be networked as long as it's zeroed out.
|
||||
//-----------------------------------------------------------------------------
|
||||
class CBaseTeamObjectiveResource : public CBaseEntity
|
||||
{
|
||||
DECLARE_CLASS( CBaseTeamObjectiveResource, CBaseEntity );
|
||||
public:
|
||||
DECLARE_SERVERCLASS();
|
||||
DECLARE_DATADESC();
|
||||
|
||||
CBaseTeamObjectiveResource();
|
||||
~CBaseTeamObjectiveResource();
|
||||
|
||||
virtual void Spawn( void );
|
||||
virtual int UpdateTransmitState(void);
|
||||
|
||||
virtual void ObjectiveThink( void );
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// CONTROL POINT DATA
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
void ResetControlPoints( void );
|
||||
|
||||
// Data functions, called to set up the state at the beginning of a round
|
||||
void SetNumControlPoints( int num );
|
||||
int GetNumControlPoints( void ) { return m_iNumControlPoints; }
|
||||
void SetCPIcons( int index, int iTeam, int iIcon );
|
||||
void SetCPOverlays( int index, int iTeam, int iIcon );
|
||||
void SetTeamBaseIcons( int iTeam, int iBaseIcon );
|
||||
void SetCPPosition( int index, const Vector& vPosition );
|
||||
void SetCPVisible( int index, bool bVisible );
|
||||
void SetCPRequiredCappers( int index, int iTeam, int iReqPlayers );
|
||||
void SetCPCapTime( int index, int iTeam, float flTime );
|
||||
void SetCPCapPercentage( int index, float flTime );
|
||||
float GetCPCapPercentage( int index );
|
||||
void SetTeamCanCap( int index, int iTeam, bool bCanCap );
|
||||
void SetBaseCP( int index, int iTeam );
|
||||
void SetPreviousPoint( int index, int iTeam, int iPrevIndex, int iPrevPoint );
|
||||
int GetPreviousPointForPoint( int index, int team, int iPrevIndex );
|
||||
bool TeamCanCapPoint( int index, int team );
|
||||
void SetCapLayoutInHUD( const char *pszLayout ) { Q_strncpy(m_pszCapLayoutInHUD.GetForModify(), pszLayout, MAX_CAPLAYOUT_LENGTH ); }
|
||||
void SetWarnOnCap( int index, int iWarnLevel );
|
||||
void SetWarnSound( int index, string_t iszSound );
|
||||
|
||||
// State functions, called many times
|
||||
void SetNumPlayers( int index, int team, int iNumPlayers );
|
||||
void StartCap( int index, int team );
|
||||
void SetOwningTeam( int index, int team );
|
||||
void SetCappingTeam( int index, int team );
|
||||
void SetTeamInZone( int index, int team );
|
||||
void SetCapBlocked( int index, bool bBlocked );
|
||||
int GetOwningTeam( int index );
|
||||
|
||||
void AssertValidIndex( int index )
|
||||
{
|
||||
Assert( 0 <= index && index <= MAX_CONTROL_POINTS && index < m_iNumControlPoints );
|
||||
}
|
||||
|
||||
int GetBaseControlPointForTeam( int iTeam )
|
||||
{
|
||||
Assert( iTeam < MAX_TEAMS );
|
||||
return m_iBaseControlPoints[iTeam];
|
||||
}
|
||||
|
||||
int GetCappingTeam( int index )
|
||||
{
|
||||
if ( index >= m_iNumControlPoints )
|
||||
return TEAM_UNASSIGNED;
|
||||
|
||||
return m_iCappingTeam[index];
|
||||
}
|
||||
|
||||
void SetTimerInHUD( CBaseEntity *pTimer )
|
||||
{
|
||||
m_iTimerToShowInHUD = pTimer ? pTimer->entindex() : 0;
|
||||
}
|
||||
|
||||
|
||||
void SetStopWatchTimer( CBaseEntity *pTimer )
|
||||
{
|
||||
m_iStopWatchTimer = pTimer ? pTimer->entindex() : 0;
|
||||
}
|
||||
|
||||
int GetTimerInHUD( void ) { return m_iTimerToShowInHUD; }
|
||||
|
||||
// Mini-rounds data
|
||||
void SetPlayingMiniRounds( bool bPlayingMiniRounds ){ m_bPlayingMiniRounds = bPlayingMiniRounds; }
|
||||
bool PlayingMiniRounds( void ){ return m_bPlayingMiniRounds; }
|
||||
void SetInMiniRound( int index, bool bInRound ) { m_bInMiniRound.Set( index, bInRound ); }
|
||||
bool IsInMiniRound( int index ) { return m_bInMiniRound[index]; }
|
||||
|
||||
void UpdateCapHudElement( void );
|
||||
|
||||
// Train Path data
|
||||
void SetTrainPathDistance( int index, float flDistance );
|
||||
|
||||
private:
|
||||
CNetworkVar( int, m_iTimerToShowInHUD );
|
||||
CNetworkVar( int, m_iStopWatchTimer );
|
||||
|
||||
CNetworkVar( int, m_iNumControlPoints );
|
||||
CNetworkVar( bool, m_bPlayingMiniRounds );
|
||||
CNetworkVar( bool, m_bControlPointsReset );
|
||||
CNetworkVar( int, m_iUpdateCapHudParity );
|
||||
|
||||
// data variables
|
||||
CNetworkArray( Vector, m_vCPPositions, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( int, m_bCPIsVisible, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( float, m_flLazyCapPerc, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( int, m_iTeamIcons, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( int, m_iTeamOverlays, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( int, m_iTeamReqCappers, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( float, m_flTeamCapTime, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( int, m_iPreviousPoints, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS * MAX_PREVIOUS_POINTS );
|
||||
CNetworkArray( bool, m_bTeamCanCap, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( int, m_iTeamBaseIcons, MAX_TEAMS );
|
||||
CNetworkArray( int, m_iBaseControlPoints, MAX_TEAMS );
|
||||
CNetworkArray( bool, m_bInMiniRound, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( int, m_iWarnOnCap, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( string_t, m_iszWarnSound, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( float, m_flPathDistance, MAX_CONTROL_POINTS );
|
||||
|
||||
// change when players enter/exit an area
|
||||
CNetworkArray( int, m_iNumTeamMembers, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
|
||||
// changes when a cap starts. start and end times are calculated on client
|
||||
CNetworkArray( int, m_iCappingTeam, MAX_CONTROL_POINTS );
|
||||
|
||||
CNetworkArray( int, m_iTeamInZone, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( bool, m_bBlocked, MAX_CONTROL_POINTS );
|
||||
|
||||
// changes when a point is successfully captured
|
||||
CNetworkArray( int, m_iOwner, MAX_CONTROL_POINTS );
|
||||
|
||||
// describes how to lay out the cap points in the hud
|
||||
CNetworkString( m_pszCapLayoutInHUD, MAX_CAPLAYOUT_LENGTH );
|
||||
|
||||
// Not networked, because the client recalculates it
|
||||
float m_flCapPercentages[ MAX_CONTROL_POINTS ];
|
||||
};
|
||||
|
||||
extern CBaseTeamObjectiveResource *g_pObjectiveResource;
|
||||
|
||||
inline CBaseTeamObjectiveResource *ObjectiveResource()
|
||||
{
|
||||
return g_pObjectiveResource;
|
||||
}
|
||||
|
||||
#endif // TEAM_OBJECTIVERESOURCE_H
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#ifndef TEAM_OBJECTIVERESOURCE_H
|
||||
#define TEAM_OBJECTIVERESOURCE_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "shareddefs.h"
|
||||
|
||||
#define TEAM_ARRAY( index, team ) (index + (team * MAX_CONTROL_POINTS))
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: An entity that networks the state of the game's objectives.
|
||||
// May contain data for objectives that aren't used by your mod, but
|
||||
// the extra data will never be networked as long as it's zeroed out.
|
||||
//-----------------------------------------------------------------------------
|
||||
class CBaseTeamObjectiveResource : public CBaseEntity
|
||||
{
|
||||
DECLARE_CLASS( CBaseTeamObjectiveResource, CBaseEntity );
|
||||
public:
|
||||
DECLARE_SERVERCLASS();
|
||||
DECLARE_DATADESC();
|
||||
|
||||
CBaseTeamObjectiveResource();
|
||||
~CBaseTeamObjectiveResource();
|
||||
|
||||
virtual void Spawn( void );
|
||||
virtual int UpdateTransmitState(void);
|
||||
|
||||
virtual void ObjectiveThink( void );
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// CONTROL POINT DATA
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
void ResetControlPoints( void );
|
||||
|
||||
// Data functions, called to set up the state at the beginning of a round
|
||||
void SetNumControlPoints( int num );
|
||||
int GetNumControlPoints( void ) { return m_iNumControlPoints; }
|
||||
void SetCPIcons( int index, int iTeam, int iIcon );
|
||||
void SetCPOverlays( int index, int iTeam, int iIcon );
|
||||
void SetTeamBaseIcons( int iTeam, int iBaseIcon );
|
||||
void SetCPPosition( int index, const Vector& vPosition );
|
||||
void SetCPVisible( int index, bool bVisible );
|
||||
void SetCPRequiredCappers( int index, int iTeam, int iReqPlayers );
|
||||
void SetCPCapTime( int index, int iTeam, float flTime );
|
||||
void SetCPCapPercentage( int index, float flTime );
|
||||
float GetCPCapPercentage( int index );
|
||||
void SetTeamCanCap( int index, int iTeam, bool bCanCap );
|
||||
void SetBaseCP( int index, int iTeam );
|
||||
void SetPreviousPoint( int index, int iTeam, int iPrevIndex, int iPrevPoint );
|
||||
int GetPreviousPointForPoint( int index, int team, int iPrevIndex );
|
||||
bool TeamCanCapPoint( int index, int team );
|
||||
void SetCapLayoutInHUD( const char *pszLayout ) { Q_strncpy(m_pszCapLayoutInHUD.GetForModify(), pszLayout, MAX_CAPLAYOUT_LENGTH ); }
|
||||
void SetCapLayoutCustomPosition( float flPositionX, float flPositionY ) { m_flCustomPositionX = flPositionX; m_flCustomPositionY = flPositionY; }
|
||||
void SetWarnOnCap( int index, int iWarnLevel );
|
||||
void SetWarnSound( int index, string_t iszSound );
|
||||
void SetCPGroup( int index, int iCPGroup );
|
||||
void SetCPLocked( int index, bool bLocked );
|
||||
void SetTrackAlarm( int index, bool bAlarm );
|
||||
void SetCPUnlockTime( int index, float flTime );
|
||||
void SetCPTimerTime( int index, float flTime );
|
||||
void SetCPCapTimeScalesWithPlayers( int index, bool bScales );
|
||||
|
||||
// State functions, called many times
|
||||
void SetNumPlayers( int index, int team, int iNumPlayers );
|
||||
void StartCap( int index, int team );
|
||||
void SetOwningTeam( int index, int team );
|
||||
void SetCappingTeam( int index, int team );
|
||||
void SetTeamInZone( int index, int team );
|
||||
void SetCapBlocked( int index, bool bBlocked );
|
||||
int GetOwningTeam( int index );
|
||||
|
||||
void AssertValidIndex( int index )
|
||||
{
|
||||
Assert( 0 <= index && index <= MAX_CONTROL_POINTS && index < m_iNumControlPoints );
|
||||
}
|
||||
|
||||
int GetBaseControlPointForTeam( int iTeam )
|
||||
{
|
||||
Assert( iTeam < MAX_TEAMS );
|
||||
return m_iBaseControlPoints[iTeam];
|
||||
}
|
||||
|
||||
int GetCappingTeam( int index )
|
||||
{
|
||||
if ( index >= m_iNumControlPoints )
|
||||
return TEAM_UNASSIGNED;
|
||||
|
||||
return m_iCappingTeam[index];
|
||||
}
|
||||
|
||||
void SetTimerInHUD( CBaseEntity *pTimer )
|
||||
{
|
||||
m_iTimerToShowInHUD = pTimer ? pTimer->entindex() : 0;
|
||||
}
|
||||
|
||||
|
||||
void SetStopWatchTimer( CBaseEntity *pTimer )
|
||||
{
|
||||
m_iStopWatchTimer = pTimer ? pTimer->entindex() : 0;
|
||||
}
|
||||
|
||||
int GetStopWatchTimer( void ) { return m_iStopWatchTimer; }
|
||||
|
||||
int GetTimerToShowInHUD( void ) { return m_iTimerToShowInHUD; }
|
||||
|
||||
// Mini-rounds data
|
||||
void SetPlayingMiniRounds( bool bPlayingMiniRounds ){ m_bPlayingMiniRounds = bPlayingMiniRounds; }
|
||||
bool PlayingMiniRounds( void ){ return m_bPlayingMiniRounds; }
|
||||
void SetInMiniRound( int index, bool bInRound ) { m_bInMiniRound.Set( index, bInRound ); }
|
||||
bool IsInMiniRound( int index ) { return m_bInMiniRound[index]; }
|
||||
|
||||
void UpdateCapHudElement( void );
|
||||
|
||||
// Train Path data
|
||||
void SetTrainPathDistance( int index, float flDistance );
|
||||
|
||||
bool GetCPLocked( int index )
|
||||
{
|
||||
Assert( index < m_iNumControlPoints );
|
||||
return m_bCPLocked[index];
|
||||
}
|
||||
|
||||
void ResetHillData( int team )
|
||||
{
|
||||
if ( team < TEAM_TRAIN_MAX_TEAMS )
|
||||
{
|
||||
m_nNumNodeHillData.Set( team, 0 );
|
||||
|
||||
int nNumEntriesPerTeam = TEAM_TRAIN_MAX_HILLS * TEAM_TRAIN_FLOATS_PER_HILL;
|
||||
int iStartingIndex = team * nNumEntriesPerTeam;
|
||||
for ( int i = 0 ; i < nNumEntriesPerTeam ; i++ )
|
||||
{
|
||||
m_flNodeHillData.Set( iStartingIndex + i, 0 );
|
||||
}
|
||||
|
||||
iStartingIndex = team * TEAM_TRAIN_MAX_HILLS;
|
||||
for ( int i = 0; i < TEAM_TRAIN_MAX_HILLS; i++ )
|
||||
{
|
||||
m_bHillIsDownhill.Set( iStartingIndex + i, 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SetHillData( int team, float flStart, float flEnd, bool bDownhill )
|
||||
{
|
||||
if ( team < TEAM_TRAIN_MAX_TEAMS )
|
||||
{
|
||||
int index = ( m_nNumNodeHillData[team] * TEAM_TRAIN_FLOATS_PER_HILL ) + ( team * TEAM_TRAIN_MAX_HILLS * TEAM_TRAIN_FLOATS_PER_HILL );
|
||||
if ( index < TEAM_TRAIN_HILLS_ARRAY_SIZE - 1 ) // - 1 because we want to add 2 entries
|
||||
{
|
||||
m_flNodeHillData.Set( index, flStart );
|
||||
m_flNodeHillData.Set( index + 1, flEnd );
|
||||
|
||||
if ( m_nNumNodeHillData[team] < TEAM_TRAIN_MAX_HILLS )
|
||||
{
|
||||
m_bHillIsDownhill.Set( m_nNumNodeHillData[team] + ( team * TEAM_TRAIN_MAX_HILLS ), bDownhill );
|
||||
}
|
||||
|
||||
m_nNumNodeHillData.Set( team, m_nNumNodeHillData[team] + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
CNetworkVar( int, m_iTimerToShowInHUD );
|
||||
CNetworkVar( int, m_iStopWatchTimer );
|
||||
|
||||
CNetworkVar( int, m_iNumControlPoints );
|
||||
CNetworkVar( bool, m_bPlayingMiniRounds );
|
||||
CNetworkVar( bool, m_bControlPointsReset );
|
||||
CNetworkVar( int, m_iUpdateCapHudParity );
|
||||
|
||||
// data variables
|
||||
CNetworkArray( Vector, m_vCPPositions, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( int, m_bCPIsVisible, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( float, m_flLazyCapPerc, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( int, m_iTeamIcons, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( int, m_iTeamOverlays, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( int, m_iTeamReqCappers, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( float, m_flTeamCapTime, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( int, m_iPreviousPoints, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS * MAX_PREVIOUS_POINTS );
|
||||
CNetworkArray( bool, m_bTeamCanCap, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
CNetworkArray( int, m_iTeamBaseIcons, MAX_TEAMS );
|
||||
CNetworkArray( int, m_iBaseControlPoints, MAX_TEAMS );
|
||||
CNetworkArray( bool, m_bInMiniRound, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( int, m_iWarnOnCap, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( string_t, m_iszWarnSound, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( float, m_flPathDistance, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( bool, m_bCPLocked, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( float, m_flUnlockTimes, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( float, m_flCPTimerTimes, MAX_CONTROL_POINTS );
|
||||
|
||||
// change when players enter/exit an area
|
||||
CNetworkArray( int, m_iNumTeamMembers, MAX_CONTROL_POINTS * MAX_CONTROL_POINT_TEAMS );
|
||||
|
||||
// changes when a cap starts. start and end times are calculated on client
|
||||
CNetworkArray( int, m_iCappingTeam, MAX_CONTROL_POINTS );
|
||||
|
||||
CNetworkArray( int, m_iTeamInZone, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( bool, m_bBlocked, MAX_CONTROL_POINTS );
|
||||
|
||||
// changes when a point is successfully captured
|
||||
CNetworkArray( int, m_iOwner, MAX_CONTROL_POINTS );
|
||||
CNetworkArray( bool, m_bCPCapRateScalesWithPlayers, MAX_CONTROL_POINTS );
|
||||
|
||||
// describes how to lay out the cap points in the hud
|
||||
CNetworkString( m_pszCapLayoutInHUD, MAX_CAPLAYOUT_LENGTH );
|
||||
|
||||
// custom screen position for the cap points in the hud
|
||||
CNetworkVar( float, m_flCustomPositionX );
|
||||
CNetworkVar( float, m_flCustomPositionY );
|
||||
|
||||
// the groups the points belong to
|
||||
CNetworkArray( int, m_iCPGroup, MAX_CONTROL_POINTS );
|
||||
|
||||
// Not networked, because the client recalculates it
|
||||
float m_flCapPercentages[ MAX_CONTROL_POINTS ];
|
||||
|
||||
// hill data for multi-escort payload maps
|
||||
CNetworkArray( int, m_nNumNodeHillData, TEAM_TRAIN_MAX_TEAMS );
|
||||
CNetworkArray( float, m_flNodeHillData, TEAM_TRAIN_HILLS_ARRAY_SIZE );
|
||||
|
||||
CNetworkArray( bool, m_bTrackAlarm, TEAM_TRAIN_MAX_TEAMS );
|
||||
CNetworkArray( bool, m_bHillIsDownhill, TEAM_TRAIN_MAX_HILLS*TEAM_TRAIN_MAX_TEAMS );
|
||||
};
|
||||
|
||||
extern CBaseTeamObjectiveResource *g_pObjectiveResource;
|
||||
|
||||
inline CBaseTeamObjectiveResource *ObjectiveResource()
|
||||
{
|
||||
return g_pObjectiveResource;
|
||||
}
|
||||
|
||||
#endif // TEAM_OBJECTIVERESOURCE_H
|
||||
|
Reference in New Issue
Block a user