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