mirror of
https://git.do.srb2.org/STJr/ZoneBuilder.git
synced 2025-03-13 22:23:20 +00:00
Peg Midtextures flag is now recognized in Visual Mode
This commit is contained in:
parent
564b21e615
commit
52b6bf1445
6 changed files with 46 additions and 17 deletions
|
@ -90,6 +90,8 @@ doublesidedflag = 4; // See linedefflags
|
|||
impassableflag = 1;
|
||||
upperunpeggedflag = 8;
|
||||
lowerunpeggedflag = 16;
|
||||
repeatmidtextureflag = 1024;
|
||||
pegmidtextureflag = 256;
|
||||
|
||||
// Generalized actions
|
||||
generalizedlinedefs = false;
|
||||
|
|
|
@ -60,7 +60,9 @@ namespace CodeImp.DoomBuilder.Config
|
|||
private readonly string impassableflag;
|
||||
private readonly string upperunpeggedflag;
|
||||
private readonly string lowerunpeggedflag;
|
||||
private readonly bool mixtexturesflats;
|
||||
private readonly string repeatmidtextureflag;
|
||||
private readonly string pegmidtextureflag;
|
||||
private readonly bool mixtexturesflats;
|
||||
private readonly bool generalizedactions;
|
||||
private readonly bool generalizedeffects;
|
||||
private readonly int start3dmodethingtype;
|
||||
|
@ -178,7 +180,9 @@ namespace CodeImp.DoomBuilder.Config
|
|||
public string ImpassableFlag { get { return impassableflag; } }
|
||||
public string UpperUnpeggedFlag { get { return upperunpeggedflag; } }
|
||||
public string LowerUnpeggedFlag { get { return lowerunpeggedflag; } }
|
||||
public bool MixTexturesFlats { get { return mixtexturesflats; } }
|
||||
public string RepeatMidtextureFlag { get { return repeatmidtextureflag; } }
|
||||
public string PegMidtextureFlag { get { return pegmidtextureflag; } }
|
||||
public bool MixTexturesFlats { get { return mixtexturesflats; } }
|
||||
public bool GeneralizedActions { get { return generalizedactions; } }
|
||||
public bool GeneralizedEffects { get { return generalizedeffects; } }
|
||||
public int Start3DModeThingType { get { return start3dmodethingtype; } }
|
||||
|
@ -377,9 +381,13 @@ namespace CodeImp.DoomBuilder.Config
|
|||
if(obj is int) upperunpeggedflag = ((int)obj).ToString(CultureInfo.InvariantCulture); else upperunpeggedflag = obj.ToString();
|
||||
obj = cfg.ReadSettingObject("lowerunpeggedflag", 0);
|
||||
if(obj is int) lowerunpeggedflag = ((int)obj).ToString(CultureInfo.InvariantCulture); else lowerunpeggedflag = obj.ToString();
|
||||
obj = cfg.ReadSettingObject("repeatmidtextureflag", 0);
|
||||
if (obj is int) repeatmidtextureflag = ((int)obj).ToString(CultureInfo.InvariantCulture); else repeatmidtextureflag = obj.ToString();
|
||||
obj = cfg.ReadSettingObject("pegmidtextureflag", 0);
|
||||
if (obj is int) pegmidtextureflag = ((int)obj).ToString(CultureInfo.InvariantCulture); else pegmidtextureflag = obj.ToString();
|
||||
|
||||
// Get texture and flat sources
|
||||
textureranges = cfg.ReadSetting("textures", new Hashtable());
|
||||
// Get texture and flat sources
|
||||
textureranges = cfg.ReadSetting("textures", new Hashtable());
|
||||
flatranges = cfg.ReadSetting("flats", new Hashtable());
|
||||
patchranges = cfg.ReadSetting("patches", new Hashtable());
|
||||
spriteranges = cfg.ReadSetting("sprites", new Hashtable());
|
||||
|
|
|
@ -92,6 +92,11 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
|
||||
#region ================== Methods
|
||||
|
||||
protected virtual bool IsLowerUnpegged()
|
||||
{
|
||||
return Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag);
|
||||
}
|
||||
|
||||
//mxd
|
||||
override protected void PerformAutoSelection()
|
||||
{
|
||||
|
@ -703,7 +708,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
}
|
||||
else if(this is VisualMiddleDouble)
|
||||
{
|
||||
if(Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag))
|
||||
if(IsLowerUnpegged())
|
||||
offsety = (options.Bounds.Y - Sidedef.GetHighHeight() - Sidedef.GetLowHeight()) * scaley - Sidedef.OffsetY;
|
||||
else
|
||||
offsety = options.Bounds.Y * scaley - Sidedef.OffsetY;
|
||||
|
@ -738,7 +743,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
//mxd. Oh so special cases...
|
||||
private float GetLowerOffsetY(float scaley)
|
||||
{
|
||||
if(Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag))
|
||||
if(IsLowerUnpegged())
|
||||
return ((-Sidedef.OffsetY - Sidedef.GetMiddleHeight() - Sidedef.GetHighHeight()) * scaley) % Texture.Height;
|
||||
return (-Sidedef.OffsetY * scaley) % Texture.Height;
|
||||
}
|
||||
|
|
|
@ -131,7 +131,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// height is 0 then the TexturePlane doesn't work!
|
||||
TexturePlane tp = new TexturePlane();
|
||||
float floorbias = (Sidedef.Other.Sector.FloorHeight == Sidedef.Sector.FloorHeight) ? 1.0f : 0.0f;
|
||||
if(Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag))
|
||||
if(IsLowerUnpegged())
|
||||
{
|
||||
if(Sidedef.Sector.CeilTexture == General.Map.Config.SkyFlatName && Sidedef.Other.Sector.CeilTexture == General.Map.Config.SkyFlatName)
|
||||
{
|
||||
|
|
|
@ -144,7 +144,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
float zoffset = Sidedef.Sector.CeilHeight - Sidedef.Other.Sector.CeilHeight; //mxd
|
||||
|
||||
// When lower unpegged is set, the middle texture is bound to the bottom
|
||||
if(Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag))
|
||||
if(IsLowerUnpegged())
|
||||
tp.tlt.y = tsz.y - (geotop - geobottom);
|
||||
|
||||
if(zoffset > 0) tp.tlt.y -= zoffset; //mxd
|
||||
|
@ -192,7 +192,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
CropPoly(ref poly, osd.Floor.plane, true);
|
||||
|
||||
// Determine if we should repeat the middle texture
|
||||
bool srb2repeat = General.Map.SRB2 && Sidedef.Line.IsFlagSet("1024");
|
||||
bool srb2repeat = General.Map.SRB2 && Sidedef.Line.IsFlagSet(General.Map.Config.RepeatMidtextureFlag);
|
||||
repeatmidtex = srb2repeat || Sidedef.IsFlagSet("wrapmidtex") || Sidedef.Line.IsFlagSet("wrapmidtex"); //mxd
|
||||
if(!repeatmidtex || (srb2repeat && Sidedef.OffsetX >= 4096))
|
||||
{
|
||||
|
@ -202,7 +202,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
int repetitions = srb2repeat ? (Sidedef.OffsetX / 4096) + 1 : 1;
|
||||
|
||||
// Determine top portion height
|
||||
if(Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag))
|
||||
if(IsLowerUnpegged())
|
||||
textop = geobottom + tof.y + repetitions * Math.Abs(tsz.y);
|
||||
else
|
||||
textop = geotop + tof.y;
|
||||
|
@ -254,13 +254,20 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
base.SetVertices(null); //mxd
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ================== Methods
|
||||
#endregion
|
||||
|
||||
// This performs a fast test in object picking
|
||||
public override bool PickFastReject(Vector3D from, Vector3D to, Vector3D dir)
|
||||
#region ================== Methods
|
||||
|
||||
protected override bool IsLowerUnpegged()
|
||||
{
|
||||
bool lowerunpeggedflag = Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag);
|
||||
bool pegmidtextureflag = General.Map.SRB2 && Sidedef.Line.IsFlagSet(General.Map.Config.PegMidtextureFlag);
|
||||
return lowerunpeggedflag ^ pegmidtextureflag;
|
||||
}
|
||||
|
||||
// This performs a fast test in object picking
|
||||
public override bool PickFastReject(Vector3D from, Vector3D to, Vector3D dir)
|
||||
{
|
||||
if(!repeatmidtex)
|
||||
{
|
||||
|
@ -289,7 +296,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
|
||||
if(repeatmidtex)
|
||||
{
|
||||
if(Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag))
|
||||
if(IsLowerUnpegged())
|
||||
zoffset = Sidedef.Sector.FloorHeight;
|
||||
else
|
||||
zoffset = Sidedef.Sector.CeilHeight;
|
||||
|
|
|
@ -132,7 +132,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// height is 0 then the TexturePlane doesn't work!
|
||||
TexturePlane tp = new TexturePlane();
|
||||
float floorbias = (Sidedef.Sector.CeilHeight == Sidedef.Sector.FloorHeight) ? 1.0f : 0.0f;
|
||||
if(Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag))
|
||||
if(IsLowerUnpegged())
|
||||
{
|
||||
// When lower unpegged is set, the middle texture is bound to the bottom
|
||||
tp.tlt.y = tsz.y - (Sidedef.Sector.CeilHeight - Sidedef.Sector.FloorHeight);
|
||||
|
@ -215,6 +215,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
|
||||
#region ================== Methods
|
||||
|
||||
protected override bool IsLowerUnpegged()
|
||||
{
|
||||
bool lowerunpeggedflag = Sidedef.Line.IsFlagSet(General.Map.Config.LowerUnpeggedFlag);
|
||||
bool pegmidtextureflag = General.Map.SRB2 && Sidedef.Line.IsFlagSet(General.Map.Config.PegMidtextureFlag);
|
||||
return lowerunpeggedflag ^ pegmidtextureflag;
|
||||
}
|
||||
|
||||
// Return texture name
|
||||
public override string GetTextureName()
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue