Beispiel #1
0
 /// <summary>
 /// 是否显示归属
 /// </summary>
 /// <param name="uuid"></param>
 /// <returns></returns>
 public bool IsAffiliation(uint uuid, uint teamId)
 {
     foreach (var item in m_updateBossAffiItemArray)
     {
         UpdateBossAffiItem find_item = item.Value.Find((a) =>
         {
             return(a.m_player_id == uuid);
         });
         if (find_item != null && find_item.m_now_isAffi)
         {
             return(true);
         }
     }
     if (teamId > 0)
     {
         foreach (uint item in mBossAffiTeamIds.Values)
         {
             if (item == teamId)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Beispiel #2
0
            /// <summary>
            /// 是否显示归属
            /// </summary>
            /// <param name="actor"></param>
            /// <returns></returns>
            public bool IsAffiliation(Actor actor)
            {
                if (actor == null)
                {
                    return(false);
                }
                if (actor.IsPlayer() == false)
                {
                    return(false);
                }
                foreach (var item in m_updateBossAffiItemArray)
                {
                    UpdateBossAffiItem find_item = item.Value.Find((a) =>
                    {
                        return(a.m_player_id == actor.UID.obj_idx);
                    });
                    if (find_item != null && find_item.m_now_isAffi)
                    {
                        return(true);
                    }
                }

                return(false);
            }
Beispiel #3
0
            public virtual void HandleServerData(ushort protocol, byte[] data)
            {
                switch (protocol)
                {
                case NetMsg.MSG_SPAN_BOSS_INFO:
                {
                    var pack      = S2CPackBase.DeserializePack <S2CSpanBossInfo>(data);
                    var boss_list = pack.mon_boss;

                    UpdateInfo(boss_list);

                    ClientEventMgr.Instance.FireEvent(xc.EnumUtil.EnumToInt(xc.ClientEvent.CE_WORLD_BOSS_UPDATE_BOSS_INFO_ALL), null);
                    break;
                }

                case NetMsg.MSG_BOSS_INFO:
                {
                    var pack      = S2CPackBase.DeserializePack <S2CBossInfo>(data);
                    var boss_list = pack.mons;
                    //m_isNeedUpdate = true;

                    UpdateInfo(boss_list);

                    ClientEventMgr.Instance.FireEvent(xc.EnumUtil.EnumToInt(xc.ClientEvent.CE_WORLD_BOSS_UPDATE_BOSS_INFO_ALL), null);
                    break;
                }

                case NetMsg.MSG_BOSS_AFFILIS:
                {
                    S2CBossAffilis pack = S2CPackBase.DeserializePack <S2CBossAffilis>(data);

                    mBossAffiTeamIds[pack.boss] = pack.team_id;

                    List <UpdateBossAffiItem> item_array = GetOneBossAffiItemArray_tryAdd(pack.boss);
                    for (int index = 0; index < item_array.Count; ++index)
                    {
                        item_array[index].m_before_isAffi = item_array[index].m_now_isAffi;
                        item_array[index].m_now_isAffi    = false;
                    }
                    //GameDebug.LogError("************** start");
                    //GameDebug.LogError(string.Format("[pack.uuids] pack.uuids.Count = {0}", pack.uuids.Count));
                    for (int index = 0; index < pack.uuids.Count; ++index)
                    {
                        //GameDebug.LogError(string.Format("[pack.uuids] index = {0} player_id = {1}", index, pack.uuids[index]));
                        UpdateBossAffiItem item = item_array.Find((a) =>
                            {
                                return(a.m_player_id == pack.uuids[index]);
                            });
                        if (item == null)
                        {
                            UpdateBossAffiItem tmp_item = new UpdateBossAffiItem();
                            tmp_item.m_player_id  = pack.uuids[index];
                            tmp_item.m_now_isAffi = true;
                            item_array.Add(tmp_item);
                        }
                        else
                        {
                            item.m_now_isAffi = true;
                        }
                    }
//
//                             for(int index = 0; index < m_updateBossAffiItemArray.Count; ++index)
//                             {
//                                 GameDebug.LogError(string.Format("index = {0} player_id = {1} m_now_isAffi = {2}", index, m_updateBossAffiItemArray[index].m_player_id,
//                                     m_updateBossAffiItemArray[index].m_now_isAffi));
//                             }

                    // GameDebug.LogError("************** end");
                    UpdateAffiliation(item_array);
                    break;
                }

                case NetMsg.MSG_BOSS_INFO_ALL:
                {
                    var pack = S2CPackBase.DeserializePack <S2CBossInfoAll>(data);
                    m_affili_times = pack.affili_times;
                    mBossInfoAll.Clear();
                    for (int index = 0; index < pack.mons.Count; ++index)
                    {
                        var tmp_protocol_info = RedefineBossInfo.GetInfo(pack.mons[index]);
                        mBossInfoAll.Add(tmp_protocol_info);
                    }

                    C2SSpanBossInfo pkg = new C2SSpanBossInfo();
                    Net.NetClient.GetBaseClient().SendData <C2SSpanBossInfo>(NetMsg.MSG_SPAN_BOSS_INFO, pkg);

                    ClientEventMgr.Instance.FireEvent(xc.EnumUtil.EnumToInt(xc.ClientEvent.CE_WORLD_BOSS_UPDATE_BOSS_INFO_ALL), null);
                    break;
                }

                case NetMsg.MSG_DUNGEON_BOSS_GUIDE_AFFI:
                {
                    if (SceneHelp.Instance.IsInWorldBossExperienceInstance == false)
                    {
                        return;
                    }
                    S2CDungeonBossGuideAffi   pack       = S2CPackBase.DeserializePack <S2CDungeonBossGuideAffi>(data);
                    List <UpdateBossAffiItem> item_array = GetOneBossAffiItemArray_tryAdd(1);
                    for (int index = 0; index < item_array.Count; ++index)
                    {
                        item_array[index].m_before_isAffi = item_array[index].m_now_isAffi;
                        item_array[index].m_now_isAffi    = false;
                    }
                    //GameDebug.LogError("************** start");
                    //GameDebug.LogError(string.Format("[pack.uuids] pack.uuids.Count = {0}", pack.uuids.Count));
                    for (int index = 0; index < pack.uuids.Count; ++index)
                    {
                        //GameDebug.LogError(string.Format("[pack.uuids] index = {0} player_id = {1}", index, pack.uuids[index]));
                        UpdateBossAffiItem item = item_array.Find((a) =>
                            {
                                return(a.m_player_id == pack.uuids[index]);
                            });
                        if (item == null)
                        {
                            UpdateBossAffiItem tmp_item = new UpdateBossAffiItem();
                            tmp_item.m_player_id  = pack.uuids[index];
                            tmp_item.m_now_isAffi = true;
                            item_array.Add(tmp_item);
                        }
                        else
                        {
                            item.m_now_isAffi = true;
                        }
                    }
                    UpdateAffiliation(item_array);
                    break;
                }

                default:
                    break;
                }
            }