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.

118 lines
4.1 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. #ifndef HUD_ACHIEVEMENT_TRACKER_H
  3. #define HUD_ACHIEVEMENT_TRACKER_H
  4. #ifdef _WIN32
  5. #pragma once
  6. #endif
  7. #include "hudelement.h"
  8. #include <vgui_controls/EditablePanel.h>
  9. class IAchievement;
  10. namespace vgui
  11. {
  12. class ImagePanel;
  13. };
  14. //-----------------------------------------------------------------------------
  15. // Purpose: Draws information about one achievement (name, description, progress)
  16. //-----------------------------------------------------------------------------
  17. class CAchievementTrackerItem : public vgui::EditablePanel
  18. {
  19. DECLARE_CLASS_SIMPLE( CAchievementTrackerItem, vgui::EditablePanel );
  20. public:
  21. CAchievementTrackerItem( vgui::Panel* pParent, const char *pElementName );
  22. virtual ~CAchievementTrackerItem();
  23. virtual void ApplySchemeSettings( vgui::IScheme *scheme );
  24. virtual void SetAchievement( IAchievement* pAchievement );
  25. virtual void OnThink();
  26. virtual void SetSlot( int i ) { m_iSlot = i; }
  27. virtual void PerformLayout();
  28. virtual void AchievementIncremented( int iCount );
  29. virtual int GetAchievementID() { return m_iAchievementID; }
  30. virtual float GetGlow() { return m_flGlow; }
  31. virtual void ShowAccumulatedIncrements();
  32. virtual int GetLastCount() { return m_iLastCount; }
  33. virtual void UpdateAchievementDisplay();
  34. protected:
  35. vgui::Label *m_pAchievementName;
  36. vgui::Label *m_pAchievementNameGlow;
  37. vgui::Label *m_pAchievementDesc;
  38. vgui::ImagePanel *m_pProgressBarBackground;
  39. vgui::ImagePanel *m_pProgressBar;
  40. int m_iAchievementID;
  41. int m_iLastPaintedAchievementID;
  42. int m_iLastProgressBarGoal, m_iLastProgressBarCount, m_iLastCount;
  43. int m_iSlot;
  44. float m_flGlowTime;
  45. float m_flGlow;
  46. float m_flShowIncrementsTime;
  47. int m_iAccumulatedIncrement;
  48. CPanelAnimationVarAliasType( int, m_iPadding, "Padding", "1", "proportional_int" ); // space between description and bar
  49. };
  50. //---------------------------------------------------------------------------------------------
  51. // Purpose: Scrolls a floating number up the screen to indicate achievement progression
  52. //---------------------------------------------------------------------------------------------
  53. enum floating_number_directions
  54. {
  55. FN_DIR_UP,
  56. FN_DIR_DOWN,
  57. FN_DIR_LEFT,
  58. FN_DIR_RIGHT,
  59. };
  60. class CFloatingAchievementNumber : public vgui::EditablePanel
  61. {
  62. DECLARE_CLASS_SIMPLE( CFloatingAchievementNumber, vgui::EditablePanel );
  63. public:
  64. CFloatingAchievementNumber( int iProgress, int x, int y, floating_number_directions iDir, vgui::Panel* pParent );
  65. virtual ~CFloatingAchievementNumber();
  66. virtual void ApplySchemeSettings( vgui::IScheme *scheme );
  67. virtual void OnThink();
  68. protected:
  69. vgui::Label *m_pNumberLabel;
  70. int m_iStartX;
  71. int m_iStartY;
  72. int m_iProgress;
  73. float m_fStartTime;
  74. floating_number_directions m_iDirection;
  75. CPanelAnimationVarAliasType( int, m_iScrollDistance, "ScrollDistance", "40", "proportional_int" ); // how far the floating number will scroll up before disappearing completely
  76. };
  77. //-----------------------------------------------------------------------------
  78. // Purpose: Creates panels to show achievements on the HUD
  79. //-----------------------------------------------------------------------------
  80. class CHudBaseAchievementTracker : public CHudElement, public vgui::EditablePanel
  81. {
  82. DECLARE_CLASS_SIMPLE( CHudBaseAchievementTracker, vgui::EditablePanel );
  83. public:
  84. CHudBaseAchievementTracker( const char *pElementName );
  85. virtual void Reset();
  86. virtual void LevelInit();
  87. virtual void ApplySchemeSettings( vgui::IScheme *scheme );
  88. virtual void OnThink();
  89. virtual bool ShouldDraw();
  90. virtual void PerformLayout();
  91. virtual bool ShouldShowAchievement( IAchievement *pAchievement );
  92. virtual void UpdateAchievementItems();
  93. virtual int GetMaxAchievementsShown();
  94. virtual CAchievementTrackerItem* GetAchievementPanel( int i );
  95. virtual CAchievementTrackerItem* CreateAchievementPanel();
  96. protected:
  97. float m_flNextThink;
  98. CUtlVector<CAchievementTrackerItem*> m_AchievementItem;
  99. CPanelAnimationVarAliasType( int, m_iItemPadding, "ItemPadding", "8", "proportional_int" ); // space between each achievement item
  100. };
  101. #endif // HUD_ACHIEVEMENT_TRACKER_H