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.
146 lines
3.8 KiB
146 lines
3.8 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
|
||
|
#ifndef VGUI_BASEBUDGETPANEL_H
|
||
|
#define VGUI_BASEBUDGETPANEL_H
|
||
|
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#include <vgui_controls/Frame.h>
|
||
|
#include <vgui/IScheme.h>
|
||
|
#include "vgui_budgethistorypanel.h"
|
||
|
#include "vgui_budgetbargraphpanel.h"
|
||
|
#include "utlsymbol.h"
|
||
|
//#include "hudelement.h"
|
||
|
|
||
|
|
||
|
#define BUDGET_HISTORY_COUNT 1024
|
||
|
|
||
|
class CBudgetGroupInfo
|
||
|
{
|
||
|
public:
|
||
|
CUtlSymbol m_Name;
|
||
|
Color m_Color;
|
||
|
};
|
||
|
|
||
|
// Derived classes supply this configuration data with OnConfigDataChanged.
|
||
|
class CBudgetPanelConfigData
|
||
|
{
|
||
|
public:
|
||
|
// NOTE: nothing can ever be removed from this list once you've called
|
||
|
// OnConfigDataChanged. Elements can only be added to it.
|
||
|
CUtlVector<CBudgetGroupInfo> m_BudgetGroupInfo;
|
||
|
|
||
|
float m_flHistoryRange;
|
||
|
float m_flBottomOfHistoryFraction;
|
||
|
CUtlVector<float> m_HistoryLabelValues; // A label will be placed at each of these values.
|
||
|
|
||
|
// How much range the bar graph represents.
|
||
|
float m_flBarGraphRange;
|
||
|
|
||
|
// Controls how many labels are shown.
|
||
|
float m_flTimeLabelInterval;
|
||
|
int m_nLinesPerTimeLabel; // How many vertical lines per time label?
|
||
|
|
||
|
// How translucent is the background.
|
||
|
float m_flBackgroundAlpha;
|
||
|
|
||
|
// Where to position it on the screen.
|
||
|
int m_xCoord;
|
||
|
int m_yCoord;
|
||
|
int m_Width;
|
||
|
int m_Height;
|
||
|
};
|
||
|
|
||
|
|
||
|
class CBaseBudgetPanel : public vgui::Panel
|
||
|
{
|
||
|
typedef vgui::Panel BaseClass;
|
||
|
|
||
|
public:
|
||
|
CBaseBudgetPanel( vgui::Panel *pParent, const char *pElementName );
|
||
|
~CBaseBudgetPanel();
|
||
|
|
||
|
// This should be called when starting up and whenever this data changes.
|
||
|
void OnConfigDataChanged( const CBudgetPanelConfigData &data );
|
||
|
|
||
|
// Call this to reset everything.
|
||
|
virtual void ResetAll();
|
||
|
|
||
|
// The derived class should implement this and set the text in the time labels.
|
||
|
virtual void SetTimeLabelText() {}
|
||
|
virtual void SetHistoryLabelText() {}
|
||
|
|
||
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
|
||
|
virtual void Paint();
|
||
|
virtual void PaintBackground();
|
||
|
virtual void PerformLayout();
|
||
|
void MarkAsDedicatedServer() { m_bDedicated = true; } // plays nicer as part of a vgui window setup
|
||
|
bool IsDedicated() const { return m_bDedicated; }
|
||
|
|
||
|
const double *GetBudgetGroupData( int &nGroups, int &nSamplesPerGroup, int &nSampleOffset ) const;
|
||
|
|
||
|
void GetGraphLabelScreenSpaceTopAndBottom( int id, int &top, int &bottom );
|
||
|
|
||
|
// What percentage is the specified value of the (bargraph) range?
|
||
|
float GetBudgetGroupPercent( float value );
|
||
|
|
||
|
// Get the current config data.
|
||
|
const CBudgetPanelConfigData& GetConfigData() const;
|
||
|
|
||
|
// Returns the number of budget groups in the last OnConfigDataChanged call.
|
||
|
int GetNumCachedBudgetGroups() const;
|
||
|
|
||
|
// (Used by dedicated server, mark everything for a repaint).
|
||
|
void MarkForFullRepaint();
|
||
|
|
||
|
protected:
|
||
|
void UpdateWindowGeometry();
|
||
|
void ClearTimesForAllGroupsForThisFrame( void );
|
||
|
void ClearAllTimesForGroup( int groupID );
|
||
|
void Rebuild( const CBudgetPanelConfigData &data );
|
||
|
|
||
|
protected:
|
||
|
int m_BudgetHistoryOffset;
|
||
|
|
||
|
// This defines all the positioning, label names, etc.
|
||
|
CBudgetPanelConfigData m_ConfigData;
|
||
|
|
||
|
CUtlVector<vgui::Label *> m_GraphLabels;
|
||
|
CUtlVector<vgui::Label *> m_TimeLabels;
|
||
|
CUtlVector<vgui::Label *> m_HistoryLabels;
|
||
|
|
||
|
CBudgetHistoryPanel *m_pBudgetHistoryPanel;
|
||
|
CBudgetBarGraphPanel *m_pBudgetBarGraphPanel;
|
||
|
|
||
|
struct BudgetGroupTimeData_t
|
||
|
{
|
||
|
double m_Time[BUDGET_HISTORY_COUNT];
|
||
|
};
|
||
|
CUtlVector<BudgetGroupTimeData_t> m_BudgetGroupTimes; // [m_CachedNumBudgetGroups][BUDGET_HISTORY_COUNT]
|
||
|
int m_CachedNumTimeLabels;
|
||
|
vgui::HFont m_hFont;
|
||
|
|
||
|
bool m_bDedicated;
|
||
|
};
|
||
|
|
||
|
|
||
|
inline const CBudgetPanelConfigData& CBaseBudgetPanel::GetConfigData() const
|
||
|
{
|
||
|
return m_ConfigData;
|
||
|
}
|
||
|
|
||
|
inline int CBaseBudgetPanel::GetNumCachedBudgetGroups() const
|
||
|
{
|
||
|
return m_ConfigData.m_BudgetGroupInfo.Count();
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif // VGUI_BASEBUDGETPANEL_H
|