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.
176 lines
4.6 KiB
176 lines
4.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
|
|
#include <stdio.h> |
|
|
|
#include "GameConsole.h" |
|
#include "GameConsoleDialog.h" |
|
#include "LoadingDialog.h" |
|
#include "vgui/ISurface.h" |
|
|
|
#include "KeyValues.h" |
|
#include "vgui/VGUI.h" |
|
#include "vgui/IVGui.h" |
|
#include "vgui_controls/Panel.h" |
|
#include "convar.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
static CGameConsole g_GameConsole; |
|
//----------------------------------------------------------------------------- |
|
// Purpose: singleton accessor |
|
//----------------------------------------------------------------------------- |
|
CGameConsole &GameConsole() |
|
{ |
|
return g_GameConsole; |
|
} |
|
EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CGameConsole, IGameConsole, GAMECONSOLE_INTERFACE_VERSION, g_GameConsole); |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Constructor |
|
//----------------------------------------------------------------------------- |
|
CGameConsole::CGameConsole() |
|
{ |
|
m_bInitialized = false; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Destructor |
|
//----------------------------------------------------------------------------- |
|
CGameConsole::~CGameConsole() |
|
{ |
|
m_bInitialized = false; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: sets up the console for use |
|
//----------------------------------------------------------------------------- |
|
void CGameConsole::Initialize() |
|
{ |
|
#ifndef _XBOX |
|
m_pConsole = vgui::SETUP_PANEL( new CGameConsoleDialog() ); // we add text before displaying this so set it up now! |
|
|
|
// set the console to taking up most of the right-half of the screen |
|
int swide, stall; |
|
vgui::surface()->GetScreenSize(swide, stall); |
|
int offsetx = vgui::scheme()->GetProportionalScaledValue(16); |
|
int offsety = vgui::scheme()->GetProportionalScaledValue(64); |
|
|
|
m_pConsole->SetBounds( |
|
swide / 2 - offsetx, |
|
offsety, |
|
swide / 2, |
|
stall - (offsety * 2)); |
|
|
|
m_bInitialized = true; |
|
#endif |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: activates the console, makes it visible and brings it to the foreground |
|
//----------------------------------------------------------------------------- |
|
void CGameConsole::Activate() |
|
{ |
|
#ifndef _XBOX |
|
if (!m_bInitialized) |
|
return; |
|
|
|
vgui::surface()->RestrictPaintToSinglePanel(NULL); |
|
m_pConsole->Activate(); |
|
#endif |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: hides the console |
|
//----------------------------------------------------------------------------- |
|
void CGameConsole::Hide() |
|
{ |
|
#ifndef _XBOX |
|
if (!m_bInitialized) |
|
return; |
|
|
|
m_pConsole->Hide(); |
|
#endif |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: clears the console |
|
//----------------------------------------------------------------------------- |
|
void CGameConsole::Clear() |
|
{ |
|
#ifndef _XBOX |
|
if (!m_bInitialized) |
|
return; |
|
|
|
m_pConsole->Clear(); |
|
#endif |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: returns true if the console is currently in focus |
|
//----------------------------------------------------------------------------- |
|
bool CGameConsole::IsConsoleVisible() |
|
{ |
|
#ifndef _XBOX |
|
if (!m_bInitialized) |
|
return false; |
|
|
|
return m_pConsole->IsVisible(); |
|
#else |
|
return false; |
|
#endif |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: activates the console after a delay |
|
//----------------------------------------------------------------------------- |
|
void CGameConsole::ActivateDelayed(float time) |
|
{ |
|
#ifndef _XBOX |
|
if (!m_bInitialized) |
|
return; |
|
|
|
m_pConsole->PostMessage(m_pConsole, new KeyValues("Activate"), time); |
|
#endif |
|
} |
|
|
|
void CGameConsole::SetParent( intp parent ) |
|
{ |
|
#ifndef _XBOX |
|
if (!m_bInitialized) |
|
return; |
|
|
|
m_pConsole->SetParent( static_cast<vgui::VPANEL>( parent )); |
|
|
|
// apply proportionality from parent |
|
if (vgui::ipanel()->IsProportional(static_cast<vgui::VPANEL>(parent))) |
|
{ |
|
m_pConsole->SetProportional(true); |
|
m_pConsole->InvalidateLayout(true, true); |
|
} |
|
#endif |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: static command handler |
|
//----------------------------------------------------------------------------- |
|
void CGameConsole::OnCmdCondump() |
|
{ |
|
#ifndef _XBOX |
|
g_GameConsole.m_pConsole->DumpConsoleTextToFile(); |
|
#endif |
|
} |
|
|
|
#ifndef _XBOX |
|
CON_COMMAND( condump, "dump the text currently in the console to condumpXX.log" ) |
|
{ |
|
g_GameConsole.OnCmdCondump(); |
|
} |
|
#endif
|
|
|