//------------------------------------------------------------------------ IMPLEMENT_RMI(CGameRules, ClSetTeam) { if (!params.entityId) // ignore these for now return true; int oldTeam = GetTeam(params.entityId); if (oldTeam==params.teamId) return true; TEntityTeamIdMap::iterator it=m_entityteams.find(params.entityId); if (it!=m_entityteams.end()) m_entityteams.erase(it); IActor *pActor=m_pActorSystem->GetActor(params.entityId); bool isplayer=pActor!=0; if (isplayer && oldTeam) { TPlayerTeamIdMap::iterator pit=m_playerteams.find(oldTeam); assert(pit!=m_playerteams.end()); stl::find_and_erase(pit->second, params.entityId); } if (params.teamId) { m_entityteams.insert(TEntityTeamIdMap::value_type(params.entityId, params.teamId)); if (isplayer) { TPlayerTeamIdMap::iterator pit=m_playerteams.find(params.teamId); assert(pit!=m_playerteams.end()); pit->second.push_back(params.entityId); } } if(IActor *pClient = g_pGame->GetIGameFramework()->GetClientActor()) { if(GetTeam(pClient->GetEntityId()) == params.teamId) { if(params.entityId == pClient->GetGameObject()->GetWorldQuery()->GetLookAtEntityId()) { if(g_pGame->GetHUD()) { g_pGame->GetHUD()->GetCrosshair()->SetUsability(0); } } } } if(isplayer) { ReconfigureVoiceGroups(params.entityId,oldTeam,params.teamId); if (pActor->IsClient()) m_pRadio->SetTeam(GetTeamName(params.teamId)); } ScriptHandle handle(params.entityId); CallScript(m_clientStateScript, "OnSetTeam", handle, params.teamId); return true; }
//------------------------------------------------------------------------ IMPLEMENT_RMI(CGameRules, ClSetTeam) { if (!params.entityId) // ignore these for now { return true; } int oldTeam = GetTeam(params.entityId); if (oldTeam == params.teamId) { return true; } TEntityTeamIdMap::iterator it = m_entityteams.find(params.entityId); if (it != m_entityteams.end()) { m_entityteams.erase(it); } IActor *pActor = m_pActorSystem->GetActor(params.entityId); bool isplayer = pActor != 0; if (isplayer && oldTeam) { TPlayerTeamIdMap::iterator pit = m_playerteams.find(oldTeam); assert(pit != m_playerteams.end()); stl::find_and_erase(pit->second, params.entityId); } if (params.teamId) { m_entityteams.insert(TEntityTeamIdMap::value_type(params.entityId, params.teamId)); if (isplayer) { TPlayerTeamIdMap::iterator pit = m_playerteams.find(params.teamId); assert(pit != m_playerteams.end()); pit->second.push_back(params.entityId); } } if(isplayer) { ReconfigureVoiceGroups(params.entityId, oldTeam, params.teamId); } ScriptHandle handle(params.entityId); CallScript(m_clientStateScript, "OnSetTeam", handle, params.teamId); return true; }
//------------------------------------------------------------------------ IMPLEMENT_RMI(CGameRules, ClSetTeam) { if (!params.entityId) // ignore these for now return true; int oldTeam = GetTeam(params.entityId); if (oldTeam==params.teamId) return true; TEntityTeamIdMap::iterator it=m_entityteams.find(params.entityId); if (it!=m_entityteams.end()) m_entityteams.erase(it); IActor *pActor=m_pActorSystem->GetActor(params.entityId); bool isplayer=pActor!=0; if (isplayer && oldTeam) { TPlayerTeamIdMap::iterator pit=m_playerteams.find(oldTeam); assert(pit!=m_playerteams.end()); stl::find_and_erase(pit->second, params.entityId); } if (params.teamId) { m_entityteams.insert(TEntityTeamIdMap::value_type(params.entityId, params.teamId)); if (isplayer) { TPlayerTeamIdMap::iterator pit=m_playerteams.find(params.teamId); assert(pit!=m_playerteams.end()); pit->second.push_back(params.entityId); } } if(isplayer) { ReconfigureVoiceGroups(params.entityId,oldTeam,params.teamId); if (pActor->IsClient()) m_pRadio->SetTeam(GetTeamName(params.teamId)); } m_pScript->CallMethod( "OnSetTeam", params.entityId, params.teamId); return true; }