|
|
//========= 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
|