mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2025-01-18 22:41:46 +00:00
Added: HiRes images are now also applied to sprites.
Fixed: HiRes images should be loaded from subdirectories too. Fixed: in some cases the editor was unable to locate existing "LoRes" images when loading HiRes images. Disabled some HiRes-related warnings, because the editor doesn't track all sprites or graphics.
This commit is contained in:
parent
07a4c5c51e
commit
6b4dc3a287
5 changed files with 42 additions and 18 deletions
|
@ -1356,33 +1356,53 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
// Go for all textures
|
// Go for all textures
|
||||||
foreach(HiResImage img in hiresimages)
|
foreach(HiResImage img in hiresimages)
|
||||||
{
|
{
|
||||||
bool replaced = false;
|
// Replace when HiRes image name exactly matches a regular texture name,
|
||||||
|
// or when regular texture filename is 8 or less chars long
|
||||||
|
//bool replaced = false;
|
||||||
|
|
||||||
// Replace texture?
|
// Replace texture?
|
||||||
if(textures.ContainsKey(img.LongName))
|
long hash = GetFullLongTextureName(img.LongName);
|
||||||
|
if(textures.ContainsKey(hash) && (hash == img.LongName || Path.GetFileNameWithoutExtension(textures[hash].Name).Length <= CLASIC_IMAGE_NAME_LENGTH))
|
||||||
{
|
{
|
||||||
HiResImage replacer = new HiResImage(img);
|
HiResImage replacer = new HiResImage(img);
|
||||||
replacer.ApplySettings(textures[img.LongName]);
|
replacer.ApplySettings(textures[hash]);
|
||||||
textures[img.LongName] = replacer;
|
textures[hash] = replacer;
|
||||||
replaced = true;
|
//replaced = true;
|
||||||
|
|
||||||
// Add to preview manager
|
// Add to preview manager
|
||||||
previews.AddImage(replacer);
|
previews.AddImage(replacer);
|
||||||
|
counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace flat?
|
// Replace flat?
|
||||||
if(flats.ContainsKey(img.LongName))
|
hash = GetFullLongFlatName(img.LongName);
|
||||||
|
if(flats.ContainsKey(hash) && (hash == img.LongName || Path.GetFileNameWithoutExtension(flats[hash].Name).Length <= CLASIC_IMAGE_NAME_LENGTH))
|
||||||
{
|
{
|
||||||
HiResImage replacer = new HiResImage(img);
|
HiResImage replacer = new HiResImage(img);
|
||||||
replacer.ApplySettings(flats[img.LongName]);
|
replacer.ApplySettings(flats[hash]);
|
||||||
flats[img.LongName] = replacer;
|
flats[hash] = replacer;
|
||||||
replaced = true;
|
//replaced = true;
|
||||||
|
|
||||||
// Add to preview manager
|
// Add to preview manager
|
||||||
previews.AddImage(replacer);
|
previews.AddImage(replacer);
|
||||||
|
counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!replaced)
|
// Replace sprite?
|
||||||
|
if(sprites.ContainsKey(img.LongName))
|
||||||
|
{
|
||||||
|
HiResImage replacer = new HiResImage(img);
|
||||||
|
replacer.ApplySettings(sprites[img.LongName]);
|
||||||
|
sprites[img.LongName] = replacer;
|
||||||
|
//replaced = true;
|
||||||
|
|
||||||
|
// Add to preview manager
|
||||||
|
previews.AddImage(replacer);
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We don't load any graphics and most of the sprites, so this can result in a ton of false warnings...
|
||||||
|
/*if(!replaced)
|
||||||
{
|
{
|
||||||
General.ErrorLogger.Add(ErrorType.Warning, "HiRes texture \"" + Path.Combine(dr.Location.GetDisplayName(), img.FilePathName.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar)) + "\" does not override any existing texture or flat.");
|
General.ErrorLogger.Add(ErrorType.Warning, "HiRes texture \"" + Path.Combine(dr.Location.GetDisplayName(), img.FilePathName.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar)) + "\" does not override any existing texture or flat.");
|
||||||
dr.TextureSet.AddTexture(img);
|
dr.TextureSet.AddTexture(img);
|
||||||
|
@ -1395,7 +1415,7 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
previews.AddImage(img);
|
previews.AddImage(img);
|
||||||
}
|
}
|
||||||
|
|
||||||
counter++;
|
counter++;*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,8 +214,7 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Find in hires directory
|
// Find in hires directory
|
||||||
string path = Path.Combine(HIRES_DIR, Path.GetDirectoryName(name));
|
string filename = FindFirstFile(HIRES_DIR, name, true);
|
||||||
string filename = FindFirstFile(path, Path.GetFileName(name), false);
|
|
||||||
if(!string.IsNullOrEmpty(filename) && FileExists(filename))
|
if(!string.IsNullOrEmpty(filename) && FileExists(filename))
|
||||||
{
|
{
|
||||||
hireslocation = location.GetDisplayName();
|
hireslocation = location.GetDisplayName();
|
||||||
|
|
|
@ -87,7 +87,12 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
|
|
||||||
internal void ApplySettings(ImageData overridden)
|
internal void ApplySettings(ImageData overridden)
|
||||||
{
|
{
|
||||||
|
// Copy all the names...
|
||||||
|
name = overridden.Name;
|
||||||
virtualname = overridden.VirtualName;
|
virtualname = overridden.VirtualName;
|
||||||
|
displayname = overridden.DisplayName;
|
||||||
|
longname = overridden.LongName;
|
||||||
|
|
||||||
isFlat = overridden.IsFlat;
|
isFlat = overridden.IsFlat;
|
||||||
overridesettingsapplied = true;
|
overridesettingsapplied = true;
|
||||||
|
|
||||||
|
|
|
@ -244,7 +244,7 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd. This finds and returns a HiRes textue stream
|
//mxd. This finds and returns a HiRes textue stream
|
||||||
public override Stream GetHiResTextureData(string pname, ref string hireslocation)
|
public override Stream GetHiResTextureData(string name, ref string hireslocation)
|
||||||
{
|
{
|
||||||
// Error when suspended
|
// Error when suspended
|
||||||
if(issuspended) throw new Exception("Data reader is suspended");
|
if(issuspended) throw new Exception("Data reader is suspended");
|
||||||
|
@ -253,12 +253,12 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
// Note the backward order, because the last wad's images have priority
|
// Note the backward order, because the last wad's images have priority
|
||||||
for(int i = wads.Count - 1; i >= 0; i--)
|
for(int i = wads.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
Stream data = wads[i].GetTextureData(pname, false, ref hireslocation);
|
Stream data = wads[i].GetTextureData(name, false, ref hireslocation);
|
||||||
if(data != null) return data;
|
if(data != null) return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find in HiRes directory
|
// Find in HiRes directory
|
||||||
string filename = FindFirstFile(HIRES_DIR, pname, false);
|
string filename = FindFirstFile(HIRES_DIR, name, true);
|
||||||
if(!string.IsNullOrEmpty(filename) && FileExists(filename))
|
if(!string.IsNullOrEmpty(filename) && FileExists(filename))
|
||||||
{
|
{
|
||||||
hireslocation = location.GetDisplayName();
|
hireslocation = location.GetDisplayName();
|
||||||
|
|
|
@ -239,14 +239,14 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
public override IEnumerable<HiResImage> LoadHiResTextures()
|
public override IEnumerable<HiResImage> LoadHiResTextures()
|
||||||
{
|
{
|
||||||
// Go for all files
|
// Go for all files
|
||||||
string[] files = GetAllFiles(HIRES_DIR, false);
|
string[] files = GetAllFiles(HIRES_DIR, true);
|
||||||
List<HiResImage> result = new List<HiResImage>(files.Length);
|
List<HiResImage> result = new List<HiResImage>(files.Length);
|
||||||
foreach(string f in files)
|
foreach(string f in files)
|
||||||
{
|
{
|
||||||
if(string.IsNullOrEmpty(Path.GetFileNameWithoutExtension(f)))
|
if(string.IsNullOrEmpty(Path.GetFileNameWithoutExtension(f)))
|
||||||
{
|
{
|
||||||
// Can't load image without name
|
// Can't load image without name
|
||||||
General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed HiRes texture from \"" + HIRES_DIR + "\". Please consider giving names to your resources.");
|
General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed HiRes texture from \"" + Path.Combine(this.location.GetDisplayName(), HIRES_DIR) + "\". Please consider giving names to your resources.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue