mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
//========= 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();
|
||||
}
|
||||
Reference in New Issue
Block a user