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.
175 lines
4.7 KiB
175 lines
4.7 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//============================================================================= |
|
|
|
#include "BudgetPanelContainer.h" |
|
#include "mathlib/mathlib.h" |
|
#include "vgui/vgui_budgetpanelshared.h" |
|
#include "AdminServer.h" |
|
#include "ivprofexport.h" |
|
#include "vgui/ilocalize.h" |
|
#include "vgui/ISurface.h" |
|
#include "vgui/vgui_BaseBudgetPanel.h" |
|
|
|
|
|
// -------------------------------------------------------------------------------------------------------------------- // |
|
// CBudgetPanelAdmin declaration. |
|
// -------------------------------------------------------------------------------------------------------------------- // |
|
|
|
class CBudgetPanelAdmin : public CBudgetPanelShared |
|
{ |
|
typedef CBudgetPanelShared BaseClass; |
|
|
|
public: |
|
|
|
CBudgetPanelAdmin( vgui::Panel *pParent, const char *pElementName ); |
|
|
|
virtual void SetupCustomConfigData( CBudgetPanelConfigData &data ); |
|
virtual void PostChildPaint(); |
|
virtual void OnTick(); |
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
|
|
void DrawColoredText( |
|
vgui::HFont font, |
|
int x, int y, |
|
int r, int g, int b, int a, |
|
const char *pText, |
|
... ); |
|
|
|
private: |
|
Color m_budgetTextColor; |
|
}; |
|
|
|
|
|
|
|
CBudgetPanelAdmin::CBudgetPanelAdmin( vgui::Panel *pParent, const char *pElementName ) : |
|
BaseClass( pParent, pElementName, BUDGETFLAG_SERVER ) |
|
{ |
|
MarkAsDedicatedServer(); |
|
} |
|
|
|
|
|
void CBudgetPanelAdmin::SetupCustomConfigData( CBudgetPanelConfigData &data ) |
|
{ |
|
GetBounds( data.m_xCoord, data.m_yCoord, data.m_Width, data.m_Height ); |
|
} |
|
|
|
|
|
void CBudgetPanelAdmin::DrawColoredText( |
|
vgui::HFont font, |
|
int x, int y, |
|
int r, int g, int b, int a, |
|
const char *pText, |
|
... ) |
|
{ |
|
char msg[4096]; |
|
va_list marker; |
|
va_start( marker, pText ); |
|
_vsnprintf( msg, sizeof( msg ), pText, marker ); |
|
va_end( marker ); |
|
|
|
wchar_t unicodeStr[4096]; |
|
int nChars = g_pVGuiLocalize->ConvertANSIToUnicode( msg, unicodeStr, sizeof( unicodeStr ) ); |
|
|
|
vgui::surface()->DrawSetTextFont( font ); |
|
vgui::surface()->DrawSetTextColor( r, g, b, a ); |
|
vgui::surface()->DrawSetTextPos( x, y ); |
|
vgui::surface()->DrawPrintText( unicodeStr, nChars-1 ); |
|
} |
|
|
|
|
|
void CBudgetPanelAdmin::ApplySchemeSettings( vgui::IScheme *pScheme ) |
|
{ |
|
BaseClass::ApplySchemeSettings( pScheme ); |
|
m_budgetTextColor = pScheme->GetColor( "BrightControlText", Color( 0, 255, 0, 255 ) ); |
|
} |
|
|
|
|
|
void CBudgetPanelAdmin::PostChildPaint() |
|
{ |
|
DrawColoredText( m_hFont, 0, 0, m_budgetTextColor[0], m_budgetTextColor[1], m_budgetTextColor[2], m_budgetTextColor[3], "%i fps (showbudget 3D driver time included)", RoundFloatToInt(g_fFrameRate) ); |
|
DrawColoredText( m_hFont, 0, 16, m_budgetTextColor[0], m_budgetTextColor[1], m_budgetTextColor[2], m_budgetTextColor[3], "%.1f ms", g_fFrameTimeLessBudget*1000.0f ); |
|
|
|
BaseClass::PostChildPaint(); |
|
} |
|
|
|
|
|
void CBudgetPanelAdmin::OnTick() |
|
{ |
|
// Don't do all the work if we're not being drawn. |
|
if ( IsVisible() ) |
|
{ |
|
SnapshotVProfHistory( 0 ); |
|
MarkForFullRepaint(); |
|
} |
|
|
|
BaseClass::OnTick(); |
|
} |
|
|
|
|
|
|
|
// ------------------------------------------------------------------------------------------------------------------------------------------------ // |
|
// The budget panel container class. Just holds CBudgetPanelAdmin. |
|
// ------------------------------------------------------------------------------------------------------------------------------------------------ // |
|
|
|
CBudgetPanelContainer::CBudgetPanelContainer(vgui::Panel *parent, const char *name) : PropertyPage(parent, name) |
|
{ |
|
LoadControlSettings("Admin/BudgetPanel.res", "PLATFORM"); |
|
m_pBudgetPanelAdmin = new CBudgetPanelAdmin( this, "AdminBudgetPanel" ); |
|
m_pBudgetPanelAdmin->SetVisible( false ); |
|
InvalidateLayout(); |
|
} |
|
|
|
|
|
CBudgetPanelContainer::~CBudgetPanelContainer() |
|
{ |
|
} |
|
|
|
|
|
void CBudgetPanelContainer::OnServerDataResponse( const char *value, const char *response ) |
|
{ |
|
} |
|
|
|
|
|
void CBudgetPanelContainer::Paint() |
|
{ |
|
|
|
} |
|
|
|
|
|
void CBudgetPanelContainer::PerformLayout() |
|
{ |
|
BaseClass::PerformLayout(); |
|
int x, y, wide, tall; |
|
GetBounds( x, y, wide, tall ); |
|
m_pBudgetPanelAdmin->SetBounds( 12, 12, wide - 24, tall - 24 ); |
|
m_pBudgetPanelAdmin->SendConfigDataToBase(); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Activates the page |
|
//----------------------------------------------------------------------------- |
|
void CBudgetPanelContainer::OnPageShow() |
|
{ |
|
if ( g_pVProfExport ) |
|
g_pVProfExport->AddListener(); |
|
|
|
m_pBudgetPanelAdmin->SetVisible( true ); |
|
BaseClass::OnPageShow(); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Hides the page |
|
//----------------------------------------------------------------------------- |
|
void CBudgetPanelContainer::OnPageHide() |
|
{ |
|
if ( g_pVProfExport ) |
|
g_pVProfExport->RemoveListener(); |
|
|
|
m_pBudgetPanelAdmin->SetVisible( false ); |
|
BaseClass::OnPageHide(); |
|
}
|
|
|