protected void LoadContent() { Wait.Message = "Extracting Archive"; SimPe.StringArrayList files = ExtractArchive(); Wait.SubStart(files.Count); files = SortFilesByType(files); LoadFiles(files); Wait.SubStop(); }
private SimPe.StringArrayList SortFilesByType(SimPe.StringArrayList files) { SimPe.StringArrayList objects = new StringArrayList(); SimPe.StringArrayList other = new StringArrayList(); foreach (string file in files) { SimPe.Cache.PackageType type = PackageInfo.ClassifyPackage(file); SimPe.Plugin.DownloadsToolFactory.TeleportFileIndex.AddIndexFromPackage(file); if (type == SimPe.Cache.PackageType.Object || type == SimPe.Cache.PackageType.MaxisObject || type == SimPe.Cache.PackageType.Sim) { objects.Add(file); } else { other.Add(file); } } objects.AddRange(other); other.Clear(); other = null; files.Clear(); files = null; return(objects); }
private void LoadFiles(SimPe.StringArrayList files) { int nr = 0; foreach (string file in files) { Wait.Progress = nr++; Wait.Message = System.IO.Path.GetFileName(file); if (!FileTable.FileIndex.Contains(file)) { SimPe.Plugin.DownloadsToolFactory.TeleportFileIndex.AddIndexFromPackage(file); } Downloads.IPackageHandler hnd = HandlerRegistry.Global.LoadFileHandler(file); if (hnd != null) { nfos.AddRange(hnd.Objects); } SimPe.Packages.StreamFactory.CloseStream(file); } }