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.
130 lines
3.6 KiB
130 lines
3.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#include "BenchmarkDialog.h" |
|
#include "EngineInterface.h" |
|
#include "BasePanel.h" |
|
#include "tier1/KeyValues.h" |
|
#include "tier1/convar.h" |
|
#include "filesystem.h" |
|
#include "vgui_controls/Button.h" |
|
#include "vgui_controls/CheckButton.h" |
|
|
|
using namespace vgui; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Constructor |
|
//----------------------------------------------------------------------------- |
|
CBenchmarkDialog::CBenchmarkDialog(vgui::Panel *parent, const char *name) : BaseClass(parent, name) |
|
{ |
|
Button *button = new Button(this, "RunButton", "RunButton"); |
|
button->SetCommand(new KeyValues("RunBenchmark")); |
|
SetSizeable(false); |
|
SetDeleteSelfOnClose(true); |
|
|
|
LoadControlSettings("Resource/BenchmarkDialog.res"); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Launches the benchmark |
|
//----------------------------------------------------------------------------- |
|
void CBenchmarkDialog::RunBenchmark() |
|
{ |
|
// apply settings |
|
BasePanel()->ApplyOptionsDialogSettings(); |
|
|
|
// launch the map |
|
engine->ClientCmd_Unrestricted("disconnect\n"); |
|
engine->ClientCmd_Unrestricted("wait\n"); |
|
engine->ClientCmd_Unrestricted("wait\n"); |
|
engine->ClientCmd_Unrestricted("maxplayers 1\n"); |
|
engine->ClientCmd_Unrestricted("progress_enable\n"); |
|
engine->ClientCmd_Unrestricted("map test_hardware\n"); |
|
|
|
// close this dialog |
|
Close(); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Displays benchmark results |
|
//----------------------------------------------------------------------------- |
|
class CBenchmarkResultsDialog : public vgui::Frame |
|
{ |
|
DECLARE_CLASS_SIMPLE( CBenchmarkResultsDialog, vgui::Frame ); |
|
public: |
|
CBenchmarkResultsDialog( vgui::Panel *parent, const char *name ) : BaseClass( parent, name ) |
|
{ |
|
SetTitle("#GameUI_BenchmarkResults_Title", true); |
|
SetDeleteSelfOnClose(true); |
|
SetSizeable(false); |
|
|
|
m_pUploadCheck = new CheckButton( this, "UploadCheck", "#GameUI_BenchmarkResults_UploadNow" ); |
|
|
|
LoadControlSettings("Resource/BenchmarkResultsDialog.res"); |
|
|
|
m_pUploadCheck->SetSelected( true ); |
|
MoveToCenterOfScreen(); |
|
} |
|
|
|
virtual void Activate() |
|
{ |
|
BaseClass::Activate(); |
|
|
|
KeyValues *kv = new KeyValues( "Benchmark" ); |
|
if ( kv->LoadFromFile( g_pFullFileSystem, "results/results.txt", "MOD" ) ) |
|
{ |
|
// get the framerate |
|
char szFrameRate[32]; |
|
Q_snprintf( szFrameRate, sizeof(szFrameRate), "%.2f", kv->GetFloat("framerate") ); |
|
SetDialogVariable( "framerate", szFrameRate ); |
|
} |
|
else |
|
{ |
|
Close(); |
|
} |
|
kv->deleteThis(); |
|
} |
|
|
|
void OnKeyCodePressed( KeyCode code ) |
|
{ |
|
if ( code == KEY_XBUTTON_B ) |
|
{ |
|
Close(); |
|
} |
|
else |
|
{ |
|
BaseClass::OnKeyCodePressed(code); |
|
} |
|
} |
|
|
|
private: |
|
virtual void OnClose() |
|
{ |
|
if ( m_pUploadCheck->IsSelected() ) |
|
{ |
|
engine->ClientCmd_Unrestricted( "bench_upload\n" ); |
|
} |
|
BaseClass::OnClose(); |
|
} |
|
|
|
vgui::CheckButton *m_pUploadCheck; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Launches the stats dialog |
|
//----------------------------------------------------------------------------- |
|
CON_COMMAND_F( bench_showstatsdialog, "Shows a dialog displaying the most recent benchmark results.", FCVAR_CHEAT ) |
|
{ |
|
static vgui::DHANDLE<CBenchmarkResultsDialog> g_BenchmarkResultsDialog; |
|
|
|
if (!g_BenchmarkResultsDialog.Get()) |
|
{ |
|
g_BenchmarkResultsDialog = new CBenchmarkResultsDialog( BasePanel(), "BenchmarkResultsDialog" ); |
|
} |
|
|
|
g_BenchmarkResultsDialog->Activate(); |
|
}
|
|
|