Пример #1
0
        public virtual void logic_rpc_Handle(GetZonesInfoRequest req, OnRpcReturn <GetZonesInfoResponse> cb)
        {
            GetZonesInfoResponse rsp = new GetZonesInfoResponse();
            //指定场景的所有线.
            var lt = GetZoneList(req.servergroupID, req.mapID);

            if (lt != null)
            {
                List <ZoneInfoSnap> snaps = new List <ZoneInfoSnap>();
                rsp.snaps = snaps;

                ZoneInfoSnap snap = null;
                ZoneInfo     info = null;
                for (int i = 0; i < lt.Count; i++)
                {
                    //获取所有线的信息.
                    info = lt[i];
                    if (info != null && info.close == false)
                    {
                        snap = new ZoneInfoSnap();
                        snap.curPlayerCount  = info.currentRoleCount;
                        snap.playerMaxCount  = info.map_data.max_players;
                        snap.lineIndex       = info.lineIndex;
                        snap.playerFullCount = info.map_data.full_players;
                        snap.uuid            = info.uuid;
                        snaps.Add(snap);
                    }
                }
            }

            cb(rsp);
        }
Пример #2
0
        /// <summary>
        /// 批量创建场景分线
        /// </summary>
        /// <param name="create"></param>
        /// <returns></returns>
        public virtual async Task <BatchCreateZoneLineResponse> BatchCreateZoneLine(BatchCreateZoneLineRequest create)
        {
            BatchCreateZoneLineResponse response = new BatchCreateZoneLineResponse();

            response.zoneList = new List <ZoneInfoSnap>();

            foreach (var item in create.zoneList)
            {
                var result = await CreateZone(item);

                ZoneInfoSnap zone = new ZoneInfoSnap();
                zone.lineIndex  = GetZone(result.zoneUUID).lineIndex;
                zone.TemplateID = result.TemplateID;
                zone.uuid       = result.zoneUUID;
                response.zoneList.Add(zone);
            }

            return(response);
        }
Пример #3
0
        public virtual async Task <ClientChangeZoneLineResponse> DoClientChangeZoneLineRequest(ClientChangeZoneLineRequest req)
        {
            var rsp     = new ClientChangeZoneLineResponse();
            var mapData = RPGServerTemplateManager.Instance.GetMapTemplate(service.roleModule.LastMapID);

            if (!RPGServerTemplateManager.Instance.AllowChangeLine(mapData) ||
                mLastZoneInfoSnaps == null ||
                service.roleModule.LastZoneUUID == req.c2s_zoneuuid)
            {
                rsp.s2c_code = ClientChangeZoneLineResponse.CODE_ERROR;
                return(rsp);
            }

            ZoneInfoSnap snap = null;

            for (int i = 0; i < mLastZoneInfoSnaps.Count; i++)
            {
                snap = mLastZoneInfoSnaps[i];
                if (req.c2s_zoneuuid == snap.uuid)
                {
                    if (snap.curPlayerCount >= snap.playerMaxCount)
                    {
                        rsp.s2c_code = ClientChangeZoneLineResponse.CODE_LINE_BUSY;
                        return(rsp);
                    }
                    else
                    {
                        await DoChangeZoneLineAsync(req.c2s_zoneuuid, service.roleModule.LastMapID);

                        return(rsp);
                    }
                }
            }

            rsp.s2c_code = ClientChangeZoneLineResponse.CODE_NOT_EXIST;
            return(rsp);
        }
Пример #4
0
        public virtual void logic_rpc_Handle(GetBatchZonesInfoRequest req, OnRpcReturn <GetBatchZonesInfoResponse> cb)
        {
            GetBatchZonesInfoResponse rsp = new GetBatchZonesInfoResponse();

            rsp.snapDic = new HashMap <int, List <ZoneInfoSnap> >();

            foreach (var item in req.mapIDList)
            {
                var lt = GetZoneList(req.servergroupID, item);

                if (lt != null)
                {
                    ZoneInfoSnap snap = null;
                    ZoneInfo     info = null;

                    List <ZoneInfoSnap> snaps = new List <ZoneInfoSnap>();

                    for (int i = 0; i < lt.Count; i++)
                    {
                        //获取所有线的信息.
                        info = lt[i];
                        if (info != null && info.close == false)
                        {
                            snap = new ZoneInfoSnap();
                            snap.curPlayerCount  = info.currentRoleCount;
                            snap.playerMaxCount  = info.map_data.max_players;
                            snap.lineIndex       = info.lineIndex;
                            snap.playerFullCount = info.map_data.full_players;
                            snap.uuid            = info.uuid;
                            snaps.Add(snap);
                        }
                    }
                    rsp.snapDic.Add(item, snaps);
                }
            }
            cb(rsp);
        }