mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-04 18:09:53 +03:00
add hl1,portal,dod source code
This commit is contained in:
183
game/shared/dod/dod_round_timer.cpp
Normal file
183
game/shared/dod/dod_round_timer.cpp
Normal file
@@ -0,0 +1,183 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: Dod gamerules round timer
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#include "cbase.h"
|
||||
#include "dod_round_timer.h"
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
|
||||
#include "iclientmode.h"
|
||||
#include "vgui_controls/AnimationController.h"
|
||||
|
||||
#endif
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
|
||||
// Use this proxy to flash the round timer whenever the timer is restarted
|
||||
// because trapping the round start event doesn't work ( the event also flushes
|
||||
// all hud events and obliterates our TimerFlash event )
|
||||
static void RecvProxy_TimerPaused( const CRecvProxyData *pData, void *pStruct, void *pOut )
|
||||
{
|
||||
CDODRoundTimer *pTimer = (CDODRoundTimer *) pStruct;
|
||||
|
||||
bool bTimerPaused = ( pData->m_Value.m_Int > 0 );
|
||||
|
||||
if ( bTimerPaused == false )
|
||||
{
|
||||
g_pClientMode->GetViewportAnimationController()->StartAnimationSequence( "TimerFlash" );
|
||||
}
|
||||
|
||||
pTimer->InternalSetPaused( bTimerPaused );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
LINK_ENTITY_TO_CLASS( dod_round_timer, CDODRoundTimer );
|
||||
|
||||
IMPLEMENT_NETWORKCLASS_ALIASED( DODRoundTimer, DT_DODRoundTimer )
|
||||
|
||||
BEGIN_NETWORK_TABLE_NOBASE( CDODRoundTimer, DT_DODRoundTimer )
|
||||
#ifdef CLIENT_DLL
|
||||
|
||||
RecvPropInt( RECVINFO( m_bTimerPaused ), 0, RecvProxy_TimerPaused ),
|
||||
RecvPropTime( RECVINFO( m_flTimeRemaining ) ),
|
||||
RecvPropTime( RECVINFO( m_flTimerEndTime ) ),
|
||||
|
||||
#else
|
||||
|
||||
SendPropBool( SENDINFO( m_bTimerPaused ) ),
|
||||
SendPropTime( SENDINFO( m_flTimeRemaining ) ),
|
||||
SendPropTime( SENDINFO( m_flTimerEndTime ) ),
|
||||
|
||||
#endif
|
||||
END_NETWORK_TABLE()
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
CDODRoundTimer *g_DODRoundTimer = NULL;
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CDODRoundTimer::CDODRoundTimer( void )
|
||||
{
|
||||
#ifndef CLIENT_DLL
|
||||
m_bTimerPaused = true;
|
||||
m_flTimeRemaining = 0;
|
||||
m_iTimerMaxLength = 0;
|
||||
#else
|
||||
g_DODRoundTimer = this;
|
||||
#endif
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: destructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CDODRoundTimer::~CDODRoundTimer( void )
|
||||
{
|
||||
#ifdef CLIENT_DLL
|
||||
g_DODRoundTimer = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef CLIENT_DLL
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: The timer is always transmitted to clients
|
||||
//-----------------------------------------------------------------------------
|
||||
int CDODRoundTimer::UpdateTransmitState()
|
||||
{
|
||||
// ALWAYS transmit to all clients.
|
||||
return SetTransmitState( FL_EDICT_ALWAYS );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: To set the initial timer duration
|
||||
//-----------------------------------------------------------------------------
|
||||
void CDODRoundTimer::SetTimeRemaining( int iTimerSeconds )
|
||||
{
|
||||
m_flTimeRemaining = (float)iTimerSeconds;
|
||||
m_flTimerEndTime = gpGlobals->curtime + m_flTimeRemaining;
|
||||
m_iTimerMaxLength = iTimerSeconds;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Timer is paused at round end, stops the countdown
|
||||
//-----------------------------------------------------------------------------
|
||||
void CDODRoundTimer::PauseTimer( void )
|
||||
{
|
||||
if ( m_bTimerPaused == false )
|
||||
{
|
||||
m_bTimerPaused = true;
|
||||
|
||||
m_flTimeRemaining = m_flTimerEndTime - gpGlobals->curtime;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: To start or re-start the timer after a pause
|
||||
//-----------------------------------------------------------------------------
|
||||
void CDODRoundTimer::ResumeTimer( void )
|
||||
{
|
||||
if ( m_bTimerPaused == true )
|
||||
{
|
||||
m_bTimerPaused = false;
|
||||
|
||||
m_flTimerEndTime = gpGlobals->curtime + m_flTimeRemaining;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Gets the seconds left on the timer, paused or not.
|
||||
//-----------------------------------------------------------------------------
|
||||
float CDODRoundTimer::GetTimeRemaining( void )
|
||||
{
|
||||
float flSecondsRemaining;
|
||||
|
||||
if ( m_bTimerPaused )
|
||||
{
|
||||
flSecondsRemaining = m_flTimeRemaining;
|
||||
}
|
||||
else
|
||||
{
|
||||
flSecondsRemaining = m_flTimerEndTime - gpGlobals->curtime;
|
||||
}
|
||||
|
||||
if ( flSecondsRemaining < 0 )
|
||||
flSecondsRemaining = 0;
|
||||
|
||||
return flSecondsRemaining;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Add seconds to the timer while it is running or paused
|
||||
//-----------------------------------------------------------------------------
|
||||
void CDODRoundTimer::AddTimerSeconds( int iSecondsToAdd )
|
||||
{
|
||||
// do a hud animation indicating that time has been added
|
||||
|
||||
if ( m_bTimerPaused )
|
||||
{
|
||||
m_flTimeRemaining += (float)iSecondsToAdd;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_flTimerEndTime += (float)iSecondsToAdd;
|
||||
}
|
||||
|
||||
m_iTimerMaxLength += iSecondsToAdd;
|
||||
}
|
||||
|
||||
int CDODRoundTimer::GetTimerMaxLength( void )
|
||||
{
|
||||
return m_iTimerMaxLength;
|
||||
}
|
||||
Reference in New Issue
Block a user