Began implementing linedef edit form for SRB2

This commit is contained in:
MascaraSnake 2022-12-29 21:02:53 +01:00
parent d29bd54034
commit c5d91d15fc
14 changed files with 4284 additions and 43 deletions

View file

@ -278,41 +278,6 @@ universalfields
linedef
{
arg5
{
type = 0;
default = 0;
}
arg6
{
type = 0;
default = 0;
}
arg7
{
type = 0;
default = 0;
}
arg8
{
type = 0;
default = 0;
}
arg9
{
type = 0;
default = 0;
}
stringarg0
{
type = 2;
default = "";
}
stringarg1
{
type = 2;
default = "";
}
executordelay
{
type = 0;

View file

@ -180,6 +180,12 @@
<Compile Include="Controls\ArgumentBox.Designer.cs">
<DependentUpon>ArgumentBox.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ArgumentsControlSRB2.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ArgumentsControlSRB2.Designer.cs">
<DependentUpon>ArgumentsControlSRB2.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ExternalCommandControl.cs">
<SubType>UserControl</SubType>
</Compile>
@ -277,6 +283,12 @@
<Compile Include="Windows\ILinedefEditForm.cs" />
<Compile Include="Windows\ISectorEditForm.cs" />
<Compile Include="Windows\IThingEditForm.cs" />
<Compile Include="Windows\LinedefEditFormSRB2.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\LinedefEditFormSRB2.Designer.cs">
<DependentUpon>LinedefEditFormSRB2.cs</DependentUpon>
</Compile>
<Compile Include="Windows\PreAndPostCommandsForm.cs">
<SubType>Form</SubType>
</Compile>
@ -666,12 +678,18 @@
</Reference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Controls\ArgumentsControlSRB2.resx">
<DependentUpon>ArgumentsControlSRB2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ExternalCommandControl.resx">
<DependentUpon>ExternalCommandControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\PairedFloatControl.resx">
<DependentUpon>PairedFloatControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\LinedefEditFormSRB2.resx">
<DependentUpon>LinedefEditFormSRB2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\PreAndPostCommandsForm.resx">
<DependentUpon>PreAndPostCommandsForm.cs</DependentUpon>
</EmbeddedResource>

View file

@ -177,6 +177,12 @@
<Compile Include="Controls\ArgumentBox.Designer.cs">
<DependentUpon>ArgumentBox.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ArgumentsControlSRB2.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\ArgumentsControlSRB2.Designer.cs">
<DependentUpon>ArgumentsControlSRB2.cs</DependentUpon>
</Compile>
<Compile Include="Controls\ExternalCommandControl.cs">
<SubType>UserControl</SubType>
</Compile>
@ -269,6 +275,12 @@
<Compile Include="Windows\ILinedefEditForm.cs" />
<Compile Include="Windows\ISectorEditForm.cs" />
<Compile Include="Windows\IThingEditForm.cs" />
<Compile Include="Windows\LinedefEditFormSRB2.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Windows\LinedefEditFormSRB2.Designer.cs">
<DependentUpon>LinedefEditFormSRB2.cs</DependentUpon>
</Compile>
<Compile Include="Windows\PreAndPostCommandsForm.cs">
<SubType>Form</SubType>
</Compile>
@ -658,12 +670,18 @@
</Reference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Controls\ArgumentsControlSRB2.resx">
<DependentUpon>ArgumentsControlSRB2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\ExternalCommandControl.resx">
<DependentUpon>ExternalCommandControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\PairedFloatControl.resx">
<DependentUpon>PairedFloatControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\LinedefEditFormSRB2.resx">
<DependentUpon>LinedefEditFormSRB2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\PreAndPostCommandsForm.resx">
<DependentUpon>PreAndPostCommandsForm.cs</DependentUpon>
</EmbeddedResource>

View file

@ -0,0 +1,377 @@
namespace CodeImp.DoomBuilder.Controls
{
partial class ArgumentsControlSRB2
{
/// <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.splitcontainer = new System.Windows.Forms.SplitContainer();
this.stringarg0label = new System.Windows.Forms.Label();
this.stringarg0 = new System.Windows.Forms.TextBox();
this.arg0label = new System.Windows.Forms.Label();
this.arg1label = new System.Windows.Forms.Label();
this.arg3label = new System.Windows.Forms.Label();
this.arg2label = new System.Windows.Forms.Label();
this.arg4label = new System.Windows.Forms.Label();
this.stringarg1label = new System.Windows.Forms.Label();
this.arg9label = new System.Windows.Forms.Label();
this.stringarg1 = new System.Windows.Forms.TextBox();
this.arg8label = new System.Windows.Forms.Label();
this.arg7label = new System.Windows.Forms.Label();
this.arg6label = new System.Windows.Forms.Label();
this.arg5label = new System.Windows.Forms.Label();
this.tooltip = new System.Windows.Forms.ToolTip(this.components);
this.arg0 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
this.arg3 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
this.arg4 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
this.arg1 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
this.arg2 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
this.arg9 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
this.arg8 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
this.arg7 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
this.arg6 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
this.arg5 = new CodeImp.DoomBuilder.Controls.ArgumentBox();
((System.ComponentModel.ISupportInitialize)(this.splitcontainer)).BeginInit();
this.splitcontainer.Panel1.SuspendLayout();
this.splitcontainer.Panel2.SuspendLayout();
this.splitcontainer.SuspendLayout();
this.SuspendLayout();
//
// splitcontainer
//
this.splitcontainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitcontainer.IsSplitterFixed = true;
this.splitcontainer.Location = new System.Drawing.Point(0, 0);
this.splitcontainer.Name = "splitcontainer";
//
// splitcontainer.Panel1
//
this.splitcontainer.Panel1.Controls.Add(this.stringarg0label);
this.splitcontainer.Panel1.Controls.Add(this.stringarg0);
this.splitcontainer.Panel1.Controls.Add(this.arg0label);
this.splitcontainer.Panel1.Controls.Add(this.arg1label);
this.splitcontainer.Panel1.Controls.Add(this.arg3label);
this.splitcontainer.Panel1.Controls.Add(this.arg2label);
this.splitcontainer.Panel1.Controls.Add(this.arg4label);
this.splitcontainer.Panel1.Controls.Add(this.arg0);
this.splitcontainer.Panel1.Controls.Add(this.arg3);
this.splitcontainer.Panel1.Controls.Add(this.arg4);
this.splitcontainer.Panel1.Controls.Add(this.arg1);
this.splitcontainer.Panel1.Controls.Add(this.arg2);
//
// splitcontainer.Panel2
//
this.splitcontainer.Panel2.Controls.Add(this.stringarg1label);
this.splitcontainer.Panel2.Controls.Add(this.arg9label);
this.splitcontainer.Panel2.Controls.Add(this.stringarg1);
this.splitcontainer.Panel2.Controls.Add(this.arg9);
this.splitcontainer.Panel2.Controls.Add(this.arg8label);
this.splitcontainer.Panel2.Controls.Add(this.arg8);
this.splitcontainer.Panel2.Controls.Add(this.arg7label);
this.splitcontainer.Panel2.Controls.Add(this.arg7);
this.splitcontainer.Panel2.Controls.Add(this.arg6label);
this.splitcontainer.Panel2.Controls.Add(this.arg6);
this.splitcontainer.Panel2.Controls.Add(this.arg5label);
this.splitcontainer.Panel2.Controls.Add(this.arg5);
this.splitcontainer.Size = new System.Drawing.Size(700, 200);
this.splitcontainer.SplitterDistance = 350;
this.splitcontainer.SplitterWidth = 1;
this.splitcontainer.TabIndex = 0;
this.splitcontainer.TabStop = false;
//
// stringarg0label
//
this.stringarg0label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.stringarg0label.Location = new System.Drawing.Point(55, 147);
this.stringarg0label.Name = "stringarg0label";
this.stringarg0label.Size = new System.Drawing.Size(179, 14);
this.stringarg0label.TabIndex = 48;
this.stringarg0label.Text = "String argument 1:";
this.stringarg0label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.stringarg0label.UseMnemonic = false;
//
// stringarg0
//
this.stringarg0.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.stringarg0.Location = new System.Drawing.Point(237, 142);
this.stringarg0.Name = "stringarg0";
this.stringarg0.Size = new System.Drawing.Size(110, 20);
this.stringarg0.TabIndex = 47;
//
// arg0label
//
this.arg0label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg0label.Location = new System.Drawing.Point(55, 8);
this.arg0label.Name = "arg0label";
this.arg0label.Size = new System.Drawing.Size(179, 14);
this.arg0label.TabIndex = 33;
this.arg0label.Text = "Argument 1:";
this.arg0label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg0label.UseMnemonic = false;
//
// arg1label
//
this.arg1label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg1label.Location = new System.Drawing.Point(55, 33);
this.arg1label.Name = "arg1label";
this.arg1label.Size = new System.Drawing.Size(179, 14);
this.arg1label.TabIndex = 42;
this.arg1label.Text = "Argument 2:";
this.arg1label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg1label.UseMnemonic = false;
//
// arg3label
//
this.arg3label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg3label.Location = new System.Drawing.Point(55, 83);
this.arg3label.Name = "arg3label";
this.arg3label.Size = new System.Drawing.Size(179, 14);
this.arg3label.TabIndex = 44;
this.arg3label.Text = "Argument 4:";
this.arg3label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg3label.UseMnemonic = false;
//
// arg2label
//
this.arg2label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg2label.Location = new System.Drawing.Point(55, 58);
this.arg2label.Name = "arg2label";
this.arg2label.Size = new System.Drawing.Size(179, 14);
this.arg2label.TabIndex = 43;
this.arg2label.Text = "Argument 3:";
this.arg2label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg2label.UseMnemonic = false;
//
// arg4label
//
this.arg4label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg4label.Location = new System.Drawing.Point(55, 108);
this.arg4label.Name = "arg4label";
this.arg4label.Size = new System.Drawing.Size(179, 14);
this.arg4label.TabIndex = 46;
this.arg4label.Text = "Argument 5:";
this.arg4label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg4label.UseMnemonic = false;
//
// stringarg1label
//
this.stringarg1label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.stringarg1label.Location = new System.Drawing.Point(50, 147);
this.stringarg1label.Name = "stringarg1label";
this.stringarg1label.Size = new System.Drawing.Size(179, 14);
this.stringarg1label.TabIndex = 50;
this.stringarg1label.Text = "String argument 2:";
this.stringarg1label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.stringarg1label.UseMnemonic = false;
//
// arg9label
//
this.arg9label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg9label.Location = new System.Drawing.Point(58, 108);
this.arg9label.Name = "arg9label";
this.arg9label.Size = new System.Drawing.Size(179, 14);
this.arg9label.TabIndex = 56;
this.arg9label.Text = "Argument 10:";
this.arg9label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg9label.UseMnemonic = false;
//
// stringarg1
//
this.stringarg1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.stringarg1.Location = new System.Drawing.Point(232, 142);
this.stringarg1.Name = "stringarg1";
this.stringarg1.Size = new System.Drawing.Size(110, 20);
this.stringarg1.TabIndex = 49;
//
// arg8label
//
this.arg8label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg8label.Location = new System.Drawing.Point(58, 83);
this.arg8label.Name = "arg8label";
this.arg8label.Size = new System.Drawing.Size(179, 14);
this.arg8label.TabIndex = 54;
this.arg8label.Text = "Argument 9:";
this.arg8label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg8label.UseMnemonic = false;
//
// arg7label
//
this.arg7label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg7label.Location = new System.Drawing.Point(58, 58);
this.arg7label.Name = "arg7label";
this.arg7label.Size = new System.Drawing.Size(179, 14);
this.arg7label.TabIndex = 52;
this.arg7label.Text = "Argument 8:";
this.arg7label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg7label.UseMnemonic = false;
//
// arg6label
//
this.arg6label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg6label.Location = new System.Drawing.Point(58, 33);
this.arg6label.Name = "arg6label";
this.arg6label.Size = new System.Drawing.Size(179, 14);
this.arg6label.TabIndex = 50;
this.arg6label.Text = "Argument 7:";
this.arg6label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg6label.UseMnemonic = false;
//
// arg5label
//
this.arg5label.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg5label.Location = new System.Drawing.Point(58, 8);
this.arg5label.Name = "arg5label";
this.arg5label.Size = new System.Drawing.Size(179, 14);
this.arg5label.TabIndex = 48;
this.arg5label.Text = "Argument 6:";
this.arg5label.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.arg5label.UseMnemonic = false;
//
// arg0
//
this.arg0.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg0.Location = new System.Drawing.Point(237, 3);
this.arg0.Name = "arg0";
this.arg0.Size = new System.Drawing.Size(110, 24);
this.arg0.TabIndex = 2;
//
// arg3
//
this.arg3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg3.Location = new System.Drawing.Point(237, 78);
this.arg3.Name = "arg3";
this.arg3.Size = new System.Drawing.Size(110, 24);
this.arg3.TabIndex = 43;
//
// arg4
//
this.arg4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg4.Location = new System.Drawing.Point(237, 103);
this.arg4.Name = "arg4";
this.arg4.Size = new System.Drawing.Size(110, 24);
this.arg4.TabIndex = 45;
//
// arg1
//
this.arg1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg1.Location = new System.Drawing.Point(237, 28);
this.arg1.Name = "arg1";
this.arg1.Size = new System.Drawing.Size(110, 24);
this.arg1.TabIndex = 34;
//
// arg2
//
this.arg2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg2.Location = new System.Drawing.Point(237, 53);
this.arg2.Name = "arg2";
this.arg2.Size = new System.Drawing.Size(110, 24);
this.arg2.TabIndex = 35;
//
// arg9
//
this.arg9.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg9.Location = new System.Drawing.Point(240, 103);
this.arg9.Name = "arg9";
this.arg9.Size = new System.Drawing.Size(110, 24);
this.arg9.TabIndex = 55;
//
// arg8
//
this.arg8.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg8.Location = new System.Drawing.Point(240, 78);
this.arg8.Name = "arg8";
this.arg8.Size = new System.Drawing.Size(110, 24);
this.arg8.TabIndex = 53;
//
// arg7
//
this.arg7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg7.Location = new System.Drawing.Point(240, 53);
this.arg7.Name = "arg7";
this.arg7.Size = new System.Drawing.Size(110, 24);
this.arg7.TabIndex = 51;
//
// arg6
//
this.arg6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg6.Location = new System.Drawing.Point(240, 28);
this.arg6.Name = "arg6";
this.arg6.Size = new System.Drawing.Size(110, 24);
this.arg6.TabIndex = 49;
//
// arg5
//
this.arg5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.arg5.Location = new System.Drawing.Point(240, 3);
this.arg5.Name = "arg5";
this.arg5.Size = new System.Drawing.Size(110, 24);
this.arg5.TabIndex = 47;
//
// ArgumentsControlSRB2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.splitcontainer);
this.Name = "ArgumentsControlSRB2";
this.Size = new System.Drawing.Size(700, 200);
this.splitcontainer.Panel1.ResumeLayout(false);
this.splitcontainer.Panel1.PerformLayout();
this.splitcontainer.Panel2.ResumeLayout(false);
this.splitcontainer.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitcontainer)).EndInit();
this.splitcontainer.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitcontainer;
private ArgumentBox arg0;
private ArgumentBox arg1;
private System.Windows.Forms.Label arg0label;
private System.Windows.Forms.Label arg2label;
private System.Windows.Forms.Label arg1label;
private System.Windows.Forms.Label arg3label;
private System.Windows.Forms.Label arg4label;
private ArgumentBox arg3;
private ArgumentBox arg4;
private System.Windows.Forms.ToolTip tooltip;
private ArgumentBox arg2;
private System.Windows.Forms.Label arg5label;
private ArgumentBox arg5;
private System.Windows.Forms.Label arg9label;
private ArgumentBox arg9;
private System.Windows.Forms.Label arg8label;
private ArgumentBox arg8;
private System.Windows.Forms.Label arg7label;
private ArgumentBox arg7;
private System.Windows.Forms.Label arg6label;
private ArgumentBox arg6;
private System.Windows.Forms.Label stringarg0label;
private System.Windows.Forms.TextBox stringarg0;
private System.Windows.Forms.Label stringarg1label;
private System.Windows.Forms.TextBox stringarg1;
}
}

View file

@ -0,0 +1,245 @@
#region ================== Namespaces
using System;
using System.ComponentModel;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.GZBuilder.Data;
using CodeImp.DoomBuilder.Geometry;
using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Types;
using CodeImp.DoomBuilder.GZBuilder;
#endregion
namespace CodeImp.DoomBuilder.Controls
{
public partial class ArgumentsControlSRB2 : UserControl
{
#region ================== Native stuff
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam);
private const int WM_SETREDRAW = 11;
#endregion
#region ================== Variables
private int action;
private ArgumentInfo[] arginfo;
private Label[] labels;
private ArgumentBox[] args;
private Label[] stringlabels;
private System.Windows.Forms.TextBox[] stringargs;
#endregion
#region ================== Constructor
public ArgumentsControlSRB2()
{
InitializeComponent();
Reset();
labels = new Label[] { arg0label, arg1label, arg2label, arg3label, arg4label, arg5label, arg6label, arg7label, arg8label, arg9label };
args = new ArgumentBox[] { arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 };
stringlabels = new Label[] { stringarg0label, stringarg1label };
stringargs = new System.Windows.Forms.TextBox[] { stringarg0, stringarg1 };
}
#endregion
#region ================== Setup
public void Reset()
{
// Only when running (this.DesignMode won't do when not this, but one of parent controls is in design mode)
if (LicenseManager.UsageMode != LicenseUsageMode.Designtime)
{
// do nothing.
}
}
public void SetValue(Linedef l, bool first)
{
SetValue(l.Fields, l.Args, first);
}
public void SetValue(Thing t, bool first)
{
SetValue(t.Fields, t.Args, first);
}
private void SetValue(UniFields fields, int[] newargs, bool first)
{
// Update arguments
for (int i = 0; i < args.Length; i++)
{
if (first)
args[i].SetValue(newargs[i]);
else
if (!string.IsNullOrEmpty(args[i].Text) && newargs[i] != args[i].GetResult(int.MinValue)) args[i].ClearValue();
}
for (int i = 0; i < stringargs.Length; i++)
{
if (first)
stringargs[i].Text = fields.GetValue("stringarg" + i, string.Empty);
else
if (fields.GetValue("stringarg" + i, string.Empty) != stringargs[i].Text) stringargs[i].Text = string.Empty;
}
}
#endregion
#region ================== Apply
public void Apply(Linedef l, int step)
{
for (int i = 0; i < args.Length; i++)
l.Args[i] = args[i].GetResult(l.Args[i], step);
for (int i = 0; i < stringargs.Length; i++)
if (!string.IsNullOrEmpty(stringargs[i].Text))
UniFields.SetString(l.Fields, "stringarg" + i, stringargs[i].Text, string.Empty);
}
public void Apply(Thing t, int step)
{
for (int i = 0; i < args.Length; i++)
t.Args[i] = args[i].GetResult(t.Args[i], step);
for (int i = 0; i < stringargs.Length; i++)
if (!string.IsNullOrEmpty(stringargs[i].Text))
UniFields.SetString(t.Fields, "stringarg" + i, stringargs[i].Text, string.Empty);
}
#endregion
#region ================== Update
public void UpdateAction(int action, bool setuponly)
{
UpdateAction(action, setuponly, null);
}
//TODO: Info for string args
public void UpdateAction(int action, bool setuponly, ThingTypeInfo info)
{
// Update arguments
int showaction = 0;
ArgumentInfo[] oldarginfo = (arginfo != null ? (ArgumentInfo[])arginfo.Clone() : null); //mxd
// Only when action type is known
if (General.Map.Config.LinedefActions.ContainsKey(action)) showaction = action;
// Update argument infos
if ((showaction == 0) && (info != null)) arginfo = info.Args;
else arginfo = General.Map.Config.LinedefActions[showaction].Args;
// Don't update action args when thing type is changed
if (info != null && showaction != 0 && this.action == showaction) return;
//mxd. Don't update action args when old and new argument infos match
if (arginfo != null && oldarginfo != null && ArgumentInfosMatch(arginfo, oldarginfo)) return;
// Change the argument descriptions
this.BeginUpdate();
for (int i = 0; i < args.Length; i++)
UpdateArgument(args[i], labels[i], arginfo[i]);
if (!setuponly)
{
// Apply action's or thing's default arguments
if (showaction != 0 || info != null)
{
for (int i = 0; i < args.Length; i++)
args[i].SetDefaultValue();
}
else //or set them to 0
{
for (int i = 0; i < args.Length; i++)
args[i].SetValue(0);
}
}
// Store current action
this.action = showaction;
this.EndUpdate();
}
public void UpdateScriptControls()
{
}
private void UpdateArgument(ArgumentBox arg, Label label, ArgumentInfo info)
{
// Update labels
label.Text = info.Title + ":";
label.Enabled = info.Used;
arg.ForeColor = (label.Enabled ? SystemColors.WindowText : SystemColors.GrayText);
arg.Setup(info);
// Update tooltip
UpdateToolTip(label, info);
}
private void UpdateToolTip(Label label, ArgumentInfo info)
{
if (info.Used && !string.IsNullOrEmpty(info.ToolTip))
{
tooltip.SetToolTip(label, info.ToolTip);
label.Font = new Font(label.Font, FontStyle.Underline);
label.ForeColor = SystemColors.HotTrack;
}
else
{
tooltip.SetToolTip(label, null);
label.Font = new Font(label.Font, FontStyle.Regular);
label.ForeColor = SystemColors.WindowText;
}
}
//mxd
private static bool ArgumentInfosMatch(ArgumentInfo[] info1, ArgumentInfo[] info2)
{
if (info1.Length != info2.Length) return false;
bool haveusedargs = false; // Arguments should still be reset if all arguments are unused
for (int i = 0; i < info1.Length; i++)
{
if (info1[i].Used != info2[i].Used || info1[i].Type != info2[i].Type
|| info1[i].Title.ToUpperInvariant() != info2[i].Title.ToUpperInvariant())
return false;
haveusedargs |= info1[i].Used;
}
return haveusedargs;
}
#endregion
#region ================== Redraw control
private void BeginUpdate()
{
SendMessage(this.Parent.Handle, WM_SETREDRAW, false, 0);
}
private void EndUpdate()
{
SendMessage(this.Parent.Handle, WM_SETREDRAW, true, 0);
this.Parent.Refresh();
}
#endregion
}
}

View file

@ -0,0 +1,123 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View file

@ -239,14 +239,14 @@ namespace CodeImp.DoomBuilder.Controls
{
int first;
string[] argnames = scriptitem.GetArgumentsDescriptions(l.Action, out first);
for (int i = 0; i < first; i++)
for (int i = 0; i < Math.Min(args.Length, first); i++)
{
arglabels[i].Text = (isarg0str ? act.Args[i].TitleStr : act.Args[i].Title) + ":";
arglabels[i].Enabled = act.Args[i].Used;
args[i].Enabled = act.Args[i].Used;
}
for (int i = first; i < argnames.Length; i++)
for (int i = first; i < args.Length; i++)
{
if(!string.IsNullOrEmpty(argnames[i]))
{
@ -264,7 +264,7 @@ namespace CodeImp.DoomBuilder.Controls
}
else
{
for(int i = 0; i < act.Args.Length; i++)
for(int i = 0; i < args.Length; i++)
{
arglabels[i].Text = (isarg0str ? act.Args[i].TitleStr : act.Args[i].Title) + ":";
arglabels[i].Enabled = act.Args[i].Used;

View file

@ -162,14 +162,14 @@ namespace CodeImp.DoomBuilder.Controls
{
int first;
string[] argnames = scriptitem.GetArgumentsDescriptions(t.Action, out first);
for (int i = 0; i < first; i++)
for (int i = 0; i < Math.Min(args.Length, first); i++)
{
arglabels[i].Text = (isarg0str ? arginfo[i].TitleStr : arginfo[i].Title) + ":";
arglabels[i].Enabled = arginfo[i].Used;
args[i].Enabled = arginfo[i].Used;
}
for (int i = first; i < argnames.Length; i++)
for (int i = first; i < args.Length; i++)
{
if (!string.IsNullOrEmpty(argnames[i]))
{
@ -187,7 +187,7 @@ namespace CodeImp.DoomBuilder.Controls
}
else
{
for (int i = 0; i < arginfo.Length; i++)
for (int i = 0; i < args.Length; i++)
{
arglabels[i].Text = (isarg0str ? arginfo[i].TitleStr : arginfo[i].Title) + ":";
arglabels[i].Enabled = arginfo[i].Used;

View file

@ -33,7 +33,7 @@ namespace CodeImp.DoomBuilder.Map
#region ================== Constants
public const double SIDE_POINT_DISTANCE = 0.01;
public const int NUM_ARGS = 5;
public const int NUM_ARGS = 10;
#endregion

View file

@ -12,6 +12,8 @@ uifields
arg0str = 2;
locknumber = 0;
comment = 2;
stringarg0 = 2;
stringarg1 = 2;
}
sidedef

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,189 @@
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="label2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label11.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label12.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label6.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="tabproperties.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="tabcustom.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="imagelist.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>105, 17</value>
</metadata>
<data name="imagelist.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADM
CAAAAk1TRnQBSQFMAgEBAgEAAeABAAHgAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/1QAAh8GAAIfKAAB/wHx
Af8KAAEfAiYBHwQAAR8CJgEfJgAB/wG7AYsBswH/CAABHwQmAR8CAAEfBCYBHyQAAf8BuwOLAbMB/wcA
ASUB3gQmAh8EJgHeASUjAAH/AbsBigOLAa0BswH/BwABJQHeCCYB3gElIwAB/wG7AooDiwKtAbMB/wcA
ASUB3gYmAd4BJSMAAf8BtQOKAYsBswGLA60BswH/BwABJQYmASUkAAHzA4oBiwHyAf8BtAKtA7MB/wYA
AR8GJgEfJAAB/wG1AYoBtAH/AgAB/wG0Aa0EswH/BAABHwgsAR8kAAH/AfEB/wQAAf8BtAWzAf8CAAEf
Ak0CLALeAiwCTQEfKwAB/wG0BLMB8wEAAR8CUwJNAd4CJQHeAk0CUwEfKwAB/wG0ArMBGQIAASUB3gJT
Ad4BJQIAASUB3gJTAd4BJSwAAf8BugEZBAABJQLeASUEAAElAt4BJTUAAiUGAAIlYwABQgFNAT4HAAE+
AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEABP8EAAL/AucEAAH4Af8CwwQAAfABfwKBBAAB4AE/
AYABAQQAAcABHwHAAQMEAAGAAQ8B4AEHBQABBwHwAQ8FAAEDAfABDwQAAQYBAQHgAQcEAAGPAQABwAED
BAAB/wKAAQEEAAH/AcECgQQAAf8B4wLDBAAC/wLnBAAE/wQACw==
</value>
</data>
</root>

View file

@ -4171,7 +4171,14 @@ namespace CodeImp.DoomBuilder.Windows
{
if (General.Map.UDMF)
{
return new LinedefEditFormUDMF(selectfront, selectback);
if (General.Map.Config.EngineName == "srb2")
{
return new LinedefEditFormSRB2(selectfront, selectback);
}
else
{
return new LinedefEditFormUDMF(selectfront, selectback);
}
}
else
{