Пример #1
0
 public async Task <IPackCollection> LoadMapAsync(int mapId, IPackCollection packCollection = null, PackReaderSettings packReaderSettings = null)
 {
     if (this.ManifestedPack)
     {
         return(await LoadMapFromOptimizedMarkerPackAsync(mapId, packCollection, packReaderSettings));
     }
     else
     {
         return(await LoadMapFromNonOptimizedMarkerPackAsync(mapId, packCollection, packReaderSettings));
     }
 }
Пример #2
0
        private async Task <IPackCollection> LoadMapFromOptimizedMarkerPackAsync(int mapId, IPackCollection packCollection, PackReaderSettings packReaderSettings = null)
        {
            var collection = packCollection ?? new PackCollection();

            var reader = new PackReader(collection, this.ResourceManager, packReaderSettings);

            await reader.PopulatePackFromStream(await _dataReader.GetFileStreamAsync(PackConstImpl.FILE_OPTIMIZED_MARKERCATEGORIES));

            if (_dataReader.FileExists(string.Format(PackConstImpl.FILE_OPTIMIZED_MAPPATHABLES, mapId)))
            {
                await reader.PopulatePackFromStream(await _dataReader.GetFileStreamAsync(string.Format(PackConstImpl.FILE_OPTIMIZED_MAPPATHABLES, mapId)));
            }

            return(collection);
        }
Пример #3
0
        private async Task <IPackCollection> LoadMapFromNonOptimizedMarkerPackAsync(int mapId, IPackCollection packCollection, PackReaderSettings packReaderSettings = null)
        {
            await LoadAllAsync(packCollection == null
                               ?null
                               : new FilteredPackCollection(packCollection,
                                                            poi => poi.MapId == mapId),
                               packReaderSettings);

            return(packCollection);
        }
Пример #4
0
        public async Task <IPackCollection> LoadAllAsync(IPackCollection packCollection = null, PackReaderSettings packReaderSettings = null)
        {
            var collection = packCollection ?? new PackCollection();

            var reader = new PackReader(collection, this.ResourceManager, packReaderSettings);

            var candidates = new List <(Stream fileStream, IDataReader dataReader)>();

            await _dataReader.LoadOnFileTypeAsync((fileStream, dataReader) => {
                candidates.Add((fileStream, dataReader));
                return(Task.CompletedTask);
            }, ".xml");

            foreach (var candidate in candidates)
            {
                await reader.PopulatePackFromStream(candidate.fileStream);
            }

            return(collection);
        }