/// <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); }
/// <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); }
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; } }