mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-09 10:19:38 +00:00
1
This commit is contained in:
@@ -0,0 +1,274 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#include "cbase.h"
|
||||
|
||||
#include "inputsystem/iinputsystem.h"
|
||||
#include "input.h"
|
||||
|
||||
#include "tf_textwindow.h"
|
||||
#include <cdll_client_int.h>
|
||||
|
||||
#include <vgui/IScheme.h>
|
||||
#include <vgui/ILocalize.h>
|
||||
#include <vgui/ISurface.h>
|
||||
#include <filesystem.h>
|
||||
#include <KeyValues.h>
|
||||
#include <convar.h>
|
||||
#include <vgui_controls/ImageList.h>
|
||||
|
||||
#include <vgui_controls/Panel.h>
|
||||
#include <vgui_controls/TextEntry.h>
|
||||
#include <vgui_controls/Button.h>
|
||||
#include <vgui_controls/BuildGroup.h>
|
||||
#include <vgui_controls/ImagePanel.h>
|
||||
|
||||
#include "tf_controls.h"
|
||||
#include "tf_shareddefs.h"
|
||||
|
||||
#include "IGameUIFuncs.h" // for key bindings
|
||||
#include <igameresources.h>
|
||||
extern IGameUIFuncs *gameuifuncs; // for key binding details
|
||||
|
||||
#include <game/client/iviewport.h>
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFTextWindow::CTFTextWindow( IViewPort *pViewPort ) : CTextWindow( pViewPort )
|
||||
{
|
||||
m_pTFTextMessage = new CExRichText( this, "TFTextMessage" );
|
||||
|
||||
SetProportional( true );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Destructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CTFTextWindow::~CTFTextWindow()
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::ApplySchemeSettings( IScheme *pScheme )
|
||||
{
|
||||
Frame::ApplySchemeSettings( pScheme ); // purposely skipping the CTextWindow version
|
||||
|
||||
if ( ::input->IsSteamControllerActive() )
|
||||
{
|
||||
if ( m_bCustomSvrPage )
|
||||
{
|
||||
LoadControlSettings( "Resource/UI/TextWindowCustomServer_SC.res" );
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadControlSettings( "Resource/UI/TextWindow_SC.res" );
|
||||
}
|
||||
|
||||
SetMouseInputEnabled( false );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( m_bCustomSvrPage )
|
||||
{
|
||||
LoadControlSettings( "Resource/UI/TextWindowCustomServer.res" );
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadControlSettings( "Resource/UI/TextWindow.res" );
|
||||
}
|
||||
SetMouseInputEnabled( true );
|
||||
}
|
||||
|
||||
|
||||
if ( m_pHTMLMessage )
|
||||
{
|
||||
m_pHTMLMessage->SetBgColor( pScheme->GetColor( "HTMLBackground", Color( 255, 0, 0, 255 ) ) );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::Reset( void )
|
||||
{
|
||||
Update();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::OnThink()
|
||||
{
|
||||
//Always hide the health... this needs to be done every frame because a message from the server keeps resetting this.
|
||||
C_BasePlayer *pLocalPlayer = C_BasePlayer::GetLocalPlayer();
|
||||
if ( pLocalPlayer )
|
||||
{
|
||||
pLocalPlayer->m_Local.m_iHideHUD |= HIDEHUD_HEALTH;
|
||||
}
|
||||
|
||||
BaseClass::OnThink();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::SetData(KeyValues *data)
|
||||
{
|
||||
m_bCustomSvrPage = data->GetBool( "customsvr" );
|
||||
InvalidateLayout( false, true );
|
||||
BaseClass::SetData( data );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::Update()
|
||||
{
|
||||
CExLabel *pTitle = dynamic_cast<CExLabel *>( FindChildByName( "TFMessageTitle" ) );
|
||||
if ( pTitle )
|
||||
{
|
||||
pTitle->SetText( m_szTitle );
|
||||
}
|
||||
|
||||
if ( m_pTFTextMessage )
|
||||
{
|
||||
m_pTFTextMessage->SetVisible( false );
|
||||
}
|
||||
|
||||
BaseClass::Update();
|
||||
|
||||
Panel *pOK = FindChildByName( "ok" );
|
||||
if ( pOK )
|
||||
{
|
||||
pOK->RequestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//---------------------------------------------------------------------------
|
||||
void CTFTextWindow::SetVisible( bool state )
|
||||
{
|
||||
BaseClass::SetVisible( state );
|
||||
|
||||
if ( state )
|
||||
{
|
||||
Panel *pOK = FindChildByName( "ok" );
|
||||
if ( pOK )
|
||||
{
|
||||
pOK->RequestFocus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: shows the text window
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::ShowPanel( bool bShow )
|
||||
{
|
||||
if ( IsVisible() == bShow )
|
||||
return;
|
||||
|
||||
// Force use to reevaluate our scheme, in case Steam Controller stuff has changed.
|
||||
InvalidateLayout( true, true );
|
||||
|
||||
BaseClass::ShowPanel( bShow );
|
||||
|
||||
if ( m_pViewPort )
|
||||
{
|
||||
m_pViewPort->ShowBackGround( false );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::OnKeyCodePressed( KeyCode code )
|
||||
{
|
||||
if ( code == KEY_XBUTTON_A || code == STEAMCONTROLLER_A )
|
||||
{
|
||||
OnCommand( "okay" );
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseClass::OnKeyCodePressed( code );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: The background is painted elsewhere, so we should do nothing
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::PaintBackground()
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::OnCommand( const char *command )
|
||||
{
|
||||
BaseClass::OnCommand( command );
|
||||
|
||||
// Don't open up the mapinfo if it was a custom server html page
|
||||
if ( !Q_strcmp( command, "okay" ) && !m_bCustomSvrPage )
|
||||
{
|
||||
m_pViewPort->ShowPanel( PANEL_MAPINFO, true );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::ShowText( const char *text )
|
||||
{
|
||||
ShowTitleLabel( true );
|
||||
|
||||
if ( m_pTFTextMessage )
|
||||
{
|
||||
m_pTFTextMessage->SetVisible( true );
|
||||
m_pTFTextMessage->SetText( text );
|
||||
m_pTFTextMessage->GotoTextStart();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::ShowURL( const char *URL, bool bAllowUserToDisable )
|
||||
{
|
||||
ShowTitleLabel( false );
|
||||
BaseClass::ShowURL( URL, bAllowUserToDisable );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::ShowFile( const char *filename )
|
||||
{
|
||||
ShowTitleLabel( false ) ;
|
||||
BaseClass::ShowFile( filename );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFTextWindow::ShowTitleLabel( bool show )
|
||||
{
|
||||
CExLabel *pTitle = dynamic_cast<CExLabel *>( FindChildByName( "TFMessageTitle" ) );
|
||||
if ( pTitle )
|
||||
{
|
||||
pTitle->SetVisible( show );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user