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.
135 lines
3.2 KiB
135 lines
3.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef CSBASESTATSPAGE_H |
|
#define CSBASESTATSPAGE_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 "vgui_controls/ImagePanel.h" |
|
#include "GameEventListener.h" |
|
|
|
struct PlayerStatData_t; |
|
class IScheme; |
|
class CBaseStatGroupPanel; |
|
class StatCard; |
|
struct StatsCollection_t; |
|
struct RoundStatsDirectAverage_t; |
|
|
|
class CBaseStatsPage : public vgui::PropertyPage, public CGameEventListener |
|
{ |
|
DECLARE_CLASS_SIMPLE ( CBaseStatsPage, vgui::PropertyPage ); |
|
|
|
public: |
|
CBaseStatsPage( vgui::Panel *parent, const char *name ); |
|
|
|
~CBaseStatsPage(); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual void MoveToFront(); |
|
virtual void OnSizeChanged(int wide, int tall); |
|
virtual void OnThink(); |
|
|
|
void UpdateStatsData(); |
|
void SetActiveStatGroup (CBaseStatGroupPanel* groupPanel); |
|
|
|
virtual void FireGameEvent( IGameEvent * event ); |
|
|
|
protected: |
|
|
|
void UpdateGroupPanels(); |
|
CBaseStatGroupPanel* AddGroup( const wchar_t* name, const char* title_tag, const wchar_t* def = NULL ); |
|
const wchar_t* TranslateWeaponKillIDToAlias( int statKillID ); |
|
const wchar_t* LocalizeTagOrUseDefault( const char* tag, const wchar_t* def = NULL ); |
|
|
|
virtual void RepopulateStats() = 0; |
|
|
|
vgui::SectionedListPanel *m_statsList; |
|
vgui::HFont m_listItemFont; |
|
|
|
private: |
|
|
|
vgui::PanelListPanel *m_pGroupsList; |
|
vgui::ImagePanel* m_bottomBar; |
|
StatCard* m_pStatCard; |
|
bool m_bStatsDirty; |
|
}; |
|
|
|
|
|
|
|
|
|
class CBaseStatGroupButton : public vgui::Button |
|
{ |
|
DECLARE_CLASS_SIMPLE( CBaseStatGroupButton, vgui::Button ); |
|
|
|
public: |
|
|
|
CBaseStatGroupButton( vgui::Panel *pParent, const char *pName, const char *pText ); |
|
|
|
virtual void DoClick( void ); |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
class CBaseStatGroupPanel : public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CBaseStatGroupPanel, vgui::EditablePanel ); |
|
|
|
public: |
|
CBaseStatGroupPanel( vgui::PanelListPanel *parent, CBaseStatsPage *owner, const char* name, int iListItemID ); |
|
~CBaseStatGroupPanel(); |
|
|
|
void SetGroupInfo ( const wchar_t* name, const wchar_t* title); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
|
|
void Update( vgui::IScheme* pScheme ); |
|
|
|
vgui::PanelListPanel* GetParent() { return m_pParent; } |
|
CBaseStatsPage* GetOwner() { return m_pOwner; } |
|
|
|
void SetGroupActive(bool active) { m_bActiveButton = active; } |
|
bool IsGroupActive() { return m_bActiveButton; } |
|
|
|
protected: |
|
|
|
// Loads an icon into a specified image panel, or turns the panel off if no icon was found. |
|
bool LoadIcon( const char* pFilename); |
|
|
|
private: |
|
void PreloadResourceFile( void ); |
|
|
|
vgui::PanelListPanel *m_pParent; |
|
CBaseStatsPage *m_pOwner; |
|
|
|
vgui::Label *m_pBaseStatGroupLabel; |
|
|
|
CBaseStatGroupButton *m_pGroupButton; |
|
|
|
vgui::ImagePanel *m_pGroupIcon; |
|
|
|
vgui::IScheme *m_pSchemeSettings; |
|
|
|
bool m_bActiveButton; |
|
|
|
wchar_t *m_pGroupName; |
|
wchar_t *m_pGroupTitle; |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
#endif // CSBASESTATSPAGE_H
|
|
|