/// <summary> /// Load FileDescriptors that are stored in the given File /// </summary> /// <param name="flname"></param> /// <param name="list">null or the list that should be used to add the Items</param> /// <returns></returns> public static void LoadDescriptorsFromDisk(string flname, PackedFileDescriptors list) { if (list == null) { return; } bool run = WaitingScreen.Running; if (!run) { WaitingScreen.Wait(); } WaitingScreen.UpdateMessage("Load Descriptors From Disk"); //list = new PackedFileDescriptors(); try { if (flname.ToLower().EndsWith("package.xml")) { SimPe.Packages.File pkg = Packages.GeneratableFile.LoadFromStream(XmlPackageReader.OpenExtractedPackage(null, flname)); foreach (Interfaces.Files.IPackedFileDescriptor pfd in pkg.Index) { Interfaces.Files.IPackedFile file = pkg.Read(pfd); pfd.UserData = file.UncompressedData; if (!list.Contains(pfd)) { list.Add(pfd); } } } else if (flname.ToLower().EndsWith(".xml")) { Interfaces.Files.IPackedFileDescriptor pfd = XmlPackageReader.OpenExtractedPackedFile(flname); if (!list.Contains(pfd)) { list.Add(pfd); } } else if (flname.ToLower().EndsWith(".package") || flname.ToLower().EndsWith(".simpedis")) { SimPe.Packages.File pkg = SimPe.Packages.File.LoadFromFile(flname); foreach (Interfaces.Files.IPackedFileDescriptor pfd in pkg.Index) { Interfaces.Files.IPackedFile file = pkg.Read(pfd); pfd.UserData = file.UncompressedData; if (!list.Contains(pfd)) { list.Add(pfd); } } } else { Packages.PackedFileDescriptor pfd = new SimPe.Packages.PackedFileDescriptor(); pfd.Type = 0xffffffff; ToolLoaderItemExt.OpenPackedFile(flname, ref pfd); list.Add(pfd); } } finally { if (!run) { WaitingScreen.Stop(); } } }