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.
218 lines
6.8 KiB
218 lines
6.8 KiB
//========= 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
|
|
|