mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2025-01-18 14:31:50 +00:00
UDMF: implemented 'moreids' handling. Currently this includes the core stuff, new TagsPicker control in Edit Sector/Linedef windows and updated Sector/Linedef Info panels.
This commit is contained in:
parent
5cd998b1fc
commit
45e303b2c8
28 changed files with 1126 additions and 239 deletions
|
@ -795,6 +795,12 @@
|
|||
<Compile Include="GZBuilder\Controls\ColorFieldsControl.Designer.cs">
|
||||
<DependentUpon>ColorFieldsControl.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GZBuilder\Controls\TagsSelector.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="GZBuilder\Controls\TagsSelector.Designer.cs">
|
||||
<DependentUpon>TagsSelector.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="GZBuilder\Controls\CustomLinedefColorProperties.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
|
@ -1022,6 +1028,9 @@
|
|||
<EmbeddedResource Include="GZBuilder\Controls\ColorFieldsControl.resx">
|
||||
<DependentUpon>ColorFieldsControl.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="GZBuilder\Controls\TagsSelector.resx">
|
||||
<DependentUpon>TagsSelector.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="GZBuilder\Controls\CustomLinedefColorProperties.resx">
|
||||
<DependentUpon>CustomLinedefColorProperties.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
|
|
@ -121,10 +121,23 @@ namespace CodeImp.DoomBuilder.Controls
|
|||
taglabel.Visible = true;
|
||||
tag.Visible = true;
|
||||
|
||||
//set tag
|
||||
tag.Text = l.Tag + (General.Map.Options.TagLabels.ContainsKey(l.Tag) ? " - " + General.Map.Options.TagLabels[l.Tag] : string.Empty);
|
||||
tag.Enabled = (l.Tag != 0);
|
||||
taglabel.Enabled = (l.Tag != 0);
|
||||
//mxd. Set tag(s)
|
||||
if(l.Tags.Count > 1)
|
||||
{
|
||||
string[] tags = new string[l.Tags.Count];
|
||||
for (int i = 0; i < l.Tags.Count; i++) tags[i] = l.Tags[i].ToString();
|
||||
tag.Text = string.Join(", ", tags);
|
||||
tag.Enabled = true;
|
||||
taglabel.Enabled = true;
|
||||
taglabel.Text = "Tags:";
|
||||
}
|
||||
else
|
||||
{
|
||||
tag.Text = l.Tag + (General.Map.Options.TagLabels.ContainsKey(l.Tag) ? " - " + General.Map.Options.TagLabels[l.Tag] : string.Empty);
|
||||
tag.Enabled = (l.Tag != 0);
|
||||
taglabel.Enabled = (l.Tag != 0);
|
||||
taglabel.Text = "Tag:";
|
||||
}
|
||||
}
|
||||
|
||||
// Get line action information
|
||||
|
|
38
Source/Core/Controls/SectorInfoPanel.Designer.cs
generated
38
Source/Core/Controls/SectorInfoPanel.Designer.cs
generated
|
@ -32,8 +32,8 @@ namespace CodeImp.DoomBuilder.Controls
|
|||
System.Windows.Forms.Label label5;
|
||||
this.labelfloor = new System.Windows.Forms.Label();
|
||||
this.labelceiling = new System.Windows.Forms.Label();
|
||||
this.labelTag = new System.Windows.Forms.Label();
|
||||
this.labelEffect = new System.Windows.Forms.Label();
|
||||
this.taglabel = new System.Windows.Forms.Label();
|
||||
this.effectlabel = new System.Windows.Forms.Label();
|
||||
this.ceilingLightLabel = new System.Windows.Forms.Label();
|
||||
this.ceilingScaleLabel = new System.Windows.Forms.Label();
|
||||
this.ceilingAngleLabel = new System.Windows.Forms.Label();
|
||||
|
@ -119,23 +119,23 @@ namespace CodeImp.DoomBuilder.Controls
|
|||
this.labelceiling.Text = "Ceiling:";
|
||||
this.labelceiling.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// labelTag
|
||||
// taglabel
|
||||
//
|
||||
this.labelTag.Location = new System.Drawing.Point(8, 79);
|
||||
this.labelTag.Name = "labelTag";
|
||||
this.labelTag.Size = new System.Drawing.Size(44, 14);
|
||||
this.labelTag.TabIndex = 4;
|
||||
this.labelTag.Text = "Tag:";
|
||||
this.labelTag.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
this.taglabel.Location = new System.Drawing.Point(8, 79);
|
||||
this.taglabel.Name = "taglabel";
|
||||
this.taglabel.Size = new System.Drawing.Size(44, 14);
|
||||
this.taglabel.TabIndex = 4;
|
||||
this.taglabel.Text = "Tag:";
|
||||
this.taglabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// labelEffect
|
||||
//
|
||||
this.labelEffect.Location = new System.Drawing.Point(8, 19);
|
||||
this.labelEffect.Name = "labelEffect";
|
||||
this.labelEffect.Size = new System.Drawing.Size(44, 14);
|
||||
this.labelEffect.TabIndex = 0;
|
||||
this.labelEffect.Text = "Effect:";
|
||||
this.labelEffect.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
this.effectlabel.Location = new System.Drawing.Point(8, 19);
|
||||
this.effectlabel.Name = "effectlabel";
|
||||
this.effectlabel.Size = new System.Drawing.Size(44, 14);
|
||||
this.effectlabel.TabIndex = 0;
|
||||
this.effectlabel.Text = "Effect:";
|
||||
this.effectlabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// ceilingLightLabel
|
||||
//
|
||||
|
@ -222,11 +222,11 @@ namespace CodeImp.DoomBuilder.Controls
|
|||
this.sectorinfo.Controls.Add(this.tag);
|
||||
this.sectorinfo.Controls.Add(this.floor);
|
||||
this.sectorinfo.Controls.Add(this.ceiling);
|
||||
this.sectorinfo.Controls.Add(this.labelTag);
|
||||
this.sectorinfo.Controls.Add(this.taglabel);
|
||||
this.sectorinfo.Controls.Add(this.labelfloor);
|
||||
this.sectorinfo.Controls.Add(this.labelceiling);
|
||||
this.sectorinfo.Controls.Add(this.effect);
|
||||
this.sectorinfo.Controls.Add(this.labelEffect);
|
||||
this.sectorinfo.Controls.Add(this.effectlabel);
|
||||
this.sectorinfo.Location = new System.Drawing.Point(0, 0);
|
||||
this.sectorinfo.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||
this.sectorinfo.Name = "sectorinfo";
|
||||
|
@ -601,8 +601,8 @@ namespace CodeImp.DoomBuilder.Controls
|
|||
private System.Windows.Forms.Label labelLight;
|
||||
private System.Windows.Forms.GroupBox flagsPanel;
|
||||
private System.Windows.Forms.ListView flags;
|
||||
private System.Windows.Forms.Label labelTag;
|
||||
private System.Windows.Forms.Label labelEffect;
|
||||
private System.Windows.Forms.Label taglabel;
|
||||
private System.Windows.Forms.Label effectlabel;
|
||||
private System.Windows.Forms.Label labelfloor;
|
||||
private System.Windows.Forms.Label labelceiling;
|
||||
}
|
||||
|
|
|
@ -65,17 +65,32 @@ namespace CodeImp.DoomBuilder.Controls
|
|||
effect.Text = effectinfo;
|
||||
ceiling.Text = s.CeilHeight.ToString();
|
||||
floor.Text = s.FloorHeight.ToString();
|
||||
tag.Text = s.Tag + (General.Map.Options.TagLabels.ContainsKey(s.Tag) ? " - " + General.Map.Options.TagLabels[s.Tag] : string.Empty);
|
||||
height.Text = sheight.ToString();
|
||||
brightness.Text = s.Brightness.ToString();
|
||||
floorname.Text = s.FloorTexture;
|
||||
ceilingname.Text = s.CeilTexture;
|
||||
|
||||
//mxd. Set tags
|
||||
if(s.Tags.Count > 1)
|
||||
{
|
||||
string[] tags = new string[s.Tags.Count];
|
||||
for(int i = 0; i < s.Tags.Count; i++) tags[i] = s.Tags[i].ToString();
|
||||
tag.Text = string.Join(", ", tags);
|
||||
tag.Enabled = true;
|
||||
taglabel.Enabled = true;
|
||||
taglabel.Text = "Tags:";
|
||||
}
|
||||
else
|
||||
{
|
||||
tag.Text = s.Tag + (General.Map.Options.TagLabels.ContainsKey(s.Tag) ? " - " + General.Map.Options.TagLabels[s.Tag] : string.Empty);
|
||||
tag.Enabled = (s.Tag != 0);
|
||||
taglabel.Enabled = (s.Tag != 0);
|
||||
taglabel.Text = "Tag:";
|
||||
}
|
||||
|
||||
//mxd
|
||||
effect.Enabled = (s.Effect != 0);
|
||||
labelEffect.Enabled = (s.Effect != 0);
|
||||
tag.Enabled = (s.Tag != 0);
|
||||
labelTag.Enabled = (s.Tag != 0);
|
||||
effectlabel.Enabled = (s.Effect != 0);
|
||||
|
||||
//mxd. Texture size
|
||||
if (s.LongFloorTexture == MapSet.EmptyLongName)
|
||||
|
|
|
@ -33,18 +33,23 @@
|
|||
this.cbTagPicker = new System.Windows.Forms.ComboBox();
|
||||
this.newTag = new System.Windows.Forms.Button();
|
||||
this.unusedTag = new System.Windows.Forms.Button();
|
||||
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.tooltip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.clear = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.label1.ForeColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.label1.Location = new System.Drawing.Point(7, 10);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(29, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Tag:";
|
||||
this.tooltip.SetToolTip(this.label1, "Use \">=\" or \"<=\" prefixes to create\r\nacsending or descending tags range.\r\nUse \"++" +
|
||||
"\" or \"--\" prefixes to increment\r\nor decrement already existing tags \r\nby given v" +
|
||||
"alue.");
|
||||
//
|
||||
// cbTagPicker
|
||||
//
|
||||
|
@ -66,7 +71,7 @@
|
|||
this.newTag.Size = new System.Drawing.Size(54, 24);
|
||||
this.newTag.TabIndex = 2;
|
||||
this.newTag.Text = "New";
|
||||
this.toolTip1.SetToolTip(this.newTag, "Finds a tag, which is not used as a tag or tag action argument \r\nby any map eleme" +
|
||||
this.tooltip.SetToolTip(this.newTag, "Finds a tag, which is not used as a tag or tag action argument \r\nby any map eleme" +
|
||||
"nt");
|
||||
this.newTag.UseVisualStyleBackColor = true;
|
||||
this.newTag.Click += new System.EventHandler(this.newTag_Click);
|
||||
|
@ -79,10 +84,17 @@
|
|||
this.unusedTag.Size = new System.Drawing.Size(54, 24);
|
||||
this.unusedTag.TabIndex = 3;
|
||||
this.unusedTag.Text = "Unused";
|
||||
this.toolTip1.SetToolTip(this.unusedTag, "Finds a tag, which is not used as a tag \r\nby any map element of this type");
|
||||
this.tooltip.SetToolTip(this.unusedTag, "Finds a tag, which is not used as a tag \r\nby any map element of this type");
|
||||
this.unusedTag.UseVisualStyleBackColor = true;
|
||||
this.unusedTag.Click += new System.EventHandler(this.unusedTag_Click);
|
||||
//
|
||||
// tooltip
|
||||
//
|
||||
this.tooltip.AutomaticDelay = 10;
|
||||
this.tooltip.AutoPopDelay = 10000;
|
||||
this.tooltip.InitialDelay = 10;
|
||||
this.tooltip.ReshowDelay = 100;
|
||||
//
|
||||
// clear
|
||||
//
|
||||
this.clear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
|
@ -91,7 +103,7 @@
|
|||
this.clear.Name = "clear";
|
||||
this.clear.Size = new System.Drawing.Size(26, 24);
|
||||
this.clear.TabIndex = 4;
|
||||
this.toolTip1.SetToolTip(this.clear, "Sets tag to 0");
|
||||
this.tooltip.SetToolTip(this.clear, "Sets tag to 0");
|
||||
this.clear.UseVisualStyleBackColor = true;
|
||||
this.clear.Click += new System.EventHandler(this.clear_Click);
|
||||
//
|
||||
|
@ -117,7 +129,7 @@
|
|||
private System.Windows.Forms.ComboBox cbTagPicker;
|
||||
private System.Windows.Forms.Button newTag;
|
||||
private System.Windows.Forms.Button unusedTag;
|
||||
private System.Windows.Forms.ToolTip toolTip1;
|
||||
private System.Windows.Forms.ToolTip tooltip;
|
||||
private System.Windows.Forms.Button clear;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
|||
private List<TagInfo> infos;
|
||||
private bool valid;
|
||||
private int tag;
|
||||
private UniversalType elementType;
|
||||
private UniversalType elementtype;
|
||||
private int rangemode; //0 - none, 1 - positive (>=), -1 - negative (<=)
|
||||
private int offsetmode; //0 - none, 1 - positive (++), -1 - negative (--)
|
||||
|
||||
|
@ -53,37 +53,50 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
|||
|
||||
#region ================== Methods
|
||||
|
||||
public void Setup(UniversalType elementType)
|
||||
public void Setup(UniversalType mapelementtype)
|
||||
{
|
||||
tags = new List<int>();
|
||||
infos = new List<TagInfo>();
|
||||
this.elementType = elementType;
|
||||
this.elementtype = mapelementtype;
|
||||
|
||||
//collect used tags from sectors...
|
||||
foreach(Sector s in General.Map.Map.Sectors)
|
||||
//collect used tags from appropriate element type...
|
||||
switch(elementtype)
|
||||
{
|
||||
if(s.Tag == 0 || tags.Contains(s.Tag)) continue;
|
||||
tags.Add(s.Tag);
|
||||
}
|
||||
case UniversalType.SectorTag:
|
||||
foreach(Sector s in General.Map.Map.Sectors)
|
||||
{
|
||||
foreach(int t in s.Tags)
|
||||
{
|
||||
if(t == 0 || tags.Contains(t)) continue;
|
||||
tags.Add(t);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//...and linedefs...
|
||||
if(General.Map.FormatInterface.HasLinedefTag)
|
||||
{
|
||||
foreach(Linedef l in General.Map.Map.Linedefs)
|
||||
{
|
||||
if(l.Tag == 0 || tags.Contains(l.Tag)) continue;
|
||||
tags.Add(l.Tag);
|
||||
}
|
||||
}
|
||||
case UniversalType.LinedefTag:
|
||||
if(General.Map.FormatInterface.HasLinedefTag)
|
||||
{
|
||||
foreach(Linedef l in General.Map.Map.Linedefs)
|
||||
{
|
||||
foreach(int t in l.Tags)
|
||||
{
|
||||
if(t == 0 || tags.Contains(t)) continue;
|
||||
tags.Add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//...and things...
|
||||
if(General.Map.FormatInterface.HasThingTag)
|
||||
{
|
||||
foreach(Thing t in General.Map.Map.Things)
|
||||
{
|
||||
if(t.Tag == 0 || tags.Contains(t.Tag)) continue;
|
||||
tags.Add(t.Tag);
|
||||
}
|
||||
case UniversalType.ThingTag:
|
||||
if(General.Map.FormatInterface.HasThingTag)
|
||||
{
|
||||
foreach(Thing t in General.Map.Map.Things)
|
||||
{
|
||||
if(t.Tag == 0 || tags.Contains(t.Tag)) continue;
|
||||
tags.Add(t.Tag);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//now sort them in descending order
|
||||
|
@ -224,7 +237,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
|||
|
||||
private void unusedTag_Click(object sender, EventArgs e)
|
||||
{
|
||||
tag = General.Map.Map.GetNewTag(elementType);
|
||||
tag = General.Map.Map.GetNewTag(elementtype);
|
||||
cbTagPicker.SelectedIndex = -1;
|
||||
cbTagPicker.Text = tag.ToString();
|
||||
valid = true;
|
||||
|
|
|
@ -117,7 +117,7 @@
|
|||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
196
Source/Core/GZBuilder/Controls/TagsSelector.Designer.cs
generated
Normal file
196
Source/Core/GZBuilder/Controls/TagsSelector.Designer.cs
generated
Normal file
|
@ -0,0 +1,196 @@
|
|||
namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||
{
|
||||
partial class TagsSelector
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if(disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.curtaglabel = new System.Windows.Forms.Label();
|
||||
this.tagpicker = new System.Windows.Forms.ComboBox();
|
||||
this.newtag = new System.Windows.Forms.Button();
|
||||
this.unusedtag = new System.Windows.Forms.Button();
|
||||
this.tooltip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.removetag = new System.Windows.Forms.Button();
|
||||
this.addtag = new System.Windows.Forms.Button();
|
||||
this.clear = new System.Windows.Forms.Button();
|
||||
this.tagslist = new System.Windows.Forms.LinkLabel();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.clearalltags = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// curtaglabel
|
||||
//
|
||||
this.curtaglabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||
this.curtaglabel.ForeColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.curtaglabel.Location = new System.Drawing.Point(8, 10);
|
||||
this.curtaglabel.Name = "curtaglabel";
|
||||
this.curtaglabel.Size = new System.Drawing.Size(52, 13);
|
||||
this.curtaglabel.TabIndex = 0;
|
||||
this.curtaglabel.Text = "Tag 1:";
|
||||
this.curtaglabel.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
this.tooltip.SetToolTip(this.curtaglabel, "Use \">=\" or \"<=\" prefixes to create\r\nacsending or descending tags range.\r\nUse \"++" +
|
||||
"\" or \"--\" prefixes to increment\r\nor decrement already existing tags \r\nby given v" +
|
||||
"alue.");
|
||||
//
|
||||
// tagpicker
|
||||
//
|
||||
this.tagpicker.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tagpicker.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
|
||||
this.tagpicker.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
|
||||
this.tagpicker.FormattingEnabled = true;
|
||||
this.tagpicker.Location = new System.Drawing.Point(65, 7);
|
||||
this.tagpicker.Name = "tagpicker";
|
||||
this.tagpicker.Size = new System.Drawing.Size(230, 21);
|
||||
this.tagpicker.TabIndex = 1;
|
||||
this.tagpicker.TextChanged += new System.EventHandler(this.tagpicker_TextChanged);
|
||||
//
|
||||
// newtag
|
||||
//
|
||||
this.newtag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.newtag.Location = new System.Drawing.Point(299, 5);
|
||||
this.newtag.Name = "newtag";
|
||||
this.newtag.Size = new System.Drawing.Size(54, 24);
|
||||
this.newtag.TabIndex = 2;
|
||||
this.newtag.Text = "New";
|
||||
this.tooltip.SetToolTip(this.newtag, "Find number, which is not used as a tag\r\nor tag action argument by any map elemen" +
|
||||
"t");
|
||||
this.newtag.UseVisualStyleBackColor = true;
|
||||
this.newtag.Click += new System.EventHandler(this.newtag_Click);
|
||||
//
|
||||
// unusedtag
|
||||
//
|
||||
this.unusedtag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.unusedtag.Location = new System.Drawing.Point(356, 5);
|
||||
this.unusedtag.Name = "unusedtag";
|
||||
this.unusedtag.Size = new System.Drawing.Size(54, 24);
|
||||
this.unusedtag.TabIndex = 3;
|
||||
this.unusedtag.Text = "Unused";
|
||||
this.tooltip.SetToolTip(this.unusedtag, "Find number, which is not used as a tag \r\nby any map element of this type");
|
||||
this.unusedtag.UseVisualStyleBackColor = true;
|
||||
this.unusedtag.Click += new System.EventHandler(this.unusedtag_Click);
|
||||
//
|
||||
// removetag
|
||||
//
|
||||
this.removetag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.removetag.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear;
|
||||
this.removetag.Location = new System.Drawing.Point(413, 33);
|
||||
this.removetag.Name = "removetag";
|
||||
this.removetag.Size = new System.Drawing.Size(26, 24);
|
||||
this.removetag.TabIndex = 7;
|
||||
this.tooltip.SetToolTip(this.removetag, "Remove selected tag");
|
||||
this.removetag.UseVisualStyleBackColor = true;
|
||||
this.removetag.Click += new System.EventHandler(this.removetag_Click);
|
||||
//
|
||||
// addtag
|
||||
//
|
||||
this.addtag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.addtag.Image = global::CodeImp.DoomBuilder.Properties.Resources.Add;
|
||||
this.addtag.Location = new System.Drawing.Point(384, 33);
|
||||
this.addtag.Name = "addtag";
|
||||
this.addtag.Size = new System.Drawing.Size(26, 24);
|
||||
this.addtag.TabIndex = 8;
|
||||
this.tooltip.SetToolTip(this.addtag, "Add new tag");
|
||||
this.addtag.UseVisualStyleBackColor = true;
|
||||
this.addtag.Click += new System.EventHandler(this.addtag_Click);
|
||||
//
|
||||
// clear
|
||||
//
|
||||
this.clear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.clear.Image = global::CodeImp.DoomBuilder.Properties.Resources.Reset;
|
||||
this.clear.Location = new System.Drawing.Point(413, 5);
|
||||
this.clear.Name = "clear";
|
||||
this.clear.Size = new System.Drawing.Size(26, 24);
|
||||
this.clear.TabIndex = 9;
|
||||
this.tooltip.SetToolTip(this.clear, "Set current tag to 0");
|
||||
this.clear.UseVisualStyleBackColor = true;
|
||||
this.clear.Click += new System.EventHandler(this.clear_Click);
|
||||
//
|
||||
// tagslist
|
||||
//
|
||||
this.tagslist.AutoSize = true;
|
||||
this.tagslist.Location = new System.Drawing.Point(63, 39);
|
||||
this.tagslist.Name = "tagslist";
|
||||
this.tagslist.Size = new System.Drawing.Size(82, 13);
|
||||
this.tagslist.TabIndex = 5;
|
||||
this.tagslist.TabStop = true;
|
||||
this.tagslist.Text = "12 , ??? , [667]";
|
||||
this.tagslist.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.tagslist_LinkClicked);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(28, 39);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(34, 13);
|
||||
this.label1.TabIndex = 6;
|
||||
this.label1.Text = "Tags:";
|
||||
//
|
||||
// clearalltags
|
||||
//
|
||||
this.clearalltags.Image = global::CodeImp.DoomBuilder.Properties.Resources.Clear;
|
||||
this.clearalltags.Location = new System.Drawing.Point(0, 33);
|
||||
this.clearalltags.Name = "clearalltags";
|
||||
this.clearalltags.Size = new System.Drawing.Size(24, 24);
|
||||
this.clearalltags.TabIndex = 10;
|
||||
this.tooltip.SetToolTip(this.clearalltags, "Remove all tags");
|
||||
this.clearalltags.UseVisualStyleBackColor = true;
|
||||
this.clearalltags.Click += new System.EventHandler(this.clearalltags_Click);
|
||||
//
|
||||
// TagsSelector
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.Controls.Add(this.clearalltags);
|
||||
this.Controls.Add(this.clear);
|
||||
this.Controls.Add(this.addtag);
|
||||
this.Controls.Add(this.removetag);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.tagslist);
|
||||
this.Controls.Add(this.unusedtag);
|
||||
this.Controls.Add(this.newtag);
|
||||
this.Controls.Add(this.tagpicker);
|
||||
this.Controls.Add(this.curtaglabel);
|
||||
this.Name = "TagsSelector";
|
||||
this.Size = new System.Drawing.Size(442, 60);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label curtaglabel;
|
||||
private System.Windows.Forms.ComboBox tagpicker;
|
||||
private System.Windows.Forms.Button newtag;
|
||||
private System.Windows.Forms.Button unusedtag;
|
||||
private System.Windows.Forms.ToolTip tooltip;
|
||||
private System.Windows.Forms.LinkLabel tagslist;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button removetag;
|
||||
private System.Windows.Forms.Button addtag;
|
||||
private System.Windows.Forms.Button clear;
|
||||
private System.Windows.Forms.Button clearalltags;
|
||||
}
|
||||
}
|
407
Source/Core/GZBuilder/Controls/TagsSelector.cs
Normal file
407
Source/Core/GZBuilder/Controls/TagsSelector.cs
Normal file
|
@ -0,0 +1,407 @@
|
|||
#region ================== Namespaces
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using CodeImp.DoomBuilder.Map;
|
||||
using CodeImp.DoomBuilder.Types;
|
||||
|
||||
#endregion
|
||||
|
||||
namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||
{
|
||||
public partial class TagsSelector : UserControl
|
||||
{
|
||||
#region ================== Structs
|
||||
|
||||
private struct TagLinkData
|
||||
{
|
||||
public int Index;
|
||||
public int Tag;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ================== Variables
|
||||
|
||||
private List<int> usedtags; //tags already used in the map
|
||||
private List<TagInfo> infos;
|
||||
private List<int> tags; //tags being edited
|
||||
private List<int> rangemodes; //0 - none, 1 - positive (>=), -1 - negative (<=)
|
||||
private List<int> offsetmodes; //0 - none, 1 - positive (++), -1 - negative (--)
|
||||
private UniversalType elementtype;
|
||||
private const string TAGS_SEPARATOR = ", ";
|
||||
private int curtagindex;
|
||||
private bool blockupdate;
|
||||
|
||||
#endregion
|
||||
|
||||
#region ================== Constructor
|
||||
|
||||
public TagsSelector()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ================== Setup
|
||||
|
||||
public void Setup(UniversalType mapelementtype)
|
||||
{
|
||||
tags = new List<int>();
|
||||
usedtags = new List<int>();
|
||||
rangemodes = new List<int>();
|
||||
offsetmodes = new List<int>();
|
||||
infos = new List<TagInfo>();
|
||||
elementtype = mapelementtype;
|
||||
|
||||
//collect used tags from appropriate element type...
|
||||
switch(elementtype)
|
||||
{
|
||||
case UniversalType.SectorTag:
|
||||
foreach(Sector s in General.Map.Map.Sectors)
|
||||
{
|
||||
foreach(int tag in s.Tags)
|
||||
{
|
||||
if(tag == 0 || usedtags.Contains(tag)) continue;
|
||||
usedtags.Add(tag);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case UniversalType.LinedefTag:
|
||||
if(General.Map.FormatInterface.HasLinedefTag)
|
||||
{
|
||||
foreach(Linedef l in General.Map.Map.Linedefs)
|
||||
{
|
||||
foreach(int tag in l.Tags)
|
||||
{
|
||||
if(tag == 0 || usedtags.Contains(tag)) continue;
|
||||
usedtags.Add(tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new NotSupportedException(elementtype + " doesn't support 'moreids' property!");
|
||||
}
|
||||
|
||||
//now sort them in descending order
|
||||
usedtags.Sort((a, b) => -1 * a.CompareTo(b));
|
||||
|
||||
//create tag infos
|
||||
foreach(int tag in usedtags)
|
||||
{
|
||||
if(General.Map.Options.TagLabels.ContainsKey(tag)) //tag labels
|
||||
infos.Add(new TagInfo(tag, General.Map.Options.TagLabels[tag]));
|
||||
else
|
||||
infos.Add(new TagInfo(tag, string.Empty));
|
||||
}
|
||||
|
||||
foreach(TagInfo info in infos) tagpicker.Items.Add(info);
|
||||
tagpicker.DropDownWidth = DoomBuilder.Geometry.Tools.GetDropDownWidth(tagpicker);
|
||||
}
|
||||
|
||||
// Update collections and controls
|
||||
public void FinishSetup()
|
||||
{
|
||||
if(tags.Count == 0) tags.Add(0);
|
||||
|
||||
// Initialize modifier modes
|
||||
for(int i = 0; i < tags.Count; i++)
|
||||
{
|
||||
rangemodes.Add(0);
|
||||
offsetmodes.Add(0);
|
||||
}
|
||||
|
||||
// Update controls
|
||||
UpdateTagPicker(tags[0]);
|
||||
UpdateTagsList();
|
||||
removetag.Enabled = (tags.Count > 1);
|
||||
}
|
||||
|
||||
public void SetValue(List<int> newtags, bool first)
|
||||
{
|
||||
if(first)
|
||||
{
|
||||
foreach(int tag in newtags) tags.Add(tag);
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i = 0; i < newtags.Count; i++)
|
||||
{
|
||||
if(i < tags.Count && newtags[i] != tags[i])
|
||||
tags[i] = int.MinValue;
|
||||
else if(i >= tags.Count)
|
||||
tags.Add(int.MinValue);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ================== Apply
|
||||
|
||||
public void ApplyTo(Linedef mo, int offset)
|
||||
{
|
||||
int[] oldtags = new int[mo.Tags.Count];
|
||||
mo.Tags.CopyTo(oldtags);
|
||||
mo.Tags.Clear();
|
||||
mo.Tags.AddRange(GetResultTags(oldtags, offset));
|
||||
}
|
||||
|
||||
public void ApplyTo(Sector mo, int offset)
|
||||
{
|
||||
int[] oldtags = new int[mo.Tags.Count];
|
||||
mo.Tags.CopyTo(oldtags);
|
||||
mo.Tags.Clear();
|
||||
mo.Tags.AddRange(GetResultTags(oldtags, offset));
|
||||
}
|
||||
|
||||
private IEnumerable<int> GetResultTags(int[] oldtags, int offset)
|
||||
{
|
||||
Dictionary<int, bool> newtags = new Dictionary<int, bool>();
|
||||
|
||||
for(int i = 0; i < tags.Count; i++)
|
||||
{
|
||||
if(tags[i] == int.MinValue && oldtags.Length > i)
|
||||
{
|
||||
if(!newtags.ContainsKey(oldtags[i])) newtags.Add(oldtags[i], false);
|
||||
}
|
||||
else if(tags[i] != 0 && tags[i] != int.MinValue)
|
||||
{
|
||||
int tag;
|
||||
if(rangemodes[i] != 0)
|
||||
tag = tags[i] + offset * rangemodes[i];
|
||||
else if(offsetmodes[i] != 0 && oldtags.Length > i)
|
||||
tag = oldtags[i] + tags[i] * offsetmodes[i];
|
||||
else
|
||||
tag = tags[i];
|
||||
|
||||
if(!newtags.ContainsKey(tag)) newtags.Add(tag, false);
|
||||
}
|
||||
}
|
||||
|
||||
if(newtags.Count == 0) newtags.Add(0, false);
|
||||
return newtags.Keys;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ================== Methods
|
||||
|
||||
private void UpdateTagsList()
|
||||
{
|
||||
string[] displaytags = new string[tags.Count];
|
||||
int displaytagslen = 0;
|
||||
tagslist.Links.Clear();
|
||||
|
||||
// Gather tags into a single string collection
|
||||
for(int i = 0; i < tags.Count; i++)
|
||||
{
|
||||
displaytags[i] = (tags[i] == int.MinValue ? "???" : tags[i].ToString());
|
||||
|
||||
// Add modify mode markers
|
||||
if(offsetmodes[i] == -1) displaytags[i] = "--" + displaytags[i];
|
||||
else if(offsetmodes[i] == 1) displaytags[i] = "++" + displaytags[i];
|
||||
else if(rangemodes[i] == -1) displaytags[i] = "<=" + displaytags[i];
|
||||
else if(rangemodes[i] == 1) displaytags[i] = ">=" + displaytags[i];
|
||||
|
||||
// Add selection indictor
|
||||
if(curtagindex == i) displaytags[i] = "[" + displaytags[i] + "]";
|
||||
else displaytags[i] = " " + displaytags[i] + " ";
|
||||
|
||||
int start = displaytagslen + i * TAGS_SEPARATOR.Length;
|
||||
tagslist.Links.Add(new LinkLabel.Link(start, displaytags[i].Length, new TagLinkData { Index = i, Tag = tags[i] }));
|
||||
displaytagslen += displaytags[i].Length;
|
||||
}
|
||||
|
||||
// Create label text
|
||||
tagslist.Text = string.Join(TAGS_SEPARATOR, displaytags);
|
||||
|
||||
// Update current tag label
|
||||
curtaglabel.Text = "Tag " + (curtagindex + 1) + ":";
|
||||
}
|
||||
|
||||
private void UpdateTagPicker(int tag)
|
||||
{
|
||||
blockupdate = true;
|
||||
|
||||
tagpicker.SelectedIndex = -1;
|
||||
|
||||
if(tag == int.MinValue)
|
||||
{
|
||||
tagpicker.Text = string.Empty;
|
||||
}
|
||||
else if(rangemodes[curtagindex] != 0 && tag != 0)
|
||||
{
|
||||
tagpicker.Text = (rangemodes[curtagindex] == 1 ? ">=" : "<=") + tag;
|
||||
}
|
||||
else if(offsetmodes[curtagindex] != 0 && tag != 0)
|
||||
{
|
||||
tagpicker.Text = (offsetmodes[curtagindex] == 1 ? "++" : "--") + tag;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach(var item in tagpicker.Items)
|
||||
if(((TagInfo)item).Tag == tag) tagpicker.SelectedItem = item;
|
||||
|
||||
if(tagpicker.SelectedIndex == -1) tagpicker.Text = tag.ToString();
|
||||
}
|
||||
|
||||
blockupdate = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ================== Events
|
||||
|
||||
private void newtag_Click(object sender, EventArgs e)
|
||||
{
|
||||
tagpicker.SelectedIndex = -1;
|
||||
tagpicker.Text = General.Map.Map.GetNewTag().ToString();
|
||||
}
|
||||
|
||||
private void unusedtag_Click(object sender, EventArgs e)
|
||||
{
|
||||
tagpicker.SelectedIndex = -1;
|
||||
tagpicker.Text = General.Map.Map.GetNewTag(elementtype).ToString();
|
||||
}
|
||||
|
||||
private void clear_Click(object sender, EventArgs e)
|
||||
{
|
||||
tagpicker.SelectedIndex = -1;
|
||||
tagpicker.Text = "0";
|
||||
}
|
||||
|
||||
private void addtag_Click(object sender, EventArgs e)
|
||||
{
|
||||
int nt = General.Map.Map.GetNewTag(tags);
|
||||
tags.Add(nt);
|
||||
rangemodes.Add(0);
|
||||
offsetmodes.Add(0);
|
||||
curtagindex = tags.Count - 1;
|
||||
|
||||
// Update controls
|
||||
blockupdate = true;
|
||||
tagpicker.Text = nt.ToString();
|
||||
blockupdate = false;
|
||||
|
||||
removetag.Enabled = true;
|
||||
UpdateTagsList();
|
||||
}
|
||||
|
||||
private void removetag_Click(object sender, EventArgs e)
|
||||
{
|
||||
tags.RemoveAt(curtagindex);
|
||||
rangemodes.RemoveAt(curtagindex);
|
||||
offsetmodes.RemoveAt(curtagindex);
|
||||
if(curtagindex >= tags.Count) curtagindex = tags.Count - 1;
|
||||
|
||||
// Update controls
|
||||
UpdateTagPicker(tags[curtagindex]);
|
||||
|
||||
removetag.Enabled = (tags.Count > 1);
|
||||
UpdateTagsList();
|
||||
}
|
||||
|
||||
private void clearalltags_Click(object sender, EventArgs e)
|
||||
{
|
||||
curtagindex = 0;
|
||||
|
||||
// Clear collections
|
||||
tags.Clear();
|
||||
tags.Add(0);
|
||||
rangemodes.Clear();
|
||||
rangemodes.Add(0);
|
||||
offsetmodes.Clear();
|
||||
offsetmodes.Add(0);
|
||||
|
||||
// Update controls
|
||||
blockupdate = true;
|
||||
tagpicker.Text = "0";
|
||||
blockupdate = false;
|
||||
|
||||
removetag.Enabled = false;
|
||||
UpdateTagsList();
|
||||
}
|
||||
|
||||
private void tagslist_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
TagLinkData data = (TagLinkData)e.Link.LinkData;
|
||||
curtagindex = data.Index;
|
||||
curtaglabel.Text = "Tag " + (curtagindex + 1) + ":";
|
||||
|
||||
// Update interface
|
||||
UpdateTagPicker(data.Tag);
|
||||
UpdateTagsList();
|
||||
}
|
||||
|
||||
private void tagpicker_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if(blockupdate) return;
|
||||
|
||||
if(tagpicker.SelectedItem != null)
|
||||
{
|
||||
TagInfo info = (TagInfo)tagpicker.SelectedItem;
|
||||
tags[curtagindex] = info.Tag;
|
||||
UpdateTagsList();
|
||||
return;
|
||||
}
|
||||
|
||||
string text = tagpicker.Text.Trim();
|
||||
if(string.IsNullOrEmpty(text))
|
||||
{
|
||||
tags[curtagindex] = int.MinValue;
|
||||
UpdateTagsList();
|
||||
return;
|
||||
}
|
||||
|
||||
//incremental?
|
||||
int rangemode = 0;
|
||||
int offsetmode = 0;
|
||||
if(text.Length > 2)
|
||||
{
|
||||
if(text.StartsWith(">=")) //range up
|
||||
{
|
||||
rangemode = 1;
|
||||
text = text.Substring(2, text.Length - 2);
|
||||
}
|
||||
else if(text.StartsWith("<=")) //range down
|
||||
{
|
||||
rangemode = -1;
|
||||
text = text.Substring(2, text.Length - 2);
|
||||
}
|
||||
else if(text.StartsWith("++")) //relative up
|
||||
{
|
||||
offsetmode = 1;
|
||||
text = text.Substring(2, text.Length - 2);
|
||||
}
|
||||
else if(text.StartsWith("--")) //relative down
|
||||
{
|
||||
offsetmode = -1;
|
||||
text = text.Substring(2, text.Length - 2);
|
||||
}
|
||||
}
|
||||
|
||||
int tag;
|
||||
if(int.TryParse(text, out tag))
|
||||
{
|
||||
// Validate entered tag
|
||||
if((tag < General.Map.FormatInterface.MinTag) || (tag > General.Map.FormatInterface.MaxTag))
|
||||
{
|
||||
General.ShowWarningMessage("Sector tag must be between " + General.Map.FormatInterface.MinTag + " and " + General.Map.FormatInterface.MaxTag + ".", MessageBoxButtons.OK);
|
||||
return;
|
||||
}
|
||||
|
||||
tags[curtagindex] = tag;
|
||||
rangemodes[curtagindex] = rangemode;
|
||||
offsetmodes[curtagindex] = offsetmode;
|
||||
UpdateTagsList();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
129
Source/Core/GZBuilder/Controls/TagsSelector.resx
Normal file
129
Source/Core/GZBuilder/Controls/TagsSelector.resx
Normal file
|
@ -0,0 +1,129 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
|
@ -110,11 +110,16 @@ namespace CodeImp.DoomBuilder.IO
|
|||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
int tag = reader.ReadInt32();
|
||||
int effect = reader.ReadInt32();
|
||||
int hfloor = reader.ReadInt32();
|
||||
int hceil = reader.ReadInt32();
|
||||
int bright = reader.ReadInt32();
|
||||
|
||||
//mxd. Tags
|
||||
int numtags = reader.ReadInt32(); //mxd
|
||||
List<int> tags = new List<int>(numtags); //mxd
|
||||
for(int a = 0; a < numtags; a++) tags.Add(reader.ReadInt32()); //mxd
|
||||
|
||||
string tfloor = ReadString(reader);
|
||||
string tceil = ReadString(reader);
|
||||
|
||||
|
@ -141,7 +146,7 @@ namespace CodeImp.DoomBuilder.IO
|
|||
Sector s = map.CreateSector();
|
||||
if(s != null)
|
||||
{
|
||||
s.Update(hfloor, hceil, tfloor, tceil, effect, stringflags, tag, bright, foffset, fslope, coffset, cslope);
|
||||
s.Update(hfloor, hceil, tfloor, tceil, effect, stringflags, tags, bright, foffset, fslope, coffset, cslope);
|
||||
|
||||
// Add custom fields
|
||||
s.Fields.BeforeFieldsChange();
|
||||
|
@ -169,13 +174,15 @@ namespace CodeImp.DoomBuilder.IO
|
|||
for(int i = 0; i < count; i++)
|
||||
{
|
||||
int[] args = new int[Linedef.NUM_ARGS];
|
||||
int tag = reader.ReadInt32();
|
||||
int v1 = reader.ReadInt32();
|
||||
int v2 = reader.ReadInt32();
|
||||
int s1 = reader.ReadInt32();
|
||||
int s2 = reader.ReadInt32();
|
||||
int special = reader.ReadInt32();
|
||||
for(int a = 0; a < Linedef.NUM_ARGS; a++) args[a] = reader.ReadInt32();
|
||||
int numtags = reader.ReadInt32(); //mxd
|
||||
List<int> tags = new List<int>(numtags); //mxd
|
||||
for(int a = 0; a < numtags; a++) tags.Add(reader.ReadInt32()); //mxd
|
||||
|
||||
//flags
|
||||
Dictionary<string, bool> stringflags = new Dictionary<string, bool>(StringComparer.Ordinal);
|
||||
|
@ -206,7 +213,7 @@ namespace CodeImp.DoomBuilder.IO
|
|||
Linedef l = map.CreateLinedef(vertexlink[v1], vertexlink[v2]);
|
||||
if (l != null)
|
||||
{
|
||||
l.Update(stringflags, 0, tag, special, args);
|
||||
l.Update(stringflags, 0, tags, special, args);
|
||||
l.UpdateCache();
|
||||
|
||||
// Add custom fields
|
||||
|
|
|
@ -139,7 +139,6 @@ namespace CodeImp.DoomBuilder.IO
|
|||
foreach(Linedef l in linedefs)
|
||||
{
|
||||
//write "static" properties
|
||||
writer.Write(l.Tag);
|
||||
writer.Write(vertexids[l.Start]);
|
||||
writer.Write(vertexids[l.End]);
|
||||
|
||||
|
@ -151,6 +150,10 @@ namespace CodeImp.DoomBuilder.IO
|
|||
writer.Write(l.Action);
|
||||
for(int i = 0; i < l.Args.Length; i++) writer.Write(l.Args[i]);
|
||||
|
||||
//mxd. Tags
|
||||
writer.Write(l.Tags.Count);
|
||||
for(int i = 0; i < l.Tags.Count; i++) writer.Write(l.Tags[i]);
|
||||
|
||||
AddFlags(l.Flags, writer);
|
||||
AddCustomFields(l.Fields, "linedef", writer);
|
||||
}
|
||||
|
@ -191,12 +194,15 @@ namespace CodeImp.DoomBuilder.IO
|
|||
foreach(Sector s in sectors)
|
||||
{
|
||||
//write "static" properties
|
||||
writer.Write(s.Tag);
|
||||
writer.Write(s.Effect);
|
||||
writer.Write(s.FloorHeight);
|
||||
writer.Write(s.CeilHeight);
|
||||
writer.Write(s.Brightness);
|
||||
|
||||
//mxd. Tags
|
||||
writer.Write(s.Tags.Count);
|
||||
for(int i = 0; i < s.Tags.Count; i++) writer.Write(s.Tags[i]);
|
||||
|
||||
//textures
|
||||
writer.Write(s.FloorTexture.Length);
|
||||
writer.Write(s.FloorTexture.ToCharArray());
|
||||
|
|
|
@ -283,7 +283,7 @@ namespace CodeImp.DoomBuilder.IO
|
|||
if(Vector2D.ManhattanDistance(vertexlink[v1].Position, vertexlink[v2].Position) > 0.0001f)
|
||||
{
|
||||
Linedef l = map.CreateLinedef(vertexlink[v1], vertexlink[v2]);
|
||||
l.Update(stringflags, 0, tag, action, new int[Linedef.NUM_ARGS]);
|
||||
l.Update(stringflags, 0, new List<int> { tag }, action, new int[Linedef.NUM_ARGS]);
|
||||
l.UpdateCache();
|
||||
|
||||
string thigh, tmid, tlow;
|
||||
|
|
|
@ -299,7 +299,7 @@ namespace CodeImp.DoomBuilder.IO
|
|||
if(Vector2D.ManhattanDistance(vertexlink[v1].Position, vertexlink[v2].Position) > 0.0001f)
|
||||
{
|
||||
Linedef l = map.CreateLinedef(vertexlink[v1], vertexlink[v2]);
|
||||
l.Update(stringflags, (flags & manager.Config.LinedefActivationsFilter), 0, action, args);
|
||||
l.Update(stringflags, (flags & manager.Config.LinedefActivationsFilter), new List<int> { 0 }, action, args);
|
||||
l.UpdateCache();
|
||||
|
||||
Sidedef s;
|
||||
|
|
|
@ -246,6 +246,7 @@ namespace CodeImp.DoomBuilder.IO
|
|||
|
||||
// Go for all lines
|
||||
map.SetCapacity(0, map.Linedefs.Count + linescolls.Count, map.Sidedefs.Count + sidescolls.Count, 0, 0);
|
||||
char[] splitter = new[] { ',' }; //mxd
|
||||
for(int i = 0; i < linescolls.Count; i++)
|
||||
{
|
||||
// Read fields
|
||||
|
@ -270,6 +271,22 @@ namespace CodeImp.DoomBuilder.IO
|
|||
int s1 = GetCollectionEntry(lc, "sidefront", true, -1, where);
|
||||
int s2 = GetCollectionEntry(lc, "sideback", false, -1, where);
|
||||
|
||||
//mxd. MoreIDs
|
||||
List<int> tags = new List<int> { tag };
|
||||
string moreids = GetCollectionEntry(lc, "moreids", false, string.Empty, where);
|
||||
if(!string.IsNullOrEmpty(moreids))
|
||||
{
|
||||
string[] moreidscol = moreids.Split(splitter, StringSplitOptions.RemoveEmptyEntries);
|
||||
int id;
|
||||
foreach (string sid in moreidscol)
|
||||
{
|
||||
if(int.TryParse(sid.Trim(), out id) && id != 0 && !tags.Contains(id))
|
||||
{
|
||||
tags.Add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Flags
|
||||
Dictionary<string, bool> stringflags = new Dictionary<string, bool>(StringComparer.Ordinal);
|
||||
foreach(KeyValuePair<string, string> flag in General.Map.Config.LinedefFlags)
|
||||
|
@ -291,7 +308,7 @@ namespace CodeImp.DoomBuilder.IO
|
|||
Linedef l = map.CreateLinedef(vertexlink[v1], vertexlink[v2]);
|
||||
if(l != null)
|
||||
{
|
||||
l.Update(stringflags, 0, tag, special, args);
|
||||
l.Update(stringflags, 0, tags, special, args);
|
||||
l.UpdateCache();
|
||||
|
||||
// Custom fields
|
||||
|
@ -369,6 +386,7 @@ namespace CodeImp.DoomBuilder.IO
|
|||
|
||||
// Go for all collections
|
||||
map.SetCapacity(0, 0, 0, map.Sectors.Count + collections.Count, 0);
|
||||
char[] splitter = new[] { ',' }; //mxd
|
||||
for(int i = 0; i < collections.Count; i++)
|
||||
{
|
||||
// Read fields
|
||||
|
@ -382,6 +400,22 @@ namespace CodeImp.DoomBuilder.IO
|
|||
int special = GetCollectionEntry(c, "special", false, 0, where);
|
||||
int tag = GetCollectionEntry(c, "id", false, 0, where);
|
||||
|
||||
//mxd. MoreIDs
|
||||
List<int> tags = new List<int> { tag };
|
||||
string moreids = GetCollectionEntry(c, "moreids", false, string.Empty, where);
|
||||
if(!string.IsNullOrEmpty(moreids))
|
||||
{
|
||||
string[] moreidscol = moreids.Split(splitter, StringSplitOptions.RemoveEmptyEntries);
|
||||
int id;
|
||||
foreach(string sid in moreidscol)
|
||||
{
|
||||
if(int.TryParse(sid.Trim(), out id) && id != 0 && !tags.Contains(id))
|
||||
{
|
||||
tags.Add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//mxd. Read slopes
|
||||
float fslopex = GetCollectionEntry(c, "floorplane_a", false, 0.0f, where);
|
||||
float fslopey = GetCollectionEntry(c, "floorplane_b", false, 0.0f, where);
|
||||
|
@ -402,7 +436,7 @@ namespace CodeImp.DoomBuilder.IO
|
|||
Sector s = map.CreateSector();
|
||||
if(s != null)
|
||||
{
|
||||
s.Update(hfloor, hceil, tfloor, tceil, special, stringflags, tag, bright, foffset, new Vector3D(fslopex, fslopey, fslopez).GetNormal(), coffset, new Vector3D(cslopex, cslopey, cslopez).GetNormal());
|
||||
s.Update(hfloor, hceil, tfloor, tceil, special, stringflags, tags, bright, foffset, new Vector3D(fslopex, fslopey, fslopez).GetNormal(), coffset, new Vector3D(cslopex, cslopey, cslopez).GetNormal());
|
||||
|
||||
// Custom fields
|
||||
ReadCustomFields(c, s, "sector");
|
||||
|
|
|
@ -193,6 +193,17 @@ namespace CodeImp.DoomBuilder.IO
|
|||
coll.Add("v1", vertexids[l.Start]);
|
||||
coll.Add("v2", vertexids[l.End]);
|
||||
coll.Comment = l.Index.ToString();
|
||||
|
||||
//mxd. MoreIDs
|
||||
if(l.Tags.Count > 1) //first entry is saved as "id"
|
||||
{
|
||||
string[] moreidscol = new string[l.Tags.Count - 1];
|
||||
for(int i = 1; i < l.Tags.Count; i++)
|
||||
{
|
||||
moreidscol[i - 1] = l.Tags[i].ToString();
|
||||
}
|
||||
coll.Add("moreids", string.Join(",", moreidscol));
|
||||
}
|
||||
|
||||
// Sidedef references
|
||||
if((l.Front != null) && sidedefids.ContainsKey(l.Front))
|
||||
|
@ -270,6 +281,17 @@ namespace CodeImp.DoomBuilder.IO
|
|||
if(s.Tag != 0) coll.Add("id", s.Tag);
|
||||
coll.Comment = s.Index.ToString();
|
||||
|
||||
//mxd. MoreIDs
|
||||
if(s.Tags.Count > 1) //first entry is saved as "id"
|
||||
{
|
||||
string[] moreidscol = new string[s.Tags.Count - 1];
|
||||
for(int i = 1; i < s.Tags.Count; i++)
|
||||
{
|
||||
moreidscol[i - 1] = s.Tags[i].ToString();
|
||||
}
|
||||
coll.Add("moreids", string.Join(",", moreidscol));
|
||||
}
|
||||
|
||||
//mxd. Slopes
|
||||
if (s.FloorSlope.GetLengthSq() > 0)
|
||||
{
|
||||
|
|
|
@ -70,7 +70,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
private Dictionary<string, bool> flags;
|
||||
private int action;
|
||||
private int activate;
|
||||
private int tag;
|
||||
private List<int> tags; //mxd
|
||||
private int[] args;
|
||||
private bool frontinterior; // for drawing only
|
||||
private int colorPresetIndex;//mxd
|
||||
|
@ -92,7 +92,8 @@ namespace CodeImp.DoomBuilder.Map
|
|||
public int Action { get { return action; } set { BeforePropsChange(); action = value; UpdateColorPreset(); } }
|
||||
public int Activate { get { return activate; } set { BeforePropsChange(); activate = value; UpdateColorPreset(); } }
|
||||
|
||||
public int Tag { get { return tag; } set { BeforePropsChange(); tag = value; if((tag < General.Map.FormatInterface.MinTag) || (tag > General.Map.FormatInterface.MaxTag)) throw new ArgumentOutOfRangeException("Tag", "Invalid tag number"); } }
|
||||
public int Tag { get { return tags[0]; } set { BeforePropsChange(); tags[0] = value; if((value < General.Map.FormatInterface.MinTag) || (value > General.Map.FormatInterface.MaxTag)) throw new ArgumentOutOfRangeException("Tag", "Invalid tag number"); } } //mxd
|
||||
public List<int> Tags { get { return tags; } } //mxd
|
||||
public float LengthSq { get { return lengthsq; } }
|
||||
public float Length { get { return length; } }
|
||||
public float LengthInv { get { return lengthinv; } }
|
||||
|
@ -118,6 +119,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
this.listindex = listindex;
|
||||
this.updateneeded = true;
|
||||
this.args = new int[NUM_ARGS];
|
||||
this.tags = new List<int> { 0 }; //mxd
|
||||
this.flags = new Dictionary<string, bool>(StringComparer.Ordinal);
|
||||
this.colorPresetIndex = -1;//mxd
|
||||
|
||||
|
@ -220,7 +222,24 @@ namespace CodeImp.DoomBuilder.Map
|
|||
|
||||
s.rwInt(ref action);
|
||||
s.rwInt(ref activate);
|
||||
s.rwInt(ref tag);
|
||||
|
||||
//mxd
|
||||
if(s.IsWriting)
|
||||
{
|
||||
s.wInt(tags.Count);
|
||||
foreach (int tag in tags) s.wInt(tag);
|
||||
}
|
||||
else
|
||||
{
|
||||
int c; s.rInt(out c);
|
||||
tags = new List<int>(c);
|
||||
for(int i = 0; i < c; i++)
|
||||
{
|
||||
int t; s.rInt(out t);
|
||||
tags.Add(t);
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < NUM_ARGS; i++) s.rwInt(ref args[i]);
|
||||
|
||||
//mxd
|
||||
|
@ -283,7 +302,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
l.action = action;
|
||||
l.args = (int[])args.Clone();
|
||||
l.flags = new Dictionary<string, bool>(flags);
|
||||
l.tag = tag;
|
||||
l.tags = new List<int>(tags); //mxd
|
||||
l.updateneeded = true;
|
||||
l.activate = activate;
|
||||
l.impassableflag = impassableflag;
|
||||
|
@ -438,7 +457,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
{
|
||||
case 121: //Line_SetIdentification
|
||||
//Convert arg0 to tag
|
||||
tag = args[0] + args[4] * 256;
|
||||
tags[0] = args[0] + args[4] * 256;
|
||||
|
||||
//Convert arg1 to flags
|
||||
ConvertArgToFlags(1);
|
||||
|
@ -450,7 +469,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
|
||||
case 208: //TranslucentLine
|
||||
//Convert arg0 to tag
|
||||
tag = args[0];
|
||||
tags[0] = args[0];
|
||||
|
||||
//Convert arg3 to flags
|
||||
ConvertArgToFlags(3);
|
||||
|
@ -466,7 +485,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
// Convert to UDMF
|
||||
if ((args[1] & 8) == 8) // arg4 is LineID?
|
||||
{
|
||||
tag = args[4];
|
||||
tags[0] = args[4];
|
||||
args[1] &= ~8; // Unset flag
|
||||
}
|
||||
else // It's sector's HiTag then
|
||||
|
@ -569,13 +588,13 @@ namespace CodeImp.DoomBuilder.Map
|
|||
{
|
||||
case 208: //TranslucentLine
|
||||
//Convert tag to arg0
|
||||
if(tag < General.Map.FormatInterface.MinArgument || tag > General.Map.FormatInterface.MaxArgument)
|
||||
if(tags[0] < General.Map.FormatInterface.MinArgument || tags[0] > General.Map.FormatInterface.MaxArgument)
|
||||
{
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tag + ") to LineID because it's outside of supported argument range [" + General.Map.FormatInterface.MinArgument + ".." + General.Map.FormatInterface.MaxArgument + "].");
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tags[0] + ") to LineID because it's outside of supported argument range [" + General.Map.FormatInterface.MinArgument + ".." + General.Map.FormatInterface.MaxArgument + "].");
|
||||
}
|
||||
else
|
||||
{
|
||||
args[0] = tag;
|
||||
args[0] = tags[0];
|
||||
}
|
||||
|
||||
//Convert flags to arg3
|
||||
|
@ -597,40 +616,40 @@ namespace CodeImp.DoomBuilder.Map
|
|||
args[0] = lotag;
|
||||
args[4] = hitag;
|
||||
|
||||
if (tag != 0)
|
||||
if(tags[0] != 0)
|
||||
{
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tag + ") to LineID, because target sector tag (arg0) is greater than " + General.Map.FormatInterface.MaxArgument + ".");
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tags[0] + ") to LineID, because target sector tag (arg0) is greater than " + General.Map.FormatInterface.MaxArgument + ".");
|
||||
}
|
||||
}
|
||||
else if(args[0] < General.Map.FormatInterface.MinArgument)
|
||||
{
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert arg0 (" + args[0] + "), because it's outside of supported argument range [" + General.Map.FormatInterface.MinArgument + ".." + General.Map.FormatInterface.MaxArgument + "].");
|
||||
}
|
||||
else if(tag > General.Map.FormatInterface.MinArgument) // Convert to LineID?
|
||||
else if(tags[0] > General.Map.FormatInterface.MinArgument) // Convert to LineID?
|
||||
{
|
||||
if(tag > General.Map.FormatInterface.MaxArgument)
|
||||
if(tags[0] > General.Map.FormatInterface.MaxArgument)
|
||||
{
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tag + ") to LineID, because linedef tag is greater than " + General.Map.FormatInterface.MaxArgument + ".");
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tags[0] + ") to LineID, because linedef tag is greater than " + General.Map.FormatInterface.MaxArgument + ".");
|
||||
}
|
||||
else
|
||||
{
|
||||
args[4] = tag;
|
||||
args[4] = tags[0];
|
||||
args[1] |= 8; // Add "Use arg4 as LineID" flag
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default: // Convert tag to Line_SetIdentification?
|
||||
if(tag > General.Map.FormatInterface.MinArgument)
|
||||
if(tags[0] > General.Map.FormatInterface.MinArgument)
|
||||
{
|
||||
if (action != 0)
|
||||
{
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tag + ") to LineID, because linedef already has an action.");
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tags[0] + ") to LineID, because linedef already has an action.");
|
||||
}
|
||||
else // Convert to Line_SetIdentification
|
||||
{
|
||||
int hiid = tag / 256;
|
||||
int loid = tag - hiid;
|
||||
int hiid = tags[0] / 256;
|
||||
int loid = tags[0] - hiid;
|
||||
|
||||
action = 121;
|
||||
args[0] = loid;
|
||||
|
@ -638,15 +657,15 @@ namespace CodeImp.DoomBuilder.Map
|
|||
ConvertFlagsToArg(oldfields, 1);
|
||||
}
|
||||
}
|
||||
else if(tag < General.Map.FormatInterface.MinArgument)
|
||||
else if(tags[0] < General.Map.FormatInterface.MinArgument)
|
||||
{
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tag + ") to LineID, because it's outside of supported argument range [" + General.Map.FormatInterface.MinArgument + ".." + General.Map.FormatInterface.MaxArgument + "].");
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tags[0] + ") to LineID, because it's outside of supported argument range [" + General.Map.FormatInterface.MinArgument + ".." + General.Map.FormatInterface.MaxArgument + "].");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Clear tag
|
||||
tag = 0;
|
||||
tags[0] = 0;
|
||||
}
|
||||
|
||||
//mxd. Update cached flags
|
||||
|
@ -660,7 +679,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
private void ConvertArgToTag(int argnum, bool cleararg)
|
||||
{
|
||||
// Convert arg to tag
|
||||
tag = args[argnum];
|
||||
tags[0] = args[argnum];
|
||||
|
||||
// Clear obsolete arg
|
||||
if(cleararg) args[argnum] = 0;
|
||||
|
@ -669,13 +688,13 @@ namespace CodeImp.DoomBuilder.Map
|
|||
//mxd
|
||||
private void ConvertTagToArg(int argnum)
|
||||
{
|
||||
if(tag < General.Map.FormatInterface.MinArgument || tag > General.Map.FormatInterface.MaxArgument)
|
||||
if(tags[0] < General.Map.FormatInterface.MinArgument || tags[0] > General.Map.FormatInterface.MaxArgument)
|
||||
{
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tag + ") to LineID because it's outside of supported argument range [" + General.Map.FormatInterface.MinArgument + ".." + General.Map.FormatInterface.MaxArgument + "].");
|
||||
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + Index + ": unable to convert Tag (" + tags[0] + ") to LineID because it's outside of supported argument range [" + General.Map.FormatInterface.MinArgument + ".." + General.Map.FormatInterface.MaxArgument + "].");
|
||||
}
|
||||
else
|
||||
{
|
||||
args[argnum] = tag;
|
||||
args[argnum] = tags[0];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1275,13 +1294,13 @@ namespace CodeImp.DoomBuilder.Map
|
|||
#region ================== Changes
|
||||
|
||||
// This updates all properties
|
||||
public void Update(Dictionary<string, bool> flags, int activate, int tag, int action, int[] args)
|
||||
public void Update(Dictionary<string, bool> flags, int activate, List<int> tags, int action, int[] args)
|
||||
{
|
||||
BeforePropsChange();
|
||||
|
||||
// Apply changes
|
||||
this.flags = new Dictionary<string, bool>(flags);
|
||||
this.tag = tag;
|
||||
this.tags = new List<int>(tags); //mxd
|
||||
this.activate = activate;
|
||||
this.action = action;
|
||||
this.args = new int[NUM_ARGS];
|
||||
|
|
|
@ -2801,6 +2801,23 @@ namespace CodeImp.DoomBuilder.Map
|
|||
return 0;
|
||||
}
|
||||
|
||||
//mxd
|
||||
/// <summary>This returns the next unused tag number.</summary>
|
||||
public int GetNewTag(List<int> moreusedtags)
|
||||
{
|
||||
Dictionary<int, bool> usedtags = new Dictionary<int, bool>();
|
||||
foreach(int t in moreusedtags) if(!usedtags.ContainsKey(t)) usedtags.Add(t, true);
|
||||
ForAllTags(NewTagHandler, false, usedtags);
|
||||
ForAllTags(NewTagHandler, true, usedtags);
|
||||
|
||||
// Now find the first unused index
|
||||
for(int i = 1; i <= General.Map.FormatInterface.MaxTag; i++)
|
||||
if(!usedtags.ContainsKey(i)) return i;
|
||||
|
||||
// All tags used!
|
||||
return 0;
|
||||
}
|
||||
|
||||
//mxd
|
||||
/// <summary>This returns the tag number, which is not used by any map element of given type. This method doesn't check action arguments!</summary>
|
||||
public int GetNewTag(UniversalType elementType)
|
||||
|
|
|
@ -57,7 +57,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
private long longfloortexname;
|
||||
private long longceiltexname;
|
||||
private int effect;
|
||||
private int tag;
|
||||
private List<int> tags; //mxd
|
||||
private int brightness;
|
||||
|
||||
//mxd. UDMF properties
|
||||
|
@ -106,7 +106,8 @@ namespace CodeImp.DoomBuilder.Map
|
|||
public long LongCeilTexture { get { return longceiltexname; } }
|
||||
internal Dictionary<string, bool> Flags { get { return flags; } } //mxd
|
||||
public int Effect { get { return effect; } set { BeforePropsChange(); effect = value; } }
|
||||
public int Tag { get { return tag; } set { BeforePropsChange(); tag = value; if((tag < General.Map.FormatInterface.MinTag) || (tag > General.Map.FormatInterface.MaxTag)) throw new ArgumentOutOfRangeException("Tag", "Invalid tag number"); } }
|
||||
public int Tag { get { return tags[0]; } set { BeforePropsChange(); tags[0] = value; if((value < General.Map.FormatInterface.MinTag) || (value > General.Map.FormatInterface.MaxTag)) throw new ArgumentOutOfRangeException("Tag", "Invalid tag number"); } } //mxd
|
||||
public List<int> Tags { get { return tags; } } //mxd
|
||||
public int Brightness { get { return brightness; } set { BeforePropsChange(); brightness = value; updateneeded = true; } }
|
||||
public bool UpdateNeeded { get { return updateneeded; } set { updateneeded |= value; triangulationneeded |= value; } }
|
||||
public RectangleF BBox { get { return bbox; } }
|
||||
|
@ -144,6 +145,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
this.longfloortexname = MapSet.EmptyLongName;
|
||||
this.longceiltexname = MapSet.EmptyLongName;
|
||||
this.flags = new Dictionary<string, bool>(StringComparer.Ordinal); //mxd
|
||||
this.tags = new List<int> { 0 }; //mxd
|
||||
this.updateneeded = true;
|
||||
this.triangulationneeded = true;
|
||||
this.surfaceentries = new SurfaceEntryCollection();
|
||||
|
@ -246,9 +248,27 @@ namespace CodeImp.DoomBuilder.Map
|
|||
s.rwLong(ref longfloortexname);
|
||||
s.rwLong(ref longceiltexname);
|
||||
s.rwInt(ref effect);
|
||||
s.rwInt(ref tag);
|
||||
s.rwInt(ref brightness);
|
||||
|
||||
//mxd. (Re)store tags
|
||||
if(s.IsWriting)
|
||||
{
|
||||
s.wInt(tags.Count);
|
||||
foreach(int tag in tags) s.wInt(tag);
|
||||
}
|
||||
else
|
||||
{
|
||||
int c;
|
||||
s.rInt(out c);
|
||||
tags = new List<int>(c);
|
||||
for(int i = 0; i < c; i++)
|
||||
{
|
||||
int t;
|
||||
s.rInt(out t);
|
||||
tags.Add(t);
|
||||
}
|
||||
}
|
||||
|
||||
//mxd. Slopes
|
||||
s.rwFloat(ref flooroffset);
|
||||
s.rwVector3D(ref floorslope);
|
||||
|
@ -277,7 +297,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
s.floortexname = floortexname;
|
||||
s.longfloortexname = longfloortexname;
|
||||
s.effect = effect;
|
||||
s.tag = tag;
|
||||
s.tags = new List<int>(tags); //mxd
|
||||
s.flags = new Dictionary<string, bool>(flags); //mxd
|
||||
s.brightness = brightness;
|
||||
s.flooroffset = flooroffset; //mxd
|
||||
|
@ -769,11 +789,11 @@ namespace CodeImp.DoomBuilder.Map
|
|||
//mxd. This updates all properties (Doom/Hexen version)
|
||||
public void Update(int hfloor, int hceil, string tfloor, string tceil, int effect, int tag, int brightness)
|
||||
{
|
||||
Update(hfloor, hceil, tfloor, tceil, effect, new Dictionary<string, bool>(StringComparer.Ordinal), tag, brightness, 0, new Vector3D(), 0, new Vector3D());
|
||||
Update(hfloor, hceil, tfloor, tceil, effect, new Dictionary<string, bool>(StringComparer.Ordinal), new List<int> { tag }, brightness, 0, new Vector3D(), 0, new Vector3D());
|
||||
}
|
||||
|
||||
//mxd. This updates all properties (UDMF version)
|
||||
public void Update(int hfloor, int hceil, string tfloor, string tceil, int effect, Dictionary<string, bool> flags, int tag, int brightness, float flooroffset, Vector3D floorslope, float ceiloffset, Vector3D ceilslope)
|
||||
public void Update(int hfloor, int hceil, string tfloor, string tceil, int effect, Dictionary<string, bool> flags, List<int> tags, int brightness, float flooroffset, Vector3D floorslope, float ceiloffset, Vector3D ceilslope)
|
||||
{
|
||||
BeforePropsChange();
|
||||
|
||||
|
@ -783,7 +803,7 @@ namespace CodeImp.DoomBuilder.Map
|
|||
//SetFloorTexture(tfloor);
|
||||
//SetCeilTexture(tceil);
|
||||
this.effect = effect;
|
||||
this.tag = tag;
|
||||
this.tags = new List<int>(tags); //mxd
|
||||
this.flags = new Dictionary<string, bool>(flags); //mxd
|
||||
this.brightness = brightness;
|
||||
this.flooroffset = flooroffset; //mxd
|
||||
|
|
|
@ -17,6 +17,7 @@ managedfields
|
|||
linedef
|
||||
{
|
||||
id;
|
||||
moreids;
|
||||
v1;
|
||||
v2;
|
||||
special;
|
||||
|
@ -48,6 +49,7 @@ managedfields
|
|||
lightlevel;
|
||||
special;
|
||||
id;
|
||||
moreids;
|
||||
floorplane_a;
|
||||
floorplane_b;
|
||||
floorplane_c;
|
||||
|
|
74
Source/Core/Windows/LinedefEditFormUDMF.Designer.cs
generated
74
Source/Core/Windows/LinedefEditFormUDMF.Designer.cs
generated
|
@ -40,6 +40,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.cancel = new System.Windows.Forms.Button();
|
||||
this.apply = new System.Windows.Forms.Button();
|
||||
this.actiongroup = new System.Windows.Forms.GroupBox();
|
||||
this.argscontrol = new CodeImp.DoomBuilder.Controls.ArgumentsControl();
|
||||
this.actionhelp = new CodeImp.DoomBuilder.Controls.ActionSpecialHelpButton();
|
||||
this.action = new CodeImp.DoomBuilder.Controls.ActionSelectorControl();
|
||||
this.browseaction = new System.Windows.Forms.Button();
|
||||
|
@ -55,7 +56,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.activationGroup = new System.Windows.Forms.GroupBox();
|
||||
this.missingactivation = new System.Windows.Forms.PictureBox();
|
||||
this.idgroup = new System.Windows.Forms.GroupBox();
|
||||
this.tagSelector = new CodeImp.DoomBuilder.GZBuilder.Controls.TagSelector();
|
||||
this.tabfront = new System.Windows.Forms.TabPage();
|
||||
this.frontside = new System.Windows.Forms.CheckBox();
|
||||
this.frontgroup = new System.Windows.Forms.GroupBox();
|
||||
|
@ -121,7 +121,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.fieldslist = new CodeImp.DoomBuilder.Controls.FieldsEditorControl();
|
||||
this.imagelist = new System.Windows.Forms.ImageList(this.components);
|
||||
this.tooltip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.argscontrol = new CodeImp.DoomBuilder.Controls.ArgumentsControl();
|
||||
this.tagsselector = new CodeImp.DoomBuilder.GZBuilder.Controls.TagsSelector();
|
||||
label2 = new System.Windows.Forms.Label();
|
||||
label11 = new System.Windows.Forms.Label();
|
||||
label12 = new System.Windows.Forms.Label();
|
||||
|
@ -153,7 +153,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
// label2
|
||||
//
|
||||
label2.AutoSize = true;
|
||||
label2.Location = new System.Drawing.Point(15, 30);
|
||||
label2.Location = new System.Drawing.Point(15, 22);
|
||||
label2.Name = "label2";
|
||||
label2.Size = new System.Drawing.Size(40, 13);
|
||||
label2.TabIndex = 9;
|
||||
|
@ -180,7 +180,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
// label6
|
||||
//
|
||||
label6.AutoSize = true;
|
||||
label6.Location = new System.Drawing.Point(199, 24);
|
||||
label6.Location = new System.Drawing.Point(199, 21);
|
||||
label6.Name = "label6";
|
||||
label6.Size = new System.Drawing.Size(37, 13);
|
||||
label6.TabIndex = 17;
|
||||
|
@ -189,7 +189,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
// labelrenderstyle
|
||||
//
|
||||
this.labelrenderstyle.AutoSize = true;
|
||||
this.labelrenderstyle.Location = new System.Drawing.Point(15, 24);
|
||||
this.labelrenderstyle.Location = new System.Drawing.Point(15, 21);
|
||||
this.labelrenderstyle.Name = "labelrenderstyle";
|
||||
this.labelrenderstyle.Size = new System.Drawing.Size(69, 13);
|
||||
this.labelrenderstyle.TabIndex = 11;
|
||||
|
@ -198,7 +198,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
// labellockpick
|
||||
//
|
||||
this.labellockpick.AutoSize = true;
|
||||
this.labellockpick.Location = new System.Drawing.Point(330, 24);
|
||||
this.labellockpick.Location = new System.Drawing.Point(330, 21);
|
||||
this.labellockpick.Name = "labellockpick";
|
||||
this.labellockpick.Size = new System.Drawing.Size(72, 13);
|
||||
this.labellockpick.TabIndex = 15;
|
||||
|
@ -246,16 +246,23 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.actiongroup.Controls.Add(label2);
|
||||
this.actiongroup.Controls.Add(this.action);
|
||||
this.actiongroup.Controls.Add(this.browseaction);
|
||||
this.actiongroup.Location = new System.Drawing.Point(8, 253);
|
||||
this.actiongroup.Location = new System.Drawing.Point(8, 245);
|
||||
this.actiongroup.Name = "actiongroup";
|
||||
this.actiongroup.Size = new System.Drawing.Size(533, 142);
|
||||
this.actiongroup.Size = new System.Drawing.Size(533, 126);
|
||||
this.actiongroup.TabIndex = 1;
|
||||
this.actiongroup.TabStop = false;
|
||||
this.actiongroup.Text = " Action ";
|
||||
//
|
||||
// argscontrol
|
||||
//
|
||||
this.argscontrol.Location = new System.Drawing.Point(6, 44);
|
||||
this.argscontrol.Name = "argscontrol";
|
||||
this.argscontrol.Size = new System.Drawing.Size(521, 80);
|
||||
this.argscontrol.TabIndex = 11;
|
||||
//
|
||||
// actionhelp
|
||||
//
|
||||
this.actionhelp.Location = new System.Drawing.Point(497, 25);
|
||||
this.actionhelp.Location = new System.Drawing.Point(497, 17);
|
||||
this.actionhelp.Name = "actionhelp";
|
||||
this.actionhelp.Size = new System.Drawing.Size(28, 25);
|
||||
this.actionhelp.TabIndex = 10;
|
||||
|
@ -267,7 +274,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.action.Empty = false;
|
||||
this.action.GeneralizedCategories = null;
|
||||
this.action.GeneralizedOptions = null;
|
||||
this.action.Location = new System.Drawing.Point(62, 27);
|
||||
this.action.Location = new System.Drawing.Point(62, 19);
|
||||
this.action.Name = "action";
|
||||
this.action.Size = new System.Drawing.Size(402, 21);
|
||||
this.action.TabIndex = 0;
|
||||
|
@ -277,7 +284,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
// browseaction
|
||||
//
|
||||
this.browseaction.Image = global::CodeImp.DoomBuilder.Properties.Resources.List;
|
||||
this.browseaction.Location = new System.Drawing.Point(467, 25);
|
||||
this.browseaction.Location = new System.Drawing.Point(467, 17);
|
||||
this.browseaction.Name = "browseaction";
|
||||
this.browseaction.Size = new System.Drawing.Size(28, 25);
|
||||
this.browseaction.TabIndex = 1;
|
||||
|
@ -306,7 +313,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.flagsgroup.Controls.Add(this.flags);
|
||||
this.flagsgroup.Location = new System.Drawing.Point(8, 3);
|
||||
this.flagsgroup.Name = "flagsgroup";
|
||||
this.flagsgroup.Size = new System.Drawing.Size(533, 186);
|
||||
this.flagsgroup.Size = new System.Drawing.Size(533, 184);
|
||||
this.flagsgroup.TabIndex = 0;
|
||||
this.flagsgroup.TabStop = false;
|
||||
this.flagsgroup.Text = " Flags";
|
||||
|
@ -318,9 +325,9 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.flags.AutoScroll = true;
|
||||
this.flags.Columns = 3;
|
||||
this.flags.Location = new System.Drawing.Point(18, 17);
|
||||
this.flags.Location = new System.Drawing.Point(18, 15);
|
||||
this.flags.Name = "flags";
|
||||
this.flags.Size = new System.Drawing.Size(509, 164);
|
||||
this.flags.Size = new System.Drawing.Size(509, 162);
|
||||
this.flags.TabIndex = 0;
|
||||
this.flags.VerticalSpacing = 0;
|
||||
this.flags.OnValueChanged += new System.EventHandler(this.flags_OnValueChanged);
|
||||
|
@ -371,9 +378,9 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.groupsettings.Controls.Add(this.labellockpick);
|
||||
this.groupsettings.Controls.Add(this.renderStyle);
|
||||
this.groupsettings.Controls.Add(this.labelrenderstyle);
|
||||
this.groupsettings.Location = new System.Drawing.Point(8, 195);
|
||||
this.groupsettings.Location = new System.Drawing.Point(8, 193);
|
||||
this.groupsettings.Name = "groupsettings";
|
||||
this.groupsettings.Size = new System.Drawing.Size(533, 52);
|
||||
this.groupsettings.Size = new System.Drawing.Size(533, 46);
|
||||
this.groupsettings.TabIndex = 3;
|
||||
this.groupsettings.TabStop = false;
|
||||
this.groupsettings.Text = " Settings";
|
||||
|
@ -381,7 +388,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
// lockpick
|
||||
//
|
||||
this.lockpick.FormattingEnabled = true;
|
||||
this.lockpick.Location = new System.Drawing.Point(408, 20);
|
||||
this.lockpick.Location = new System.Drawing.Point(408, 17);
|
||||
this.lockpick.Name = "lockpick";
|
||||
this.lockpick.Size = new System.Drawing.Size(115, 21);
|
||||
this.lockpick.TabIndex = 19;
|
||||
|
@ -397,7 +404,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.alpha.ButtonStepSmall = 0.01F;
|
||||
this.alpha.ButtonStepsUseModifierKeys = true;
|
||||
this.alpha.ButtonStepsWrapAround = false;
|
||||
this.alpha.Location = new System.Drawing.Point(243, 19);
|
||||
this.alpha.Location = new System.Drawing.Point(243, 16);
|
||||
this.alpha.Name = "alpha";
|
||||
this.alpha.Size = new System.Drawing.Size(65, 24);
|
||||
this.alpha.StepValues = null;
|
||||
|
@ -408,7 +415,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
//
|
||||
this.renderStyle.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.renderStyle.FormattingEnabled = true;
|
||||
this.renderStyle.Location = new System.Drawing.Point(92, 20);
|
||||
this.renderStyle.Location = new System.Drawing.Point(92, 17);
|
||||
this.renderStyle.Name = "renderStyle";
|
||||
this.renderStyle.Size = new System.Drawing.Size(86, 21);
|
||||
this.renderStyle.TabIndex = 12;
|
||||
|
@ -418,7 +425,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
//
|
||||
this.activationGroup.Controls.Add(this.missingactivation);
|
||||
this.activationGroup.Controls.Add(this.udmfactivates);
|
||||
this.activationGroup.Location = new System.Drawing.Point(8, 401);
|
||||
this.activationGroup.Location = new System.Drawing.Point(8, 375);
|
||||
this.activationGroup.Name = "activationGroup";
|
||||
this.activationGroup.Size = new System.Drawing.Size(533, 152);
|
||||
this.activationGroup.TabIndex = 1;
|
||||
|
@ -429,7 +436,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
//
|
||||
this.missingactivation.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.missingactivation.Image = global::CodeImp.DoomBuilder.Properties.Resources.Warning;
|
||||
this.missingactivation.Location = new System.Drawing.Point(64, -2);
|
||||
this.missingactivation.Location = new System.Drawing.Point(64, -1);
|
||||
this.missingactivation.Name = "missingactivation";
|
||||
this.missingactivation.Size = new System.Drawing.Size(16, 16);
|
||||
this.missingactivation.TabIndex = 4;
|
||||
|
@ -441,21 +448,14 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
//
|
||||
this.idgroup.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.idgroup.Controls.Add(this.tagSelector);
|
||||
this.idgroup.Location = new System.Drawing.Point(8, 559);
|
||||
this.idgroup.Controls.Add(this.tagsselector);
|
||||
this.idgroup.Location = new System.Drawing.Point(8, 533);
|
||||
this.idgroup.Name = "idgroup";
|
||||
this.idgroup.Size = new System.Drawing.Size(533, 58);
|
||||
this.idgroup.Size = new System.Drawing.Size(533, 85);
|
||||
this.idgroup.TabIndex = 2;
|
||||
this.idgroup.TabStop = false;
|
||||
this.idgroup.Text = " Identification ";
|
||||
//
|
||||
// tagSelector
|
||||
//
|
||||
this.tagSelector.Location = new System.Drawing.Point(6, 19);
|
||||
this.tagSelector.Name = "tagSelector";
|
||||
this.tagSelector.Size = new System.Drawing.Size(444, 35);
|
||||
this.tagSelector.TabIndex = 0;
|
||||
//
|
||||
// tabfront
|
||||
//
|
||||
this.tabfront.Controls.Add(this.frontside);
|
||||
|
@ -1339,12 +1339,12 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
this.imagelist.Images.SetKeyName(0, "Check.png");
|
||||
this.imagelist.Images.SetKeyName(1, "SearchClear.png");
|
||||
//
|
||||
// argscontrol
|
||||
// tagsselector
|
||||
//
|
||||
this.argscontrol.Location = new System.Drawing.Point(6, 56);
|
||||
this.argscontrol.Name = "argscontrol";
|
||||
this.argscontrol.Size = new System.Drawing.Size(521, 80);
|
||||
this.argscontrol.TabIndex = 11;
|
||||
this.tagsselector.Location = new System.Drawing.Point(6, 21);
|
||||
this.tagsselector.Name = "tagsselector";
|
||||
this.tagsselector.Size = new System.Drawing.Size(524, 60);
|
||||
this.tagsselector.TabIndex = 0;
|
||||
//
|
||||
// LinedefEditFormUDMF
|
||||
//
|
||||
|
@ -1429,7 +1429,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
private System.Windows.Forms.Button custombackbutton;
|
||||
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox frontsector;
|
||||
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox backsector;
|
||||
private CodeImp.DoomBuilder.GZBuilder.Controls.TagSelector tagSelector;
|
||||
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox lightFront;
|
||||
private System.Windows.Forms.CheckBox cbLightAbsoluteFront;
|
||||
private CodeImp.DoomBuilder.GZBuilder.Controls.PairedFieldsControl pfcFrontOffsetTop;
|
||||
|
@ -1489,5 +1488,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
private System.Windows.Forms.TabPage tabcomment;
|
||||
private CodeImp.DoomBuilder.Controls.CommentEditor commenteditor;
|
||||
private CodeImp.DoomBuilder.Controls.ArgumentsControl argscontrol;
|
||||
private CodeImp.DoomBuilder.GZBuilder.Controls.TagsSelector tagsselector;
|
||||
}
|
||||
}
|
|
@ -277,14 +277,12 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
lockpick.SelectedIndex = keynumbers.IndexOf(locknumber);
|
||||
if(lockpick.SelectedIndex == -1) lockpick.Text = locknumber.ToString();
|
||||
|
||||
// Action/tags
|
||||
// Action
|
||||
action.Value = fl.Action;
|
||||
|
||||
if(General.Map.FormatInterface.HasLinedefTag) //mxd
|
||||
{
|
||||
tagSelector.Setup(UniversalType.LinedefTag);
|
||||
tagSelector.SetTag(fl.Tag);
|
||||
}
|
||||
//mxd. Tags
|
||||
tagsselector.Setup(UniversalType.LinedefTag);
|
||||
tagsselector.SetValue(fl.Tags, true);
|
||||
|
||||
//mxd. Args
|
||||
argscontrol.SetValue(fl, true);
|
||||
|
@ -410,7 +408,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
|
||||
// Action/tags
|
||||
if(l.Action != action.Value) action.Empty = true;
|
||||
if(General.Map.FormatInterface.HasLinedefTag && l.Tag != fl.Tag) tagSelector.ClearTag(); //mxd
|
||||
tagsselector.SetValue(l.Tags, false);
|
||||
|
||||
//mxd. Arguments
|
||||
argscontrol.SetValue(l, false);
|
||||
|
@ -557,6 +555,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
CheckActivationFlagsRequired(); //mxd
|
||||
argscontrol.UpdateScriptControls(); //mxd
|
||||
actionhelp.UpdateAction(action.GetValue()); //mxd
|
||||
tagsselector.FinishSetup(); //mxd
|
||||
commenteditor.FinishSetup(); //mxd
|
||||
|
||||
//mxd. Update some labels
|
||||
|
@ -646,17 +645,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
Sector s;
|
||||
int index;
|
||||
|
||||
// Verify the tag
|
||||
if(General.Map.FormatInterface.HasLinedefTag)
|
||||
{
|
||||
tagSelector.ValidateTag(); //mxd
|
||||
if(((tagSelector.GetTag(0) < General.Map.FormatInterface.MinTag) || (tagSelector.GetTag(0) > General.Map.FormatInterface.MaxTag)))
|
||||
{
|
||||
General.ShowWarningMessage("Linedef tag must be between " + General.Map.FormatInterface.MinTag + " and " + General.Map.FormatInterface.MaxTag + ".", MessageBoxButtons.OK);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Verify the action
|
||||
if((action.Value < General.Map.FormatInterface.MinAction) || (action.Value > General.Map.FormatInterface.MaxAction))
|
||||
{
|
||||
|
@ -698,8 +686,8 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
}
|
||||
|
||||
// Action/tags
|
||||
l.Tag = General.Clamp(tagSelector.GetSmartTag(l.Tag, tagoffset++), General.Map.FormatInterface.MinTag, General.Map.FormatInterface.MaxTag); //mxd
|
||||
if(!action.Empty) l.Action = action.Value;
|
||||
tagsselector.ApplyTo(l, tagoffset++); //mxd
|
||||
|
||||
//mxd. Apply args
|
||||
argscontrol.Apply(l);
|
||||
|
|
|
@ -117,9 +117,6 @@
|
|||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="label2.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="label2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
|
@ -149,7 +146,7 @@
|
|||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADM
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAbgBAAG4AQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAcABAAHAAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
|
@ -189,4 +186,7 @@
|
|||
BAAB/wKAAQEEAAH/AcECgQQAAf8B4wLDBAAC/wLnBAAE/wQACw==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
58
Source/Core/Windows/SectorEditFormUDMF.Designer.cs
generated
58
Source/Core/Windows/SectorEditFormUDMF.Designer.cs
generated
|
@ -40,7 +40,6 @@
|
|||
System.Windows.Forms.Label label15;
|
||||
System.Windows.Forms.Label label6;
|
||||
System.Windows.Forms.Label label5;
|
||||
this.tagSelector = new CodeImp.DoomBuilder.GZBuilder.Controls.TagSelector();
|
||||
this.soundsequence = new System.Windows.Forms.ComboBox();
|
||||
this.resetsoundsequence = new System.Windows.Forms.Button();
|
||||
this.fadeColor = new CodeImp.DoomBuilder.GZBuilder.Controls.ColorFieldsControl();
|
||||
|
@ -100,12 +99,13 @@
|
|||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
this.ceilingslopecontrol = new CodeImp.DoomBuilder.Controls.SectorSlopeControl();
|
||||
this.tabcomment = new System.Windows.Forms.TabPage();
|
||||
this.commenteditor = new CodeImp.DoomBuilder.Controls.CommentEditor();
|
||||
this.tabcustom = new System.Windows.Forms.TabPage();
|
||||
this.fieldslist = new CodeImp.DoomBuilder.Controls.FieldsEditorControl();
|
||||
this.cancel = new System.Windows.Forms.Button();
|
||||
this.apply = new System.Windows.Forms.Button();
|
||||
this.tooltip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.commenteditor = new CodeImp.DoomBuilder.Controls.CommentEditor();
|
||||
this.tagsselector = new CodeImp.DoomBuilder.GZBuilder.Controls.TagsSelector();
|
||||
groupaction = new System.Windows.Forms.GroupBox();
|
||||
groupeffect = new System.Windows.Forms.GroupBox();
|
||||
label14 = new System.Windows.Forms.Label();
|
||||
|
@ -137,21 +137,14 @@
|
|||
//
|
||||
groupaction.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
groupaction.Controls.Add(this.tagSelector);
|
||||
groupaction.Location = new System.Drawing.Point(7, 341);
|
||||
groupaction.Controls.Add(this.tagsselector);
|
||||
groupaction.Location = new System.Drawing.Point(7, 327);
|
||||
groupaction.Name = "groupaction";
|
||||
groupaction.Size = new System.Drawing.Size(490, 71);
|
||||
groupaction.Size = new System.Drawing.Size(490, 85);
|
||||
groupaction.TabIndex = 2;
|
||||
groupaction.TabStop = false;
|
||||
groupaction.Text = " Identification ";
|
||||
//
|
||||
// tagSelector
|
||||
//
|
||||
this.tagSelector.Location = new System.Drawing.Point(6, 21);
|
||||
this.tagSelector.Name = "tagSelector";
|
||||
this.tagSelector.Size = new System.Drawing.Size(478, 35);
|
||||
this.tagSelector.TabIndex = 0;
|
||||
//
|
||||
// groupeffect
|
||||
//
|
||||
groupeffect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
|
@ -172,7 +165,7 @@
|
|||
groupeffect.Controls.Add(label8);
|
||||
groupeffect.Location = new System.Drawing.Point(7, 160);
|
||||
groupeffect.Name = "groupeffect";
|
||||
groupeffect.Size = new System.Drawing.Size(490, 175);
|
||||
groupeffect.Size = new System.Drawing.Size(490, 161);
|
||||
groupeffect.TabIndex = 1;
|
||||
groupeffect.TabStop = false;
|
||||
groupeffect.Text = " Effects ";
|
||||
|
@ -203,7 +196,7 @@
|
|||
this.fadeColor.DefaultValue = 0;
|
||||
this.fadeColor.Field = "fadecolor";
|
||||
this.fadeColor.Label = "Fade:";
|
||||
this.fadeColor.Location = new System.Drawing.Point(241, 111);
|
||||
this.fadeColor.Location = new System.Drawing.Point(241, 104);
|
||||
this.fadeColor.Name = "fadeColor";
|
||||
this.fadeColor.Size = new System.Drawing.Size(207, 31);
|
||||
this.fadeColor.TabIndex = 30;
|
||||
|
@ -214,7 +207,7 @@
|
|||
this.lightColor.DefaultValue = 16777215;
|
||||
this.lightColor.Field = "lightcolor";
|
||||
this.lightColor.Label = "Light:";
|
||||
this.lightColor.Location = new System.Drawing.Point(241, 82);
|
||||
this.lightColor.Location = new System.Drawing.Point(241, 77);
|
||||
this.lightColor.Name = "lightColor";
|
||||
this.lightColor.Size = new System.Drawing.Size(207, 29);
|
||||
this.lightColor.TabIndex = 29;
|
||||
|
@ -231,7 +224,7 @@
|
|||
this.brightness.ButtonStepSmall = 1F;
|
||||
this.brightness.ButtonStepsUseModifierKeys = true;
|
||||
this.brightness.ButtonStepsWrapAround = false;
|
||||
this.brightness.Location = new System.Drawing.Point(125, 84);
|
||||
this.brightness.Location = new System.Drawing.Point(125, 79);
|
||||
this.brightness.Name = "brightness";
|
||||
this.brightness.Size = new System.Drawing.Size(81, 24);
|
||||
this.brightness.StepValues = null;
|
||||
|
@ -249,7 +242,7 @@
|
|||
this.desaturation.ButtonStepSmall = 0.01F;
|
||||
this.desaturation.ButtonStepsUseModifierKeys = true;
|
||||
this.desaturation.ButtonStepsWrapAround = false;
|
||||
this.desaturation.Location = new System.Drawing.Point(125, 142);
|
||||
this.desaturation.Location = new System.Drawing.Point(125, 131);
|
||||
this.desaturation.Name = "desaturation";
|
||||
this.desaturation.Size = new System.Drawing.Size(81, 24);
|
||||
this.desaturation.StepValues = null;
|
||||
|
@ -267,7 +260,7 @@
|
|||
// label9
|
||||
//
|
||||
label9.AutoSize = true;
|
||||
label9.Location = new System.Drawing.Point(57, 89);
|
||||
label9.Location = new System.Drawing.Point(57, 84);
|
||||
label9.Name = "label9";
|
||||
label9.Size = new System.Drawing.Size(59, 13);
|
||||
label9.TabIndex = 2;
|
||||
|
@ -275,7 +268,7 @@
|
|||
//
|
||||
// label13
|
||||
//
|
||||
label13.Location = new System.Drawing.Point(45, 147);
|
||||
label13.Location = new System.Drawing.Point(45, 136);
|
||||
label13.Name = "label13";
|
||||
label13.Size = new System.Drawing.Size(74, 14);
|
||||
label13.TabIndex = 27;
|
||||
|
@ -293,7 +286,7 @@
|
|||
this.gravity.ButtonStepSmall = 0.01F;
|
||||
this.gravity.ButtonStepsUseModifierKeys = true;
|
||||
this.gravity.ButtonStepsWrapAround = false;
|
||||
this.gravity.Location = new System.Drawing.Point(125, 112);
|
||||
this.gravity.Location = new System.Drawing.Point(125, 105);
|
||||
this.gravity.Name = "gravity";
|
||||
this.gravity.Size = new System.Drawing.Size(81, 24);
|
||||
this.gravity.StepValues = null;
|
||||
|
@ -301,7 +294,7 @@
|
|||
//
|
||||
// label2
|
||||
//
|
||||
label2.Location = new System.Drawing.Point(45, 117);
|
||||
label2.Location = new System.Drawing.Point(45, 110);
|
||||
label2.Name = "label2";
|
||||
label2.Size = new System.Drawing.Size(74, 14);
|
||||
label2.TabIndex = 23;
|
||||
|
@ -590,7 +583,7 @@
|
|||
//
|
||||
// floorAngleControl
|
||||
//
|
||||
this.floorAngleControl.Angle = -180;
|
||||
this.floorAngleControl.Angle = -270;
|
||||
this.floorAngleControl.AngleOffset = 90;
|
||||
this.floorAngleControl.Location = new System.Drawing.Point(6, 132);
|
||||
this.floorAngleControl.Name = "floorAngleControl";
|
||||
|
@ -824,7 +817,7 @@
|
|||
//
|
||||
// ceilAngleControl
|
||||
//
|
||||
this.ceilAngleControl.Angle = -180;
|
||||
this.ceilAngleControl.Angle = -270;
|
||||
this.ceilAngleControl.AngleOffset = 90;
|
||||
this.ceilAngleControl.Location = new System.Drawing.Point(6, 132);
|
||||
this.ceilAngleControl.Name = "ceilAngleControl";
|
||||
|
@ -1065,6 +1058,13 @@
|
|||
this.tabcomment.Text = "Comment";
|
||||
this.tabcomment.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// commenteditor
|
||||
//
|
||||
this.commenteditor.Location = new System.Drawing.Point(3, 3);
|
||||
this.commenteditor.Name = "commenteditor";
|
||||
this.commenteditor.Size = new System.Drawing.Size(497, 413);
|
||||
this.commenteditor.TabIndex = 0;
|
||||
//
|
||||
// tabcustom
|
||||
//
|
||||
this.tabcustom.Controls.Add(this.fieldslist);
|
||||
|
@ -1127,12 +1127,12 @@
|
|||
this.tooltip.InitialDelay = 10;
|
||||
this.tooltip.ReshowDelay = 100;
|
||||
//
|
||||
// commenteditor
|
||||
// tagsselector
|
||||
//
|
||||
this.commenteditor.Location = new System.Drawing.Point(3, 3);
|
||||
this.commenteditor.Name = "commenteditor";
|
||||
this.commenteditor.Size = new System.Drawing.Size(497, 413);
|
||||
this.commenteditor.TabIndex = 0;
|
||||
this.tagsselector.Location = new System.Drawing.Point(6, 21);
|
||||
this.tagsselector.Name = "tagsselector";
|
||||
this.tagsselector.Size = new System.Drawing.Size(478, 60);
|
||||
this.tagsselector.TabIndex = 0;
|
||||
//
|
||||
// SectorEditFormUDMF
|
||||
//
|
||||
|
@ -1181,7 +1181,6 @@
|
|||
|
||||
private System.Windows.Forms.TabControl tabs;
|
||||
private System.Windows.Forms.TabPage tabproperties;
|
||||
private CodeImp.DoomBuilder.GZBuilder.Controls.TagSelector tagSelector;
|
||||
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox brightness;
|
||||
private System.Windows.Forms.Button browseeffect;
|
||||
private CodeImp.DoomBuilder.Controls.ActionSelectorControl effect;
|
||||
|
@ -1245,5 +1244,6 @@
|
|||
private System.Windows.Forms.ComboBox soundsequence;
|
||||
private System.Windows.Forms.TabPage tabcomment;
|
||||
private CodeImp.DoomBuilder.Controls.CommentEditor commenteditor;
|
||||
private CodeImp.DoomBuilder.GZBuilder.Controls.TagsSelector tagsselector;
|
||||
}
|
||||
}
|
|
@ -323,8 +323,8 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
SetupCeilingSlope(sc, true);
|
||||
|
||||
// Action
|
||||
tagSelector.Setup(UniversalType.SectorTag); //mxd
|
||||
tagSelector.SetTag(sc.Tag);//mxd
|
||||
tagsselector.Setup(UniversalType.SectorTag); //mxd
|
||||
tagsselector.SetValue(sc.Tags, true);//mxd
|
||||
|
||||
// Custom fields
|
||||
fieldslist.SetValues(sc.Fields, true);
|
||||
|
@ -430,7 +430,7 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
SetupCeilingSlope(s, false);
|
||||
|
||||
// Action
|
||||
if(s.Tag != sc.Tag) tagSelector.ClearTag(); //mxd
|
||||
tagsselector.SetValue(s.Tags, false); //mxd
|
||||
|
||||
// Custom fields
|
||||
fieldslist.SetValues(s.Fields, false);
|
||||
|
@ -471,8 +471,9 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
if(useCeilSlopeLineAngles) ceilingslopecontrol.StepValues = anglesteps;
|
||||
if(useFloorSlopeLineAngles) floorslopecontrol.StepValues = anglesteps;
|
||||
|
||||
//mxd. Comments
|
||||
//mxd. Comments and Tags
|
||||
commenteditor.FinishSetup();
|
||||
tagsselector.FinishSetup();
|
||||
|
||||
preventchanges = false; //mxd
|
||||
}
|
||||
|
@ -641,14 +642,6 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
|
||||
private void apply_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Verify the tag
|
||||
tagSelector.ValidateTag(); //mxd
|
||||
if((tagSelector.GetTag(0) < General.Map.FormatInterface.MinTag) || (tagSelector.GetTag(0) > General.Map.FormatInterface.MaxTag))
|
||||
{
|
||||
General.ShowWarningMessage("Sector tag must be between " + General.Map.FormatInterface.MinTag + " and " + General.Map.FormatInterface.MaxTag + ".", MessageBoxButtons.OK);
|
||||
return;
|
||||
}
|
||||
|
||||
// Verify the effect
|
||||
if((effect.Value < General.Map.FormatInterface.MinEffect) || (effect.Value > General.Map.FormatInterface.MaxEffect))
|
||||
{
|
||||
|
@ -684,8 +677,8 @@ namespace CodeImp.DoomBuilder.Windows
|
|||
if(!effect.Empty) s.Effect = effect.Value;
|
||||
s.Brightness = General.Clamp(brightness.GetResult(s.Brightness), General.Map.FormatInterface.MinBrightness, General.Map.FormatInterface.MaxBrightness);
|
||||
|
||||
// Action
|
||||
s.Tag = General.Clamp(tagSelector.GetSmartTag(s.Tag, tagoffset++), General.Map.FormatInterface.MinTag, General.Map.FormatInterface.MaxTag); //mxd
|
||||
//mxd. Tag
|
||||
tagsselector.ApplyTo(s, tagoffset++);
|
||||
|
||||
// Fields
|
||||
fieldslist.Apply(s.Fields);
|
||||
|
|
|
@ -138,36 +138,12 @@
|
|||
<metadata name="label8.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label14.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label9.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label13.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label8.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="groupfloorceiling.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label15.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label6.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label15.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
|
@ -186,7 +162,4 @@
|
|||
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
17
Source/Core/Windows/ThingEditFormUDMF.Designer.cs
generated
17
Source/Core/Windows/ThingEditFormUDMF.Designer.cs
generated
|
@ -280,12 +280,16 @@
|
|||
//
|
||||
// labelGravity
|
||||
//
|
||||
this.labelGravity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.labelGravity.ForeColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.labelGravity.Location = new System.Drawing.Point(52, 27);
|
||||
this.labelGravity.Name = "labelGravity";
|
||||
this.labelGravity.Size = new System.Drawing.Size(50, 14);
|
||||
this.labelGravity.TabIndex = 18;
|
||||
this.labelGravity.Text = "Gravity:";
|
||||
this.labelGravity.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.tooltip.SetToolTip(this.labelGravity, "Positive values are multiplied with the class\'s property.\r\nNegative values are us" +
|
||||
"ed as their absolute.\r\nDefault is 1.0.");
|
||||
//
|
||||
// label7
|
||||
//
|
||||
|
@ -350,7 +354,7 @@
|
|||
//
|
||||
this.missingflags.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.missingflags.Image = global::CodeImp.DoomBuilder.Properties.Resources.Warning;
|
||||
this.missingflags.Location = new System.Drawing.Point(42, -1);
|
||||
this.missingflags.Location = new System.Drawing.Point(42, -2);
|
||||
this.missingflags.Name = "missingflags";
|
||||
this.missingflags.Size = new System.Drawing.Size(16, 16);
|
||||
this.missingflags.TabIndex = 5;
|
||||
|
@ -606,12 +610,16 @@
|
|||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label10.ForeColor = System.Drawing.SystemColors.HotTrack;
|
||||
this.label10.Location = new System.Drawing.Point(52, 91);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(50, 14);
|
||||
this.label10.TabIndex = 22;
|
||||
this.label10.Text = "Health:";
|
||||
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.tooltip.SetToolTip(this.label10, "Positive values are multiplied with the class\'s property.\r\nNegative values are us" +
|
||||
"ed as their absolute.\r\nDefault is 1.");
|
||||
//
|
||||
// score
|
||||
//
|
||||
|
@ -919,6 +927,13 @@
|
|||
this.hintlabel.TabIndex = 4;
|
||||
this.hintlabel.Text = "Select categories or several thing types to randomly assign them to selection";
|
||||
//
|
||||
// tooltip
|
||||
//
|
||||
this.tooltip.AutomaticDelay = 10;
|
||||
this.tooltip.AutoPopDelay = 10000;
|
||||
this.tooltip.InitialDelay = 10;
|
||||
this.tooltip.ReshowDelay = 100;
|
||||
//
|
||||
// ThingEditFormUDMF
|
||||
//
|
||||
this.AcceptButton = this.apply;
|
||||
|
|
|
@ -120,7 +120,4 @@
|
|||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
Loading…
Reference in a new issue