mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
|
||||
#include "cbase.h"
|
||||
|
||||
#if defined( REPLAY_ENABLED )
|
||||
|
||||
#include "replayconfirmquitdlg.h"
|
||||
#include "vgui_controls/TextImage.h"
|
||||
#include "vgui_controls/CheckButton.h"
|
||||
#include "vgui_controls/TextEntry.h"
|
||||
#include "vgui/IInput.h"
|
||||
#include "vgui/ISurface.h"
|
||||
#include "ienginevgui.h"
|
||||
#include "replay/genericclassbased_replay.h"
|
||||
#include "replaybrowserrenderdialog.h"
|
||||
#include "econ/econ_controls.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include <tier0/memdbgon.h>
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
ConVar replay_quitmsg_dontaskagain( "replay_quitmsg_dontaskagain", "0", FCVAR_CLIENTDLL | FCVAR_DONTRECORD | FCVAR_ARCHIVE, "The replay system will ask you to render your replays on quit, unless this cvar is 1.", true, 0, true, 1 );
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
CReplayConfirmQuitDialog::CReplayConfirmQuitDialog( Panel *pParent )
|
||||
: BaseClass( pParent, "confirmquitdlg" ),
|
||||
m_pDontShowAgain( NULL ),
|
||||
m_pQuitButton( NULL )
|
||||
{
|
||||
SetScheme( "ClientScheme" );
|
||||
InvalidateLayout( true, true );
|
||||
}
|
||||
|
||||
void CReplayConfirmQuitDialog::ApplySchemeSettings( vgui::IScheme *pScheme )
|
||||
{
|
||||
// Link in TF scheme
|
||||
extern IEngineVGui *enginevgui;
|
||||
vgui::HScheme pTFScheme = vgui::scheme()->LoadSchemeFromFileEx( enginevgui->GetPanel( PANEL_CLIENTDLL ), "resource/ClientScheme.res", "ClientScheme" );
|
||||
SetScheme( pTFScheme );
|
||||
SetProportional( true );
|
||||
|
||||
BaseClass::ApplySchemeSettings( vgui::scheme()->GetIScheme( pTFScheme ) );
|
||||
|
||||
LoadControlSettings( "Resource/UI/replaybrowser/confirmquitdlg.res", "GAME" );
|
||||
|
||||
m_pDontShowAgain = dynamic_cast< CheckButton * >( FindChildByName( "DontShowThisAgainCheckbox" ) );
|
||||
m_pQuitButton = dynamic_cast< CExButton * >( FindChildByName( "QuitButton" ) );
|
||||
|
||||
if ( m_pQuitButton )
|
||||
{
|
||||
m_pQuitButton->GetTextImage()->ClearColorChangeStream();
|
||||
m_pQuitButton->GetTextImage()->AddColorChange( Color(200,80,60,255), 0 );
|
||||
}
|
||||
}
|
||||
|
||||
void CReplayConfirmQuitDialog::OnCommand( const char *pCommand )
|
||||
{
|
||||
// Store the setting of our "never show this again" checkbox if the user picked anything
|
||||
// except cancel.
|
||||
if ( !FStrEq( pCommand, "cancel" ) && m_pDontShowAgain && m_pDontShowAgain->IsSelected() )
|
||||
{
|
||||
replay_quitmsg_dontaskagain.SetValue( 1 );
|
||||
}
|
||||
|
||||
if ( FStrEq( pCommand, "rendernow_delay" ) )
|
||||
{
|
||||
// Delete this
|
||||
SetVisible( false );
|
||||
MarkForDeletion();
|
||||
|
||||
// Render all unrendered replays now
|
||||
ReplayUI_ShowRenderDialog( NULL, REPLAY_HANDLE_INVALID, true, -1 );
|
||||
}
|
||||
else if ( FStrEq( pCommand, "rendernow" ) )
|
||||
{
|
||||
// Sometimes this message comes in just before input is processed when using a controller
|
||||
// Refire after a delay
|
||||
PostMessage( this, new KeyValues( "Command", "command", "rendernow_delay" ), 0.001f );
|
||||
}
|
||||
else if ( FStrEq( pCommand, "quit" ) )
|
||||
{
|
||||
MarkForDeletion();
|
||||
engine->ClientCmd_Unrestricted( "quit\n" );
|
||||
}
|
||||
else if ( FStrEq( pCommand, "cancel" ) )
|
||||
{
|
||||
MarkForDeletion();
|
||||
}
|
||||
else if ( FStrEq( pCommand, "gotoreplays"))
|
||||
{
|
||||
// "Go to replays"
|
||||
MarkForDeletion();
|
||||
engine->ClientCmd( "replay_reloadbrowser" );
|
||||
}
|
||||
}
|
||||
|
||||
void CReplayConfirmQuitDialog::OnKeyCodeTyped( vgui::KeyCode code )
|
||||
{
|
||||
if ( code == KEY_ESCAPE )
|
||||
{
|
||||
OnCommand( "cancel" );
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseClass::OnKeyCodeTyped( code );
|
||||
}
|
||||
}
|
||||
|
||||
void CReplayConfirmQuitDialog::OnKeyCodePressed( vgui::KeyCode code )
|
||||
{
|
||||
if ( GetBaseButtonCode( code ) == KEY_XBUTTON_B || GetBaseButtonCode( code ) == STEAMCONTROLLER_B )
|
||||
{
|
||||
OnCommand( "cancel" );
|
||||
}
|
||||
else if ( GetBaseButtonCode( code ) == KEY_XBUTTON_A || GetBaseButtonCode( code ) == STEAMCONTROLLER_A )
|
||||
{
|
||||
OnCommand( "quit" );
|
||||
}
|
||||
else if ( GetBaseButtonCode( code ) == KEY_XBUTTON_X || GetBaseButtonCode( code ) == STEAMCONTROLLER_X )
|
||||
{
|
||||
if ( m_pDontShowAgain )
|
||||
{
|
||||
m_pDontShowAgain->SetSelected( !m_pDontShowAgain->IsSelected() );
|
||||
}
|
||||
}
|
||||
else if ( GetBaseButtonCode( code ) == KEY_XBUTTON_Y || GetBaseButtonCode( code ) == STEAMCONTROLLER_Y )
|
||||
{
|
||||
OnCommand( "gotoreplays" );
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseClass::OnKeyCodePressed( code );
|
||||
}
|
||||
}
|
||||
|
||||
bool ReplayUI_ShowConfirmQuitDlg()
|
||||
{
|
||||
if ( replay_quitmsg_dontaskagain.GetBool() )
|
||||
return false;
|
||||
|
||||
CReplayConfirmQuitDialog *pConfirmQuitDlg = vgui::SETUP_PANEL( new CReplayConfirmQuitDialog( NULL ) );
|
||||
if ( pConfirmQuitDlg )
|
||||
{
|
||||
vgui::surface()->PlaySound( "replay\\replaydialog_warn.wav" );
|
||||
|
||||
// Display the panel!
|
||||
pConfirmQuitDlg->SetVisible( true );
|
||||
pConfirmQuitDlg->MakePopup();
|
||||
pConfirmQuitDlg->MoveToFront();
|
||||
pConfirmQuitDlg->SetKeyBoardInputEnabled( true );
|
||||
pConfirmQuitDlg->SetMouseInputEnabled( true );
|
||||
TFModalStack()->PushModal( pConfirmQuitDlg );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user