private void Send2Client(eUnitModType type, PackBaseS2C msg) { eUnitAttrObserver oberver = this.GetObserverType(type); switch (oberver) { case eUnitAttrObserver.Single: ServerNetManager.Instance.SendProxy(msg.client_uid, msg, false); break; case eUnitAttrObserver.BoardcaseScreen: { ServerNetManager.Instance.SendProxy(msg.client_uid, msg, false); //转发其他同屏玩家 List <long> list_unit = AOIManager.Instance.GetScreenUnit(m_owner_unit.obj_idx); if (list_unit != null && list_unit.Count > 0) { foreach (var idx in list_unit) { Player player = UnitManager.Instance.GetUnitByIdx(idx) as Player; if (player == null) { continue; } ServerNetManager.Instance.SendProxy(player.client_uid, msg, false); } } } break; case eUnitAttrObserver.Boardcase: ServerNetManager.Instance.SendProxy(msg.client_uid, msg, true); break; } }
public override eUnitAttrObserver GetObserverType(eUnitModType type) { eUnitAttrObserver observer = eUnitAttrObserver.Single; switch (type) { case eUnitModType.UMT_char_type: case eUnitModType.UMT_model_idx: case eUnitModType.UMT_level: case eUnitModType.UMT_gold: case eUnitModType.UMT_coin: case eUnitModType.UMT_vip_grade: observer = eUnitAttrObserver.BoardcaseScreen; break; } return(observer); }