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