summaryrefslogtreecommitdiff
path: root/gameui/BenchmarkDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gameui/BenchmarkDialog.cpp')
-rw-r--r--gameui/BenchmarkDialog.cpp130
1 files changed, 130 insertions, 0 deletions
diff --git a/gameui/BenchmarkDialog.cpp b/gameui/BenchmarkDialog.cpp
new file mode 100644
index 0000000..9cf0a1a
--- /dev/null
+++ b/gameui/BenchmarkDialog.cpp
@@ -0,0 +1,130 @@
+//========= 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();
+}