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.
110 lines
3.4 KiB
110 lines
3.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef TFSTATPANEL_H |
|
#define TFSTATPANEL_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include <vgui_controls/EditablePanel.h> |
|
#include <game/client/iviewport.h> |
|
#include <vgui/IScheme.h> |
|
#include "hud.h" |
|
#include "hudelement.h" |
|
#include "../game/shared/tf/tf_shareddefs.h" |
|
#include "../game/shared/tf/tf_gamestats_shared.h" |
|
#include "tf_hud_playerstatus.h" |
|
#include "tf_hud_arena_class_layout.h" |
|
|
|
using namespace vgui; |
|
|
|
enum PlayerStatsVersions_t |
|
{ |
|
PLAYERSTATS_FILE_VERSION |
|
}; |
|
|
|
enum RecordBreakType_t |
|
{ |
|
RECORDBREAK_NONE, |
|
RECORDBREAK_CLOSE, |
|
RECORDBREAK_TIE, |
|
RECORDBREAK_BEST, |
|
|
|
RECORDBREAK_MAX |
|
}; |
|
|
|
class CTFStatPanel : public EditablePanel, public CHudElement |
|
{ |
|
private: |
|
DECLARE_CLASS_SIMPLE( CTFStatPanel, EditablePanel ); |
|
|
|
public: |
|
CTFStatPanel( const char *pElementName ); |
|
virtual ~CTFStatPanel(); |
|
|
|
virtual void Reset(); |
|
virtual void Init(); |
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual void ApplySettings( KeyValues *inResourceData ); |
|
virtual void FireGameEvent( IGameEvent * event ); |
|
virtual void OnTick(); |
|
virtual void LevelShutdown(); |
|
void Show(); |
|
void Hide(); |
|
virtual bool ShouldDraw( void ); |
|
|
|
void ShowStatPanel( int iClass, int iTeam, int iCurStatValue, TFStatType_t statType, RecordBreakType_t recordBreakType, |
|
bool bAlive ); |
|
void TestStatPanel( TFStatType_t statType, RecordBreakType_t recordType ); |
|
|
|
void WriteStats( void ); |
|
bool ReadStats( void ); |
|
int CalcCRC( int iSteamID ); |
|
void ClearStatsInMemory( void ); |
|
void ResetStats( void ); |
|
static ClassStats_t &GetClassStats( int iClass ); |
|
static MapStats_t &GetMapStats( map_identifier_t iMapID ); |
|
static bool IsValidMapID( map_identifier_t iMapID ); |
|
static const char* GetMapNameFromID( map_identifier_t iMapID ); |
|
static float GetTotalHoursPlayed( void ); // Return the total time this player has played the game, in hours |
|
void UpdateStatSummaryPanel(); |
|
bool IsLocalFileTrusted() { return m_bLocalFileTrusted; } |
|
void SetStatsChanged( bool bChanged ) { m_bStatsChanged = bChanged; } |
|
|
|
void MsgFunc_PlayerStatsUpdate( bf_read &msg ); |
|
void MsgFunc_MapStatsUpdate( bf_read &msg ); |
|
|
|
virtual int GetRenderGroupPriority() { return 40; } // less than winpanel, build menu |
|
|
|
private: |
|
void GetStatValueAsString( int iValue, TFStatType_t statType, char *value, int valuelen ); |
|
void UpdateStats( int iClass, const RoundStats_t &stats, bool bAlive ); |
|
void UpdateMapStats( map_identifier_t iMapID, const RoundMapStats_t &stats ); |
|
void ResetDisplayedStat(); |
|
|
|
int m_iCurStatValue; // the value of the currently displayed stat |
|
int m_iCurStatClass; // the player class for current stat |
|
int m_iCurStatTeam; // the team of current stat |
|
TFStatType_t m_statType; // type of current stat |
|
RecordBreakType_t m_recordBreakType; // was record broken, tied, or just close |
|
bool m_bDisplayAfterSpawn; // should we display after player respawns |
|
float m_flTimeLastSpawn; |
|
float m_flTimeHide; // time at which to hide the panel |
|
|
|
CUtlVector<ClassStats_t> m_aClassStats; |
|
CUtlVector<MapStats_t> m_aMapStats; |
|
bool m_bStatsChanged; |
|
bool m_bLocalFileTrusted; // do we believe our local stats data file has not been tampered with |
|
CTFClassImage *m_pClassImage; |
|
|
|
bool m_bShouldBeVisible; |
|
}; |
|
|
|
CTFStatPanel *GetStatPanel(); |
|
|
|
#endif //TFSTATPANEL_H
|