diff options
Diffstat (limited to 'game/server/tf2/team_messages.cpp')
| -rw-r--r-- | game/server/tf2/team_messages.cpp | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/game/server/tf2/team_messages.cpp b/game/server/tf2/team_messages.cpp new file mode 100644 index 0000000..e41a028 --- /dev/null +++ b/game/server/tf2/team_messages.cpp @@ -0,0 +1,110 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// +#include "cbase.h" +#include "player.h" +#include "tf_team.h" +#include "team_messages.h" +#include "engine/IEngineSound.h" + +//----------------------------------------------------------------------------- +// Purpose: Create the right class of message based upon the type +//----------------------------------------------------------------------------- +CTeamMessage *CTeamMessage::Create( CTFTeam *pTeam, int iMessageID, CBaseEntity *pEntity ) +{ + CTeamMessage *pMessage = NULL; + + // Create the right type + switch ( iMessageID ) + { + // Sound orders + case TEAMMSG_REINFORCEMENTS_ARRIVED: + pMessage = new CTeamMessage_Sound( pTeam, iMessageID, pEntity, 5.0 ); + ((CTeamMessage_Sound*)pMessage)->SetSound( "TeamMessage.Reinforcements" ); + break; + case TEAMMSG_CARRIER_UNDER_ATTACK: + pMessage = new CTeamMessage_Sound( pTeam, iMessageID, pEntity, 10.0 ); + ((CTeamMessage_Sound*)pMessage)->SetSound( "TeamMessage.CarrierAttacked" ); + break; + case TEAMMSG_CARRIER_DESTROYED: + pMessage = new CTeamMessage_Sound( pTeam, iMessageID, pEntity, 10.0 ); + ((CTeamMessage_Sound*)pMessage)->SetSound( "TeamMessage.CarrierDestroyed" ); + break; + case TEAMMSG_HARVESTER_UNDER_ATTACK: + pMessage = new CTeamMessage_Sound( pTeam, iMessageID, pEntity, 10.0 ); + ((CTeamMessage_Sound*)pMessage)->SetSound( "TeamMessage.HarvesterAttacked" ); + break; + case TEAMMSG_HARVESTER_DESTROYED: + pMessage = new CTeamMessage_Sound( pTeam, iMessageID, pEntity, 10.0 ); + ((CTeamMessage_Sound*)pMessage)->SetSound( "TeamMessage.HarvesterDestroyed" ); + break; + case TEAMMSG_NEW_TECH_LEVEL_OPEN: + pMessage = new CTeamMessage_Sound( pTeam, iMessageID, pEntity, 10.0 ); + ((CTeamMessage_Sound*)pMessage)->SetSound( "TeamMessage.NewTechLevel" ); + break; + case TEAMMSG_RESOURCE_ZONE_EMPTIED: + pMessage = new CTeamMessage_Sound( pTeam, iMessageID, pEntity, 10.0 ); + ((CTeamMessage_Sound*)pMessage)->SetSound( "TeamMessage.ResourceZoneEmpty" ); + break; + case TEAMMSG_CUSTOM_SOUND: + pMessage = new CTeamMessage_Sound( pTeam, iMessageID, pEntity, 10.0 ); + break; + + default: + break; + }; + + return pMessage; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +CTeamMessage::CTeamMessage( CTFTeam *pTeam, int iMessageID, CBaseEntity *pEntity, float flTTL ) +{ + m_pTeam = pTeam; + m_iMessageID = iMessageID; + m_hEntity = pEntity; + m_flTTL = gpGlobals->curtime + flTTL; +} + + +//=============================================================================================================== +// TEAM MESSAGE SOUND +//=============================================================================================================== +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +CTeamMessage_Sound::CTeamMessage_Sound( CTFTeam *pTeam, int iMessageID, CBaseEntity *pEntity, float flTTL ) : + CTeamMessage( pTeam, iMessageID, pEntity, flTTL ) +{ +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CTeamMessage_Sound::SetSound( char *sSound ) +{ + CBaseEntity::PrecacheScriptSound( sSound ); + m_SoundName = sSound; +} + +//----------------------------------------------------------------------------- +// Purpose: Called when the team manager wants me to fire myself +//----------------------------------------------------------------------------- +void CTeamMessage_Sound::FireMessage( void ) +{ + Assert( m_SoundName.String() ); + + // Play my sound to all the team's members + for ( int i = 0; i < m_pTeam->GetNumPlayers(); i++ ) + { + CBasePlayer *pPlayer = m_pTeam->GetPlayer(i); + + CSingleUserRecipientFilter filter( pPlayer ); + CBaseEntity::EmitSound( filter, pPlayer->entindex(), m_SoundName.String() ); + } +}
\ No newline at end of file |