diff options
Diffstat (limited to 'gameui/GameConsoleDialog.cpp')
| -rw-r--r-- | gameui/GameConsoleDialog.cpp | 99 |
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() ); + } +} |