//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #include "cbase.h" #include "dod_hud_freezepanel.h" #include "vgui_controls/AnimationController.h" #include "iclientmode.h" #include "c_dod_player.h" #include "c_dod_playerresource.h" #include #include #include #include "fmtstr.h" #include "dod_gamerules.h" #include "view.h" #include "ivieweffects.h" #include "viewrender.h" // memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h" DECLARE_HUDELEMENT_DEPTH( CDODFreezePanel, 1 ); #define CALLOUT_WIDE (XRES(100)) #define CALLOUT_TALL (XRES(50)) extern float g_flFreezeFlash; ConVar cl_dod_freezecam( "cl_dod_freezecam", "1", FCVAR_ARCHIVE, "Client option to not show freeze camera on death" ); #define FREEZECAM_SCREENSHOT_STRING "is looking good!" bool IsTakingAFreezecamScreenshot( void ) { // Don't draw in freezecam, or when the game's not running C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer(); bool bInFreezeCam = ( pPlayer && pPlayer->GetObserverMode() == OBS_MODE_FREEZECAM ); if ( bInFreezeCam == true && engine->IsTakingScreenshot() ) return true; CDODFreezePanel *pPanel = GET_HUDELEMENT( CDODFreezePanel ); if ( pPanel ) { if ( pPanel->IsHoldingAfterScreenShot() ) return true; } return false; } //----------------------------------------------------------------------------- // Purpose: Constructor //----------------------------------------------------------------------------- CDODFreezePanel::CDODFreezePanel( const char *pElementName ) : EditablePanel( NULL, "FreezePanel" ), CHudElement( pElementName ) { vgui::Panel *pParent = g_pClientMode->GetViewport(); SetParent( pParent ); SetVisible( false ); SetScheme( "ClientScheme" ); m_iKillerIndex = 0; m_iShowNemesisPanel = SHOW_NO_NEMESIS; m_iYBase = -1; m_flShowCalloutsAt = 0; m_iBasePanelOriginalX = -1; m_iBasePanelOriginalY = -1; RegisterForRenderGroup( "winpanel" ); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CDODFreezePanel::Reset() { Hide(); } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CDODFreezePanel::Init() { // listen for events ListenForGameEvent( "show_freezepanel" ); ListenForGameEvent( "hide_freezepanel" ); ListenForGameEvent( "freezecam_started" ); ListenForGameEvent( "player_death" ); ListenForGameEvent( "dod_win_panel" ); Hide(); CHudElement::Init(); } //----------------------------------------------------------------------------- // Purpose: Applies scheme settings //----------------------------------------------------------------------------- void CDODFreezePanel::ApplySchemeSettings( vgui::IScheme *pScheme ) { BaseClass::ApplySchemeSettings( pScheme ); LoadControlSettings( "resource/UI/FreezePanel_Basic.res" ); m_pBasePanel = dynamic_cast( FindChildByName("FreezePanelBase") ); Assert( m_pBasePanel ); if ( m_pBasePanel ) { m_pFreezeLabel = dynamic_cast