//======== (C) Copyright 2002 Charles G. Cleveland All rights reserved. ========= // // The copyright to the contents herein is the property of Charles G. Cleveland. // The contents may be used and/or copied only with the written permission of // Charles G. Cleveland, or in accordance with the terms and conditions stipulated in // the agreement/contract under which the contents have been supplied. // // Purpose: // // $Workfile: AvHVoiceHelper.cpp $ // $Date: 2002/11/15 23:32:34 $ // //------------------------------------------------------------------------------- // $Log: AvHVoiceHelper.cpp,v $ // Revision 1.9 2002/11/15 23:32:34 Flayra // - Voice changes to make tourny mode and observation smoother // // Revision 1.8 2002/09/09 20:09:49 Flayra // - Tried to fix bug where players can sometimes hear players on the opposite team after they die // - Removed old NSTR preprocessor directives // // Revision 1.7 2002/07/24 18:55:53 Flayra // - Linux case sensitivity stuff // // Revision 1.6 2002/07/10 14:46:09 Flayra // - Removed unnecessary code, hopefully fixing bug #274 // // Revision 1.5 2002/05/23 02:32:57 Flayra // - Post-crash checkin. Restored @Backup from around 4/16. Contains changes for last four weeks of development. // //=============================================================================== #include "AvHVoiceHelper.h" #include "AvHGamerules.h" #include "pm_shared/pm_shared.h" AvHVoiceHelper gVoiceHelper; bool AvHVoiceHelper::CanPlayerHearPlayer(CBasePlayer *pListener, CBasePlayer *pTalker) { AvHPlayer* theListener = dynamic_cast(pListener); ASSERT(theListener); AvHPlayer* theTalker = dynamic_cast(pTalker); ASSERT(theTalker); // Don't allow talking during countdown, to allow players to record demos, and for dramatic effect // if(GetGameRules()->GetCountdownStarted() && !GetGameRules()->GetGameStarted()) // { // return false; // } // If commander is talking and has crouch key held, only selected players can hear him if(theTalker->GetIsInTopDownMode()) { if(theTalker->GetTeam() == theListener->GetTeam()) { bool theCrouchKeyHeld = (theTalker->pev->button & IN_DUCK); if(theCrouchKeyHeld) { if(theTalker->GetIsSelected(theListener->entindex())) { return true; } else { return false; } } } } // Players on a team can only hear other players on their team if((theListener->GetTeam() == theTalker->GetTeam()) && (theListener->GetTeam() != TEAM_IND)) { return true; } // Players in the ready room can only hear other players in the ready room if((theListener->GetPlayMode() == PLAYMODE_READYROOM) && (theTalker->GetPlayMode() == PLAYMODE_READYROOM)) { return true; } // Spectators can always hear other spectators if(theListener->GetPlayMode() == PLAYMODE_OBSERVER) { if(theTalker->GetPlayMode() == PLAYMODE_OBSERVER) { return true; } // If spectator is spectating first-person in casual mode, he can hear other members of this team if((theListener->pev->iuser1 == OBS_IN_EYE) && !GetGameRules()->GetIsTournamentMode()) { if(theListener->GetTeam(true) == theTalker->GetTeam()) { return true; } } } return false; }