summaryrefslogtreecommitdiff
path: root/gameui/GameConsoleDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gameui/GameConsoleDialog.cpp')
-rw-r--r--gameui/GameConsoleDialog.cpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/gameui/GameConsoleDialog.cpp b/gameui/GameConsoleDialog.cpp
new file mode 100644
index 0000000..430102c
--- /dev/null
+++ b/gameui/GameConsoleDialog.cpp
@@ -0,0 +1,99 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//===========================================================================//
+
+#include "GameConsoleDialog.h"
+#include "GameUI_Interface.h"
+#include "vgui/IInput.h"
+#include "vgui/ISurface.h"
+#include "vgui/KeyCode.h"
+#include "LoadingDialog.h"
+#include "IGameUIFuncs.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+using namespace vgui;
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Constructor
+//-----------------------------------------------------------------------------
+CGameConsoleDialog::CGameConsoleDialog() : BaseClass( NULL, "GameConsole", false )
+{
+ AddActionSignalTarget( this );
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: generic vgui command handler
+//-----------------------------------------------------------------------------
+void CGameConsoleDialog::OnCommand(const char *command)
+{
+ if ( !Q_stricmp( command, "Close" ) )
+ {
+ if ( GameUI().IsInBackgroundLevel() )
+ {
+ // Tell the engine we've hid the console, so that it unpauses the game
+ // even though we're still sitting at the menu.
+ engine->ClientCmd_Unrestricted( "unpause" );
+ }
+ }
+
+ BaseClass::OnCommand(command);
+}
+
+
+//-----------------------------------------------------------------------------
+// HACK: Allow F key bindings to operate even when typing in the text entry field
+//-----------------------------------------------------------------------------
+void CGameConsoleDialog::OnKeyCodeTyped(KeyCode code)
+{
+ BaseClass::OnKeyCodeTyped(code);
+
+ // check for processing
+ if ( m_pConsolePanel->TextEntryHasFocus() )
+ {
+ // HACK: Allow F key bindings to operate even here
+ if ( code >= KEY_F1 && code <= KEY_F12 )
+ {
+ // See if there is a binding for the FKey
+ const char *binding = gameuifuncs->GetBindingForButtonCode( code );
+ if ( binding && binding[0] )
+ {
+ // submit the entry as a console commmand
+ char szCommand[256];
+ Q_strncpy( szCommand, binding, sizeof( szCommand ) );
+ engine->ClientCmd_Unrestricted( szCommand );
+ }
+ }
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// Submits a command
+//-----------------------------------------------------------------------------
+void CGameConsoleDialog::OnCommandSubmitted( const char *pCommand )
+{
+ engine->ClientCmd_Unrestricted( pCommand );
+}
+
+
+//-----------------------------------------------------------------------------
+// Submits a command
+//-----------------------------------------------------------------------------
+void CGameConsoleDialog::OnClosedByHittingTilde()
+{
+ if ( !LoadingDialog() )
+ {
+ GameUI().HideGameUI();
+ }
+ else
+ {
+ vgui::surface()->RestrictPaintToSinglePanel( LoadingDialog()->GetVPanel() );
+ }
+}