mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-11 11:19:09 +00:00
1
This commit is contained in:
@@ -0,0 +1,932 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
|
||||
#include "cbase.h"
|
||||
|
||||
#include "confirm_dialog.h"
|
||||
|
||||
#include "ienginevgui.h"
|
||||
#include "econ_controls.h"
|
||||
#include "vgui/IInput.h"
|
||||
#include "vgui/ISurface.h"
|
||||
#include "vgui_controls/TextImage.h"
|
||||
#include "vgui_controls/CheckButton.h"
|
||||
#include "econ_ui.h"
|
||||
#include "store/store_panel.h"
|
||||
#ifdef TF_CLIENT_DLL
|
||||
#include "tf_playerpanel.h"
|
||||
#endif // TF_CLIENT_DLL
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include <tier0/memdbgon.h>
|
||||
|
||||
static const wchar_t* GetSCGlyph( const char* action )
|
||||
{
|
||||
auto origin = g_pInputSystem->GetSteamControllerActionOrigin( action, GAME_ACTION_SET_FPSCONTROLS );
|
||||
return g_pInputSystem->GetSteamControllerFontCharacterForActionOrigin( origin );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CConfirmDialog::CConfirmDialog( vgui::Panel *parent )
|
||||
: BaseClass( parent, "ConfirmDialog" ),
|
||||
m_pCancelButton( NULL ),
|
||||
m_pConfirmButton( NULL ),
|
||||
m_pIcon( NULL )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CConfirmDialog::ApplySchemeSettings( vgui::IScheme *pScheme )
|
||||
{
|
||||
BaseClass::ApplySchemeSettings( pScheme );
|
||||
|
||||
LoadControlSettings( GetResFile(), "GAME" );
|
||||
|
||||
SetBorder( pScheme->GetBorder("EconItemBorder") );
|
||||
|
||||
// Cache off button ptrs
|
||||
m_pConfirmButton = dynamic_cast< CExButton* >( FindChildByName( "ConfirmButton" ) );
|
||||
m_pCancelButton = dynamic_cast< CExButton* >( FindChildByName( "CancelButton" ) );
|
||||
m_pIcon = dynamic_cast< vgui::ImagePanel* >( FindChildByName( "Icon" ) );
|
||||
|
||||
SetDialogVariable( "text", GetText() );
|
||||
|
||||
if ( ::input->IsSteamControllerActive() )
|
||||
{
|
||||
auto iconConfirm = GetSCGlyph( "cl_trigger_first_notification" );
|
||||
auto iconCancel = GetSCGlyph( "cl_decline_first_notification" );
|
||||
auto confirmHint = dynamic_cast< CExLabel* >( FindChildByName( "ConfirmButtonHintIcon" ) );
|
||||
auto cancelHint = dynamic_cast< CExLabel* >( FindChildByName( "CancelButtonHintIcon" ) );
|
||||
if ( confirmHint )
|
||||
{
|
||||
confirmHint->SetText( iconConfirm );
|
||||
}
|
||||
|
||||
if ( cancelHint )
|
||||
{
|
||||
cancelHint->SetText( iconCancel );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CConfirmDialog::Show( bool bMakePopup )
|
||||
{
|
||||
SetVisible( true );
|
||||
if ( bMakePopup )
|
||||
{
|
||||
MakePopup();
|
||||
}
|
||||
MoveToFront();
|
||||
SetKeyBoardInputEnabled( true );
|
||||
|
||||
InvalidateLayout( true, true );
|
||||
|
||||
if ( ::input->IsSteamControllerActive() )
|
||||
{
|
||||
auto iconConfirm = GetSCGlyph( "vote_option1" );
|
||||
auto iconCancel = GetSCGlyph( "vote_option2" );
|
||||
bool bControllerMapped = iconConfirm[0] && iconCancel[0];
|
||||
if ( bControllerMapped )
|
||||
{
|
||||
SetMouseInputEnabled( false );
|
||||
}
|
||||
else
|
||||
{
|
||||
SetMouseInputEnabled( true );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetMouseInputEnabled( true );
|
||||
}
|
||||
|
||||
TFModalStack()->PushModal( this );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CConfirmDialog::SetIconImage( const char *pszIcon )
|
||||
{
|
||||
Assert( m_pIcon );
|
||||
if ( m_pIcon )
|
||||
{
|
||||
m_pIcon->SetImage( pszIcon );
|
||||
m_pIcon->SetVisible( ( pszIcon ? true : false ) );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CConfirmDialog::OnCommand( const char *command )
|
||||
{
|
||||
if ( !Q_strnicmp( command, "cancel", 6 ) )
|
||||
{
|
||||
FinishUp();
|
||||
PostMessage( GetParent(), new KeyValues( "ConfirmDlgResult", "confirmed", 0 ) );
|
||||
}
|
||||
else if ( !Q_strnicmp( command, "confirm", 7 ) )
|
||||
{
|
||||
FinishUp();
|
||||
PostMessage( GetParent(), new KeyValues( "ConfirmDlgResult", "confirmed", 1 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
engine->ClientCmd( const_cast<char *>( command ) );
|
||||
}
|
||||
|
||||
BaseClass::OnCommand( command );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CConfirmDialog::OnKeyCodeTyped( vgui::KeyCode code )
|
||||
{
|
||||
if( code == KEY_ESCAPE )
|
||||
{
|
||||
OnCommand( "cancel" );
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseClass::OnKeyCodePressed( code );
|
||||
}
|
||||
}
|
||||
|
||||
///-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CConfirmDialog::OnKeyCodePressed( vgui::KeyCode code )
|
||||
{
|
||||
ButtonCode_t nButtonCode = GetBaseButtonCode( code );
|
||||
|
||||
// We map the voting action buttons to the pseudo-buttons F1/F2 so that players can use them to interact with dialogs on the fly
|
||||
if( nButtonCode == KEY_XBUTTON_B || nButtonCode == STEAMCONTROLLER_F2 || nButtonCode == STEAMCONTROLLER_B )
|
||||
{
|
||||
OnCommand( "cancel" );
|
||||
}
|
||||
else if ( nButtonCode == KEY_ENTER || nButtonCode == KEY_SPACE || nButtonCode == KEY_XBUTTON_A || nButtonCode == STEAMCONTROLLER_F1 || nButtonCode == STEAMCONTROLLER_A )
|
||||
{
|
||||
OnCommand( "confirm" );
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseClass::OnKeyCodePressed( code );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
const char *CConfirmDialog::GetResFile()
|
||||
{
|
||||
if ( ::input->IsSteamControllerActive() )
|
||||
{
|
||||
return "Resource/UI/econ/ConfirmDialog_SC.res";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Resource/UI/econ/ConfirmDialog.res";
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Hide the panel, mark for deletion, remove from modal stack.
|
||||
//-----------------------------------------------------------------------------
|
||||
void CConfirmDialog::FinishUp()
|
||||
{
|
||||
SetVisible( false );
|
||||
TFModalStack()->PopModal( this );
|
||||
MarkForDeletion();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CConfirmDialog::OnSizeChanged( int nNewWide, int nNewTall )
|
||||
{
|
||||
int nX, nY;
|
||||
|
||||
// Shift buttons up
|
||||
if ( m_pCancelButton )
|
||||
{
|
||||
m_pCancelButton->GetPos( nX, nY );
|
||||
m_pCancelButton->SetPos( nX, nNewTall - m_pCancelButton->GetTall() - YRES(15) );
|
||||
}
|
||||
|
||||
if ( m_pConfirmButton )
|
||||
{
|
||||
m_pConfirmButton->GetPos( nX, nY );
|
||||
m_pConfirmButton->SetPos( nX, nNewTall - m_pConfirmButton->GetTall() - YRES(15) );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFGenericConfirmDialog::CTFGenericConfirmDialog( const char *pTitle, const char *pTextKey,
|
||||
const char *pConfirmBtnText, const char *pCancelBtnText,
|
||||
GenericConfirmDialogCallback callback, vgui::Panel *pParent )
|
||||
: BaseClass( pParent ),
|
||||
m_pTextKey( pTextKey )
|
||||
{
|
||||
CommonInit( pTitle, pConfirmBtnText, pCancelBtnText, callback, pParent );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFGenericConfirmDialog::CTFGenericConfirmDialog( const char *pTitle, const wchar_t *pText,
|
||||
const char *pConfirmBtnText, const char *pCancelBtnText,
|
||||
GenericConfirmDialogCallback callback, vgui::Panel *pParent )
|
||||
: BaseClass( pParent ),
|
||||
m_pTextKey( NULL )
|
||||
{
|
||||
CommonInit( pTitle, pConfirmBtnText, pCancelBtnText, callback, pParent );
|
||||
|
||||
V_wcsncpy( m_wszBuffer, pText, sizeof( m_wszBuffer ) );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFGenericConfirmDialog::CommonInit( const char *pTitle, const char *pConfirmBtnText, const char *pCancelBtnText,
|
||||
GenericConfirmDialogCallback callback, vgui::Panel *pParent )
|
||||
{
|
||||
if ( pParent == NULL )
|
||||
{
|
||||
vgui::HScheme scheme = vgui::scheme()->LoadSchemeFromFileEx( enginevgui->GetPanel( PANEL_CLIENTDLL ), "resource/ClientScheme.res", "ClientScheme");
|
||||
SetScheme(scheme);
|
||||
SetProportional( true );
|
||||
}
|
||||
|
||||
m_pTitle = pTitle;
|
||||
m_pConfirmBtnText = pConfirmBtnText;
|
||||
m_pCancelBtnText = pCancelBtnText;
|
||||
m_pCallback = callback;
|
||||
m_pContext = NULL;
|
||||
m_pKeyValues = NULL;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFGenericConfirmDialog::~CTFGenericConfirmDialog()
|
||||
{
|
||||
if ( m_pKeyValues )
|
||||
{
|
||||
m_pKeyValues->deleteThis();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
const wchar_t *CTFGenericConfirmDialog::GetText()
|
||||
{
|
||||
if ( m_pTextKey )
|
||||
{
|
||||
g_pVGuiLocalize->ConstructString_safe( m_wszBuffer, m_pTextKey, m_pKeyValues );
|
||||
return m_wszBuffer;
|
||||
}
|
||||
|
||||
return m_wszBuffer;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFGenericConfirmDialog::ApplySchemeSettings( vgui::IScheme *pScheme )
|
||||
{
|
||||
BaseClass::ApplySchemeSettings( pScheme );
|
||||
|
||||
if ( m_pConfirmButton && m_pConfirmBtnText )
|
||||
{
|
||||
m_pConfirmButton->SetText( m_pConfirmBtnText );
|
||||
}
|
||||
|
||||
if ( m_pCancelButton && m_pCancelBtnText )
|
||||
{
|
||||
m_pCancelButton->SetText (m_pCancelBtnText );
|
||||
}
|
||||
|
||||
SetXToRed( m_pConfirmButton );
|
||||
SetXToRed( m_pCancelButton );
|
||||
|
||||
CExLabel *pTitle = dynamic_cast< CExLabel* >( FindChildByName( "TitleLabel" ) );
|
||||
if ( pTitle )
|
||||
{
|
||||
pTitle->SetText( m_pTitle );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFGenericConfirmDialog::PerformLayout()
|
||||
{
|
||||
// Center it, keeping requested size
|
||||
int x, y, ww, wt, wide, tall;
|
||||
vgui::surface()->GetWorkspaceBounds( x, y, ww, wt );
|
||||
GetSize(wide, tall);
|
||||
SetPos(x + ((ww - wide) / 2), y + ((wt - tall) / 2));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFGenericConfirmDialog::OnCommand( const char *command )
|
||||
{
|
||||
bool bFinishUp = false;
|
||||
bool bConfirmed = false;
|
||||
|
||||
if ( !Q_strnicmp( command, "cancel", 6 ) )
|
||||
{
|
||||
bConfirmed = false;
|
||||
bFinishUp = true;
|
||||
}
|
||||
else if ( !Q_strnicmp( command, "confirm", 7 ) )
|
||||
{
|
||||
bConfirmed = true;
|
||||
bFinishUp = true;
|
||||
}
|
||||
|
||||
if ( bFinishUp )
|
||||
{
|
||||
FinishUp();
|
||||
if ( m_pCallback )
|
||||
{
|
||||
m_pCallback( bConfirmed, m_pContext );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
BaseClass::OnCommand( command );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFGenericConfirmDialog::SetStringTokens( KeyValues *pKeyValues )
|
||||
{
|
||||
if ( m_pKeyValues != NULL )
|
||||
{
|
||||
m_pKeyValues->deleteThis();
|
||||
}
|
||||
m_pKeyValues = pKeyValues->MakeCopy();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFGenericConfirmDialog::AddStringToken( const char* pToken, const wchar_t* pValue )
|
||||
{
|
||||
if ( m_pKeyValues == NULL )
|
||||
{
|
||||
m_pKeyValues = new KeyValues( "GenericConfirmDialog" );
|
||||
}
|
||||
m_pKeyValues->SetWString( pToken, pValue );
|
||||
InvalidateLayout( false, true );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFGenericConfirmDialog::SetContext( void *pContext )
|
||||
{
|
||||
m_pContext = pContext;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFGenericConfirmOptOutDialog::CTFGenericConfirmOptOutDialog( const char *pTitle,
|
||||
const char *pText,
|
||||
const char *pConfirmBtnText,
|
||||
const char *pCancelBtnText,
|
||||
const char *pOptOutText,
|
||||
const char *pOptOutConVarName,
|
||||
GenericConfirmDialogCallback callback,
|
||||
vgui::Panel *parent ) :
|
||||
CTFGenericConfirmDialog( pTitle, pText, pConfirmBtnText, pCancelBtnText, callback, parent )
|
||||
{
|
||||
m_optOutText = pOptOutText;
|
||||
m_optOutCheckbox = NULL;
|
||||
m_optOutConVarName = pOptOutConVarName;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFGenericConfirmOptOutDialog::ApplySchemeSettings( vgui::IScheme *pScheme )
|
||||
{
|
||||
BaseClass::ApplySchemeSettings( pScheme );
|
||||
|
||||
m_optOutCheckbox = dynamic_cast< vgui::CheckButton * >( FindChildByName( "OptOutCheckbox" ) );
|
||||
|
||||
if ( m_optOutCheckbox && m_optOutText )
|
||||
{
|
||||
m_optOutCheckbox->SetMouseInputEnabled( true );
|
||||
m_optOutCheckbox->SetText( m_optOutText );
|
||||
|
||||
// center horizontally
|
||||
vgui::Panel *parent = m_optOutCheckbox->GetParent();
|
||||
if ( parent )
|
||||
{
|
||||
float parentWidth = parent->GetWide();
|
||||
|
||||
int checkBoxWidth, checkBoxHeight;
|
||||
m_optOutCheckbox->GetContentSize( checkBoxWidth, checkBoxHeight );
|
||||
|
||||
// fudge in checkbox width
|
||||
checkBoxWidth += 34.0f;
|
||||
|
||||
int checkX, checkY;
|
||||
m_optOutCheckbox->GetPos( checkX, checkY );
|
||||
|
||||
m_optOutCheckbox->SetPos( ( parentWidth - checkBoxWidth ) / 2.0f, checkY );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
const char *CTFGenericConfirmOptOutDialog::GetResFile()
|
||||
{
|
||||
return "Resource/UI/econ/ConfirmDialogOptOut.res";
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFGenericConfirmOptOutDialog::OnButtonChecked( KeyValues *pData )
|
||||
{
|
||||
ConVarRef var( m_optOutConVarName );
|
||||
if ( !var.IsValid() )
|
||||
return;
|
||||
|
||||
if ( !m_optOutCheckbox )
|
||||
return;
|
||||
|
||||
var.SetValue( m_optOutCheckbox->IsSelected() );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFUpgradeBoxDialog::OnCommand( const char *command )
|
||||
{
|
||||
if ( !Q_stricmp( command, "upgrade" ) )
|
||||
{
|
||||
FinishUp();
|
||||
|
||||
// Open the store, and show the upgrade advice
|
||||
EconUI()->CloseEconUI();
|
||||
EconUI()->OpenStorePanel( STOREPANEL_SHOW_UPGRADESTEPS, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseClass::OnCommand( command );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFGenericConfirmDialog *ShowConfirmDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, const char *pCancelBtnText, GenericConfirmDialogCallback callback,
|
||||
vgui::Panel *parent/*=NULL*/, void *pContext/*=NULL*/, const char *pSound/*=NULL*/ )
|
||||
{
|
||||
CTFGenericConfirmDialog *pDialog = vgui::SETUP_PANEL(
|
||||
new CTFGenericConfirmDialog(
|
||||
pTitle, pText,
|
||||
pConfirmBtnText, pCancelBtnText,
|
||||
callback, parent
|
||||
)
|
||||
);
|
||||
|
||||
if ( pDialog )
|
||||
{
|
||||
pDialog->Show();
|
||||
|
||||
// Play a sound, if one was supplied.
|
||||
if ( pSound && pSound[0] )
|
||||
{
|
||||
vgui::surface()->PlaySound( pSound );
|
||||
}
|
||||
}
|
||||
|
||||
if ( pContext )
|
||||
{
|
||||
pDialog->SetContext( pContext );
|
||||
}
|
||||
|
||||
return pDialog;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialog *ShowMessageBox( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent, void *pContext )
|
||||
{
|
||||
return ShowMessageBox( pTitle, pText, NULL, pConfirmBtnText, callback, parent, pContext );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialog *ShowMessageBox( const char *pTitle, const wchar_t *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent , void *pContext)
|
||||
{
|
||||
CTFMessageBoxDialog *pDialog = vgui::SETUP_PANEL(
|
||||
new CTFMessageBoxDialog(
|
||||
pTitle, pText,
|
||||
pConfirmBtnText,
|
||||
callback, parent
|
||||
)
|
||||
);
|
||||
|
||||
if ( pDialog )
|
||||
{
|
||||
if ( pContext )
|
||||
{
|
||||
pDialog->SetContext( pContext );
|
||||
}
|
||||
|
||||
pDialog->Show();
|
||||
}
|
||||
|
||||
return pDialog;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialog *ShowMessageBox( const char *pTitle, const char *pText, KeyValues *pKeyValues, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent , void *pContext)
|
||||
{
|
||||
CTFMessageBoxDialog *pDialog = vgui::SETUP_PANEL( new CTFMessageBoxDialog( pTitle, pText,
|
||||
pConfirmBtnText,
|
||||
callback, parent ) );
|
||||
|
||||
if ( pDialog )
|
||||
{
|
||||
if ( pContext )
|
||||
{
|
||||
pDialog->SetContext( pContext );
|
||||
}
|
||||
|
||||
if ( pKeyValues )
|
||||
{
|
||||
pDialog->SetStringTokens( pKeyValues );
|
||||
pDialog->SetDialogVariable( "text", pDialog->GetText() );
|
||||
}
|
||||
|
||||
pDialog->Show();
|
||||
}
|
||||
|
||||
return pDialog;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Pop up a model yes/no dialog with an "opt out" checkbox that persists via a ConVar
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFGenericConfirmOptOutDialog *ShowConfirmOptOutDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, const char *pCancelBtnText, const char *pOptOutText, const char *pOptOutConVarName, GenericConfirmDialogCallback callback, vgui::Panel *parent)
|
||||
{
|
||||
CTFGenericConfirmOptOutDialog *pDialog = vgui::SETUP_PANEL( new CTFGenericConfirmOptOutDialog( pTitle, pText,
|
||||
pConfirmBtnText, pCancelBtnText,
|
||||
pOptOutText, pOptOutConVarName,
|
||||
callback, parent ) );
|
||||
if ( pDialog )
|
||||
{
|
||||
pDialog->Show();
|
||||
}
|
||||
|
||||
return pDialog;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialog *ShowUpgradeMessageBox( const char *pTitle, const char *pText,
|
||||
const char *pConfirmBtnText,
|
||||
GenericConfirmDialogCallback callback,
|
||||
vgui::Panel *parent, void *pContext )
|
||||
{
|
||||
CTFMessageBoxDialog *pDialog = vgui::SETUP_PANEL(
|
||||
new CTFUpgradeBoxDialog(
|
||||
pTitle, pText,
|
||||
pConfirmBtnText, callback, parent
|
||||
)
|
||||
);
|
||||
|
||||
if ( pDialog )
|
||||
{
|
||||
pDialog->SetContext( pContext );
|
||||
pDialog->Show();
|
||||
}
|
||||
|
||||
return pDialog;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Pop up a dialog prompting the player to go to the store to upgrade
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialog *ShowUpgradeMessageBox( const char *pTitle, const char *pText )
|
||||
{
|
||||
return ShowUpgradeMessageBox( pTitle, pText, "#GameUI_OK", NULL, NULL, NULL );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialogWithSound *ShowMessageBoxWithSound( const char *pTitle, const char *pText, const char *pszSound, float flDelay, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent, void *pContext )
|
||||
{
|
||||
return ShowMessageBoxWithSound( pTitle, pText, NULL, pszSound, flDelay, pConfirmBtnText, callback, parent, pContext );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialogWithSound *ShowMessageBoxWithSound( const char *pTitle, const wchar_t *pText, const char *pszSound, float flDelay, const char *pConfirmBtnText , GenericConfirmDialogCallback callback, vgui::Panel *parent, void *pContext )
|
||||
{
|
||||
CTFMessageBoxDialogWithSound *pDialog = vgui::SETUP_PANEL( new CTFMessageBoxDialogWithSound( pTitle, pText, pszSound, flDelay, pConfirmBtnText, callback, parent ) );
|
||||
|
||||
if ( pDialog )
|
||||
{
|
||||
if ( pContext )
|
||||
{
|
||||
pDialog->SetContext( pContext );
|
||||
}
|
||||
|
||||
pDialog->Show();
|
||||
}
|
||||
|
||||
return pDialog;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialogWithSound *ShowMessageBoxWithSound( const char *pTitle, const char *pText, KeyValues *pKeyValues, const char *pszSound, float flDelay, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent, void *pContext )
|
||||
{
|
||||
CTFMessageBoxDialogWithSound *pDialog = vgui::SETUP_PANEL( new CTFMessageBoxDialogWithSound( pTitle, pText, pszSound, flDelay, pConfirmBtnText, callback, parent ) );
|
||||
|
||||
if ( pDialog )
|
||||
{
|
||||
if ( pContext )
|
||||
{
|
||||
pDialog->SetContext( pContext );
|
||||
}
|
||||
|
||||
if ( pKeyValues )
|
||||
{
|
||||
pDialog->SetStringTokens( pKeyValues );
|
||||
pDialog->SetDialogVariable( "text", pDialog->GetText() );
|
||||
}
|
||||
|
||||
pDialog->Show();
|
||||
}
|
||||
|
||||
return pDialog;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialogWithSound::CTFMessageBoxDialogWithSound( const char *pTitle, const char *pText, const char *pszSound, float flDelay, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent )
|
||||
: CTFMessageBoxDialog( pTitle, pText, pConfirmBtnText, callback, parent )
|
||||
{
|
||||
m_szSound[0] = 0;
|
||||
|
||||
if ( pszSound )
|
||||
{
|
||||
V_strcpy_safe( m_szSound, pszSound );
|
||||
}
|
||||
|
||||
m_flSoundTime = gpGlobals->curtime + flDelay;
|
||||
m_bPlayedSound = false;
|
||||
|
||||
vgui::ivgui()->AddTickSignal( GetVPanel(), 50 );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFMessageBoxDialogWithSound::CTFMessageBoxDialogWithSound( const char *pTitle, const wchar_t *pText, const char *pszSound, float flDelay, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent )
|
||||
: CTFMessageBoxDialog( pTitle, pText, pConfirmBtnText, callback, parent )
|
||||
{
|
||||
m_szSound[0] = 0;
|
||||
|
||||
if ( pszSound )
|
||||
{
|
||||
V_strcpy_safe( m_szSound, pszSound );
|
||||
}
|
||||
|
||||
m_flSoundTime = gpGlobals->curtime + flDelay;
|
||||
m_bPlayedSound = false;
|
||||
|
||||
vgui::ivgui()->AddTickSignal( GetVPanel(), 50 );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFMessageBoxDialogWithSound::OnTick()
|
||||
{
|
||||
BaseClass::OnTick();
|
||||
|
||||
if ( !m_bPlayedSound && ( m_flSoundTime < gpGlobals->curtime ) )
|
||||
{
|
||||
m_bPlayedSound = true;
|
||||
|
||||
if ( Q_strlen( m_szSound ) > 0 )
|
||||
{
|
||||
C_BasePlayer *pLocalPlayer = C_BasePlayer::GetLocalPlayer();
|
||||
if ( pLocalPlayer )
|
||||
{
|
||||
pLocalPlayer->EmitSound( m_szSound );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef TF_CLIENT_DLL
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFReviveDialog::CTFReviveDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent )
|
||||
: CTFMessageBoxDialog( pTitle, pText, pConfirmBtnText, callback, parent )
|
||||
{
|
||||
m_pTargetHealth = new CTFSpectatorGUIHealth( this, "SpectatorGUIHealth" );
|
||||
m_pTargetHealth->SetAllowAnimations( false );
|
||||
m_pTargetHealth->HideHealthBonusImage();
|
||||
|
||||
vgui::ivgui()->AddTickSignal( GetVPanel(), 50 );
|
||||
OnTick();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFReviveDialog::PerformLayout()
|
||||
{
|
||||
// Skipping base class
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFReviveDialog::OnTick()
|
||||
{
|
||||
BaseClass::OnTick();
|
||||
|
||||
if ( !m_pTargetHealth )
|
||||
return;
|
||||
|
||||
if ( !m_hEntity )
|
||||
return;
|
||||
|
||||
float flHealth = m_hEntity->GetHealth();
|
||||
if ( flHealth != m_flPrevHealth )
|
||||
{
|
||||
float flMaxHealth = m_hEntity->GetMaxHealth();
|
||||
m_pTargetHealth->SetHealth( flHealth, flMaxHealth, flMaxHealth );
|
||||
m_flPrevHealth = flHealth;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFReviveDialog::SetOwner( CBaseEntity *pEntity )
|
||||
{
|
||||
if ( pEntity )
|
||||
{
|
||||
m_hEntity = pEntity;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: In-game dialog that avoids the crosshair area and is much smaller
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFReviveDialog *ShowRevivePrompt( CBaseEntity *pOwner,
|
||||
const char *pTitle,
|
||||
const char *pText,
|
||||
const char *pConfirmBtnText,
|
||||
GenericConfirmDialogCallback callback,
|
||||
vgui::Panel *parent, void *pContext )
|
||||
{
|
||||
CTFReviveDialog *pDialog = vgui::SETUP_PANEL( new CTFReviveDialog( pTitle, pText, pConfirmBtnText, callback, parent ) );
|
||||
if ( pDialog )
|
||||
{
|
||||
if ( pContext )
|
||||
{
|
||||
pDialog->SetContext( pContext );
|
||||
}
|
||||
|
||||
pDialog->SetOwner( pOwner );
|
||||
pDialog->Show();
|
||||
}
|
||||
|
||||
return pDialog;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CEconRequirementDialog::CEconRequirementDialog( const char *pTitle, const char *pTextKey, const char *pItemDefName )
|
||||
: CTFGenericConfirmDialog( pTitle, pTextKey, NULL, NULL, NULL, NULL )
|
||||
, m_hItemDef( pItemDefName )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
const char *CEconRequirementDialog::GetResFile()
|
||||
{
|
||||
return "Resource/UI/MvMEconRequirementDialog.res";
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CEconRequirementDialog::ApplySchemeSettings( vgui::IScheme *pScheme )
|
||||
{
|
||||
BaseClass::ApplySchemeSettings( pScheme );
|
||||
|
||||
vgui::ImagePanel *pItemImagePanel = dynamic_cast<vgui::ImagePanel *>( FindChildByName( "ItemImagePanel", true ) ); Assert( pItemImagePanel );
|
||||
Assert( pItemImagePanel );
|
||||
if ( pItemImagePanel && m_hItemDef )
|
||||
{
|
||||
pItemImagePanel->SetImage( CFmtStr( "../%s_large", m_hItemDef->GetInventoryImage() ) );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CEconRequirementDialog::OnCommand( const char *command )
|
||||
{
|
||||
if ( m_hItemDef && !Q_stricmp( command, "show_in_store" ) )
|
||||
{
|
||||
FinishUp();
|
||||
|
||||
// Open the store, and show the upgrade advice
|
||||
EconUI()->CloseEconUI();
|
||||
EconUI()->OpenStorePanel( m_hItemDef->GetDefinitionIndex(), false );
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseClass::OnCommand( command );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void ShowEconRequirementDialog( const char *pTitle, const char *pText, const char *pItemDefName )
|
||||
{
|
||||
CEconRequirementDialog *pDialog = vgui::SETUP_PANEL( new CEconRequirementDialog( pTitle, pText, pItemDefName ) );
|
||||
if ( pDialog )
|
||||
{
|
||||
pDialog->Show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Get the correct res file to use (depends on Steam Controller state)
|
||||
//-----------------------------------------------------------------------------
|
||||
const char* CTFMessageBoxDialog::GetResFile()
|
||||
{
|
||||
if ( ::input->IsSteamControllerActive() )
|
||||
{
|
||||
return "Resource/UI/econ/MessageBoxDialog_SC.res";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Resource/UI/econ/MessageBoxDialog.res";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif // TF_CLIENT_DLL
|
||||
Reference in New Issue
Block a user