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.

182 lines
5.1 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================//
  7. #ifndef ACHIEVEMENTSDIALOG_H
  8. #define ACHIEVEMENTSDIALOG_H
  9. #ifdef _WIN32
  10. #pragma once
  11. #endif
  12. #include "basedialog.h"
  13. #include "vgui_controls/PanelListPanel.h"
  14. #include "vgui_controls/Label.h"
  15. #include "tier1/KeyValues.h"
  16. #include "TGAImagePanel.h"
  17. #define MAX_ACHIEVEMENT_GROUPS 25
  18. class IAchievement;
  19. #define ACHIEVED_ICON_PATH "hud/icon_check.vtf"
  20. #define LOCK_ICON_PATH "hud/icon_locked.vtf"
  21. // Loads an achievement's icon into a specified image panel, or turns the panel off if no achievement icon was found.
  22. bool LoadAchievementIcon( vgui::ImagePanel* pIconPanel, IAchievement *pAchievement, const char *pszExt = NULL );
  23. // Updates a listed achievement item's progress bar.
  24. void UpdateProgressBar( vgui::EditablePanel* pPanel, IAchievement *pAchievement, Color clrProgressBar );
  25. //-----------------------------------------------------------------------------
  26. // Purpose: Simple menu to choose a matchmaking session type
  27. //-----------------------------------------------------------------------------
  28. class CAchievementsDialog_XBox : public CBaseDialog
  29. {
  30. DECLARE_CLASS_SIMPLE( CAchievementsDialog_XBox, CBaseDialog );
  31. public:
  32. CAchievementsDialog_XBox(vgui::Panel *parent);
  33. ~CAchievementsDialog_XBox();
  34. virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
  35. virtual void ApplySettings( KeyValues *pResourceData );
  36. virtual void PerformLayout();
  37. virtual void OnKeyCodePressed( vgui::KeyCode code );
  38. virtual void HandleKeyRepeated( vgui::KeyCode code );
  39. virtual void OnClose();
  40. private:
  41. vgui::Panel *m_pProgressBg;
  42. vgui::Panel *m_pProgressBar;
  43. vgui::Label *m_pProgressPercent;
  44. vgui::Label *m_pNumbering;
  45. vgui::Label *m_pUpArrow;
  46. vgui::Label *m_pDownArrow;
  47. KeyValues* m_pResourceData;
  48. CFooterPanel *m_pFooter;
  49. bool m_bCenterOnScreen;
  50. int m_iNumItems;
  51. int m_nTotalAchievements; // Total achievements for this title
  52. int m_nUnlocked;
  53. int m_iSelection;
  54. int m_iScroll;
  55. };
  56. ////////////////////////////////////////////////////////////////////////////
  57. // PC version
  58. //////////////////////////////////////////////////////////////////////////
  59. class CAchievementsDialog : public vgui::Frame
  60. {
  61. DECLARE_CLASS_SIMPLE ( CAchievementsDialog, vgui::Frame );
  62. public:
  63. CAchievementsDialog( vgui::Panel *parent );
  64. ~CAchievementsDialog();
  65. virtual void ApplySchemeSettings( IScheme *pScheme );
  66. void ScrollToItem( int nDirection );
  67. virtual void OnKeyCodePressed( vgui::KeyCode code );
  68. virtual void UpdateAchievementDialogInfo( void );
  69. virtual void OnCommand( const char* command );
  70. virtual void ApplySettings( KeyValues *pResourceData );
  71. virtual void OnSizeChanged( int newWide, int newTall );
  72. MESSAGE_FUNC_PTR( OnCheckButtonChecked, "CheckButtonChecked", panel );
  73. MESSAGE_FUNC_PARAMS( OnTextChanged, "TextChanged", data );
  74. void CreateNewAchievementGroup( int iMinRange, int iMaxRange );
  75. void CreateOrUpdateComboItems( bool bCreate );
  76. void UpdateAchievementList();
  77. vgui::PanelListPanel *m_pAchievementsList;
  78. vgui::ImagePanel *m_pListBG;
  79. vgui::ImagePanel *m_pPercentageBarBackground;
  80. vgui::ImagePanel *m_pPercentageBar;
  81. vgui::ImagePanel *m_pSelectionHighlight;
  82. vgui::ComboBox *m_pAchievementPackCombo;
  83. vgui::CheckButton *m_pHideAchievedCheck;
  84. int m_nUnlocked;
  85. int m_nTotalAchievements;
  86. int m_iFixedWidth;
  87. typedef struct
  88. {
  89. int m_iMinRange;
  90. int m_iMaxRange;
  91. int m_iNumAchievements;
  92. int m_iNumUnlocked;
  93. int m_iDropDownGroupID;
  94. } achievement_group_t;
  95. int m_iNumAchievementGroups;
  96. achievement_group_t m_AchievementGroups[ MAX_ACHIEVEMENT_GROUPS ];
  97. int m_nScrollItem;
  98. int m_nOldScrollItem;
  99. };
  100. //////////////////////////////////////////////////////////////////////////
  101. // Individual item panel, displaying stats for one achievement
  102. class CAchievementDialogItemPanel : public vgui::EditablePanel
  103. {
  104. DECLARE_CLASS_SIMPLE( CAchievementDialogItemPanel, vgui::EditablePanel );
  105. public:
  106. CAchievementDialogItemPanel( vgui::PanelListPanel *parent, const char* name, int iListItemID );
  107. ~CAchievementDialogItemPanel();
  108. void SetAchievementInfo ( IAchievement* pAchievement );
  109. IAchievement* GetAchievementInfo( void ) { return m_pSourceAchievement; }
  110. void UpdateAchievementInfo( IScheme *pScheme );
  111. virtual void ApplySchemeSettings( IScheme *pScheme );
  112. void ToggleShowOnHUD( void );
  113. MESSAGE_FUNC_PTR( OnCheckButtonChecked, "CheckButtonChecked", panel );
  114. private:
  115. void PreloadResourceFile( void );
  116. IAchievement* m_pSourceAchievement;
  117. int m_iSourceAchievementIndex;
  118. vgui::PanelListPanel *m_pParent;
  119. vgui::Label *m_pAchievementNameLabel;
  120. vgui::Label *m_pAchievementDescLabel;
  121. vgui::Label *m_pPercentageText;
  122. vgui::ImagePanel *m_pLockedIcon;
  123. vgui::ImagePanel *m_pAchievementIcon;
  124. vgui::ImagePanel *m_pPercentageBarBackground;
  125. vgui::ImagePanel *m_pPercentageBar;
  126. vgui::CheckButton *m_pShowOnHUDCheck;
  127. vgui::IScheme *m_pSchemeSettings;
  128. CPanelAnimationVar( Color, m_clrProgressBar, "ProgressBarColor", "140 140 140 255" );
  129. int m_iListItemID;
  130. };
  131. #endif // ACHIEVEMENTSDIALOG_H