Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

136 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