|
|
//========= 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
|