// 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);
        }
Beispiel #2
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));
        }
        // 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));
        }
Beispiel #4
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);
        }