Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

230 lines
11 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. //=======================================================================================//
  4. #ifndef CONFIRM_DIALOG_H
  5. #define CONFIRM_DIALOG_H
  6. #ifdef _WIN32
  7. #pragma once
  8. #endif
  9. #include "vgui_controls/EditablePanel.h"
  10. #include "vgui_controls/CheckButton.h"
  11. #include "inputsystem/iinputsystem.h"
  12. //-----------------------------------------------------------------------------
  13. // Purpose:
  14. // - Basic confirm dialog - derive from this and implement GetText().
  15. // - The user will have two options, essentially yes or no.
  16. // - A "ConfirmDlgResult" message is sent to the parent with the result.
  17. // Check the "confirmed" parameter.
  18. // - Panel deletes itself.
  19. // - See CConfirmDeleteDialog for a generic delete confirmation dialog.
  20. //-----------------------------------------------------------------------------
  21. class CExButton;
  22. #ifdef TF_CLIENT_DLL
  23. class CTFSpectatorGUIHealth;
  24. #endif // TF_CLIENT_DLL
  25. class CConfirmDialog : public vgui::EditablePanel
  26. {
  27. DECLARE_CLASS_SIMPLE( CConfirmDialog, vgui::EditablePanel );
  28. public:
  29. CConfirmDialog( vgui::Panel *parent );
  30. virtual const wchar_t *GetText() = 0;
  31. void Show( bool bMakePopup = true );
  32. void SetIconImage( const char *pszIcon );
  33. protected:
  34. virtual void OnSizeChanged(int nNewWide, int nNewTall );
  35. virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
  36. virtual void OnCommand( const char *command );
  37. virtual void OnKeyCodeTyped( vgui::KeyCode code );
  38. virtual void OnKeyCodePressed( vgui::KeyCode code );
  39. virtual const char *GetResFile();
  40. void FinishUp(); // Hide the panel, mark for deletion, remove from modal stack.
  41. CExButton *m_pConfirmButton;
  42. CExButton *m_pCancelButton;
  43. vgui::ImagePanel *m_pIcon;
  44. };
  45. //-----------------------------------------------------------------------------
  46. typedef void (*GenericConfirmDialogCallback)( bool bConfirmed, void *pContext );
  47. // An implementation of the Confirm Dialog that is "generic"
  48. class CTFGenericConfirmDialog : public CConfirmDialog
  49. {
  50. DECLARE_CLASS_SIMPLE( CTFGenericConfirmDialog, CConfirmDialog );
  51. public:
  52. CTFGenericConfirmDialog( const char *pTitle, const char *pTextKey, const char *pConfirmBtnText,
  53. const char *pCancelBtnText, GenericConfirmDialogCallback callback, vgui::Panel *pParent );
  54. CTFGenericConfirmDialog( const char *pTitle, const wchar_t *pText, const char *pConfirmBtnText,
  55. const char *pCancelBtnText, GenericConfirmDialogCallback callback, vgui::Panel *pParent );
  56. virtual ~CTFGenericConfirmDialog();
  57. virtual const wchar_t *GetText();
  58. virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
  59. virtual void PerformLayout();
  60. virtual void OnCommand( const char *command );
  61. void SetStringTokens( KeyValues *pKeyValues );
  62. void AddStringToken( const char* pToken, const wchar_t* pValue );
  63. void SetContext( void *pContext );
  64. protected:
  65. void CommonInit( const char *pTitle, const char *pConfirmBtnText, const char *pCancelBtnText,
  66. GenericConfirmDialogCallback callback, vgui::Panel *pParent );
  67. const char *m_pTitle;
  68. const char *m_pTextKey;
  69. const char *m_pConfirmBtnText;
  70. const char *m_pCancelBtnText;
  71. KeyValues *m_pKeyValues;
  72. wchar_t m_wszBuffer[1024];
  73. GenericConfirmDialogCallback m_pCallback;
  74. void *m_pContext;
  75. };
  76. // A generic message dialog, which is just a generic confirm dialog w/o the cancel button
  77. class CTFMessageBoxDialog : public CTFGenericConfirmDialog
  78. {
  79. DECLARE_CLASS_SIMPLE( CTFMessageBoxDialog, CTFGenericConfirmDialog );
  80. public:
  81. CTFMessageBoxDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent )
  82. : CTFGenericConfirmDialog( pTitle, pText, pConfirmBtnText, NULL, callback, parent ) {}
  83. CTFMessageBoxDialog( const char *pTitle, const wchar_t *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent )
  84. : CTFGenericConfirmDialog( pTitle, pText, pConfirmBtnText, NULL, callback, parent ) {}
  85. virtual const char* GetResFile();
  86. };
  87. // A generic message dialog, which is just a generic confirm dialog w/o the cancel button that plays a sound with optional delay
  88. class CTFMessageBoxDialogWithSound : public CTFMessageBoxDialog
  89. {
  90. DECLARE_CLASS_SIMPLE( CTFMessageBoxDialogWithSound, CTFMessageBoxDialog );
  91. public:
  92. CTFMessageBoxDialogWithSound( const char *pTitle, const char *pText, const char *pszSound, float flDelay, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent );
  93. CTFMessageBoxDialogWithSound( const char *pTitle, const wchar_t *pText, const char *pszSound, float flDelay, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent );
  94. virtual void OnTick() OVERRIDE;
  95. private:
  96. char m_szSound[MAX_PATH];
  97. float m_flSoundTime;
  98. bool m_bPlayedSound;
  99. };
  100. // A dialog with an upgrade button that takes them to the mann co store
  101. class CTFUpgradeBoxDialog : public CTFMessageBoxDialog
  102. {
  103. DECLARE_CLASS_SIMPLE( CTFUpgradeBoxDialog, CTFMessageBoxDialog );
  104. public:
  105. CTFUpgradeBoxDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent )
  106. : CTFMessageBoxDialog( pTitle, pText, pConfirmBtnText, callback, parent ) {}
  107. CTFUpgradeBoxDialog( const char *pTitle, const wchar_t *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent )
  108. : CTFMessageBoxDialog( pTitle, pText, pConfirmBtnText, callback, parent ) {}
  109. virtual const char *GetResFile()
  110. {
  111. return "Resource/UI/UpgradeBoxDialog.res";
  112. }
  113. virtual void OnCommand( const char *command );
  114. };
  115. // An implementation of the Confirm Dialog with a persistant "opt out" checkbox stored via ConVar
  116. class CTFGenericConfirmOptOutDialog : public CTFGenericConfirmDialog
  117. {
  118. DECLARE_CLASS_SIMPLE( CTFGenericConfirmOptOutDialog, CTFGenericConfirmDialog );
  119. public:
  120. CTFGenericConfirmOptOutDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, const char *pCancelBtnText, const char *pOptOutText, const char *pOptOutConVarName, GenericConfirmDialogCallback callback, vgui::Panel *parent ) ;
  121. virtual ~CTFGenericConfirmOptOutDialog() { }
  122. virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
  123. MESSAGE_FUNC_PARAMS( OnButtonChecked, "CheckButtonChecked", pData );
  124. protected:
  125. virtual const char *GetResFile();
  126. const char *m_optOutText;
  127. vgui::CheckButton *m_optOutCheckbox;
  128. const char *m_optOutConVarName;
  129. };
  130. #ifdef TF_CLIENT_DLL
  131. // A dialog presented to dead players when being revived
  132. class CTFReviveDialog : public CTFMessageBoxDialog
  133. {
  134. DECLARE_CLASS_SIMPLE( CTFReviveDialog, CTFMessageBoxDialog );
  135. public:
  136. CTFReviveDialog( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent );
  137. virtual ~CTFReviveDialog() { }
  138. virtual void PerformLayout() OVERRIDE;
  139. virtual void OnTick() OVERRIDE;
  140. virtual const char *GetResFile() OVERRIDE { return "Resource/UI/ReviveDialog.res"; }
  141. void SetOwner( CBaseEntity *pEntity );
  142. CTFSpectatorGUIHealth *m_pTargetHealth;
  143. CHandle< C_BaseEntity > m_hEntity;
  144. float m_flPrevHealth;
  145. };
  146. CTFReviveDialog *ShowRevivePrompt( CBaseEntity *pOwner,
  147. const char *pTitle = "#TF_Prompt_Revive_Title",
  148. const char *pText = "#TF_Prompt_Revive_Message",
  149. const char *pConfirmBtnText = "#TF_Prompt_Revive_Cancel",
  150. GenericConfirmDialogCallback callback = NULL,
  151. vgui::Panel *parent = NULL,
  152. void *pContext = NULL );
  153. // A generic message dialog, which is just a generic confirm dialog w/o the cancel button
  154. class CEconRequirementDialog : public CTFGenericConfirmDialog
  155. {
  156. DECLARE_CLASS_SIMPLE( CEconRequirementDialog, CTFGenericConfirmDialog );
  157. public:
  158. CEconRequirementDialog( const char *pTitle, const char *pTextKey, const char *pItemDefName );
  159. virtual const char *GetResFile() OVERRIDE;
  160. virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE;
  161. virtual void OnCommand( const char *command ) OVERRIDE;
  162. CSchemaItemDefHandle m_hItemDef;
  163. };
  164. void ShowEconRequirementDialog( const char *pTitle, const char *pText, const char *pItemDefName );
  165. #endif // TF_CLIENT_DLL
  166. //-----------------------------------------------------------------------------
  167. 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 );
  168. //-----------------------------------------------------------------------------
  169. 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 );
  170. //-----------------------------------------------------------------------------
  171. CTFMessageBoxDialog *ShowMessageBox( const char *pTitle, const char *pText, const char *pConfirmBtnText = "#GameUI_OK", GenericConfirmDialogCallback callback = NULL, vgui::Panel *parent = NULL, void *pContext = NULL );
  172. CTFMessageBoxDialog *ShowMessageBox( const char *pTitle, const wchar_t *pText, const char *pConfirmBtnText = "#GameUI_OK", GenericConfirmDialogCallback callback = NULL, vgui::Panel *parent = NULL, void *pContext = NULL );
  173. 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 );
  174. CTFMessageBoxDialog *ShowUpgradeMessageBox( const char *pTitle, const char *pText );
  175. CTFMessageBoxDialog *ShowUpgradeMessageBox( const char *pTitle, const char *pText, const char *pConfirmBtnText, GenericConfirmDialogCallback callback, vgui::Panel *parent = NULL, void *pContext = NULL );
  176. //-----------------------------------------------------------------------------
  177. 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 );
  178. 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 );
  179. 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 );
  180. #endif // CONFIRM_DIALOG_H