Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= 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 ); } }
|