Example #1
0
        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;
            }
        }
Example #2
0
        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);
        }