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.
176 lines
5.5 KiB
176 lines
5.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: Round timer for team gamerules |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef TEAM_ROUND_TIMER_H |
|
#define TEAM_ROUND_TIMER_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#ifdef CLIENT_DLL |
|
#define CTeamRoundTimer C_TeamRoundTimer |
|
#endif |
|
|
|
class CTeamRoundTimer : public CBaseEntity |
|
{ |
|
public: |
|
DECLARE_CLASS( CTeamRoundTimer, CBaseEntity ); |
|
DECLARE_NETWORKCLASS(); |
|
|
|
CTeamRoundTimer(); |
|
virtual ~CTeamRoundTimer(); |
|
|
|
virtual void Spawn( void ); |
|
virtual void Precache( void ); |
|
virtual void Activate( void ); |
|
|
|
// Returns seconds to display. |
|
// When paused shows amount of time left once the timer is resumed |
|
virtual float GetTimeRemaining( void ); |
|
virtual int GetTimerMaxLength( void ); |
|
virtual bool ShowInHud( void ); |
|
virtual bool StartPaused( void ){ return m_bStartPaused; } |
|
bool ShowTimeRemaining( void ) { return m_bShowTimeRemaining; } |
|
|
|
bool IsDisabled( void ) { return m_bIsDisabled; } |
|
int GetTimerState( void ){ return m_nState; } |
|
|
|
bool IsTimerPaused( void ) { return m_bTimerPaused; } |
|
|
|
#ifdef CLIENT_DLL |
|
|
|
void InternalSetPaused( bool bPaused ) { m_bTimerPaused = bPaused; } |
|
|
|
#else |
|
|
|
void SetStopWatchTimeStamp( void ); |
|
virtual void SetTimeRemaining( int iTimerSeconds ); // Set the initial length of the timer |
|
virtual void AddTimerSeconds( int iSecondsToAdd, int iTeamResponsible = TEAM_UNASSIGNED ); // Add time to an already running ( or paused ) timer |
|
virtual void PauseTimer( void ); |
|
virtual void ResumeTimer( void ); |
|
virtual void SetAutoCountdown( bool bAuto ){ m_bAutoCountdown = bAuto; } |
|
|
|
void SetShowInHud( bool bShowInHUD ) { m_bShowInHUD = bShowInHUD; } |
|
|
|
int UpdateTransmitState(); |
|
|
|
void InputEnable( inputdata_t &input ); |
|
void InputDisable( inputdata_t &input ); |
|
void InputPause( inputdata_t &input ); |
|
void InputResume( inputdata_t &input ); |
|
void InputSetTime( inputdata_t &input ); |
|
void InputAddTime( inputdata_t &input ); |
|
void InputRestart( inputdata_t &input ); |
|
void InputShowInHUD( inputdata_t &input ); |
|
void InputRoundSpawn( inputdata_t &inputdata ); |
|
void InputSetMaxTime( inputdata_t &input ); |
|
void InputAutoCountdown( inputdata_t &input ); |
|
void InputAddTeamTime( inputdata_t &input ); |
|
void InputSetSetupTime( inputdata_t &input ); |
|
|
|
#endif |
|
|
|
void SetCaptureWatchState( bool bCaptureWatch ); |
|
bool IsWatchingTimeStamps( void ) { return m_bInCaptureWatchState; } |
|
void SetStopWatch( bool bState ) { m_bStopWatchTimer = bState; } |
|
bool IsStopWatchTimer( void ) { return m_bStopWatchTimer; } |
|
float GetStopWatchTotalTime( void ) { return m_flTotalTime; } |
|
bool IsRoundMaxTimerSet( void ) { return m_nTimerMaxLength > 0; } |
|
int GetTimerInitialLength( void ) { return m_nTimerInitialLength; } |
|
int GetSetupTimeLength( void ){ return m_nSetupTimeLength; } |
|
|
|
private: |
|
void CalculateOutputMessages( void ); |
|
|
|
#ifdef CLIENT_DLL |
|
virtual void ClientThink(); |
|
void OnPreDataChanged( DataUpdateType_t updateType ); |
|
void OnDataChanged( DataUpdateType_t updateType ); |
|
void SendTimeWarning( int nWarning ); |
|
const char *GetTimeWarningSound( int nWarning ); |
|
|
|
#else |
|
void SetState( int nState, bool bFireOutput = true ); |
|
void SetTimerThink( int nType ); |
|
void EXPORT RoundTimerThink( void ); |
|
void EXPORT RoundTimerSetupThink( void ); |
|
|
|
static void SetActiveTimer( CTeamRoundTimer *pNewlyActive ); |
|
#endif |
|
|
|
private: |
|
CNetworkVar( bool, m_bTimerPaused ); |
|
CNetworkVar( float, m_flTimeRemaining ); |
|
CNetworkVar( float, m_flTimerEndTime ); |
|
CNetworkVar( bool, m_bIsDisabled ); |
|
CNetworkVar( bool, m_bShowInHUD ); |
|
CNetworkVar( int, m_nTimerLength ); // current timer's length (used in the timer panel if no max length is set) |
|
CNetworkVar( int, m_nTimerInitialLength ); // initial length of the timer |
|
CNetworkVar( int, m_nTimerMaxLength ); // max time the timer can have (0 is no max) |
|
CNetworkVar( bool, m_bAutoCountdown ); // automatically count down the end of a round |
|
CNetworkVar( int, m_nSetupTimeLength ); // current timer's setup time length (setup time is the time before the round begins) |
|
CNetworkVar( int, m_nState ); // RT_STATE_SETUP or RT_STATE_NORMAL |
|
CNetworkVar( bool, m_bStartPaused ); // start the timer paused when it spawns |
|
CNetworkVar( bool, m_bShowTimeRemaining ); //show how much time is left (default) instead of how much time has passed. |
|
CNetworkVar( bool, m_bInCaptureWatchState ); |
|
CNetworkVar( float, m_flTotalTime ); |
|
CNetworkVar( bool, m_bStopWatchTimer ); |
|
|
|
bool m_bFireFinished; |
|
bool m_bFire5MinRemain; |
|
bool m_bFire4MinRemain; |
|
bool m_bFire3MinRemain; |
|
bool m_bFire2MinRemain; |
|
bool m_bFire1MinRemain; |
|
bool m_bFire30SecRemain; |
|
bool m_bFire10SecRemain; |
|
bool m_bFire5SecRemain; |
|
bool m_bFire4SecRemain; |
|
bool m_bFire3SecRemain; |
|
bool m_bFire2SecRemain; |
|
bool m_bFire1SecRemain; |
|
|
|
#ifdef CLIENT_DLL |
|
|
|
int m_nOldTimerLength; |
|
int m_nOldTimerState; |
|
|
|
#else |
|
COutputEvent m_OnRoundStart; |
|
COutputEvent m_OnFinished; |
|
COutputEvent m_On5MinRemain; |
|
COutputEvent m_On4MinRemain; |
|
COutputEvent m_On3MinRemain; |
|
COutputEvent m_On2MinRemain; |
|
COutputEvent m_On1MinRemain; |
|
COutputEvent m_On30SecRemain; |
|
COutputEvent m_On10SecRemain; |
|
COutputEvent m_On5SecRemain; |
|
COutputEvent m_On4SecRemain; |
|
COutputEvent m_On3SecRemain; |
|
COutputEvent m_On2SecRemain; |
|
COutputEvent m_On1SecRemain; |
|
|
|
COutputEvent m_OnSetupStart; |
|
COutputEvent m_OnSetupFinished; |
|
|
|
float m_flNextOvertimeNag; |
|
float m_flLastTime; |
|
|
|
DECLARE_DATADESC(); |
|
|
|
bool m_bPauseDueToWin; |
|
bool m_bResetTimeOnRoundStart; |
|
int m_nTimeToUseAfterSetupFinished; |
|
#endif |
|
}; |
|
|
|
#ifdef CLIENT_DLL |
|
extern CTeamRoundTimer *g_TeamRoundTimer; |
|
#endif |
|
|
|
#endif //TEAM_ROUND_TIMER_H
|