mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-05 22:09:59 +03:00
1
This commit is contained in:
151
tools/toolutils/basestatusbar.cpp
Normal file
151
tools/toolutils/basestatusbar.cpp
Normal file
@@ -0,0 +1,151 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#include "toolutils/basestatusbar.h"
|
||||
#include "toolutils/ConsolePage.h"
|
||||
#include "vgui_controls/Label.h"
|
||||
#include "movieobjects/dmeclip.h"
|
||||
#include "tier1/KeyValues.h"
|
||||
#include "vgui/IVGui.h"
|
||||
#include "toolutils/enginetools_int.h"
|
||||
#include "toolframework/ienginetool.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
CBaseStatusBar::CBaseStatusBar( vgui::Panel *parent, char const *panelName )
|
||||
: BaseClass( parent, panelName ),
|
||||
m_flLastFPSSnapShot( -1.0f )
|
||||
{
|
||||
SetVisible( true );
|
||||
m_pConsole = new CConsolePage( this, true );
|
||||
m_pLabel = new Label( this, "Console", "#BxConsole" );
|
||||
m_pMemory = new Label( this, "Memory", "" );
|
||||
m_pFPS = new Label( this, "FPS", "" );
|
||||
m_pGameTime = new Label( this, "GameTime", "" );
|
||||
|
||||
MakePopup( false );
|
||||
|
||||
UpdateMemoryUsage( 9.999 );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Forces console to take up full area except right edge
|
||||
// Input : -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CBaseStatusBar::PerformLayout()
|
||||
{
|
||||
BaseClass::PerformLayout();
|
||||
|
||||
int w, h;
|
||||
GetSize( w, h );
|
||||
|
||||
int oldw = w;
|
||||
|
||||
w *= 0.45f;
|
||||
|
||||
int x = 8;
|
||||
|
||||
int cw, ch;
|
||||
m_pLabel->GetContentSize( cw, ch );
|
||||
m_pLabel->SetBounds( x, 4, cw, h - 8 );
|
||||
|
||||
x += cw + 4;
|
||||
|
||||
int consoleWide = w - x - 8;
|
||||
|
||||
m_pConsole->SetBounds( x, 2, consoleWide, h - 4 );
|
||||
|
||||
x += consoleWide + 4;
|
||||
|
||||
int infoW = 85;
|
||||
|
||||
int rightx = oldw - infoW - 10;
|
||||
m_pFPS->SetBounds( rightx, 2, infoW - 2 - 10, h - 8 );
|
||||
rightx -= infoW;
|
||||
m_pGameTime->SetBounds( rightx, 2, infoW - 2, h - 8 );
|
||||
rightx -= infoW;
|
||||
m_pMemory->SetBounds( rightx, 2, infoW - 2, h - 8 );
|
||||
}
|
||||
|
||||
void CBaseStatusBar::UpdateMemoryUsage( float mbUsed )
|
||||
{
|
||||
char mem[ 256 ];
|
||||
Q_snprintf( mem, sizeof( mem ), "[mem: %.2f Mb]", mbUsed );
|
||||
m_pMemory->SetText( mem );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Message map
|
||||
//-----------------------------------------------------------------------------
|
||||
void CBaseStatusBar::ApplySchemeSettings(IScheme *pScheme)
|
||||
{
|
||||
BaseClass::ApplySchemeSettings(pScheme);
|
||||
|
||||
// get the borders we need
|
||||
SetBorder(pScheme->GetBorder("ButtonBorder"));
|
||||
|
||||
// get the background color
|
||||
SetBgColor(pScheme->GetColor( "StatusBar.BgColor", GetBgColor() ));
|
||||
|
||||
m_pLabel->SetFont( pScheme->GetFont( "DefaultVerySmall" ) );
|
||||
m_pMemory->SetFont( pScheme->GetFont( "DefaultVerySmall" ) );
|
||||
m_pFPS->SetFont( pScheme->GetFont( "DefaultVerySmall" ) );
|
||||
m_pGameTime->SetFont( pScheme->GetFont( "DefaultVerySmall" ) );
|
||||
}
|
||||
|
||||
static float GetMemoryUsage();
|
||||
|
||||
void CBaseStatusBar::OnThink()
|
||||
{
|
||||
BaseClass::OnThink();
|
||||
|
||||
float curtime = enginetools->GetRealTime();
|
||||
|
||||
char gt[ 32 ];
|
||||
Q_snprintf( gt, sizeof( gt ), "[game: %.3f]", enginetools->ServerTime() );
|
||||
m_pGameTime->SetText( gt );
|
||||
|
||||
float elapsed = curtime - m_flLastFPSSnapShot;
|
||||
if ( elapsed < 0.4f )
|
||||
return;
|
||||
|
||||
m_flLastFPSSnapShot = curtime;
|
||||
|
||||
float ft = enginetools->GetRealFrameTime();
|
||||
if ( ft <= 0.0f )
|
||||
{
|
||||
m_pFPS->SetText( "[fps: ??]" );
|
||||
}
|
||||
else
|
||||
{
|
||||
char fps[ 32 ];
|
||||
Q_snprintf( fps, sizeof( fps ), "[fps: %.1f]", 1.0f / ft );
|
||||
m_pFPS->SetText( fps );
|
||||
}
|
||||
|
||||
UpdateMemoryUsage( GetMemoryUsage() );
|
||||
}
|
||||
|
||||
#include <windows.h>
|
||||
#include <psapi.h>
|
||||
static float GetMemoryUsage()
|
||||
{
|
||||
PROCESS_MEMORY_COUNTERS counters;
|
||||
counters.cb = sizeof( counters );
|
||||
|
||||
if ( GetProcessMemoryInfo( GetCurrentProcess(), &counters, sizeof( counters ) ) )
|
||||
{
|
||||
return (float)counters.WorkingSetSize / ( 1024.0f * 1024.0f );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user