UltimateZoneBuilder/Source/Core/Data/TexturePatch.cs
MaxED 6b765f5a27 Added long texture names support (enabled when "longtexturenames" game configuration property is set to true and "Use long texture names" check box is checked in Map Options).
Open Map in Current WAD: resources are now reloaded when current and target map's resources don't match.
Added some boilerplate to UniversalParser and PK3FileImage.
Internal: ImageSelectorControl now has "UsePreviews" property.
Internal: added ConfigurablePictureBox.
Updated ZDoom_DECORATE.cfg.
2014-11-25 11:52:01 +00:00

108 lines
2.9 KiB
C#

#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#endregion
#region ================== Namespaces
using System.IO;
using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.ZDoom;
#endregion
namespace CodeImp.DoomBuilder.Data
{
public enum TexturePathRenderStyle
{
Copy,
Blend,
Add,
Subtract,
ReverseSubtract,
Modulate,
CopyAlpha,
CopyNewAlpha, //mxd
Overlay, //mxd
}
public enum TexturePathBlendStyle //mxd
{
None,
Blend,
Tint
}
internal struct TexturePatch
{
public readonly string lumpname;
public readonly int x;
public readonly int y;
public readonly bool flipx;
public readonly bool flipy;
public readonly bool haslongname; //mxd
public readonly int rotate;
public PixelColor blend;
public readonly float alpha;
public readonly TexturePathRenderStyle style;
public readonly TexturePathBlendStyle blendstyle; //mxd
public readonly float tintammount;//mxd
// Constructor for simple patches
public TexturePatch(string lumpname, int x, int y)
{
// Initialize
this.lumpname = lumpname;
this.x = x;
this.y = y;
this.flipx = false;
this.flipy = false;
this.rotate = 0;
this.blend = new PixelColor(0, 0, 0, 0);
this.alpha = 1.0f;
this.style = TexturePathRenderStyle.Copy;
this.blendstyle = TexturePathBlendStyle.None;//mxd
this.tintammount = 0; //mxd
this.haslongname = false; //mxd
}
//mxd. Constructor for hires patches
public TexturePatch(PatchStructure patch) {
// Initialize
this.lumpname = patch.Name.ToUpperInvariant();
this.x = patch.OffsetX;
this.y = patch.OffsetY;
this.flipx = patch.FlipX;
this.flipy = patch.FlipY;
this.rotate = patch.Rotation;
this.blend = patch.BlendColor;
this.alpha = patch.Alpha;
this.style = patch.RenderStyle;
this.blendstyle = patch.BlendStyle;
this.tintammount = patch.TintAmmount;
this.haslongname = (Path.GetFileNameWithoutExtension(this.lumpname) != this.lumpname);
//mxd. Check data so we don't perform unneeded operations later on
if(this.alpha == 1.0f)
{
if(this.style == TexturePathRenderStyle.Blend || this.style == TexturePathRenderStyle.CopyAlpha || this.style == TexturePathRenderStyle.CopyNewAlpha || this.style == TexturePathRenderStyle.Overlay)
this.style = TexturePathRenderStyle.Copy;
}
//mxd. and get rid of render styles we don't support
if(this.style == TexturePathRenderStyle.Overlay)
this.style = TexturePathRenderStyle.Copy;
}
}
}