public uint Execute(PacketDistributed ipacket) { GC_TEAM_SYNC_TEAMINFO packet = (GC_TEAM_SYNC_TEAMINFO)ipacket; if (null == packet) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } //更新数据 GameManager.gameManager.PlayerDataPool.TeamInfo.UpdateTeamInfo(packet); //更新UI if (null != TeamList.Instance()) { TeamList.Instance().UpdateTeamMember(); } if (PlayerPreferenceData.LeftTabChoose == 1) { if (MissionDialogAndLeftTabsLogic.Instance() != null) { MissionDialogAndLeftTabsLogic.Instance().UpdateTeamInfo(); } } //更新队长头像 if (null != PlayerFrameLogic.Instance() && null != Singleton <ObjManager> .GetInstance().MainPlayer) { PlayerFrameLogic.Instance().SetTeamCaptain(Singleton <ObjManager> .GetInstance().MainPlayer.IsTeamLeader()); } //更新组队界面(如果未打开,则在UpdateTeamInfo中会不处理) if (null != GUIData.delTeamDataUpdate) { GUIData.delTeamDataUpdate(); } if (ChatInfoLogic.Instance() != null) { ChatInfoLogic.Instance().UpdateTeamChannel(); ChatInfoLogic.Instance().UpdateSpeakerList_Team(); } if (MissionDialogAndLeftTabsLogic.Instance() != null) { MissionDialogAndLeftTabsLogic.Instance().HandleSyncTeamInfo(); MissionDialogAndLeftTabsLogic.Instance().UpdateButtonTeamFollow(); } // 组队信息更改(新加入队伍 或者 离开队伍)重置下周围玩家的名字版 Dictionary <string, Obj> targets = Singleton <ObjManager> .GetInstance().ObjPools; foreach (Obj targetObj in targets.Values) { if (targetObj != null && targetObj.ObjType == GameDefine_Globe.OBJ_TYPE.OBJ_OTHER_PLAYER) { Obj_OtherPlayer _Player = targetObj as Obj_OtherPlayer; if (_Player) { _Player.SetNameBoardColor(); } } } return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); }
//更新全部队伍信息 public void UpdateTeamInfo(GC_TEAM_SYNC_TEAMINFO packet) { if (null == packet) { return; } bool bNeedUpdateNameBoardColor = false; //是否更新名字版颜色,加入队伍的时候调用 //如果收到最新的队伍信息,而玩家之前没有队伍的话,则进行提示“你进入了一个队伍,可获得更多收益” if (GlobeVar.INVALID_ID == m_nTeamID && GlobeVar.INVALID_ID != packet.TeamID) { if (null != Singleton <ObjManager> .GetInstance().MainPlayer) { Singleton <ObjManager> .GetInstance().MainPlayer.SendNoticMsg(false, "#{2229}"); } bNeedUpdateNameBoardColor = true; } CleanUp(); //更新数据 m_nTeamID = packet.TeamID; //如果队伍ID为-1,则说明解散队伍,清除信息即可 if (m_nTeamID == GlobeVar.INVALID_ID) { //退出组队跟随状态 if (null != Singleton <ObjManager> .GetInstance().MainPlayer) { Singleton <ObjManager> .GetInstance().MainPlayer.LeaveTeamFollow(); } return; } //由于是整组填充,所以用guid的数量作为整组数据的数量即可 for (int i = 0; i < packet.memberGuidList.Count; ++i) { if (i >= m_TeamMember.Length) { continue; } if (i < packet.memberGuidList.Count) { m_TeamMember[i].Guid = packet.memberGuidList[i]; } if (i < packet.memberNameList.Count) { m_TeamMember[i].MemberName = packet.memberNameList[i]; } if (i < packet.memberLevelList.Count) { m_TeamMember[i].Level = packet.memberLevelList[i]; } if (i < packet.memberProfList.Count) { m_TeamMember[i].Profession = packet.memberProfList[i]; } if (i < packet.memberHPList.Count) { m_TeamMember[i].HP = packet.memberHPList[i]; } if (i < packet.memberMaxHPList.Count) { m_TeamMember[i].MaxHP = packet.memberMaxHPList[i]; } if (i < packet.memberCombatList.Count) { m_TeamMember[i].CombatNum = packet.memberCombatList[i]; } if (i < packet.sceneclassList.Count) { m_TeamMember[i].SceneClassID = packet.sceneclassList[i]; } if (i < packet.sceneinstList.Count) { m_TeamMember[i].SceneInstID = packet.sceneinstList[i]; } if (i < packet.ModelVisualIdList.Count) { m_TeamMember[i].ModelVisualId = packet.ModelVisualIdList[i]; } if (i < packet.WeaponDataIdList.Count) { m_TeamMember[i].WeaponDataId = packet.WeaponDataIdList[i]; } if (i < packet.WeaponEffectGemList.Count) { m_TeamMember[i].WeaponEffectGem = packet.WeaponEffectGemList[i]; } if (i < packet.teamCJGTierList.Count) { m_TeamMember[i].TeamCJGTier = packet.teamCJGTierList[i]; } float fEnterPosX = 0; if (i < packet.posXList.Count) { fEnterPosX = ((float)packet.posXList[i]) / 100; } float fEnterPosZ = 0; if (i < packet.posZList.Count) { fEnterPosZ = ((float)packet.posZList[i]) / 100; } m_TeamMember[i].ScenePos = new UnityEngine.Vector3(fEnterPosX, 0, fEnterPosZ); //更新队长队员,索引为0即队长 if (i == 0) { m_TeamMember[i].TeamJob = 0; } else { m_TeamMember[i].TeamJob = 1; } //如果队员就在本场景内,则更新名字版信息 if (bNeedUpdateNameBoardColor && m_TeamMember[i].IsValid()) { Obj_OtherPlayer objTeam = Singleton <ObjManager> .GetInstance().FindOtherPlayerInScene(m_TeamMember[i].Guid); if (null != objTeam) { objTeam.SetNameBoardColor(); } } } }