summaryrefslogtreecommitdiff
path: root/game/shared/voice_gamemgr.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/voice_gamemgr.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/shared/voice_gamemgr.h')
-rw-r--r--game/shared/voice_gamemgr.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/game/shared/voice_gamemgr.h b/game/shared/voice_gamemgr.h
new file mode 100644
index 0000000..a572469
--- /dev/null
+++ b/game/shared/voice_gamemgr.h
@@ -0,0 +1,81 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef VOICE_GAMEMGR_H
+#define VOICE_GAMEMGR_H
+#pragma once
+
+
+#include "voice_common.h"
+
+
+class CGameRules;
+class CBasePlayer;
+
+abstract_class IVoiceGameMgrHelper
+{
+public:
+ virtual ~IVoiceGameMgrHelper() {}
+
+ // Called each frame to determine which players are allowed to hear each other. This overrides
+ // whatever squelch settings players have.
+ virtual bool CanPlayerHearPlayer(CBasePlayer *pListener, CBasePlayer *pTalker, bool &bProximity ) = 0;
+};
+
+
+// CVoiceGameMgr manages which clients can hear which other clients.
+class CVoiceGameMgr
+{
+public:
+ CVoiceGameMgr();
+ virtual ~CVoiceGameMgr();
+
+ bool Init(
+ IVoiceGameMgrHelper *m_pHelper,
+ int maxClients
+ );
+
+ void SetHelper(IVoiceGameMgrHelper *pHelper);
+
+ // Updates which players can hear which other players.
+ // If gameplay mode is DM, then only players within the PVS can hear each other.
+ // If gameplay mode is teamplay, then only players on the same team can hear each other.
+ // Player masks are always applied.
+ void Update(double frametime);
+
+ // Called when a new client connects (unsquelches its entity for everyone).
+ void ClientConnected(struct edict_t *pEdict);
+
+ // Called on ClientCommand. Checks for the squelch and unsquelch commands.
+ // Returns true if it handled the command.
+ bool ClientCommand(CBasePlayer *pPlayer, const CCommand &args );
+
+ bool CheckProximity( int iDistance );
+ void SetProximityDistance( int iDistance );
+
+ bool IsPlayerIgnoringPlayer( int iTalker, int iListener );
+
+private:
+
+ // Force it to update the client masks.
+ void UpdateMasks();
+
+
+private:
+ IVoiceGameMgrHelper *m_pHelper;
+ int m_nMaxPlayers;
+ double m_UpdateInterval; // How long since the last update.
+ int m_iProximityDistance;
+};
+
+
+// Use this to access CVoiceGameMgr.
+CVoiceGameMgr* GetVoiceGameMgr();
+
+
+
+#endif // VOICE_GAMEMGR_H