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.
143 lines
4.5 KiB
143 lines
4.5 KiB
5 years ago
|
//========= 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
|