Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#include "cbase.h"
#if defined( REPLAY_ENABLED )
#include "replayreminderpanel.h"
#include "replay/ireplaysystem.h"
#include "replay/replay.h"
#include "replay/ireplayscreenshotmanager.h"
#include "replay/ireplaymanager.h"
#include "replay/screenshot.h"
#include "iclientmode.h"
#include "vgui_controls/AnimationController.h"
//-----------------------------------------------------------------------------
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
//-----------------------------------------------------------------------------
DECLARE_HUDELEMENT( CReplayReminderPanel );
//-----------------------------------------------------------------------------
CReplayReminderPanel::CReplayReminderPanel( const char *pElementName ) : EditablePanel( g_pClientMode->GetViewport(), "ReplayReminder" ), CHudElement( pElementName ) { SetScheme( "ClientScheme" );
m_flShowTime = 0; m_bShouldDraw = false; }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CReplayReminderPanel::SetupText() { // Get current key binding, if any.
const char *pBoundKey = engine->Key_LookupBinding( "save_replay" ); if ( !pBoundKey || FStrEq( pBoundKey, "(null)" ) ) { pBoundKey = " "; }
char szKey[16]; Q_snprintf( szKey, sizeof(szKey), "%s", pBoundKey );
wchar_t wKey[16]; wchar_t wLabel[256];
g_pVGuiLocalize->ConvertANSIToUnicode( szKey, wKey, sizeof( wKey ) ); g_pVGuiLocalize->ConstructString_safe( wLabel, g_pVGuiLocalize->Find("#Replay_freezecam_replay" ), 1, wKey );
// Set the text
SetDialogVariable( "text", wLabel ); }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CReplayReminderPanel::ApplySchemeSettings( IScheme *pScheme ) { LoadControlSettings("Resource/UI/ReplayReminder.res", "GAME");
BaseClass::ApplySchemeSettings( pScheme );
SetupText(); }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CReplayReminderPanel::Show() { m_flShowTime = gpGlobals->curtime; SetVisible( true ); g_pClientMode->GetViewportAnimationController()->StartAnimationSequence( GetParent(), "HudReplayReminderIn" ); }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CReplayReminderPanel::Hide() { SetVisible( false ); m_flShowTime = 0; }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
int CReplayReminderPanel::HudElementKeyInput( int down, ButtonCode_t keynum, const char *pszCurrentBinding ) { if ( ShouldDraw() && pszCurrentBinding ) { if ( FStrEq (pszCurrentBinding, "save_replay" ) ) { SetVisible( false ); } }
return 0; }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CReplayReminderPanel::OnThink() { BaseClass::OnThink();
if ( !IsVisible() ) return; // If we're displaying the element for some specific duration...
if ( m_flShowTime ) { // Get maximum duration
ConVarRef replay_postwinreminderduration( "replay_postwinreminderduration" ); float flShowLength = replay_postwinreminderduration.IsValid() ? replay_postwinreminderduration.GetFloat() : 5.0f;
if ( gpGlobals->curtime >= m_flShowTime + flShowLength ) { m_flShowTime = 0; SetVisible( false ); } } }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CReplayReminderPanel::SetVisible( bool bState ) { if ( bState ) { SetupText(); }
// Store this state for ShouldDraw()
m_bShouldDraw = bState;
BaseClass::SetVisible( bState ); }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
bool CReplayReminderPanel::ShouldDraw() { return m_bShouldDraw; }
#endif // #if defined( REPLAY_ENABLED )
|