private void LoadPacks() { _currentReader = new MarkerPackReader(); _allPathableResourceManagers = new List <PathableResourceManager>(); var iconProgressIndicator = new Progress <string>((report) => { _mapIcon.LoadingMessage = report; }); var dirDataReader = new DirectoryReader(_markerDirectory); var dirResourceManager = new PathableResourceManager(dirDataReader); _allPathableResourceManagers.Add(dirResourceManager); dirDataReader.LoadOnFileType((Stream fileStream, IDataReader dataReader) => { _currentReader.ReadFromXmlPack(fileStream, dirResourceManager); }, ".xml", iconProgressIndicator); // Load archive marker packs List <string> zipPackFiles = new List <string>(); zipPackFiles.AddRange(Directory.GetFiles(_markerDirectory, "*.zip", SearchOption.AllDirectories)); zipPackFiles.AddRange(Directory.GetFiles(_markerDirectory, "*.taco", SearchOption.AllDirectories)); foreach (string packFile in zipPackFiles) { // Potentially contains many packs within var zipDataReader = new ZipArchiveReader(packFile); var zipResourceManager = new PathableResourceManager(zipDataReader); _allPathableResourceManagers.Add(zipResourceManager); zipDataReader.LoadOnFileType((Stream fileStream, IDataReader dataReader) => { _currentReader.ReadFromXmlPack(fileStream, zipResourceManager); }, ".xml", iconProgressIndicator); } _packsLoaded = true; }
private void UnloadAllPathables() { _packsLoaded = false; // Unregister all pathable resource managers _allPathableResourceManagers.ForEach(GameService.Pathing.UnregisterPathableResourceManager); // Unregister all pathables foreach (IPathable <Entity> pathable in _currentReader.Pathables) { GameService.Pathing.UnregisterPathable(pathable); } // Dispose all pathable resource managers _allPathableResourceManagers.ForEach(m => m.Dispose()); // Dipose marker pack reader _currentReader.Dispose(); _currentReader = null; }