//========= Copyright Valve Corporation, All rights reserved. ============// // //=======================================================================================// #ifndef CONFIRM_DIALOG_H #define CONFIRM_DIALOG_H #ifdef _WIN32 #pragma once #endif #include "vgui_controls/EditablePanel.h" #include "vgui_controls/CheckButton.h" #include "inputsystem/iinputsystem.h" //----------------------------------------------------------------------------- // Purpose: // - Basic confirm dialog - derive from this and implement GetText(). // - The user will have two options, essentially yes or no. // - A "ConfirmDlgResult" message is sent to the parent with the result. // Check the "confirmed" parameter. // - Panel deletes itself. // - See CConfirmDeleteDialog for a generic delete confirmation dialog. //----------------------------------------------------------------------------- class CExButton; #ifdef TF_CLIENT_DLL class CTFSpectatorGUIHealth; #endif // TF_CLIENT_DLL class CConfirmDialog : public vgui::EditablePanel { DECLARE_CLASS_SIMPLE( CConfirmDialog, vgui::EditablePanel ); public: CConfirmDialog( vgui::Panel *parent ); virtual const wchar_t *GetText() = 0; void Show( bool bMakePopup = true ); void SetIconImage( const char *pszIcon ); protected: virtual void OnSizeChanged(int nNewWide, int nNewTall ); virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); virtual void OnCommand( const char *command ); virtual void OnKeyCodeTyped( vgui::KeyCode code ); virtual void OnKeyCodePressed( vgui::KeyCode code ); virtual const char *GetResFile(); void FinishUp(); // Hide the panel, mark for deletion, remove from modal stack. CExButton *m_pConfirmButton; CExButton *m_pCancelButton; vgui::ImagePanel *m_pIcon; }; //----------------------------------------------------------------------------- typedef void (*GenericConfirmDialogCallback)( bool bConfirmed, void *pContext ); // An implementation of the Confirm Dialog that is "generic" class CTFGenericConfirmDialog : public CConfirmDialog { DECLARE_CLASS_SIMPLE( CTFGenericConfirmDialog, CConfirmDialog ); public: CTFGenericConfirmDialog( const char *pTitle, const char *pTextKey, const char *pConfirmBtnText, const char *pCancelBtnText, GenericConfirmDialogCallback callback, vgui::Panel *pParent ); CTFGenericConfirmDialog( const char *pTitle, const wchar_t *pText, const char *pConfirmBtnText, const char *pCancelBtnText, GenericConfirmDialogCallback callback, vgui::Panel *pParent ); virtual ~CTFGenericConfirmDialog(); virtual const wchar_t *GetText(); virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); virtual void PerformLayout(); virtual void OnCommand( const char *command ); void SetStringTokens( KeyValues *pKeyValues ); void AddStringToken( const char* pToken, const wchar_t* pValue ); void SetContext( void *pContext ); protected: void CommonInit( const char *pTitle, const char *pConfirmBtnText, const char *pCancelBtnText, GenericConfirmDialogCallback callback, vgui::Panel *pParent ); const char *m_pTitle; const char *m_pTextKey; const char *m_pConfirmBtnText; const char *m_pCancelBtnText; KeyValues *m_pKeyValues; wchar_t m_wszBuffer[1024]; GenericConfirmDialogCallback m_pCallback; void *m_pContext; }; // A generic message dialog, which is just a generic confirm dialog w/o the cancel button class CTFMessageBoxDialog : public CTFGenericConfirmDialog { DECLARE_CLASS_SIMPLE( CTFMessageBoxDialog, CTFGenericConfirmDialog ); public: CTFMessageBoxDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent ) : CTFGenericConfirmDialog( pTitle, pText, pConfirmBtnText, NULL, callback, parent ) {} CTFMessageBoxDialog( const char *pTitle, const wchar_t *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent ) : CTFGenericConfirmDialog( pTitle, pText, pConfirmBtnText, NULL, callback, parent ) {} virtual const char* GetResFile(); }; // A generic message dialog, which is just a generic confirm dialog w/o the cancel button that plays a sound with optional delay class CTFMessageBoxDialogWithSound : public CTFMessageBoxDialog { DECLARE_CLASS_SIMPLE( CTFMessageBoxDialogWithSound, CTFMessageBoxDialog ); public: CTFMessageBoxDialogWithSound( const char *pTitle, const char *pText, const char *pszSound, float flDelay, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent ); CTFMessageBoxDialogWithSound( const char *pTitle, const wchar_t *pText, const char *pszSound, float flDelay, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent ); virtual void OnTick() OVERRIDE; private: char m_szSound[MAX_PATH]; float m_flSoundTime; bool m_bPlayedSound; }; // A dialog with an upgrade button that takes them to the mann co store class CTFUpgradeBoxDialog : public CTFMessageBoxDialog { DECLARE_CLASS_SIMPLE( CTFUpgradeBoxDialog, CTFMessageBoxDialog ); public: CTFUpgradeBoxDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent ) : CTFMessageBoxDialog( pTitle, pText, pConfirmBtnText, callback, parent ) {} CTFUpgradeBoxDialog( const char *pTitle, const wchar_t *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent ) : CTFMessageBoxDialog( pTitle, pText, pConfirmBtnText, callback, parent ) {} virtual const char *GetResFile() { return "Resource/UI/UpgradeBoxDialog.res"; } virtual void OnCommand( const char *command ); }; // An implementation of the Confirm Dialog with a persistant "opt out" checkbox stored via ConVar class CTFGenericConfirmOptOutDialog : public CTFGenericConfirmDialog { DECLARE_CLASS_SIMPLE( CTFGenericConfirmOptOutDialog, CTFGenericConfirmDialog ); public: CTFGenericConfirmOptOutDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, const char *pCancelBtnText, const char *pOptOutText, const char *pOptOutConVarName, GenericConfirmDialogCallback callback, vgui::Panel *parent ) ; virtual ~CTFGenericConfirmOptOutDialog() { } virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); MESSAGE_FUNC_PARAMS( OnButtonChecked, "CheckButtonChecked", pData ); protected: virtual const char *GetResFile(); const char *m_optOutText; vgui::CheckButton *m_optOutCheckbox; const char *m_optOutConVarName; }; #ifdef TF_CLIENT_DLL // A dialog presented to dead players when being revived class CTFReviveDialog : public CTFMessageBoxDialog { DECLARE_CLASS_SIMPLE( CTFReviveDialog, CTFMessageBoxDialog ); public: CTFReviveDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent ); virtual ~CTFReviveDialog() { } virtual void PerformLayout() OVERRIDE; virtual void OnTick() OVERRIDE; virtual const char *GetResFile() OVERRIDE { return "Resource/UI/ReviveDialog.res"; } void SetOwner( CBaseEntity *pEntity ); CTFSpectatorGUIHealth *m_pTargetHealth; CHandle< C_BaseEntity > m_hEntity; float m_flPrevHealth; }; CTFReviveDialog *ShowRevivePrompt( CBaseEntity *pOwner, const char *pTitle = "#TF_Prompt_Revive_Title", const char *pText = "#TF_Prompt_Revive_Message", const char *pConfirmBtnText = "#TF_Prompt_Revive_Cancel", GenericConfirmDialogCallback callback = NULL, vgui::Panel *parent = NULL, void *pContext = NULL ); // A generic message dialog, which is just a generic confirm dialog w/o the cancel button class CEconRequirementDialog : public CTFGenericConfirmDialog { DECLARE_CLASS_SIMPLE( CEconRequirementDialog, CTFGenericConfirmDialog ); public: CEconRequirementDialog( const char *pTitle, const char *pTextKey, const char *pItemDefName ); virtual const char *GetResFile() OVERRIDE; virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE; virtual void OnCommand( const char *command ) OVERRIDE; CSchemaItemDefHandle m_hItemDef; }; void ShowEconRequirementDialog( const char *pTitle, const char *pText, const char *pItemDefName ); #endif // TF_CLIENT_DLL //----------------------------------------------------------------------------- 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 = NULL ); //----------------------------------------------------------------------------- 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 ); //----------------------------------------------------------------------------- CTFMessageBoxDialog *ShowMessageBox( const char *pTitle, const char *pText, const char *pConfirmBtnText = "#GameUI_OK", GenericConfirmDialogCallback callback = NULL, vgui::Panel *parent = NULL, void *pContext = NULL ); CTFMessageBoxDialog *ShowMessageBox( const char *pTitle, const wchar_t *pText, const char *pConfirmBtnText = "#GameUI_OK", GenericConfirmDialogCallback callback = NULL, vgui::Panel *parent = NULL, void *pContext = NULL ); CTFMessageBoxDialog *ShowMessageBox( const char *pTitle, const char *pText, KeyValues *pKeyValues, const char *pConfirmBtnText = "#GameUI_OK", GenericConfirmDialogCallback callback = NULL, vgui::Panel *parent = NULL, void *pContext = NULL ); CTFMessageBoxDialog *ShowUpgradeMessageBox( const char *pTitle, const char *pText ); CTFMessageBoxDialog *ShowUpgradeMessageBox( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent = NULL, void *pContext = NULL ); //----------------------------------------------------------------------------- CTFMessageBoxDialogWithSound *ShowMessageBoxWithSound( const char *pTitle, const char *pText, const char *pszSound, float flDelay = 0.0, const char *pConfirmBtnText = "#GameUI_OK", GenericConfirmDialogCallback callback = NULL, vgui::Panel *parent = NULL, void *pContext = NULL ); CTFMessageBoxDialogWithSound *ShowMessageBoxWithSound( const char *pTitle, const wchar_t *pText, const char *pszSound, float flDelay = 0.0, const char *pConfirmBtnText = "#GameUI_OK", GenericConfirmDialogCallback callback = NULL, vgui::Panel *parent = NULL, void *pContext = NULL ); CTFMessageBoxDialogWithSound *ShowMessageBoxWithSound( const char *pTitle, const char *pText, KeyValues *pKeyValues, const char *pszSound, float flDelay = 0.0, const char *pConfirmBtnText = "#GameUI_OK", GenericConfirmDialogCallback callback = NULL, vgui::Panel *parent = NULL, void *pContext = NULL ); #endif // CONFIRM_DIALOG_H