diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /sp/src/game/client/hud_basechat.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/game/client/hud_basechat.h')
| -rw-r--r-- | sp/src/game/client/hud_basechat.h | 878 |
1 files changed, 439 insertions, 439 deletions
diff --git a/sp/src/game/client/hud_basechat.h b/sp/src/game/client/hud_basechat.h index cdb6d907..90de8fbf 100644 --- a/sp/src/game/client/hud_basechat.h +++ b/sp/src/game/client/hud_basechat.h @@ -1,439 +1,439 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//=============================================================================//
-
-#ifndef HUD_BASECHAT_H
-#define HUD_BASECHAT_H
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "hudelement.h"
-#include <vgui_controls/Panel.h>
-#include "vgui_basepanel.h"
-#include "vgui_controls/Frame.h"
-#include <vgui_controls/TextEntry.h>
-#include <vgui_controls/RichText.h>
-#include <vgui_controls/Button.h>
-#include <vgui_controls/CheckButton.h>
-
-class CBaseHudChatInputLine;
-class CBaseHudChatEntry;
-class CHudChatFilterPanel;
-
-namespace vgui
-{
- class IScheme;
-};
-
-#define CHATLINE_NUM_FLASHES 8.0f
-#define CHATLINE_FLASH_TIME 5.0f
-#define CHATLINE_FADE_TIME 1.0f
-
-#define CHAT_HISTORY_FADE_TIME 0.25f
-#define CHAT_HISTORY_IDLE_TIME 15.0f
-#define CHAT_HISTORY_IDLE_FADE_TIME 2.5f
-#define CHAT_HISTORY_ALPHA 127
-
-extern Color g_ColorBlue;
-extern Color g_ColorRed;
-extern Color g_ColorGreen;
-extern Color g_ColorDarkGreen;
-extern Color g_ColorYellow;
-extern Color g_ColorGrey;
-
-extern ConVar cl_showtextmsg;
-
-enum ChatFilters
-{
- CHAT_FILTER_NONE = 0,
- CHAT_FILTER_JOINLEAVE = 0x000001,
- CHAT_FILTER_NAMECHANGE = 0x000002,
- CHAT_FILTER_PUBLICCHAT = 0x000004,
- CHAT_FILTER_SERVERMSG = 0x000008,
- CHAT_FILTER_TEAMCHANGE = 0x000010,
- //=============================================================================
- // HPE_BEGIN:
- // [tj]Added a filter for achievement announce
- //=============================================================================
-
- CHAT_FILTER_ACHIEVEMENT = 0x000020,
-
- //=============================================================================
- // HPE_END
- //=============================================================================
-};
-
-
-//-----------------------------------------------------------------------------
-enum TextColor
-{
- COLOR_NORMAL = 1,
- COLOR_USEOLDCOLORS = 2,
- COLOR_PLAYERNAME = 3,
- COLOR_LOCATION = 4,
- COLOR_ACHIEVEMENT = 5,
- COLOR_CUSTOM = 6, // Will use the most recently SetCustomColor()
- COLOR_HEXCODE = 7, // Reads the color from the next six characters
- COLOR_HEXCODE_ALPHA = 8,// Reads the color and alpha from the next eight characters
- COLOR_MAX
-};
-
-//--------------------------------------------------------------------------------------------------------------
-struct TextRange
-{
- TextRange() { preserveAlpha = false; }
- int start;
- int end;
- Color color;
- bool preserveAlpha;
-};
-
-void StripEndNewlineFromString( char *str );
-void StripEndNewlineFromString( wchar_t *str );
-
-char* ConvertCRtoNL( char *str );
-wchar_t* ConvertCRtoNL( wchar_t *str );
-wchar_t* ReadLocalizedString( bf_read &msg, OUT_Z_BYTECAP(outSizeInBytes) wchar_t *pOut, int outSizeInBytes, bool bStripNewline, OUT_Z_CAP(originalSize) char *originalString = NULL, int originalSize = 0 );
-wchar_t* ReadChatTextString( bf_read &msg, OUT_Z_BYTECAP(outSizeInBytes) wchar_t *pOut, int outSizeInBytes );
-char* RemoveColorMarkup( char *str );
-
-//--------------------------------------------------------------------------------------------------------
-/**
- * Simple utility function to allocate memory and duplicate a wide string
- */
-inline wchar_t *CloneWString( const wchar_t *str )
-{
- const int nLen = V_wcslen(str)+1;
- wchar_t *cloneStr = new wchar_t [ nLen ];
- const int nSize = nLen * sizeof( wchar_t );
- V_wcsncpy( cloneStr, str, nSize );
- return cloneStr;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: An output/display line of the chat interface
-//-----------------------------------------------------------------------------
-class CBaseHudChatLine : public vgui::RichText
-{
- typedef vgui::RichText BaseClass;
-
-public:
- CBaseHudChatLine( vgui::Panel *parent, const char *panelName );
- ~CBaseHudChatLine();
-
- void SetExpireTime( void );
-
- bool IsReadyToExpire( void );
-
- void Expire( void );
-
- float GetStartTime( void );
-
- int GetCount( void );
-
- virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
-
- vgui::HFont GetFont() { return m_hFont; }
-
- Color GetTextColor( void ) { return m_clrText; }
- void SetNameLength( int iLength ) { m_iNameLength = iLength; }
- void SetNameColor( Color cColor ){ m_clrNameColor = cColor; }
-
- virtual void PerformFadeout( void );
- virtual void InsertAndColorizeText( wchar_t *buf, int clientIndex );
- virtual void Colorize( int alpha = 255 ); ///< Re-inserts the text in the appropriate colors at the given alpha
-
-
- void SetNameStart( int iStart ) { m_iNameStart = iStart; }
-
-protected:
- int m_iNameLength;
- vgui::HFont m_hFont;
-
- Color m_clrText;
- Color m_clrNameColor;
-
- float m_flExpireTime;
-
- CUtlVector< TextRange > m_textRanges;
- wchar_t *m_text;
-
- int m_iNameStart;
-
-private:
- float m_flStartTime;
- int m_nCount;
-
- vgui::HFont m_hFontMarlett;
-
-
-private:
- CBaseHudChatLine( const CBaseHudChatLine & ); // not defined, not accessible
-};
-
-
-class CHudChatHistory : public vgui::RichText
-{
- DECLARE_CLASS_SIMPLE( CHudChatHistory, vgui::RichText );
-public:
-
- CHudChatHistory( vgui::Panel *pParent, const char *panelName );
-
- virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
-};
-
-class CHudChatFilterButton : public vgui::Button
-{
- DECLARE_CLASS_SIMPLE( CHudChatFilterButton, vgui::Button );
-
-public:
-
- CHudChatFilterButton( vgui::Panel *pParent, const char *pName, const char *pText );
-
- virtual void DoClick( void );
-};
-
-class CHudChatFilterCheckButton : public vgui::CheckButton
-{
- DECLARE_CLASS_SIMPLE( CHudChatFilterCheckButton, vgui::CheckButton );
-
-public:
-
- CHudChatFilterCheckButton( vgui::Panel *pParent, const char *pName, const char *pText, int iFlag );
-
- int GetFilterFlag( void ) { return m_iFlag; }
-
-private:
-
- int m_iFlag;
-};
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class CBaseHudChat : public CHudElement, public vgui::EditablePanel
-{
- DECLARE_CLASS_SIMPLE( CBaseHudChat, vgui::EditablePanel );
-public:
- DECLARE_MULTIPLY_INHERITED();
-
- enum
- {
- CHAT_INTERFACE_LINES = 6,
- MAX_CHARS_PER_LINE = 128
- };
-
- CBaseHudChat( const char *pElementName );
-
- virtual void CreateChatInputLine( void );
- virtual void CreateChatLines( void );
-
- virtual void Init( void );
-
- void LevelInit( const char *newmap );
- void LevelShutdown( void );
-
- void MsgFunc_TextMsg(const char *pszName, int iSize, void *pbuf);
-
- virtual void Printf( int iFilter, PRINTF_FORMAT_STRING const char *fmt, ... );
- virtual void ChatPrintf( int iPlayerIndex, int iFilter, PRINTF_FORMAT_STRING const char *fmt, ... );
-
- virtual void StartMessageMode( int iMessageModeType );
- virtual void StopMessageMode( void );
- void Send( void );
-
- MESSAGE_FUNC( OnChatEntrySend, "ChatEntrySend" );
- MESSAGE_FUNC( OnChatEntryStopMessageMode, "ChatEntryStopMessageMode" );
-
- virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
- virtual void Paint( void );
- virtual void OnTick( void );
- virtual void Reset();
-#ifdef _XBOX
- virtual bool ShouldDraw();
-#endif
- vgui::Panel *GetInputPanel( void );
-
- static int m_nLineCounter;
-
- virtual int GetChatInputOffset( void );
-
- // IGameEventListener interface:
- virtual void FireGameEvent( IGameEvent *event);
-
- CHudChatHistory *GetChatHistory();
-
- void FadeChatHistory();
- float m_flHistoryFadeTime;
- float m_flHistoryIdleTime;
-
- virtual void MsgFunc_SayText( bf_read &msg );
- virtual void MsgFunc_SayText2( bf_read &msg );
- virtual void MsgFunc_TextMsg( bf_read &msg );
- virtual void MsgFunc_VoiceSubtitle( bf_read &msg );
-
-
- CBaseHudChatInputLine *GetChatInput( void ) { return m_pChatInput; }
- CHudChatFilterPanel *GetChatFilterPanel( void );
-
- virtual int GetFilterFlags( void ) { return m_iFilterFlags; }
- void SetFilterFlag( int iFilter );
-
- //-----------------------------------------------------------------------------
- virtual Color GetDefaultTextColor( void );
- virtual Color GetTextColorForClient( TextColor colorNum, int clientIndex );
- virtual Color GetClientColor( int clientIndex );
-
- virtual int GetFilterForString( const char *pString );
-
- virtual const char *GetDisplayedSubtitlePlayerName( int clientIndex );
-
- bool IsVoiceSubtitle( void ) { return m_bEnteringVoice; }
- void SetVoiceSubtitleState( bool bState ) { m_bEnteringVoice = bState; }
- int GetMessageMode( void ) { return m_nMessageMode; }
-
- void SetCustomColor( Color colNew ) { m_ColorCustom = colNew; }
- void SetCustomColor( const char *pszColorName );
-
-protected:
- CBaseHudChatLine *FindUnusedChatLine( void );
-
- CBaseHudChatInputLine *m_pChatInput;
- CBaseHudChatLine *m_ChatLine;
- int m_iFontHeight;
-
- CHudChatHistory *m_pChatHistory;
-
- CHudChatFilterButton *m_pFiltersButton;
- CHudChatFilterPanel *m_pFilterPanel;
-
- Color m_ColorCustom;
-
-private:
- void Clear( void );
-
- int ComputeBreakChar( int width, const char *text, int textlen );
-
- int m_nMessageMode;
-
- int m_nVisibleHeight;
-
- vgui::HFont m_hChatFont;
-
- int m_iFilterFlags;
- bool m_bEnteringVoice;
-
-};
-
-class CBaseHudChatEntry : public vgui::TextEntry
-{
- typedef vgui::TextEntry BaseClass;
-public:
- CBaseHudChatEntry( vgui::Panel *parent, char const *panelName, vgui::Panel *pChat )
- : BaseClass( parent, panelName )
- {
- SetCatchEnterKey( true );
- SetAllowNonAsciiCharacters( true );
- SetDrawLanguageIDAtLeft( true );
- m_pHudChat = pChat;
- }
-
- virtual void ApplySchemeSettings( vgui::IScheme *pScheme )
- {
- BaseClass::ApplySchemeSettings(pScheme);
-
- SetPaintBorderEnabled( false );
- }
-
- virtual void OnKeyCodeTyped(vgui::KeyCode code)
- {
- if ( code == KEY_ENTER || code == KEY_PAD_ENTER || code == KEY_ESCAPE )
- {
- if ( code != KEY_ESCAPE )
- {
- if ( m_pHudChat )
- {
- PostMessage( m_pHudChat, new KeyValues("ChatEntrySend") );
- }
- }
-
- // End message mode.
- if ( m_pHudChat )
- {
- PostMessage( m_pHudChat, new KeyValues("ChatEntryStopMessageMode") );
- }
- }
- else if ( code == KEY_TAB )
- {
- // Ignore tab, otherwise vgui will screw up the focus.
- return;
- }
- else
- {
- BaseClass::OnKeyCodeTyped( code );
- }
- }
-
-private:
- vgui::Panel *m_pHudChat;
-};
-
-//-----------------------------------------------------------------------------
-// Purpose: The prompt and text entry area for chat messages
-//-----------------------------------------------------------------------------
-class CBaseHudChatInputLine : public vgui::Panel
-{
- typedef vgui::Panel BaseClass;
-
-public:
- CBaseHudChatInputLine( vgui::Panel *parent, char const *panelName );
-
- void SetPrompt( const wchar_t *prompt );
- void ClearEntry( void );
- void SetEntry( const wchar_t *entry );
- void GetMessageText( OUT_Z_BYTECAP(buffersizebytes) wchar_t *buffer, int buffersizebytes );
-
- virtual void PerformLayout();
- virtual void ApplySchemeSettings(vgui::IScheme *pScheme);
-
- vgui::Panel *GetInputPanel( void );
- virtual vgui::VPANEL GetCurrentKeyFocus() { return m_pInput->GetVPanel(); }
-
- virtual void Paint()
- {
- BaseClass::Paint();
- }
-
- vgui::Label *GetPrompt( void ) { return m_pPrompt; }
-
-protected:
- vgui::Label *m_pPrompt;
- CBaseHudChatEntry *m_pInput;
-};
-
-
-class CHudChatFilterPanel : public vgui::EditablePanel
-{
- DECLARE_CLASS_SIMPLE( CHudChatFilterPanel, vgui::EditablePanel );
-
-public:
-
- CHudChatFilterPanel( vgui::Panel *pParent, const char *pName );
-
- virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
- MESSAGE_FUNC_PTR( OnFilterButtonChecked, "CheckButtonChecked", panel );
-
- CBaseHudChat *GetChatParent( void ) { return dynamic_cast < CBaseHudChat * > ( GetParent() ); }
-
- virtual void SetVisible(bool state);
-
-private:
-
-};
-
-#endif // HUD_BASECHAT_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef HUD_BASECHAT_H +#define HUD_BASECHAT_H +#ifdef _WIN32 +#pragma once +#endif + +#include "hudelement.h" +#include <vgui_controls/Panel.h> +#include "vgui_basepanel.h" +#include "vgui_controls/Frame.h" +#include <vgui_controls/TextEntry.h> +#include <vgui_controls/RichText.h> +#include <vgui_controls/Button.h> +#include <vgui_controls/CheckButton.h> + +class CBaseHudChatInputLine; +class CBaseHudChatEntry; +class CHudChatFilterPanel; + +namespace vgui +{ + class IScheme; +}; + +#define CHATLINE_NUM_FLASHES 8.0f +#define CHATLINE_FLASH_TIME 5.0f +#define CHATLINE_FADE_TIME 1.0f + +#define CHAT_HISTORY_FADE_TIME 0.25f +#define CHAT_HISTORY_IDLE_TIME 15.0f +#define CHAT_HISTORY_IDLE_FADE_TIME 2.5f +#define CHAT_HISTORY_ALPHA 127 + +extern Color g_ColorBlue; +extern Color g_ColorRed; +extern Color g_ColorGreen; +extern Color g_ColorDarkGreen; +extern Color g_ColorYellow; +extern Color g_ColorGrey; + +extern ConVar cl_showtextmsg; + +enum ChatFilters +{ + CHAT_FILTER_NONE = 0, + CHAT_FILTER_JOINLEAVE = 0x000001, + CHAT_FILTER_NAMECHANGE = 0x000002, + CHAT_FILTER_PUBLICCHAT = 0x000004, + CHAT_FILTER_SERVERMSG = 0x000008, + CHAT_FILTER_TEAMCHANGE = 0x000010, + //============================================================================= + // HPE_BEGIN: + // [tj]Added a filter for achievement announce + //============================================================================= + + CHAT_FILTER_ACHIEVEMENT = 0x000020, + + //============================================================================= + // HPE_END + //============================================================================= +}; + + +//----------------------------------------------------------------------------- +enum TextColor +{ + COLOR_NORMAL = 1, + COLOR_USEOLDCOLORS = 2, + COLOR_PLAYERNAME = 3, + COLOR_LOCATION = 4, + COLOR_ACHIEVEMENT = 5, + COLOR_CUSTOM = 6, // Will use the most recently SetCustomColor() + COLOR_HEXCODE = 7, // Reads the color from the next six characters + COLOR_HEXCODE_ALPHA = 8,// Reads the color and alpha from the next eight characters + COLOR_MAX +}; + +//-------------------------------------------------------------------------------------------------------------- +struct TextRange +{ + TextRange() { preserveAlpha = false; } + int start; + int end; + Color color; + bool preserveAlpha; +}; + +void StripEndNewlineFromString( char *str ); +void StripEndNewlineFromString( wchar_t *str ); + +char* ConvertCRtoNL( char *str ); +wchar_t* ConvertCRtoNL( wchar_t *str ); +wchar_t* ReadLocalizedString( bf_read &msg, OUT_Z_BYTECAP(outSizeInBytes) wchar_t *pOut, int outSizeInBytes, bool bStripNewline, OUT_Z_CAP(originalSize) char *originalString = NULL, int originalSize = 0 ); +wchar_t* ReadChatTextString( bf_read &msg, OUT_Z_BYTECAP(outSizeInBytes) wchar_t *pOut, int outSizeInBytes ); +char* RemoveColorMarkup( char *str ); + +//-------------------------------------------------------------------------------------------------------- +/** + * Simple utility function to allocate memory and duplicate a wide string + */ +inline wchar_t *CloneWString( const wchar_t *str ) +{ + const int nLen = V_wcslen(str)+1; + wchar_t *cloneStr = new wchar_t [ nLen ]; + const int nSize = nLen * sizeof( wchar_t ); + V_wcsncpy( cloneStr, str, nSize ); + return cloneStr; +} + +//----------------------------------------------------------------------------- +// Purpose: An output/display line of the chat interface +//----------------------------------------------------------------------------- +class CBaseHudChatLine : public vgui::RichText +{ + typedef vgui::RichText BaseClass; + +public: + CBaseHudChatLine( vgui::Panel *parent, const char *panelName ); + ~CBaseHudChatLine(); + + void SetExpireTime( void ); + + bool IsReadyToExpire( void ); + + void Expire( void ); + + float GetStartTime( void ); + + int GetCount( void ); + + virtual void ApplySchemeSettings(vgui::IScheme *pScheme); + + vgui::HFont GetFont() { return m_hFont; } + + Color GetTextColor( void ) { return m_clrText; } + void SetNameLength( int iLength ) { m_iNameLength = iLength; } + void SetNameColor( Color cColor ){ m_clrNameColor = cColor; } + + virtual void PerformFadeout( void ); + virtual void InsertAndColorizeText( wchar_t *buf, int clientIndex ); + virtual void Colorize( int alpha = 255 ); ///< Re-inserts the text in the appropriate colors at the given alpha + + + void SetNameStart( int iStart ) { m_iNameStart = iStart; } + +protected: + int m_iNameLength; + vgui::HFont m_hFont; + + Color m_clrText; + Color m_clrNameColor; + + float m_flExpireTime; + + CUtlVector< TextRange > m_textRanges; + wchar_t *m_text; + + int m_iNameStart; + +private: + float m_flStartTime; + int m_nCount; + + vgui::HFont m_hFontMarlett; + + +private: + CBaseHudChatLine( const CBaseHudChatLine & ); // not defined, not accessible +}; + + +class CHudChatHistory : public vgui::RichText +{ + DECLARE_CLASS_SIMPLE( CHudChatHistory, vgui::RichText ); +public: + + CHudChatHistory( vgui::Panel *pParent, const char *panelName ); + + virtual void ApplySchemeSettings(vgui::IScheme *pScheme); +}; + +class CHudChatFilterButton : public vgui::Button +{ + DECLARE_CLASS_SIMPLE( CHudChatFilterButton, vgui::Button ); + +public: + + CHudChatFilterButton( vgui::Panel *pParent, const char *pName, const char *pText ); + + virtual void DoClick( void ); +}; + +class CHudChatFilterCheckButton : public vgui::CheckButton +{ + DECLARE_CLASS_SIMPLE( CHudChatFilterCheckButton, vgui::CheckButton ); + +public: + + CHudChatFilterCheckButton( vgui::Panel *pParent, const char *pName, const char *pText, int iFlag ); + + int GetFilterFlag( void ) { return m_iFlag; } + +private: + + int m_iFlag; +}; + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CBaseHudChat : public CHudElement, public vgui::EditablePanel +{ + DECLARE_CLASS_SIMPLE( CBaseHudChat, vgui::EditablePanel ); +public: + DECLARE_MULTIPLY_INHERITED(); + + enum + { + CHAT_INTERFACE_LINES = 6, + MAX_CHARS_PER_LINE = 128 + }; + + CBaseHudChat( const char *pElementName ); + + virtual void CreateChatInputLine( void ); + virtual void CreateChatLines( void ); + + virtual void Init( void ); + + void LevelInit( const char *newmap ); + void LevelShutdown( void ); + + void MsgFunc_TextMsg(const char *pszName, int iSize, void *pbuf); + + virtual void Printf( int iFilter, PRINTF_FORMAT_STRING const char *fmt, ... ); + virtual void ChatPrintf( int iPlayerIndex, int iFilter, PRINTF_FORMAT_STRING const char *fmt, ... ); + + virtual void StartMessageMode( int iMessageModeType ); + virtual void StopMessageMode( void ); + void Send( void ); + + MESSAGE_FUNC( OnChatEntrySend, "ChatEntrySend" ); + MESSAGE_FUNC( OnChatEntryStopMessageMode, "ChatEntryStopMessageMode" ); + + virtual void ApplySchemeSettings(vgui::IScheme *pScheme); + virtual void Paint( void ); + virtual void OnTick( void ); + virtual void Reset(); +#ifdef _XBOX + virtual bool ShouldDraw(); +#endif + vgui::Panel *GetInputPanel( void ); + + static int m_nLineCounter; + + virtual int GetChatInputOffset( void ); + + // IGameEventListener interface: + virtual void FireGameEvent( IGameEvent *event); + + CHudChatHistory *GetChatHistory(); + + void FadeChatHistory(); + float m_flHistoryFadeTime; + float m_flHistoryIdleTime; + + virtual void MsgFunc_SayText( bf_read &msg ); + virtual void MsgFunc_SayText2( bf_read &msg ); + virtual void MsgFunc_TextMsg( bf_read &msg ); + virtual void MsgFunc_VoiceSubtitle( bf_read &msg ); + + + CBaseHudChatInputLine *GetChatInput( void ) { return m_pChatInput; } + CHudChatFilterPanel *GetChatFilterPanel( void ); + + virtual int GetFilterFlags( void ) { return m_iFilterFlags; } + void SetFilterFlag( int iFilter ); + + //----------------------------------------------------------------------------- + virtual Color GetDefaultTextColor( void ); + virtual Color GetTextColorForClient( TextColor colorNum, int clientIndex ); + virtual Color GetClientColor( int clientIndex ); + + virtual int GetFilterForString( const char *pString ); + + virtual const char *GetDisplayedSubtitlePlayerName( int clientIndex ); + + bool IsVoiceSubtitle( void ) { return m_bEnteringVoice; } + void SetVoiceSubtitleState( bool bState ) { m_bEnteringVoice = bState; } + int GetMessageMode( void ) { return m_nMessageMode; } + + void SetCustomColor( Color colNew ) { m_ColorCustom = colNew; } + void SetCustomColor( const char *pszColorName ); + +protected: + CBaseHudChatLine *FindUnusedChatLine( void ); + + CBaseHudChatInputLine *m_pChatInput; + CBaseHudChatLine *m_ChatLine; + int m_iFontHeight; + + CHudChatHistory *m_pChatHistory; + + CHudChatFilterButton *m_pFiltersButton; + CHudChatFilterPanel *m_pFilterPanel; + + Color m_ColorCustom; + +private: + void Clear( void ); + + int ComputeBreakChar( int width, const char *text, int textlen ); + + int m_nMessageMode; + + int m_nVisibleHeight; + + vgui::HFont m_hChatFont; + + int m_iFilterFlags; + bool m_bEnteringVoice; + +}; + +class CBaseHudChatEntry : public vgui::TextEntry +{ + typedef vgui::TextEntry BaseClass; +public: + CBaseHudChatEntry( vgui::Panel *parent, char const *panelName, vgui::Panel *pChat ) + : BaseClass( parent, panelName ) + { + SetCatchEnterKey( true ); + SetAllowNonAsciiCharacters( true ); + SetDrawLanguageIDAtLeft( true ); + m_pHudChat = pChat; + } + + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) + { + BaseClass::ApplySchemeSettings(pScheme); + + SetPaintBorderEnabled( false ); + } + + virtual void OnKeyCodeTyped(vgui::KeyCode code) + { + if ( code == KEY_ENTER || code == KEY_PAD_ENTER || code == KEY_ESCAPE ) + { + if ( code != KEY_ESCAPE ) + { + if ( m_pHudChat ) + { + PostMessage( m_pHudChat, new KeyValues("ChatEntrySend") ); + } + } + + // End message mode. + if ( m_pHudChat ) + { + PostMessage( m_pHudChat, new KeyValues("ChatEntryStopMessageMode") ); + } + } + else if ( code == KEY_TAB ) + { + // Ignore tab, otherwise vgui will screw up the focus. + return; + } + else + { + BaseClass::OnKeyCodeTyped( code ); + } + } + +private: + vgui::Panel *m_pHudChat; +}; + +//----------------------------------------------------------------------------- +// Purpose: The prompt and text entry area for chat messages +//----------------------------------------------------------------------------- +class CBaseHudChatInputLine : public vgui::Panel +{ + typedef vgui::Panel BaseClass; + +public: + CBaseHudChatInputLine( vgui::Panel *parent, char const *panelName ); + + void SetPrompt( const wchar_t *prompt ); + void ClearEntry( void ); + void SetEntry( const wchar_t *entry ); + void GetMessageText( OUT_Z_BYTECAP(buffersizebytes) wchar_t *buffer, int buffersizebytes ); + + virtual void PerformLayout(); + virtual void ApplySchemeSettings(vgui::IScheme *pScheme); + + vgui::Panel *GetInputPanel( void ); + virtual vgui::VPANEL GetCurrentKeyFocus() { return m_pInput->GetVPanel(); } + + virtual void Paint() + { + BaseClass::Paint(); + } + + vgui::Label *GetPrompt( void ) { return m_pPrompt; } + +protected: + vgui::Label *m_pPrompt; + CBaseHudChatEntry *m_pInput; +}; + + +class CHudChatFilterPanel : public vgui::EditablePanel +{ + DECLARE_CLASS_SIMPLE( CHudChatFilterPanel, vgui::EditablePanel ); + +public: + + CHudChatFilterPanel( vgui::Panel *pParent, const char *pName ); + + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); + MESSAGE_FUNC_PTR( OnFilterButtonChecked, "CheckButtonChecked", panel ); + + CBaseHudChat *GetChatParent( void ) { return dynamic_cast < CBaseHudChat * > ( GetParent() ); } + + virtual void SetVisible(bool state); + +private: + +}; + +#endif // HUD_BASECHAT_H |