1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef ACHIEVEMENTSDIALOG_H
#define ACHIEVEMENTSDIALOG_H
#ifdef _WIN32
#pragma once
#endif
#include "basedialog.h"
#include "vgui_controls/PanelListPanel.h"
#include "vgui_controls/Label.h"
#include "tier1/KeyValues.h"
#include "TGAImagePanel.h"
#define MAX_ACHIEVEMENT_GROUPS 25
class IAchievement;
#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 LoadAchievementIcon( vgui::ImagePanel* pIconPanel, IAchievement *pAchievement, const char *pszExt = NULL );
// Updates a listed achievement item's progress bar.
void UpdateProgressBar( vgui::EditablePanel* pPanel, IAchievement *pAchievement, Color clrProgressBar );
//-----------------------------------------------------------------------------
// Purpose: Simple menu to choose a matchmaking session type
//-----------------------------------------------------------------------------
class CAchievementsDialog_XBox : public CBaseDialog
{
DECLARE_CLASS_SIMPLE( CAchievementsDialog_XBox, CBaseDialog );
public:
CAchievementsDialog_XBox(vgui::Panel *parent);
~CAchievementsDialog_XBox();
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
virtual void ApplySettings( KeyValues *pResourceData );
virtual void PerformLayout();
virtual void OnKeyCodePressed( vgui::KeyCode code );
virtual void HandleKeyRepeated( vgui::KeyCode code );
virtual void OnClose();
private:
vgui::Panel *m_pProgressBg;
vgui::Panel *m_pProgressBar;
vgui::Label *m_pProgressPercent;
vgui::Label *m_pNumbering;
vgui::Label *m_pUpArrow;
vgui::Label *m_pDownArrow;
KeyValues* m_pResourceData;
CFooterPanel *m_pFooter;
bool m_bCenterOnScreen;
int m_iNumItems;
int m_nTotalAchievements; // Total achievements for this title
int m_nUnlocked;
int m_iSelection;
int m_iScroll;
};
////////////////////////////////////////////////////////////////////////////
// PC version
//////////////////////////////////////////////////////////////////////////
class CAchievementsDialog : public vgui::Frame
{
DECLARE_CLASS_SIMPLE ( CAchievementsDialog, vgui::Frame );
public:
CAchievementsDialog( vgui::Panel *parent );
~CAchievementsDialog();
virtual void ApplySchemeSettings( IScheme *pScheme );
void ScrollToItem( int nDirection );
virtual void OnKeyCodePressed( vgui::KeyCode code );
virtual void UpdateAchievementDialogInfo( void );
virtual void OnCommand( const char* command );
virtual void ApplySettings( KeyValues *pResourceData );
virtual void OnSizeChanged( int newWide, int newTall );
MESSAGE_FUNC_PTR( OnCheckButtonChecked, "CheckButtonChecked", panel );
MESSAGE_FUNC_PARAMS( OnTextChanged, "TextChanged", data );
void CreateNewAchievementGroup( int iMinRange, int iMaxRange );
void CreateOrUpdateComboItems( bool bCreate );
void UpdateAchievementList();
vgui::PanelListPanel *m_pAchievementsList;
vgui::ImagePanel *m_pListBG;
vgui::ImagePanel *m_pPercentageBarBackground;
vgui::ImagePanel *m_pPercentageBar;
vgui::ImagePanel *m_pSelectionHighlight;
vgui::ComboBox *m_pAchievementPackCombo;
vgui::CheckButton *m_pHideAchievedCheck;
int m_nUnlocked;
int m_nTotalAchievements;
int m_iFixedWidth;
typedef struct
{
int m_iMinRange;
int m_iMaxRange;
int m_iNumAchievements;
int m_iNumUnlocked;
int m_iDropDownGroupID;
} achievement_group_t;
int m_iNumAchievementGroups;
achievement_group_t m_AchievementGroups[ MAX_ACHIEVEMENT_GROUPS ];
int m_nScrollItem;
int m_nOldScrollItem;
};
//////////////////////////////////////////////////////////////////////////
// Individual item panel, displaying stats for one achievement
class CAchievementDialogItemPanel : public vgui::EditablePanel
{
DECLARE_CLASS_SIMPLE( CAchievementDialogItemPanel, vgui::EditablePanel );
public:
CAchievementDialogItemPanel( vgui::PanelListPanel *parent, const char* name, int iListItemID );
~CAchievementDialogItemPanel();
void SetAchievementInfo ( IAchievement* pAchievement );
IAchievement* GetAchievementInfo( void ) { return m_pSourceAchievement; }
void UpdateAchievementInfo( IScheme *pScheme );
virtual void ApplySchemeSettings( IScheme *pScheme );
void ToggleShowOnHUD( void );
MESSAGE_FUNC_PTR( OnCheckButtonChecked, "CheckButtonChecked", panel );
private:
void PreloadResourceFile( void );
IAchievement* m_pSourceAchievement;
int m_iSourceAchievementIndex;
vgui::PanelListPanel *m_pParent;
vgui::Label *m_pAchievementNameLabel;
vgui::Label *m_pAchievementDescLabel;
vgui::Label *m_pPercentageText;
vgui::ImagePanel *m_pLockedIcon;
vgui::ImagePanel *m_pAchievementIcon;
vgui::ImagePanel *m_pPercentageBarBackground;
vgui::ImagePanel *m_pPercentageBar;
vgui::CheckButton *m_pShowOnHUDCheck;
vgui::IScheme *m_pSchemeSettings;
CPanelAnimationVar( Color, m_clrProgressBar, "ProgressBarColor", "140 140 140 255" );
int m_iListItemID;
};
#endif // ACHIEVEMENTSDIALOG_H
|