diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/cstrike/VGUI/achievements_page.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/cstrike/VGUI/achievements_page.h')
| -rw-r--r-- | game/client/cstrike/VGUI/achievements_page.h | 218 |
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 |