aboutsummaryrefslogtreecommitdiff
path: root/sp/src/game/client/hud_basechat.h
diff options
context:
space:
mode:
authorJørgen P. Tjernø <[email protected]>2013-12-02 19:31:46 -0800
committerJørgen P. Tjernø <[email protected]>2013-12-02 19:46:31 -0800
commitf56bb35301836e56582a575a75864392a0177875 (patch)
treede61ddd39de3e7df52759711950b4c288592f0dc /sp/src/game/client/hud_basechat.h
parentMark some more files as text. (diff)
downloadsource-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.h878
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