mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-12-02 16:42:30 +00:00
883527c37c
Tag Statistics form: you can now double click on Sectors, Linedefs or Things cell to select them, and right click to open their properties. Texture size labels were displayed incorrectly in some cases. Rewritten VerticesMode.DeleteItem() once again... Vertex Edit form now works in realtime mode. Vertex Edit form: ceiling and floor vertex offsets can now be cleared. Added StairSectorBuilder plugin (I suppose some external plugins will stop working in GZDB because I've changed ButtonStep to float in ButtonsNumericTextbox a couple revisions ago...). Preferences form: action description is now scrollable. Changed background color of Sector Edit form. Vertex' ZCeiling and ZFloor properties are now managed internally.
216 lines
5.1 KiB
C#
216 lines
5.1 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.Collections.Generic;
|
|
using CodeImp.DoomBuilder.Map;
|
|
|
|
#endregion
|
|
|
|
namespace CodeImp.DoomBuilder.BuilderModes
|
|
{
|
|
// Vertex
|
|
public class VertexProperties
|
|
{
|
|
private UniFields fields;
|
|
private float zceiling; //mxd
|
|
private float zfloor; //mxd
|
|
|
|
public VertexProperties(Vertex v)
|
|
{
|
|
fields = new UniFields(v.Fields);
|
|
zceiling = v.ZCeiling; //mxd
|
|
zfloor = v.ZFloor; //mxd
|
|
}
|
|
|
|
public void Apply(Vertex v)
|
|
{
|
|
v.ZCeiling = zceiling; //mxd
|
|
v.ZFloor = zfloor; //mxd
|
|
|
|
v.Fields.BeforeFieldsChange();
|
|
v.Fields.Clear();
|
|
foreach(KeyValuePair<string, UniValue> uv in fields)
|
|
v.Fields.Add(uv.Key, new UniValue(uv.Value));
|
|
}
|
|
}
|
|
|
|
// Sector
|
|
public class SectorProperties
|
|
{
|
|
private int floorheight;
|
|
private int ceilheight;
|
|
private string floortexture;
|
|
private string ceilingtexture;
|
|
private int effect;
|
|
private int brightness;
|
|
private int tag;
|
|
private UniFields fields;
|
|
|
|
public SectorProperties(Sector s)
|
|
{
|
|
floorheight = s.FloorHeight;
|
|
ceilheight = s.CeilHeight;
|
|
floortexture = s.FloorTexture;
|
|
ceilingtexture = s.CeilTexture;
|
|
brightness = s.Brightness;
|
|
effect = s.Effect;
|
|
tag = s.Tag;
|
|
fields = new UniFields(s.Fields);
|
|
}
|
|
|
|
public void Apply(Sector s)
|
|
{
|
|
s.FloorHeight = floorheight;
|
|
s.CeilHeight = ceilheight;
|
|
s.SetFloorTexture(floortexture);
|
|
s.SetCeilTexture(ceilingtexture);
|
|
s.Brightness = brightness;
|
|
s.Tag = tag;
|
|
s.Effect = effect;
|
|
s.Fields.BeforeFieldsChange();
|
|
s.Fields.Clear();
|
|
foreach(KeyValuePair<string, UniValue> v in fields)
|
|
s.Fields.Add(v.Key, new UniValue(v.Value));
|
|
}
|
|
}
|
|
|
|
// Sidedef
|
|
public class SidedefProperties
|
|
{
|
|
private string hightexture;
|
|
private string middletexture;
|
|
private string lowtexture;
|
|
private int offsetx;
|
|
private int offsety;
|
|
private UniFields fields;
|
|
|
|
public SidedefProperties(Sidedef s)
|
|
{
|
|
hightexture = s.HighTexture;
|
|
middletexture = s.MiddleTexture;
|
|
lowtexture = s.LowTexture;
|
|
offsetx = s.OffsetX;
|
|
offsety = s.OffsetY;
|
|
fields = new UniFields(s.Fields);
|
|
}
|
|
|
|
public void Apply(Sidedef s)
|
|
{
|
|
s.SetTextureHigh(hightexture);
|
|
s.SetTextureMid(middletexture);
|
|
s.SetTextureLow(lowtexture);
|
|
s.OffsetX = offsetx;
|
|
s.OffsetY = offsety;
|
|
s.Fields.BeforeFieldsChange();
|
|
s.Fields.Clear();
|
|
foreach(KeyValuePair<string, UniValue> v in fields)
|
|
s.Fields.Add(v.Key, new UniValue(v.Value));
|
|
}
|
|
}
|
|
|
|
// Linedef
|
|
public class LinedefProperties
|
|
{
|
|
private SidedefProperties front;
|
|
private SidedefProperties back;
|
|
private Dictionary<string, bool> flags;
|
|
private int action;
|
|
private int activate;
|
|
private int tag;
|
|
private int[] args;
|
|
private UniFields fields;
|
|
|
|
public LinedefProperties(Linedef l)
|
|
{
|
|
if(l.Front != null)
|
|
front = new SidedefProperties(l.Front);
|
|
else
|
|
front = null;
|
|
|
|
if(l.Back != null)
|
|
back = new SidedefProperties(l.Back);
|
|
else
|
|
back = null;
|
|
|
|
flags = l.GetFlags();
|
|
action = l.Action;
|
|
activate = l.Activate;
|
|
tag = l.Tag;
|
|
args = (int[])(l.Args.Clone());
|
|
fields = new UniFields(l.Fields);
|
|
}
|
|
|
|
public void Apply(Linedef l)
|
|
{
|
|
if((front != null) && (l.Front != null)) front.Apply(l.Front);
|
|
if((back != null) && (l.Back != null)) back.Apply(l.Back);
|
|
l.ClearFlags();
|
|
foreach(KeyValuePair<string, bool> f in flags)
|
|
l.SetFlag(f.Key, f.Value);
|
|
l.Action = action;
|
|
l.Activate = activate;
|
|
l.Tag = tag;
|
|
for(int i = 0; i < l.Args.Length; i++)
|
|
l.Args[i] = args[i];
|
|
l.Fields.BeforeFieldsChange();
|
|
l.Fields.Clear();
|
|
foreach(KeyValuePair<string, UniValue> v in fields)
|
|
l.Fields.Add(v.Key, new UniValue(v.Value));
|
|
}
|
|
}
|
|
|
|
// Thing
|
|
public class ThingProperties
|
|
{
|
|
private int type;
|
|
private float angle;
|
|
private Dictionary<string, bool> flags;
|
|
private int tag;
|
|
private int action;
|
|
private int[] args;
|
|
private UniFields fields;
|
|
|
|
public ThingProperties(Thing t)
|
|
{
|
|
type = t.Type;
|
|
angle = t.Angle;
|
|
flags = t.GetFlags();
|
|
tag = t.Tag;
|
|
action = t.Action;
|
|
args = (int[])(t.Args.Clone());
|
|
fields = new UniFields(t.Fields);
|
|
}
|
|
|
|
public void Apply(Thing t)
|
|
{
|
|
t.Type = type;
|
|
t.Rotate(angle);
|
|
t.ClearFlags();
|
|
foreach(KeyValuePair<string, bool> f in flags)
|
|
t.SetFlag(f.Key, f.Value);
|
|
t.Tag = tag;
|
|
t.Action = action;
|
|
for(int i = 0; i < t.Args.Length; i++)
|
|
t.Args[i] = args[i];
|
|
t.Fields.BeforeFieldsChange();
|
|
t.Fields.Clear();
|
|
foreach(KeyValuePair<string, UniValue> v in fields)
|
|
t.Fields.Add(v.Key, new UniValue(v.Value));
|
|
}
|
|
}
|
|
}
|