예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
            }
        }