diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/client/tf/vgui/tf_statsummary.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/client/tf/vgui/tf_statsummary.h')
| -rw-r--r-- | game/client/tf/vgui/tf_statsummary.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/game/client/tf/vgui/tf_statsummary.h b/game/client/tf/vgui/tf_statsummary.h new file mode 100644 index 0000000..eca7c72 --- /dev/null +++ b/game/client/tf/vgui/tf_statsummary.h @@ -0,0 +1,142 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#ifndef TF_STATSSUMMARY_H +#define TF_STATSSUMMARY_H +#ifdef _WIN32 +#pragma once +#endif + +#include "tf_hud_statpanel.h" +#include "GameEventListener.h" + +struct ClassDetails_t +{ + TFStatType_t statType; // type of stat + uint iFlagsClass; // bit mask of classes to show this stat for + const char * szResourceName; // name of label resource (format "Most damage:" + const char * szAltResourceName; // name of alternative label resource "damage" +}; +extern ClassDetails_t g_PerClassStatDetails[15]; + +#define MAKESTATFLAG(x) ( 1 << x ) +#define ALL_CLASSES 0xFFFFFFFF + +class CTFStatsSummaryPanel : public vgui::EditablePanel, public CGameEventListener +{ +private: + DECLARE_CLASS_SIMPLE( CTFStatsSummaryPanel, vgui::EditablePanel ); + +public: + CTFStatsSummaryPanel(); + CTFStatsSummaryPanel( vgui::Panel *parent ); + ~CTFStatsSummaryPanel(); + + void Init( void ); + + virtual void ApplySchemeSettings(vgui::IScheme *pScheme); + virtual void OnCommand( const char *command ); + virtual void OnKeyCodePressed( KeyCode code ); + virtual void PerformLayout(); + virtual void OnThink(); + void SetStats( CUtlVector<ClassStats_t> &vecClassStats ); + void ShowModal(); + + void SetupForEmbedded( void ); + + void OnMapLoad( const char *pMapName ); + + virtual void FireGameEvent( IGameEvent *event ); +private: + MESSAGE_FUNC( OnActivate, "activate" ); + MESSAGE_FUNC( OnDeactivate, "deactivate" ); + + enum StatDisplay_t + { + SHOW_MAX = 1, + SHOW_TOTAL, + SHOW_AVG + }; + + void Reset(); + void SetDefaultSelections(); + void UpdateDialog(); + void UpdateBarCharts(); + void UpdateClassDetails( bool bIsMVM = false ); + void UpdateTip(); + void UpdateControls(); + void ClearMapLabel(); + void ShowMapInfo( bool bShowMapInfo, bool bIsMVM = false, bool bBackgroundOverride = false ); + void UpdateLeaderboard(); + void InitBarChartComboBox( vgui::ComboBox *pComboBox ); + void SetValueAsClass( const char *pDialogVariable, int iValue, int iPlayerClass ); + void DisplayBarValue( int iChart, int iClass, ClassStats_t &stats, TFStatType_t statType, StatDisplay_t flags, float flMaxValue ); + static float GetDisplayValue( ClassStats_t &stats, TFStatType_t statType, StatDisplay_t statDisplay ); + const char *RenderValue( float flValue, TFStatType_t statType, StatDisplay_t statDisplay ); + static float SafeCalcFraction( float flNumerator, float flDemoninator ); + static int __cdecl CompareClassStats( const ClassStats_t *pStats0, const ClassStats_t *pStats1 ); + MESSAGE_FUNC( DoResetStats, "DoResetStats" ); + MESSAGE_FUNC_PARAMS( OnTextChanged, "TextChanged", data ); + + vgui::EditablePanel *m_pPlayerData; + + vgui::EditablePanel *m_pInteractiveHeaders; + vgui::EditablePanel *m_pNonInteractiveHeaders; + vgui::ComboBox *m_pBarChartComboBoxA; + vgui::ComboBox *m_pBarChartComboBoxB; + vgui::ComboBox *m_pClassComboBox; + CTFImagePanel *m_pTipImage; + vgui::Label *m_pTipText; + vgui::EditablePanel *m_pMapInfoPanel; + vgui::Panel *m_pLeaderboardTitle; + + vgui::ImagePanel *m_pMainBackground; + void UpdateMainBackground( void ); + + vgui::EditablePanel *m_pContributedPanel; + +#ifdef _X360 + CTFFooter *m_pFooter; +#else + vgui::Button *m_pNextTipButton; + vgui::Button *m_pCloseButton; + vgui::Button *m_pResetStatsButton; +#endif + + bool m_bInteractive; // are we in interactive mode + bool m_bEmbedded; // are we embedded in a property sheet? + bool m_bControlsLoaded; // have we loaded controls yet + CUtlVector<ClassStats_t> m_aClassStats; // stats data + int m_xStartLHBar; // x min of bars in left hand bar chart + int m_xStartRHBar; // x min of bars in right hand bar chart + int m_iBarMaxWidth; // width of bars in bar charts + int m_iBarHeight; // height of bars in bar charts + + int m_iSelectedClass; // what class is selected, if any + int m_iTotalSpawns; // how many spawns of all classes does this player have + TFStatType_t m_statBarGraph[2]; // what stat is displayed in the left hand and right hand bar graphs + StatDisplay_t m_displayBarGraph[2]; // the display type for the left hand and right hand bar graphs + + bool m_bShowingLeaderboard; + bool m_bLoadingCommunityMap; + int m_xStartLeaderboard; + int m_yStartLeaderboard; + CUtlVector< vgui::EditablePanel* > m_vecLeaderboardEntries; + +#ifdef _X360 + bool m_bShowBackButton; +#endif +}; + + +CTFStatsSummaryPanel *GStatsSummaryPanel(); +void DestroyStatsSummaryPanel(); +const char *FormatSeconds( int seconds ); + +void UpdateStatSummaryPanels( CUtlVector<ClassStats_t> &vecClassStats ); + +#endif // TF_STATSSUMMARY_H |