summaryrefslogtreecommitdiff
path: root/game/client/cstrike/VGUI/achievements_page.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/cstrike/VGUI/achievements_page.h')
-rw-r--r--game/client/cstrike/VGUI/achievements_page.h218
1 files changed, 218 insertions, 0 deletions
diff --git a/game/client/cstrike/VGUI/achievements_page.h b/game/client/cstrike/VGUI/achievements_page.h
new file mode 100644
index 0000000..2066b1d
--- /dev/null
+++ b/game/client/cstrike/VGUI/achievements_page.h
@@ -0,0 +1,218 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef CSACHIEVEMENTSPAGE_H
+#define CSACHIEVEMENTSPAGE_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "vgui_controls/PanelListPanel.h"
+#include "vgui_controls/Label.h"
+#include "tier1/KeyValues.h"
+#include "vgui_controls/PropertyPage.h"
+#include "vgui_controls/Button.h"
+#include "c_cs_player.h"
+#include "vgui_avatarimage.h"
+#include "GameEventListener.h"
+
+class CCSBaseAchievement;
+class IScheme;
+class CAchievementsPageGroupPanel;
+class StatCard;
+
+#define ACHIEVED_ICON_PATH "hud/icon_check.vtf"
+#define LOCK_ICON_PATH "hud/icon_locked.vtf"
+
+// Loads an achievement's icon into a specified image panel, or turns the panel off if no achievement icon was found.
+bool CSLoadAchievementIconForPage( vgui::ImagePanel* pIconPanel, CCSBaseAchievement *pAchievement, const char *pszExt = NULL );
+
+// Loads an achievement's icon into a specified image panel, or turns the panel off if no achievement icon was found.
+bool CSLoadIconForPage( vgui::ImagePanel* pIconPanel, const char* pFilename, const char *pszExt = NULL );
+
+// Updates a listed achievement item's progress bar.
+void CSUpdateProgressBarForPage( vgui::EditablePanel* pPanel, CCSBaseAchievement *pAchievement, Color clrProgressBar );
+
+////////////////////////////////////////////////////////////////////////////
+// PC version
+//////////////////////////////////////////////////////////////////////////
+class CAchievementsPage : public vgui::PropertyPage, public CGameEventListener
+{
+ DECLARE_CLASS_SIMPLE ( CAchievementsPage, vgui::PropertyPage );
+
+public:
+ CAchievementsPage( vgui::Panel *parent, const char *name );
+ ~CAchievementsPage();
+
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+
+ void UpdateTotalProgressDisplay();
+ virtual void UpdateAchievementDialogInfo( void );
+
+ virtual void OnPageShow();
+ virtual void OnThink();
+
+ virtual void ApplySettings( KeyValues *pResourceData );
+ virtual void OnSizeChanged( int newWide, int newTall );
+
+ virtual void FireGameEvent( IGameEvent *event );
+
+ void CreateNewAchievementGroup( int iMinRange, int iMaxRange );
+ void CreateOrUpdateComboItems( bool bCreate );
+ void UpdateAchievementList(CAchievementsPageGroupPanel* groupPanel);
+ void UpdateAchievementList(int minID, int maxID);
+
+ vgui::PanelListPanel *m_pAchievementsList;
+ vgui::ImagePanel *m_pListBG;
+
+ vgui::PanelListPanel *m_pGroupsList;
+ vgui::ImagePanel *m_pGroupListBG;
+
+ vgui::ImagePanel *m_pPercentageBarBackground;
+ vgui::ImagePanel *m_pPercentageBar;
+
+ StatCard* m_pStatCard;
+
+ int m_iFixedWidth;
+
+ bool m_bStatsDirty;
+ bool m_bAchievementsDirty;
+
+ typedef struct
+ {
+ int m_iMinRange;
+ int m_iMaxRange;
+ } achievement_group_t;
+
+ int m_iNumAchievementGroups;
+
+ achievement_group_t m_AchievementGroups[15];
+};
+
+class CHiddenHUDToggleButton : public vgui::Button
+{
+ DECLARE_CLASS_SIMPLE( CHiddenHUDToggleButton, vgui::Button );
+
+public:
+
+ CHiddenHUDToggleButton( vgui::Panel *pParent, const char *pName, const char *pText );
+
+ virtual void DoClick( void );
+};
+
+//////////////////////////////////////////////////////////////////////////
+// Individual item panel, displaying stats for one achievement
+class CAchievementsPageItemPanel : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CAchievementsPageItemPanel, vgui::EditablePanel );
+
+public:
+ CAchievementsPageItemPanel( vgui::PanelListPanel *parent, const char* name);
+ ~CAchievementsPageItemPanel();
+
+ void SetAchievementInfo ( CCSBaseAchievement* pAchievement );
+ CCSBaseAchievement* GetAchievementInfo( void ) { return m_pSourceAchievement; }
+ void UpdateAchievementInfo( vgui::IScheme *pScheme );
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+
+ void ToggleShowOnHUDButton();
+
+ MESSAGE_FUNC_PTR( OnCheckButtonChecked, "CheckButtonChecked", panel );
+
+private:
+ static void PreloadResourceFile();
+
+ CCSBaseAchievement* m_pSourceAchievement;
+ int m_iSourceAchievementIndex;
+
+ vgui::PanelListPanel *m_pParent;
+
+ vgui::Label *m_pAchievementNameLabel;
+ vgui::Label *m_pAchievementDescLabel;
+ vgui::Label *m_pPercentageText;
+ vgui::Label *m_pAwardDate;
+
+ vgui::ImagePanel *m_pLockedIcon;
+ vgui::ImagePanel *m_pAchievementIcon;
+
+ vgui::ImagePanel *m_pPercentageBarBackground;
+ vgui::ImagePanel *m_pPercentageBar;
+
+ vgui::CheckButton *m_pShowOnHUDButton;
+
+ vgui::IScheme *m_pSchemeSettings;
+
+ CHiddenHUDToggleButton *m_pHiddenHUDToggleButton;
+
+ CPanelAnimationVar( Color, m_clrProgressBar, "ProgressBarColor", "140 140 140 255" );
+};
+
+class CGroupButton : public vgui::Button
+{
+ DECLARE_CLASS_SIMPLE( CGroupButton, vgui::Button );
+
+public:
+
+ CGroupButton( vgui::Panel *pParent, const char *pName, const char *pText );
+
+ virtual void DoClick( void );
+};
+
+//////////////////////////////////////////////////////////////////////////
+// Individual achievement group panel, displaying info for one achievement group
+class CAchievementsPageGroupPanel : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CAchievementsPageGroupPanel, vgui::EditablePanel );
+
+public:
+ CAchievementsPageGroupPanel( vgui::PanelListPanel *parent, CAchievementsPage *owner, const char* name, int iListItemID );
+ ~CAchievementsPageGroupPanel();
+
+ void SetGroupInfo ( const wchar_t* name, int firstAchievementID, int lastAchievementID );
+ void UpdateAchievementInfo( vgui::IScheme *pScheme );
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+
+ int GetFirstAchievementID() { return m_iFirstAchievementID; }
+ int GetLastAchievementID() { return m_iLastAchievementID; }
+
+ vgui::PanelListPanel* GetParent() { return m_pParent; }
+ CAchievementsPage* GetOwner() { return m_pOwner; }
+
+ void SetGroupActive(bool active) { m_bActiveButton = active; }
+ bool IsGroupActive() { return m_bActiveButton; }
+
+private:
+ void PreloadResourceFile( void );
+
+ vgui::PanelListPanel *m_pParent;
+ CAchievementsPage *m_pOwner;
+
+ vgui::Label *m_pAchievementGroupLabel;
+ vgui::Label *m_pPercentageText;
+
+ CGroupButton *m_pGroupButton;
+
+ vgui::ImagePanel *m_pGroupIcon;
+
+ vgui::ImagePanel *m_pPercentageBarBackground;
+ vgui::ImagePanel *m_pPercentageBar;
+
+ vgui::IScheme *m_pSchemeSettings;
+
+ bool m_bActiveButton;
+
+ CPanelAnimationVar( Color, m_clrProgressBar, "ProgressBarColor", "140 140 140 255" );
+
+ int m_iFirstAchievementID;
+ int m_iLastAchievementID;
+
+ wchar_t *m_pGroupName;
+};
+
+
+
+#endif // CSACHIEVEMENTSPAGE_H