Counter Strike : Global Offensive Source Code
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.
 
 
 
 
 
 

119 lines
2.5 KiB

//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#include "cbase.h"
#include "hud.h"
#include "hud_subtitles.h"
#include "iclientmode.h"
#include <vgui/ISurface.h>
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
using namespace vgui;
DECLARE_HUDELEMENT( CHudSubtitles );
CHudSubtitles::CHudSubtitles( const char *pElementName ) :
CHudElement( pElementName ),
BaseClass( NULL, "HudSubtitles" )
{
vgui::Panel *pParent = GetClientMode()->GetViewport();
SetParent( pParent );
SetScheme( "basemodui_scheme" );
SetProportional( true );
int nScreenWide, nScreenTall;
vgui::surface()->GetScreenSize( nScreenWide, nScreenTall );
SetPos( 0, 0 );
SetSize( nScreenWide, nScreenTall );
m_pSubtitlePanel = NULL;
m_bIsPaused = false;
}
CHudSubtitles::~CHudSubtitles()
{
delete m_pSubtitlePanel;
m_pSubtitlePanel = NULL;
}
void CHudSubtitles::ApplySchemeSettings( IScheme *pScheme )
{
BaseClass::ApplySchemeSettings( pScheme );
}
void CHudSubtitles::StartCaptions( const char *pFilename )
{
bool bUseCaptioning = ShouldUseCaptioning();
if ( !bUseCaptioning )
return;
StopCaptions();
// start the subtitle sequence
m_pSubtitlePanel = new CSubtitlePanel( this, pFilename, GetTall() );
if ( !m_pSubtitlePanel->StartCaptions() )
{
StopCaptions();
}
}
void CHudSubtitles::StopCaptions()
{
delete m_pSubtitlePanel;
m_pSubtitlePanel = NULL;
}
void CHudSubtitles::LevelShutdown()
{
StopCaptions();
}
void CHudSubtitles::Reset()
{
StopCaptions();
}
//-----------------------------------------------------------------------------
// Purpose: Save CPU cycles by letting the HUD system early cull
// costly traversal. Called per frame, return true if thinking and
// painting need to occur.
//-----------------------------------------------------------------------------
bool CHudSubtitles::ShouldDraw()
{
bool bIsPaused = engine->IsPaused();
if ( m_bIsPaused != bIsPaused )
{
m_bIsPaused = bIsPaused;
if ( m_pSubtitlePanel )
{
m_pSubtitlePanel->Pause( m_bIsPaused );
}
}
bool bNeedsDraw = m_pSubtitlePanel && m_pSubtitlePanel->HasCaptions();
if ( !CHudElement::ShouldDraw() )
{
bNeedsDraw = false;
}
return bNeedsDraw;
}
CON_COMMAND( hud_subtitles, "Plays the Subtitles: <filename>" )
{
if ( args.ArgC() < 2 )
return;
CHudSubtitles *pHudSubtitles = GET_FULLSCREEN_HUDELEMENT( CHudSubtitles );
if ( pHudSubtitles )
{
pHudSubtitles->StartCaptions( args[1] );
}
}