summaryrefslogtreecommitdiff
path: root/game/client/hud_baseachievement_tracker.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/hud_baseachievement_tracker.h')
-rw-r--r--game/client/hud_baseachievement_tracker.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/game/client/hud_baseachievement_tracker.h b/game/client/hud_baseachievement_tracker.h
new file mode 100644
index 0000000..323ec4a
--- /dev/null
+++ b/game/client/hud_baseachievement_tracker.h
@@ -0,0 +1,119 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+#ifndef HUD_ACHIEVEMENT_TRACKER_H
+#define HUD_ACHIEVEMENT_TRACKER_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "hudelement.h"
+#include <vgui_controls/EditablePanel.h>
+
+class IAchievement;
+namespace vgui
+{
+ class ImagePanel;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Draws information about one achievement (name, description, progress)
+//-----------------------------------------------------------------------------
+class CAchievementTrackerItem : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CAchievementTrackerItem, vgui::EditablePanel );
+public:
+ CAchievementTrackerItem( vgui::Panel* pParent, const char *pElementName );
+ virtual ~CAchievementTrackerItem();
+
+ virtual void ApplySchemeSettings( vgui::IScheme *scheme );
+ virtual void SetAchievement( IAchievement* pAchievement );
+ virtual void OnThink();
+ virtual void SetSlot( int i ) { m_iSlot = i; }
+ virtual void PerformLayout();
+ virtual void AchievementIncremented( int iCount );
+ virtual int GetAchievementID() { return m_iAchievementID; }
+ virtual float GetGlow() { return m_flGlow; }
+ virtual void ShowAccumulatedIncrements();
+ virtual int GetLastCount() { return m_iLastCount; }
+ virtual void UpdateAchievementDisplay();
+
+protected:
+ vgui::Label *m_pAchievementName;
+ vgui::Label *m_pAchievementNameGlow;
+ vgui::Label *m_pAchievementDesc;
+ vgui::ImagePanel *m_pProgressBarBackground;
+ vgui::ImagePanel *m_pProgressBar;
+
+ int m_iAchievementID;
+ int m_iLastPaintedAchievementID;
+ int m_iLastProgressBarGoal, m_iLastProgressBarCount, m_iLastCount;
+ int m_iSlot;
+ float m_flGlowTime;
+ float m_flGlow;
+ float m_flShowIncrementsTime;
+ int m_iAccumulatedIncrement;
+
+ CPanelAnimationVarAliasType( int, m_iPadding, "Padding", "1", "proportional_int" ); // space between description and bar
+};
+
+//---------------------------------------------------------------------------------------------
+// Purpose: Scrolls a floating number up the screen to indicate achievement progression
+//---------------------------------------------------------------------------------------------
+
+enum floating_number_directions
+{
+ FN_DIR_UP,
+ FN_DIR_DOWN,
+ FN_DIR_LEFT,
+ FN_DIR_RIGHT,
+};
+
+class CFloatingAchievementNumber : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CFloatingAchievementNumber, vgui::EditablePanel );
+public:
+ CFloatingAchievementNumber( int iProgress, int x, int y, floating_number_directions iDir, vgui::Panel* pParent );
+ virtual ~CFloatingAchievementNumber();
+
+ virtual void ApplySchemeSettings( vgui::IScheme *scheme );
+ virtual void OnThink();
+
+protected:
+ vgui::Label *m_pNumberLabel;
+ int m_iStartX;
+ int m_iStartY;
+ int m_iProgress;
+ float m_fStartTime;
+ floating_number_directions m_iDirection;
+
+ CPanelAnimationVarAliasType( int, m_iScrollDistance, "ScrollDistance", "40", "proportional_int" ); // how far the floating number will scroll up before disappearing completely
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Creates panels to show achievements on the HUD
+//-----------------------------------------------------------------------------
+class CHudBaseAchievementTracker : public CHudElement, public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CHudBaseAchievementTracker, vgui::EditablePanel );
+public:
+ CHudBaseAchievementTracker( const char *pElementName );
+
+ virtual void Reset();
+ virtual void LevelInit();
+ virtual void ApplySchemeSettings( vgui::IScheme *scheme );
+ virtual void OnThink();
+ virtual bool ShouldDraw();
+ virtual void PerformLayout();
+ virtual bool ShouldShowAchievement( IAchievement *pAchievement );
+ virtual void UpdateAchievementItems();
+ virtual int GetMaxAchievementsShown();
+ virtual CAchievementTrackerItem* GetAchievementPanel( int i );
+ virtual CAchievementTrackerItem* CreateAchievementPanel();
+
+protected:
+ float m_flNextThink;
+ CUtlVector<CAchievementTrackerItem*> m_AchievementItem;
+
+ CPanelAnimationVarAliasType( int, m_iItemPadding, "ItemPadding", "8", "proportional_int" ); // space between each achievement item
+};
+
+#endif // HUD_ACHIEVEMENT_TRACKER_H \ No newline at end of file