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 /mp/src/game/shared/voice_status.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 'mp/src/game/shared/voice_status.h')
| -rw-r--r-- | mp/src/game/shared/voice_status.h | 394 |
1 files changed, 197 insertions, 197 deletions
diff --git a/mp/src/game/shared/voice_status.h b/mp/src/game/shared/voice_status.h index 0e659c33..f9bc4268 100644 --- a/mp/src/game/shared/voice_status.h +++ b/mp/src/game/shared/voice_status.h @@ -1,197 +1,197 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//=============================================================================//
-
-#ifndef VOICE_STATUS_H
-#define VOICE_STATUS_H
-#pragma once
-
-
-#include <vgui_controls/Label.h>
-//#include "vgui_bitmap.h"
-#include <vgui_controls/Button.h>
-#include <vgui_controls/Image.h>
-#include "voice_common.h"
-#include "voice_banmgr.h"
-#include "hudelement.h"
-
-#ifdef VOICE_VOX_ENABLE
-extern ConVar voice_vox;
-#endif // VOICE_VOX_ENABLE
-
-class CVoiceStatus;
-class IMaterial;
-class BitmapImage;
-
-// Voice Panel
-class CVoicePanel : public vgui::Panel
-{
-public:
- CVoicePanel( );
- ~CVoicePanel();
-
- virtual void Paint( void );
- virtual void setImage( BitmapImage *pImage );
-
-private:
- BitmapImage *m_pImage;
-};
-
-class CVoiceLabel
-{
-public:
- vgui::Label *m_pLabel;
- vgui::Label *m_pBackground;
- CVoicePanel *m_pIcon; // Voice icon next to player name.
- int m_clientindex; // Client index of the speaker. -1 if this label isn't being used.
-};
-
-// This is provided by each mod to access data that may not be the same across mods.
-abstract_class IVoiceStatusHelper
-{
-public:
- virtual ~IVoiceStatusHelper() {}
-
- // Get RGB color for voice status text about this player.
- virtual void GetPlayerTextColor(int entindex, int color[3]) = 0;
-
- // Force it to update the cursor state.
- virtual void UpdateCursorState() = 0;
-
- // Return true if the voice manager is allowed to show speaker labels
- // (mods usually return false when the scoreboard is up).
- virtual bool CanShowSpeakerLabels() = 0;
-};
-
-class CVoiceStatus /*: public vgui::CDefaultInputSignal*/
-{
-public:
- CVoiceStatus();
- virtual ~CVoiceStatus();
-
-// CHudBase overrides.
-public:
-
- // Initialize the cl_dll's voice manager.
- virtual int Init(
- IVoiceStatusHelper *m_pHelper,
- vgui::VPANEL pParentPanel);
-
- // ackPosition is the bottom position of where CVoiceStatus will draw the voice acknowledgement labels.
- virtual void VidInit();
-
-public:
-
- // Call from HUD_Frame each frame.
- void Frame(double frametime);
-
- // Called when a player starts or stops talking.
- // entindex is -1 to represent the local client talking (before the data comes back from the server).
- // When the server acknowledges that the local client is talking, then entindex will be gEngfuncs.GetLocalPlayer().
- // entindex is -2 to represent the local client's voice being acked by the server.
- void UpdateSpeakerStatus(int entindex, bool bTalking);
-
- // Call from the HUD_CreateEntities function so it can add sprites above player heads.
- void DrawHeadLabels();
- void SetHeadLabelOffset( float offset );
- float GetHeadLabelOffset( void ) const;
- void SetHeadLabelsDisabled( bool bDisabled ) { m_bHeadLabelsDisabled = bDisabled; }
-
- // Called when the server registers a change to who this client can hear.
- void HandleVoiceMaskMsg(bf_read &msg);
-
- // The server sends this message initially to tell the client to send their state.
- void HandleReqStateMsg(bf_read &msg);
-
-
-// Squelch mode functions.
-public:
-
- // When you enter squelch mode, pass in
- void StartSquelchMode();
- void StopSquelchMode();
- bool IsInSquelchMode();
-
- // returns true if the target client has been banned
- // playerIndex is of range 1..maxplayers
- bool IsPlayerBlocked(int iPlayerIndex);
-
- // returns false if the player can't hear the other client due to game rules (eg. the other team)
- bool IsPlayerAudible(int iPlayerIndex);
-
- // returns true if the player is currently speaking
- bool IsPlayerSpeaking(int iPlayerIndex);
-
- // returns true if the local player is attempting to speak
- bool IsLocalPlayerSpeaking( void );
-
- // blocks the target client from being heard
- void SetPlayerBlockedState(int iPlayerIndex, bool blocked);
-
- void SetHeadLabelMaterial( const char *pszMaterial );
-
- IMaterial *GetHeadLabelMaterial( void ) { return m_pHeadLabelMaterial; }
-
-private:
-
- void UpdateServerState(bool bForce);
-
- // Update the button artwork to reflect the client's current state.
- void UpdateBanButton(int iClient);
-
-
-private:
- float m_LastUpdateServerState; // Last time we called this function.
- int m_bServerModEnable; // What we've sent to the server about our "voice_modenable" cvar.
-
- vgui::VPANEL m_pParentPanel;
- CPlayerBitVec m_VoicePlayers; // Who is currently talking. Indexed by client index.
-
- // This is the gamerules-defined list of players that you can hear. It is based on what teams people are on
- // and is totally separate from the ban list. Indexed by client index.
- CPlayerBitVec m_AudiblePlayers;
-
- // Players who have spoken at least once in the game so far
- CPlayerBitVec m_VoiceEnabledPlayers;
-
- // This is who the server THINKS we have banned (it can become incorrect when a new player arrives on the server).
- // It is checked periodically, and the server is told to squelch or unsquelch the appropriate players.
- CPlayerBitVec m_ServerBannedPlayers;
-
- IVoiceStatusHelper *m_pHelper; // Each mod provides an implementation of this.
-
- // Squelch mode stuff.
- bool m_bInSquelchMode;
-
- bool m_bTalking; // Set to true when the client thinks it's talking.
- bool m_bServerAcked; // Set to true when the server knows the client is talking.
-
-public:
-
- CVoiceBanMgr m_BanMgr; // Tracks which users we have squelched and don't want to hear.
-
-private:
-
- IMaterial *m_pHeadLabelMaterial; // For labels above players' heads.
-
- bool m_bBanMgrInitialized;
-
- int m_nControlSize;
-
- bool m_bHeadLabelsDisabled;
-
-#ifdef VOICE_VOX_ENABLE
- CountdownTimer m_bAboveThresholdTimer;
-#endif // VOICE_VOX_ENABLE
-};
-
-
-// Get the (global) voice manager.
-CVoiceStatus* GetClientVoiceMgr();
-void ClientVoiceMgr_Init();
-void ClientVoiceMgr_Shutdown();
-
-#endif // VOICE_STATUS_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef VOICE_STATUS_H +#define VOICE_STATUS_H +#pragma once + + +#include <vgui_controls/Label.h> +//#include "vgui_bitmap.h" +#include <vgui_controls/Button.h> +#include <vgui_controls/Image.h> +#include "voice_common.h" +#include "voice_banmgr.h" +#include "hudelement.h" + +#ifdef VOICE_VOX_ENABLE +extern ConVar voice_vox; +#endif // VOICE_VOX_ENABLE + +class CVoiceStatus; +class IMaterial; +class BitmapImage; + +// Voice Panel +class CVoicePanel : public vgui::Panel +{ +public: + CVoicePanel( ); + ~CVoicePanel(); + + virtual void Paint( void ); + virtual void setImage( BitmapImage *pImage ); + +private: + BitmapImage *m_pImage; +}; + +class CVoiceLabel +{ +public: + vgui::Label *m_pLabel; + vgui::Label *m_pBackground; + CVoicePanel *m_pIcon; // Voice icon next to player name. + int m_clientindex; // Client index of the speaker. -1 if this label isn't being used. +}; + +// This is provided by each mod to access data that may not be the same across mods. +abstract_class IVoiceStatusHelper +{ +public: + virtual ~IVoiceStatusHelper() {} + + // Get RGB color for voice status text about this player. + virtual void GetPlayerTextColor(int entindex, int color[3]) = 0; + + // Force it to update the cursor state. + virtual void UpdateCursorState() = 0; + + // Return true if the voice manager is allowed to show speaker labels + // (mods usually return false when the scoreboard is up). + virtual bool CanShowSpeakerLabels() = 0; +}; + +class CVoiceStatus /*: public vgui::CDefaultInputSignal*/ +{ +public: + CVoiceStatus(); + virtual ~CVoiceStatus(); + +// CHudBase overrides. +public: + + // Initialize the cl_dll's voice manager. + virtual int Init( + IVoiceStatusHelper *m_pHelper, + vgui::VPANEL pParentPanel); + + // ackPosition is the bottom position of where CVoiceStatus will draw the voice acknowledgement labels. + virtual void VidInit(); + +public: + + // Call from HUD_Frame each frame. + void Frame(double frametime); + + // Called when a player starts or stops talking. + // entindex is -1 to represent the local client talking (before the data comes back from the server). + // When the server acknowledges that the local client is talking, then entindex will be gEngfuncs.GetLocalPlayer(). + // entindex is -2 to represent the local client's voice being acked by the server. + void UpdateSpeakerStatus(int entindex, bool bTalking); + + // Call from the HUD_CreateEntities function so it can add sprites above player heads. + void DrawHeadLabels(); + void SetHeadLabelOffset( float offset ); + float GetHeadLabelOffset( void ) const; + void SetHeadLabelsDisabled( bool bDisabled ) { m_bHeadLabelsDisabled = bDisabled; } + + // Called when the server registers a change to who this client can hear. + void HandleVoiceMaskMsg(bf_read &msg); + + // The server sends this message initially to tell the client to send their state. + void HandleReqStateMsg(bf_read &msg); + + +// Squelch mode functions. +public: + + // When you enter squelch mode, pass in + void StartSquelchMode(); + void StopSquelchMode(); + bool IsInSquelchMode(); + + // returns true if the target client has been banned + // playerIndex is of range 1..maxplayers + bool IsPlayerBlocked(int iPlayerIndex); + + // returns false if the player can't hear the other client due to game rules (eg. the other team) + bool IsPlayerAudible(int iPlayerIndex); + + // returns true if the player is currently speaking + bool IsPlayerSpeaking(int iPlayerIndex); + + // returns true if the local player is attempting to speak + bool IsLocalPlayerSpeaking( void ); + + // blocks the target client from being heard + void SetPlayerBlockedState(int iPlayerIndex, bool blocked); + + void SetHeadLabelMaterial( const char *pszMaterial ); + + IMaterial *GetHeadLabelMaterial( void ) { return m_pHeadLabelMaterial; } + +private: + + void UpdateServerState(bool bForce); + + // Update the button artwork to reflect the client's current state. + void UpdateBanButton(int iClient); + + +private: + float m_LastUpdateServerState; // Last time we called this function. + int m_bServerModEnable; // What we've sent to the server about our "voice_modenable" cvar. + + vgui::VPANEL m_pParentPanel; + CPlayerBitVec m_VoicePlayers; // Who is currently talking. Indexed by client index. + + // This is the gamerules-defined list of players that you can hear. It is based on what teams people are on + // and is totally separate from the ban list. Indexed by client index. + CPlayerBitVec m_AudiblePlayers; + + // Players who have spoken at least once in the game so far + CPlayerBitVec m_VoiceEnabledPlayers; + + // This is who the server THINKS we have banned (it can become incorrect when a new player arrives on the server). + // It is checked periodically, and the server is told to squelch or unsquelch the appropriate players. + CPlayerBitVec m_ServerBannedPlayers; + + IVoiceStatusHelper *m_pHelper; // Each mod provides an implementation of this. + + // Squelch mode stuff. + bool m_bInSquelchMode; + + bool m_bTalking; // Set to true when the client thinks it's talking. + bool m_bServerAcked; // Set to true when the server knows the client is talking. + +public: + + CVoiceBanMgr m_BanMgr; // Tracks which users we have squelched and don't want to hear. + +private: + + IMaterial *m_pHeadLabelMaterial; // For labels above players' heads. + + bool m_bBanMgrInitialized; + + int m_nControlSize; + + bool m_bHeadLabelsDisabled; + +#ifdef VOICE_VOX_ENABLE + CountdownTimer m_bAboveThresholdTimer; +#endif // VOICE_VOX_ENABLE +}; + + +// Get the (global) voice manager. +CVoiceStatus* GetClientVoiceMgr(); +void ClientVoiceMgr_Init(); +void ClientVoiceMgr_Shutdown(); + +#endif // VOICE_STATUS_H |