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);
        }
Ejemplo n.º 2
0
    //更新全部队伍信息
    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();
                }
            }
        }
    }