// 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); }
// 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)); }
// 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); }
// 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)); }
// 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); }
} // 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; } }
} // 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)); }
// 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)); }
// 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) { 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); }