/// <summary> /// Returns all matching FileIndexItems for the passed type /// </summary> /// <param name="type">the Type of the Files</param> /// <returns>all FileIndexItems</returns> public PackedFileDescriptors FindFile(uint type) { PackedFileDescriptors list = new PackedFileDescriptors(); if (!flat) { if (index.ContainsKey(type)) { Hashtable groups = (Hashtable)index[type]; foreach (uint group in groups.Keys) { if (groups.ContainsKey(group)) { Hashtable instances = (Hashtable)groups[group]; foreach (ulong instance in instances.Keys) { list.AddRange((PackedFileDescriptors)instances[instance]); } } } } } else { PackedFileDescriptors ret = new PackedFileDescriptors(); foreach (Interfaces.Files.IPackedFileDescriptor i in pfds) { if (i.Type == type) { ret.Add(i); } } return(ret); } return(list); }
/// <summary> /// Return all matching FileIndexItems (by Instance) /// </summary> /// <param name="group">The Group you are looking for</param> /// <param name="instance">The instance you are looking for</param> /// <returns>all FileIndexItems</returns> public PackedFileDescriptors FindFileByGroupAndInstance(uint group, ulong instance) { if (!flat) { PackedFileDescriptors list = new PackedFileDescriptors(); foreach (uint type in index.Keys) { Hashtable groups = (Hashtable)index[type]; if (groups.ContainsKey(group)) { Hashtable instances = (Hashtable)groups[group]; if (instances.ContainsKey(instance)) { list.AddRange((PackedFileDescriptors)instances[instance]); } } } //return the Result return(list); } else { PackedFileDescriptors ret = new PackedFileDescriptors(); foreach (Interfaces.Files.IPackedFileDescriptor i in pfds) { if (i.LongInstance == instance && i.Group == group) { ret.Add(i); } } return(ret); } }