Пример #1
0
        // This loads the textures
        public override ICollection <ImageData> LoadSprites()
        {
            List <ImageData> images = new List <ImageData>();
            string           rangestart, rangeend;
            int lumpindex;

            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            // Load TEXTURES lump file
            lumpindex = file.FindLumpIndex("TEXTURES");
            while (lumpindex > -1)
            {
                MemoryStream filedata = new MemoryStream(file.Lumps[lumpindex].Stream.ReadAllBytes());
                WADReader.LoadHighresSprites(filedata, "TEXTURES", ref images, null, null);
                filedata.Dispose();

                // Find next
                lumpindex = file.FindLumpIndex("TEXTURES", lumpindex + 1);
            }

            // Return result
            return(images);
        }
        //mxd. This returns all sprite names
        public override HashSet <string> GetSpriteNames()
        {
            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            HashSet <string> result = new HashSet <string>();

            // Load from wad files
            // Note the backward order, because the last wad's images have priority
            for (int i = wads.Count - 1; i >= 0; i--)
            {
                result.UnionWith(wads[i].GetSpriteNames());
            }

            // Load from out own files
            string[] files = GetAllFiles(SPRITES_DIR, true);
            foreach (string file in files)
            {
                // Some users tend to place all manner of graphics into the "Sprites" folder...
                string spritename = Path.GetFileNameWithoutExtension(file).ToUpperInvariant();
                if (WADReader.IsValidSpriteName(spritename))
                {
                    result.Add(spritename);
                }
            }

            return(result);
        }
        //mxd. This returns the list of voxels, which can be used without VOXELDEF definition
        public override HashSet <string> GetVoxelNames()
        {
            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            HashSet <string> result = new HashSet <string>();

            // Load from wad files
            // Note the backward order, because the last wad's images have priority
            for (int i = wads.Count - 1; i >= 0; i--)
            {
                result.UnionWith(wads[i].GetVoxelNames());
            }

            // Load from out own files
            string[] files = GetAllFiles("voxels", false);
            foreach (string t in files)
            {
                string s = Path.GetFileNameWithoutExtension(t).ToUpperInvariant();
                if (WADReader.IsValidVoxelName(s))
                {
                    result.Add(s);
                }
            }

            return(result);
        }
Пример #4
0
        // This loads the textures
        public override ICollection <ImageData> LoadSprites()
        {
            Dictionary <long, ImageData> images = new Dictionary <long, ImageData>();
            ICollection <ImageData>      collection;
            List <ImageData>             imgset = new List <ImageData>();

            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            // Load from wad files
            // Note the backward order, because the last wad's images have priority
            for (int i = wads.Count - 1; i >= 0; i--)
            {
                collection = wads[i].LoadSprites();
                AddImagesToList(images, collection);
            }

            // Load TEXTURES lump file
            imgset.Clear();
            string[] alltexturefiles = GetAllFilesWithTitle("", "TEXTURES", false);
            foreach (string texturesfile in alltexturefiles)
            {
                MemoryStream filedata = LoadFile(texturesfile);
                WADReader.LoadHighresSprites(filedata, texturesfile, ref imgset, null, null);
                filedata.Dispose();
            }

            // Add images from TEXTURES lump file
            AddImagesToList(images, imgset);

            return(new List <ImageData>(images.Values));
        }
Пример #5
0
        // This loads the textures
        public override ICollection <ImageData> LoadTextures(PatchNames pnames)
        {
            List <ImageData> images = new List <ImageData>();
            //string rangestart, rangeend;
            int  lumpindex;
            Lump lump;

            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            // Load two sets of textures, if available
            lump = file.FindLump("TEXTURE1");
            if (lump != null)
            {
                LoadTextureSet("TEXTURE1", lump.Stream, ref images, pnames);
            }
            lump = file.FindLump("TEXTURE2");
            if (lump != null)
            {
                LoadTextureSet("TEXTURE2", lump.Stream, ref images, pnames);
            }

            // Read ranges from configuration
            foreach (LumpRange range in textureranges)
            {
                // Load texture range
                LoadTexturesRange(range.start, range.end, ref images, pnames);
            }

            // Load TEXTURES lump file
            lumpindex = file.FindLumpIndex("TEXTURES");
            while (lumpindex > -1)
            {
                MemoryStream filedata = new MemoryStream(file.Lumps[lumpindex].Stream.ReadAllBytes());
                WADReader.LoadHighresTextures(filedata, "TEXTURES", ref images, null, null);
                filedata.Dispose();

                // Find next
                lumpindex = file.FindLumpIndex("TEXTURES", lumpindex + 1);
            }

            // Add images to the container-specific texture set
            foreach (ImageData img in images)
            {
                textureset.AddTexture(img);
            }

            // Return result
            return(images);
        }
Пример #6
0
        // This loads the textures
        public override ICollection <ImageData> LoadFlats()
        {
            Dictionary <long, ImageData> images = new Dictionary <long, ImageData>();
            ICollection <ImageData>      collection;
            List <ImageData>             imgset = new List <ImageData>();

            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            // Load from wad files
            // Note the backward order, because the last wad's images have priority
            for (int i = wads.Count - 1; i >= 0; i--)
            {
                collection = wads[i].LoadFlats();
                AddImagesToList(images, collection);
            }

            // Should we load the images in this directory as flats?
            if (rootflats)
            {
                collection = LoadDirectoryImages("", ImageDataFormat.DOOMFLAT, false);
                AddImagesToList(images, collection);
            }

            // Add images from flats directory
            collection = LoadDirectoryImages(FLATS_DIR, ImageDataFormat.DOOMFLAT, true);
            AddImagesToList(images, collection);

            // Add images to the container-specific texture set
            foreach (ImageData img in images.Values)
            {
                textureset.AddFlat(img);
            }

            // Load TEXTURES lump file
            imgset.Clear();
            string[] alltexturefiles = GetAllFilesWithTitle("", "TEXTURES", false);
            foreach (string texturesfile in alltexturefiles)
            {
                MemoryStream filedata = LoadFile(texturesfile);
                WADReader.LoadHighresFlats(filedata, texturesfile, ref imgset, null, images);
                filedata.Dispose();
            }

            // Add images from TEXTURES lump file
            AddImagesToList(images, imgset);

            return(new List <ImageData>(images.Values));
        }
        // This loads the sprites
        public override IEnumerable <ImageData> LoadSprites(Dictionary <string, TexturesParser> cachedparsers)
        {
            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            Dictionary <long, ImageData> images = new Dictionary <long, ImageData>();
            List <ImageData>             imgset = new List <ImageData>();

            // Load from wad files
            // Note the backward order, because the last wad's images have priority
            for (int i = wads.Count - 1; i >= 0; i--)
            {
                IEnumerable <ImageData> collection = wads[i].LoadSprites(cachedparsers);
                AddImagesToList(images, collection);
            }

            // Load TEXTURES lump file
            imgset.Clear();
            string[] alltexturefiles = GetAllFilesWhichTitleStartsWith("", "TEXTURES", false);             //mxd
            foreach (string texturesfile in alltexturefiles)
            {
                //mxd. Added TexturesParser caching
                string fullpath = Path.Combine(this.location.location, texturesfile);
                if (cachedparsers.ContainsKey(fullpath))
                {
                    // Make the textures
                    foreach (TextureStructure t in cachedparsers[fullpath].Sprites)
                    {
                        imgset.Add(t.MakeImage());
                    }
                }
                else
                {
                    MemoryStream     filedata = LoadFile(texturesfile);
                    TextResourceData data     = new TextResourceData(this, filedata, texturesfile, true);             //mxd
                    cachedparsers.Add(fullpath, WADReader.LoadTEXTURESSprites(data, ref imgset));                     //mxd
                    filedata.Dispose();
                }
            }

            // Add images from TEXTURES lump file
            AddImagesToList(images, imgset);

            return(new List <ImageData>(images.Values));
        }
Пример #8
0
        // This loads the textures
        public override ICollection <ImageData> LoadFlats()
        {
            List <ImageData> images = new List <ImageData>();
            string           rangestart, rangeend;
            int lumpindex;

            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            // Read ranges from configuration
            foreach (DictionaryEntry r in General.Map.Config.FlatRanges)
            {
                // Read start and end
                rangestart = General.Map.Config.ReadSetting("flats." + r.Key + ".start", "");
                rangeend   = General.Map.Config.ReadSetting("flats." + r.Key + ".end", "");
                if ((rangestart.Length > 0) && (rangeend.Length > 0))
                {
                    // Load texture range
                    LoadFlatsRange(rangestart, rangeend, ref images);
                }
            }

            // Load TEXTURES lump file
            lumpindex = file.FindLumpIndex("TEXTURES");
            while (lumpindex > -1)
            {
                MemoryStream filedata = new MemoryStream(file.Lumps[lumpindex].Stream.ReadAllBytes());
                WADReader.LoadHighresFlats(filedata, "TEXTURES", ref images, null, null);
                filedata.Dispose();

                // Find next
                lumpindex = file.FindLumpIndex("TEXTURES", lumpindex + 1);
            }

            // Add images to the container-specific texture set
            foreach (ImageData img in images)
            {
                textureset.AddFlat(img);
            }

            // Return result
            return(images);
        }
Пример #9
0
        }                                                             // When false, wont be added to DataManager.TextResources


        internal TextResourceData(DataReader source, Stream stream, string filename, bool trackable)
        {
            this.source         = source;
            this.sourcelocation = source.Location;
            this.stream         = stream;
            this.filename       = filename;
            this.trackable      = trackable;

            WADReader reader = source as WADReader;

            if (reader != null)
            {
                this.lumpindex = reader.WadFile.FindLumpIndex(filename);
            }
            else
            {
                this.lumpindex = -1;
            }
        }
Пример #10
0
        }                                                                                        // When false, wont be added to DataManager.TextResources


        internal TextResourceData(DataReader Source, Stream Stream, string Filename, bool Trackable)
        {
            source         = Source;
            sourcelocation = Source.Location;
            stream         = Stream;
            filename       = Filename;
            trackable      = Trackable;

            WADReader reader = source as WADReader;

            if (reader != null)
            {
                lumpindex = reader.WadFile.FindLumpIndex(filename);
            }
            else
            {
                lumpindex = -1;
            }
        }
        // This loads the textures
        public override IEnumerable <ImageData> LoadFlats(Dictionary <string, TexturesParser> cachedparsers)
        {
            Dictionary <long, ImageData> images = new Dictionary <long, ImageData>();
            IEnumerable <ImageData>      collection;
            List <ImageData>             imgset = new List <ImageData>();

            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            // Load from wad files
            // Note the backward order, because the last wad's images have priority
            for (int i = wads.Count - 1; i >= 0; i--)
            {
                collection = wads[i].LoadFlats(cachedparsers);
                AddImagesToList(images, collection);
            }

            // Should we load the images in this directory as flats?
            if (rootflats)
            {
                collection = LoadDirectoryImages("", ImageDataFormat.DOOMFLAT, false);
                AddImagesToList(images, collection);
            }

            // Add images from flats directory
            collection = LoadDirectoryImages(FLATS_DIR, ImageDataFormat.DOOMFLAT, true);
            AddImagesToList(images, collection);

            // Load TEXTURES lump file
            string[] alltexturefiles = GetAllFilesWhichTitleStartsWith("", "TEXTURES", false);             //mxd
            foreach (string texturesfile in alltexturefiles)
            {
                //mxd. Added TexturesParser caching
                string fullpath = Path.Combine(this.location.location, texturesfile);
                if (cachedparsers.ContainsKey(fullpath))
                {
                    // Make the textures
                    foreach (TextureStructure t in cachedparsers[fullpath].Flats)
                    {
                        imgset.Add(t.MakeImage());
                    }
                }
                else
                {
                    MemoryStream     filedata = LoadFile(texturesfile);
                    TextResourceData data     = new TextResourceData(this, filedata, texturesfile, true);           //mxd
                    cachedparsers.Add(fullpath, WADReader.LoadTEXTURESFlats(data, ref imgset));                     //mxd
                    filedata.Dispose();
                }
            }

            // Add images from TEXTURES lump file
            AddImagesToList(images, imgset);

            // Add images to the container-specific texture set
            foreach (ImageData img in images.Values)
            {
                textureset.AddFlat(img);
            }

            return(new List <ImageData>(images.Values));
        }
        // This loads the textures
        public override IEnumerable <ImageData> LoadTextures(PatchNames pnames, Dictionary <string, TexturesParser> cachedparsers)
        {
            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            Dictionary <long, ImageData> images = new Dictionary <long, ImageData>();
            IEnumerable <ImageData>      collection;

            // Load from wad files (NOTE: backward order, because the last wad's images have priority)
            for (int i = wads.Count - 1; i >= 0; i--)
            {
                PatchNames wadpnames = wads[i].LoadPatchNames();                                                                    //mxd
                collection = wads[i].LoadTextures((wadpnames != null && wadpnames.Length > 0) ? wadpnames : pnames, cachedparsers); //mxd
                AddImagesToList(images, collection);
            }

            // Should we load the images in this directory as textures?
            if (roottextures)
            {
                collection = LoadDirectoryImages("", ImageDataFormat.DOOMPICTURE, false);
                AddImagesToList(images, collection);
            }

            // Load TEXTURE1 lump file
            List <ImageData> imgset       = new List <ImageData>();
            string           texture1file = FindFirstFile("TEXTURE1", false);

            if ((texture1file != null) && FileExists(texture1file))
            {
                MemoryStream filedata = LoadFile(texture1file);
                WADReader.LoadTextureSet("TEXTURE1", filedata, ref imgset, pnames);
                filedata.Dispose();
            }

            // Load TEXTURE2 lump file
            string texture2file = FindFirstFile("TEXTURE2", false);

            if ((texture2file != null) && FileExists(texture2file))
            {
                MemoryStream filedata = LoadFile(texture2file);
                WADReader.LoadTextureSet("TEXTURE2", filedata, ref imgset, pnames);
                filedata.Dispose();
            }

            // Add images from TEXTURE1 and TEXTURE2 lump files
            AddImagesToList(images, imgset);

            // Load TEXTURES lump files
            imgset.Clear();
            string[] alltexturefiles = GetAllFilesWhichTitleStartsWith("", "TEXTURES", false);             //mxd
            foreach (string texturesfile in alltexturefiles)
            {
                //mxd. Added TexturesParser caching
                string fullpath = Path.Combine(this.location.location, texturesfile);
                if (cachedparsers.ContainsKey(fullpath))
                {
                    // Make the textures
                    foreach (TextureStructure t in cachedparsers[fullpath].Textures)
                    {
                        imgset.Add(t.MakeImage());
                    }
                }
                else
                {
                    MemoryStream     filedata = LoadFile(texturesfile);
                    TextResourceData data     = new TextResourceData(this, filedata, texturesfile, true);              //mxd
                    cachedparsers.Add(fullpath, WADReader.LoadTEXTURESTextures(data, ref imgset));                     //mxd
                    filedata.Dispose();
                }
            }

            // Add images from TEXTURES lump file
            AddImagesToList(images, imgset);

            //mxd. Add images from texture directory. Textures defined in TEXTURES override ones in "textures" folder
            collection = LoadDirectoryImages(TEXTURES_DIR, ImageDataFormat.DOOMPICTURE, true);
            AddImagesToList(images, collection);

            // Add images to the container-specific texture set
            foreach (ImageData img in images.Values)
            {
                textureset.AddTexture(img);
            }

            return(new List <ImageData>(images.Values));
        }
Пример #13
0
        // This loads the textures
        public override ICollection <ImageData> LoadTextures(PatchNames pnames)
        {
            Dictionary <long, ImageData> images = new Dictionary <long, ImageData>();
            ICollection <ImageData>      collection;
            List <ImageData>             imgset = new List <ImageData>();

            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            // Load from wad files (NOTE: backward order, because the last wad's images have priority)
            for (int i = wads.Count - 1; i >= 0; i--)
            {
                collection = wads[i].LoadTextures(pnames);
                AddImagesToList(images, collection);
            }

            // Should we load the images in this directory as textures?
            if (roottextures)
            {
                collection = LoadDirectoryImages("", ImageDataFormat.DOOMPICTURE, false);
                AddImagesToList(images, collection);
            }

            // Add images from texture directory
            collection = LoadDirectoryImages(TEXTURES_DIR, ImageDataFormat.DOOMPICTURE, true);
            AddImagesToList(images, collection);

            // Load TEXTURE1 lump file
            imgset.Clear();
            string texture1file = FindFirstFile("TEXTURE1", false);

            if ((texture1file != null) && FileExists(texture1file))
            {
                MemoryStream filedata = LoadFile(texture1file);
                WADReader.LoadTextureSet("TEXTURE1", filedata, ref imgset, pnames);
                filedata.Dispose();
            }

            // Load TEXTURE2 lump file
            string texture2file = FindFirstFile("TEXTURE2", false);

            if ((texture2file != null) && FileExists(texture2file))
            {
                MemoryStream filedata = LoadFile(texture2file);
                WADReader.LoadTextureSet("TEXTURE2", filedata, ref imgset, pnames);
                filedata.Dispose();
            }

            // Add images from TEXTURE1 and TEXTURE2 lump files
            AddImagesToList(images, imgset);

            // Load TEXTURES lump file
            imgset.Clear();
            string[] alltexturefiles = GetAllFilesWithTitle("", "TEXTURES", false);
            foreach (string texturesfile in alltexturefiles)
            {
                MemoryStream filedata = LoadFile(texturesfile);
                WADReader.LoadHighresTextures(filedata, texturesfile, ref imgset, images, null);
                filedata.Dispose();
            }

            // Add images from TEXTURES lump file
            AddImagesToList(images, imgset);

            // Add images to the container-specific texture set
            foreach (ImageData img in images.Values)
            {
                textureset.AddTexture(img);
            }

            return(new List <ImageData>(images.Values));
        }
Пример #14
0
        // This loads the textures
        public override ICollection <ImageData> LoadTextures(PatchNames pnames)
        {
            Dictionary <long, ImageData> images = new Dictionary <long, ImageData>();
            ICollection <ImageData>      collection;
            List <ImageData>             imgset = new List <ImageData>();

            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            subtexturesets = new Dictionary <string, ResourceTextureSet>();

            // Load from wad files (NOTE: backward order, because the last wad's images have priority)
            for (int i = wads.Count - 1; i >= 0; i--)
            {
                collection = wads[i].LoadTextures(pnames);

                ResourceTextureSet wadTextureSet = new ResourceTextureSet(wads[i].GetTitle(), location);
                // ano - moved this loop out from AddImagesToList
                // because we need to add the images to a
                // wad-specific list
                foreach (ImageData src in collection)
                {
                    // Check if exists in target list
                    if (!images.ContainsKey(src.LongName))
                    {
                        images.Add(src.LongName, src);
                        wadTextureSet.AddTexture(src);
                    }
                } // foreach

                subtexturesets.Add(wadTextureSet.Name, wadTextureSet);
            }             // for(wads)

            // Should we load the images in this directory as textures?
            if (roottextures)
            {
                collection = LoadDirectoryImages("", ImageDataFormat.DOOMPICTURE, false);
                AddImagesToList(images, collection);
            }

            // Add images from texture directory
            collection = LoadDirectoryImagesAndCategorize(TEXTURES_DIR, ImageDataFormat.DOOMPICTURE, images, false);

            // Load TEXTURE1 lump file
            imgset.Clear();
            string texture1file = FindFirstFile("TEXTURE1", false);

            if ((texture1file != null) && FileExists(texture1file))
            {
                MemoryStream filedata = LoadFile(texture1file);
                WADReader.LoadTextureSet("TEXTURE1", filedata, ref imgset, pnames);
                filedata.Dispose();
            }

            // Load TEXTURE2 lump file
            string texture2file = FindFirstFile("TEXTURE2", false);

            if ((texture2file != null) && FileExists(texture2file))
            {
                MemoryStream filedata = LoadFile(texture2file);
                WADReader.LoadTextureSet("TEXTURE2", filedata, ref imgset, pnames);
                filedata.Dispose();
            }

            // Add images from TEXTURE1 and TEXTURE2 lump files
            AddImagesToList(images, imgset);

            // Load TEXTURES lump file
            imgset.Clear();
            string[] alltexturefiles = GetAllFilesWithTitle("", "TEXTURES", false);
            foreach (string texturesfile in alltexturefiles)
            {
                MemoryStream filedata = LoadFile(texturesfile);
                WADReader.LoadHighresTextures(filedata, texturesfile, ref imgset, images, null);
                filedata.Dispose();
            }

            // Add images from TEXTURES lump file
            AddImagesToList(images, imgset);

            // Add images to the container-specific texture set
            foreach (ImageData img in images.Values)
            {
                textureset.AddTexture(img);
            }

            return(new List <ImageData>(images.Values));
        }
Пример #15
0
        // This loads the textures
        public override ICollection <ImageData> LoadTextures(PatchNames pnames)
        {
            List <ImageData> images = new List <ImageData>();
            string           rangestart, rangeend;
            int  lumpindex;
            Lump lump;

            // Error when suspended
            if (issuspended)
            {
                throw new Exception("Data reader is suspended");
            }

            // Load two sets of textures, if available
            lump = file.FindLump("TEXTURE1");
            if (lump != null)
            {
                LoadTextureSet("TEXTURE1", lump.Stream, ref images, pnames);
            }
            lump = file.FindLump("TEXTURE2");
            if (lump != null)
            {
                LoadTextureSet("TEXTURE2", lump.Stream, ref images, pnames);
            }

            // Read ranges from configuration
            foreach (LumpRange range in textureranges)
            {
                // Load texture range
                LoadTexturesRange(range.start, range.end, ref images, pnames);
            }

            foreach (Sector s in General.Map.Map.Sectors)
            {
                for (int j = 0; j < General.Map.TextureHashKey.Count; j++)
                {
                    if (s.HashFloor == General.Map.TextureHashKey[j])
                    {
                        s.SetFloorTexture(General.Map.TextureHashName[j]);
                        break;
                    }
                }

                for (int j = 0; j < General.Map.TextureHashKey.Count; j++)
                {
                    if (s.HashCeiling == General.Map.TextureHashKey[j])
                    {
                        s.SetCeilTexture(General.Map.TextureHashName[j]);
                        break;
                    }
                }
            }

            foreach (Sidedef sd in General.Map.Map.Sidedefs)
            {
                for (int j = 0; j < General.Map.TextureHashKey.Count; j++)
                {
                    if (sd.HashTexHigh == General.Map.TextureHashKey[j])
                    {
                        if (j == 0)
                        {
                            sd.SetTextureHigh("-");
                            break;
                        }

                        sd.SetTextureHigh(General.Map.TextureHashName[j]);
                        break;
                    }
                }

                for (int j = 0; j < General.Map.TextureHashKey.Count; j++)
                {
                    if (sd.HashTexMid == General.Map.TextureHashKey[j])
                    {
                        if (j == 0)
                        {
                            sd.SetTextureMid("-");
                            break;
                        }

                        sd.SetTextureMid(General.Map.TextureHashName[j]);
                        break;
                    }
                }

                for (int j = 0; j < General.Map.TextureHashKey.Count; j++)
                {
                    if (sd.HashTexLow == General.Map.TextureHashKey[j])
                    {
                        if (j == 0)
                        {
                            sd.SetTextureLow("-");
                            break;
                        }

                        sd.SetTextureLow(General.Map.TextureHashName[j]);
                        break;
                    }
                }
            }

            // Load TEXTURES lump file
            lumpindex = file.FindLumpIndex("TEXTURES");
            while (lumpindex > -1)
            {
                MemoryStream filedata = new MemoryStream(file.Lumps[lumpindex].Stream.ReadAllBytes());
                WADReader.LoadHighresTextures(filedata, "TEXTURES", ref images, null, null);
                filedata.Dispose();

                // Find next
                lumpindex = file.FindLumpIndex("TEXTURES", lumpindex + 1);
            }

            // Add images to the container-specific texture set
            foreach (ImageData img in images)
            {
                textureset.AddTexture(img);
            }

            // Return result
            return(images);
        }