Merge remote-tracking branch 'udb/master'

This commit is contained in:
spherallic 2023-06-10 19:31:53 +02:00
commit c32f677c44
23 changed files with 1001 additions and 195 deletions

View file

@ -4449,5 +4449,20 @@ udmf
line
{
121 = NULL;
301
{
title = "Line Quick Portal";
id = "Line_QuickPortal";
requiresactivation = false;
arg0
{
title = "Non-interactive";
type = 3;
}
linetolinetag = true;
linetolinesameaction = true;
}
}
}

View file

@ -723,6 +723,7 @@ namespace CodeImp.DoomBuilder.Controls
break;
case ".pk7":
case ".pk3":
case ".pke":
case ".ipk3":
case ".ipk7":
if(AddItem(new DataLocation(DataLocation.RESOURCE_PK3, path, false, false, false, null))) addedfiles++;

View file

@ -67,6 +67,10 @@ namespace CodeImp.DoomBuilder.Editing
AddThing,
RemThing,
PrpThing,
IndexLinedef,
IndexThing,
IndexSector,
IndexVertex,
}
#endregion
@ -425,6 +429,10 @@ namespace CodeImp.DoomBuilder.Editing
case StreamCodes.AddThing: PlayAddThing(ds); break;
case StreamCodes.RemThing: PlayRemThing(ds); break;
case StreamCodes.PrpThing: PlayPrpThing(ds); break;
case StreamCodes.IndexLinedef: PlayIndexLinedef(ds); break;
case StreamCodes.IndexThing: PlayIndexThing(ds); break;
case StreamCodes.IndexSector: PlayIndexSector(ds); break;
case StreamCodes.IndexVertex: PlayIndexVertex(ds); break;
}
// Sanity check
@ -1326,6 +1334,82 @@ namespace CodeImp.DoomBuilder.Editing
t.Marked = true;
}
internal void RecIndexLinedef(int oldindex, int newindex)
{
if (!BeginRecordData(StreamCodes.IndexLinedef)) return;
ss.wInt(oldindex);
ss.wInt(newindex);
EndRecordData();
}
private static void PlayIndexLinedef(DeserializerStream ds)
{
ds.rInt(out int oldindex);
ds.rInt(out int newindex);
// Record again because redo will not work otherwise (for map elements this regularly happens in BeforePropsChange
// oldindex and newindex are flipped here because we have to change them back
General.Map.UndoRedo.RecIndexLinedef(newindex, oldindex);
General.Map.Map.ChangeLindefIndex(newindex, oldindex);
}
internal void RecIndexThing(int oldindex, int newindex)
{
if (!BeginRecordData(StreamCodes.IndexThing)) return;
ss.wInt(oldindex);
ss.wInt(newindex);
EndRecordData();
}
private static void PlayIndexThing(DeserializerStream ds)
{
ds.rInt(out int oldindex);
ds.rInt(out int newindex);
// Record again because redo will not work otherwise (for map elements this regularly happens in BeforePropsChange
// oldindex and newindex are flipped here because we have to change them back
General.Map.UndoRedo.RecIndexThing(newindex, oldindex);
General.Map.Map.ChangeThingIndex(newindex, oldindex);
}
internal void RecIndexSector(int oldindex, int newindex)
{
if (!BeginRecordData(StreamCodes.IndexSector)) return;
ss.wInt(oldindex);
ss.wInt(newindex);
EndRecordData();
}
private static void PlayIndexSector(DeserializerStream ds)
{
ds.rInt(out int oldindex);
ds.rInt(out int newindex);
// Record again because redo will not work otherwise (for map elements this regularly happens in BeforePropsChange
// oldindex and newindex are flipped here because we have to change them back
General.Map.UndoRedo.RecIndexSector(newindex, oldindex);
General.Map.Map.ChangeSectorIndex(newindex, oldindex);
}
internal void RecIndexVertex(int oldindex, int newindex)
{
if (!BeginRecordData(StreamCodes.IndexVertex)) return;
ss.wInt(oldindex);
ss.wInt(newindex);
EndRecordData();
}
private static void PlayIndexVertex(DeserializerStream ds)
{
ds.rInt(out int oldindex);
ds.rInt(out int newindex);
// Record again because redo will not work otherwise (for map elements this regularly happens in BeforePropsChange
// oldindex and newindex are flipped here because we have to change them back
General.Map.UndoRedo.RecIndexVertex(newindex, oldindex);
General.Map.Map.ChangeVertexIndex(newindex, oldindex);
}
#endregion
}
}

View file

@ -1365,6 +1365,16 @@ namespace CodeImp.DoomBuilder.Map
colorPresetIndex = -1;
}
/// <summary>
/// Changes the linedef's index to a new index.
/// </summary>
/// <param name="newindex">The new index to set</param>
public void ChangeIndex(int newindex)
{
General.Map.UndoRedo.RecIndexLinedef(Index, newindex);
map?.ChangeLindefIndex(Index, newindex);
}
// String representation
public override string ToString()
{

View file

@ -813,7 +813,43 @@ namespace CodeImp.DoomBuilder.Map
{
RemoveItem(ref things, index, ref numthings);
}
private void ChangeItemIndex<T>(ref T[] array, int oldindex, int newindex, int counter) where T : MapElement
{
if (oldindex == newindex || oldindex < 0 || newindex < 0 || oldindex >= array.Length || newindex >= array.Length)
return;
T item = array[oldindex];
if (oldindex > newindex) // Shift everything right
{
for (int i = oldindex; i > newindex; i--)
{
array[i] = array[i - 1];
array[i].Index++;
}
}
else // Shift everything left
{
for (int i = oldindex; i < newindex; i++)
{
array[i] = array[i + 1];
array[i].Index--;
}
}
array[newindex] = item;
array[newindex].Index = newindex;
}
internal void ChangeLindefIndex(int oldindex, int newindex) => ChangeItemIndex(ref linedefs, oldindex, newindex, numlinedefs);
internal void ChangeThingIndex(int oldindex, int newindex) => ChangeItemIndex(ref things, oldindex, newindex, numthings);
internal void ChangeSectorIndex(int oldindex, int newindex) => ChangeItemIndex(ref sectors, oldindex, newindex, numsectors);
internal void ChangeVertexIndex(int oldindex, int newindex) => ChangeItemIndex(ref vertices, oldindex, newindex, numvertices);
#endregion
#region ================== Serialization

View file

@ -819,6 +819,16 @@ namespace CodeImp.DoomBuilder.Map
return new Geometry.Plane(new Vector3D(0, 0, -1), s.CeilHeight);
}
/// <summary>
/// Changes the sector's index to a new index.
/// </summary>
/// <param name="newindex">The new index to set</param>
public void ChangeIndex(int newindex)
{
General.Map.UndoRedo.RecIndexSector(Index, newindex);
map?.ChangeSectorIndex(Index, newindex);
}
// String representation
public override string ToString()
{

View file

@ -751,6 +751,16 @@ namespace CodeImp.DoomBuilder.Map
return Vector2D.Distance(p, pos);
}
/// <summary>
/// Changes the thing's index to a new index.
/// </summary>
/// <param name="newindex">The new index to set</param>
public void ChangeIndex(int newindex)
{
General.Map.UndoRedo.RecIndexThing(Index, newindex);
map?.ChangeThingIndex(Index, newindex);
}
#endregion
}
}

View file

@ -338,6 +338,16 @@ namespace CodeImp.DoomBuilder.Map
General.Map.IsChanged = true;
}
/// <summary>
/// Changes the thing's index to a new index.
/// </summary>
/// <param name="newindex">The new index to set</param>
public void ChangeIndex(int newindex)
{
General.Map.UndoRedo.RecIndexVertex(Index, newindex);
map?.ChangeVertexIndex(Index, newindex);
}
// String representation
public override string ToString()
{

View file

@ -39,12 +39,14 @@ namespace CodeImp.DoomBuilder.Windows
this.browsewad = new System.Windows.Forms.Button();
this.wadlocation = new System.Windows.Forms.TextBox();
this.directorytab = new System.Windows.Forms.TabPage();
this.directorylink = new System.Windows.Forms.LinkLabel();
this.pke_directorylink = new System.Windows.Forms.LinkLabel();
this.pk3_directorylink = new System.Windows.Forms.LinkLabel();
this.dir_flats = new System.Windows.Forms.CheckBox();
this.dir_textures = new System.Windows.Forms.CheckBox();
this.browsedir = new System.Windows.Forms.Button();
this.dirlocation = new System.Windows.Forms.TextBox();
this.pk3filetab = new System.Windows.Forms.TabPage();
this.pkelink = new System.Windows.Forms.LinkLabel();
this.pk3link = new System.Windows.Forms.LinkLabel();
this.browsepk3 = new System.Windows.Forms.Button();
this.pk3location = new System.Windows.Forms.TextBox();
@ -90,9 +92,9 @@ namespace CodeImp.DoomBuilder.Windows
label3.AutoSize = true;
label3.Location = new System.Drawing.Point(15, 20);
label3.Name = "label3";
label3.Size = new System.Drawing.Size(133, 13);
label3.Size = new System.Drawing.Size(163, 13);
label3.TabIndex = 3;
label3.Text = "PK3 or PK7 File Resource:";
label3.Text = "PK3, PKE, or PK7 File Resource:";
//
// tabs
//
@ -107,7 +109,7 @@ namespace CodeImp.DoomBuilder.Windows
this.tabs.Name = "tabs";
this.tabs.Padding = new System.Drawing.Point(16, 3);
this.tabs.SelectedIndex = 0;
this.tabs.Size = new System.Drawing.Size(369, 211);
this.tabs.Size = new System.Drawing.Size(379, 237);
this.tabs.TabIndex = 0;
//
// wadfiletab
@ -121,7 +123,7 @@ namespace CodeImp.DoomBuilder.Windows
this.wadfiletab.Location = new System.Drawing.Point(4, 22);
this.wadfiletab.Name = "wadfiletab";
this.wadfiletab.Padding = new System.Windows.Forms.Padding(3);
this.wadfiletab.Size = new System.Drawing.Size(361, 185);
this.wadfiletab.Size = new System.Drawing.Size(371, 211);
this.wadfiletab.TabIndex = 0;
this.wadfiletab.Text = "From WAD File";
this.wadfiletab.UseVisualStyleBackColor = true;
@ -130,7 +132,7 @@ namespace CodeImp.DoomBuilder.Windows
//
this.label6.Location = new System.Drawing.Point(14, 102);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(329, 58);
this.label6.Size = new System.Drawing.Size(339, 58);
this.label6.TabIndex = 0;
this.label6.Text = resources.GetString("label6.Text");
//
@ -147,7 +149,7 @@ namespace CodeImp.DoomBuilder.Windows
// browsewad
//
this.browsewad.Image = global::CodeImp.DoomBuilder.Properties.Resources.Folder;
this.browsewad.Location = new System.Drawing.Point(315, 35);
this.browsewad.Location = new System.Drawing.Point(325, 35);
this.browsewad.Name = "browsewad";
this.browsewad.Padding = new System.Windows.Forms.Padding(0, 0, 1, 3);
this.browsewad.Size = new System.Drawing.Size(28, 24);
@ -161,14 +163,15 @@ namespace CodeImp.DoomBuilder.Windows
this.wadlocation.Location = new System.Drawing.Point(17, 37);
this.wadlocation.Name = "wadlocation";
this.wadlocation.ReadOnly = true;
this.wadlocation.Size = new System.Drawing.Size(292, 20);
this.wadlocation.Size = new System.Drawing.Size(302, 20);
this.wadlocation.TabIndex = 1;
this.wadlocation.TabStop = false;
this.wadlocation.Enter += new System.EventHandler(this.wadlocation_Enter);
//
// directorytab
//
this.directorytab.Controls.Add(this.directorylink);
this.directorytab.Controls.Add(this.pke_directorylink);
this.directorytab.Controls.Add(this.pk3_directorylink);
this.directorytab.Controls.Add(this.dir_flats);
this.directorytab.Controls.Add(this.dir_textures);
this.directorytab.Controls.Add(this.browsedir);
@ -178,24 +181,37 @@ namespace CodeImp.DoomBuilder.Windows
this.directorytab.Location = new System.Drawing.Point(4, 22);
this.directorytab.Name = "directorytab";
this.directorytab.Padding = new System.Windows.Forms.Padding(3);
this.directorytab.Size = new System.Drawing.Size(361, 185);
this.directorytab.Size = new System.Drawing.Size(371, 211);
this.directorytab.TabIndex = 1;
this.directorytab.Text = "From Directory";
this.directorytab.UseVisualStyleBackColor = true;
//
// directorylink
// pke_directorylink
//
this.directorylink.LinkArea = new System.Windows.Forms.LinkArea(26, 29);
this.directorylink.LinkColor = System.Drawing.SystemColors.HotTrack;
this.directorylink.Location = new System.Drawing.Point(14, 127);
this.directorylink.Name = "directorylink";
this.directorylink.Size = new System.Drawing.Size(329, 54);
this.directorylink.TabIndex = 1;
this.directorylink.TabStop = true;
this.directorylink.Text = "The directory may use the ZDoom PK3 directory structure, or you can choose to use" +
this.pke_directorylink.LinkArea = new System.Windows.Forms.LinkArea(31, 32);
this.pke_directorylink.LinkColor = System.Drawing.SystemColors.HotTrack;
this.pke_directorylink.Location = new System.Drawing.Point(15, 173);
this.pke_directorylink.Name = "pke_directorylink";
this.pke_directorylink.Size = new System.Drawing.Size(339, 46);
this.pke_directorylink.TabIndex = 7;
this.pke_directorylink.TabStop = true;
this.pke_directorylink.Text = "Alternatively, you may use the Eternity PKE directory structure.";
this.pke_directorylink.UseCompatibleTextRendering = true;
this.pke_directorylink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.pke_link_Click);
//
// pk3_directorylink
//
this.pk3_directorylink.LinkArea = new System.Windows.Forms.LinkArea(26, 29);
this.pk3_directorylink.LinkColor = System.Drawing.SystemColors.HotTrack;
this.pk3_directorylink.Location = new System.Drawing.Point(14, 127);
this.pk3_directorylink.Name = "pk3_directorylink";
this.pk3_directorylink.Size = new System.Drawing.Size(339, 58);
this.pk3_directorylink.TabIndex = 1;
this.pk3_directorylink.TabStop = true;
this.pk3_directorylink.Text = "The directory may use the ZDoom PK3 directory structure, or you can choose to use" +
" the options above to load texture or flat images from the directory root.";
this.directorylink.UseCompatibleTextRendering = true;
this.directorylink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.link_Click);
this.pk3_directorylink.UseCompatibleTextRendering = true;
this.pk3_directorylink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.pk3_link_Click);
//
// dir_flats
//
@ -241,6 +257,7 @@ namespace CodeImp.DoomBuilder.Windows
//
// pk3filetab
//
this.pk3filetab.Controls.Add(this.pkelink);
this.pk3filetab.Controls.Add(this.pk3link);
this.pk3filetab.Controls.Add(this.browsepk3);
this.pk3filetab.Controls.Add(this.pk3location);
@ -248,28 +265,42 @@ namespace CodeImp.DoomBuilder.Windows
this.pk3filetab.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.pk3filetab.Location = new System.Drawing.Point(4, 22);
this.pk3filetab.Name = "pk3filetab";
this.pk3filetab.Size = new System.Drawing.Size(361, 185);
this.pk3filetab.Size = new System.Drawing.Size(371, 211);
this.pk3filetab.TabIndex = 2;
this.pk3filetab.Text = "From PK3/PK7";
this.pk3filetab.Text = "From PK3/PKE/PK7";
this.pk3filetab.UseVisualStyleBackColor = true;
//
// pkelink
//
this.pkelink.LinkArea = new System.Windows.Forms.LinkArea(42, 36);
this.pkelink.LinkColor = System.Drawing.SystemColors.HotTrack;
this.pkelink.Location = new System.Drawing.Point(15, 111);
this.pkelink.Name = "pkelink";
this.pkelink.Size = new System.Drawing.Size(338, 47);
this.pkelink.TabIndex = 8;
this.pkelink.TabStop = true;
this.pkelink.Text = "PKE archive files are expected to use the Eternity archive directory structure.";
this.pkelink.UseCompatibleTextRendering = true;
this.pkelink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.pke_link_Click);
//
// pk3link
//
this.pk3link.LinkArea = new System.Windows.Forms.LinkArea(40, 33);
this.pk3link.LinkArea = new System.Windows.Forms.LinkArea(50, 33);
this.pk3link.LinkColor = System.Drawing.SystemColors.HotTrack;
this.pk3link.Location = new System.Drawing.Point(15, 72);
this.pk3link.Name = "pk3link";
this.pk3link.Size = new System.Drawing.Size(328, 47);
this.pk3link.Size = new System.Drawing.Size(338, 47);
this.pk3link.TabIndex = 7;
this.pk3link.TabStop = true;
this.pk3link.Text = "The archive file is expected to use the ZDoom archive directory structure.";
this.pk3link.Text = "PK3 and PK7 archive files are expected to use the ZDoom archive directory structu" +
"re.";
this.pk3link.UseCompatibleTextRendering = true;
this.pk3link.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.link_Click);
this.pk3link.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.pk3_link_Click);
//
// browsepk3
//
this.browsepk3.Image = global::CodeImp.DoomBuilder.Properties.Resources.Folder;
this.browsepk3.Location = new System.Drawing.Point(315, 35);
this.browsepk3.Location = new System.Drawing.Point(325, 35);
this.browsepk3.Name = "browsepk3";
this.browsepk3.Padding = new System.Windows.Forms.Padding(0, 0, 1, 3);
this.browsepk3.Size = new System.Drawing.Size(28, 24);
@ -282,7 +313,7 @@ namespace CodeImp.DoomBuilder.Windows
this.pk3location.Location = new System.Drawing.Point(17, 37);
this.pk3location.Name = "pk3location";
this.pk3location.ReadOnly = true;
this.pk3location.Size = new System.Drawing.Size(292, 20);
this.pk3location.Size = new System.Drawing.Size(302, 20);
this.pk3location.TabIndex = 0;
this.pk3location.TabStop = false;
this.pk3location.Enter += new System.EventHandler(this.pk3location_Enter);
@ -291,7 +322,7 @@ namespace CodeImp.DoomBuilder.Windows
//
this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancel.Location = new System.Drawing.Point(262, 304);
this.cancel.Location = new System.Drawing.Point(272, 330);
this.cancel.Name = "cancel";
this.cancel.Size = new System.Drawing.Size(112, 25);
this.cancel.TabIndex = 2;
@ -302,7 +333,7 @@ namespace CodeImp.DoomBuilder.Windows
// apply
//
this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.apply.Location = new System.Drawing.Point(144, 304);
this.apply.Location = new System.Drawing.Point(154, 330);
this.apply.Name = "apply";
this.apply.Size = new System.Drawing.Size(112, 25);
this.apply.TabIndex = 1;
@ -317,14 +348,15 @@ namespace CodeImp.DoomBuilder.Windows
//
// pk3filedialog
//
this.pk3filedialog.Filter = "Doom PK3/PK7 Files (*.pk3;*.pk7;*.ipk3;*.ipk7)|*.pk3;*.pk7;*.ipk3;*.ipk7";
this.pk3filedialog.Title = "Browse PK3 or PK7 File";
this.pk3filedialog.Filter = "Doom PK3/PKE/PK7 Files (*.pk3;*.pke;*.pk7;*.ipk3;*.ipk7)|*.pk3;*.pke;*.pk7;*.ipk3" +
";*.ipk7";
this.pk3filedialog.Title = "Browse PK3, PKE, or PK7 File";
//
// notfortesting
//
this.notfortesting.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.notfortesting.AutoSize = true;
this.notfortesting.Location = new System.Drawing.Point(12, 233);
this.notfortesting.Location = new System.Drawing.Point(12, 260);
this.notfortesting.Name = "notfortesting";
this.notfortesting.Size = new System.Drawing.Size(239, 17);
this.notfortesting.TabIndex = 3;
@ -341,9 +373,9 @@ namespace CodeImp.DoomBuilder.Windows
this.checkingloader.Controls.Add(this.label4);
this.checkingloader.Cursor = System.Windows.Forms.Cursors.AppStarting;
this.checkingloader.ForeColor = System.Drawing.SystemColors.InfoText;
this.checkingloader.Location = new System.Drawing.Point(12, 263);
this.checkingloader.Location = new System.Drawing.Point(12, 289);
this.checkingloader.Name = "checkingloader";
this.checkingloader.Size = new System.Drawing.Size(362, 32);
this.checkingloader.Size = new System.Drawing.Size(372, 32);
this.checkingloader.TabIndex = 4;
this.checkingloader.Visible = false;
//
@ -372,7 +404,7 @@ namespace CodeImp.DoomBuilder.Windows
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.CancelButton = this.cancel;
this.ClientSize = new System.Drawing.Size(386, 337);
this.ClientSize = new System.Drawing.Size(396, 363);
this.Controls.Add(this.checkingloader);
this.Controls.Add(this.notfortesting);
this.Controls.Add(this.cancel);
@ -422,12 +454,14 @@ namespace CodeImp.DoomBuilder.Windows
private System.Windows.Forms.TextBox pk3location;
private System.Windows.Forms.OpenFileDialog pk3filedialog;
private System.Windows.Forms.LinkLabel pk3link;
private System.Windows.Forms.LinkLabel directorylink;
private System.Windows.Forms.LinkLabel pk3_directorylink;
private System.Windows.Forms.CheckBox strictpatches;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.CheckBox notfortesting;
private System.Windows.Forms.Panel checkingloader;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.LinkLabel pkelink;
private System.Windows.Forms.LinkLabel pke_directorylink;
}
}

View file

@ -86,8 +86,9 @@ namespace CodeImp.DoomBuilder.Windows
#if NO_WIN32
// No easy way to have case-insesitivity for non-Windows platforms
wadfiledialog.Filter = "Doom WAD Files (*.wad)|*.wad;*.Wad;*.wAd;*.WAd;*.waD;*.WaD;*.wAD;*.WAD";
pk3filedialog.Filter = "Doom PK3/PK7 Files (*.pk3;*.pk7;*.ipk3;*.ipk7)|" +
pk3filedialog.Filter = "Doom PK3/PKE/PK7 Files (*.pk3;*.pke;*.pk7;*.ipk3;*.ipk7)|" +
"*.pk3;*.Pk3;*.pK3;*.PK3;" +
"*.pke;*.Pke;*.pKe;*.PKe;*.pkE;*.PkE;*.pKE;*.PKE;" +
"*.pk7;*.Pk7;*.pK7;*.PK7;" +
"*.ipk3;*.iPk3;*.ipK3;*.iPK3;*.Ipk3;*.IPk3;*.IpK3;*.IPK3;" +
"*.ipk7;*.iPk7;*.ipK7;*.iPK7;*.Ipk7;*.IPk7;*.IpK7;*.IPK7";
@ -329,7 +330,7 @@ namespace CodeImp.DoomBuilder.Windows
dir_textures.Checked = false;
dir_flats.Checked = false;
notfortesting.Checked = false;
// if any of the detected required archives implies "not for testing" disable it by default
// if any of the detected required archives implies "not for testing" <EFBFBD> disable it by default
foreach (var arc in GameConfiguration.RequiredArchives)
{
if (requiredarchives.Contains(arc.ID) && arc.ExcludeFromTesting)
@ -423,7 +424,7 @@ namespace CodeImp.DoomBuilder.Windows
break;
case DataLocation.RESOURCE_PK3:
MessageBox.Show(this, "Please select a valid PK3 or PK7 File resource.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
MessageBox.Show(this, "Please select a valid PK3, PKE, or PK7 File resource.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
case DataLocation.RESOURCE_DIRECTORY:
@ -501,11 +502,16 @@ namespace CodeImp.DoomBuilder.Windows
}
// Link clicked
private void link_Click(object sender, LinkLabelLinkClickedEventArgs e)
private void pk3_link_Click(object sender, LinkLabelLinkClickedEventArgs e)
{
General.OpenWebsite("http://www.zdoom.org/wiki/Using_ZIPs_as_WAD_replacement");
}
private void pke_link_Click(object sender, LinkLabelLinkClickedEventArgs e)
{
General.OpenWebsite("https://eternity.youfailit.net/wiki/ZIP");
}
// Help
private void ResourceOptionsForm_HelpRequested(object sender, HelpEventArgs hlpevent)
{

View file

@ -165,6 +165,12 @@
<Compile Include="General\Association.cs" />
<Compile Include="General\BuilderPlug.cs" />
<Compile Include="General\CopyStructures.cs" />
<Compile Include="Interface\ChangeMapElementIndexForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Interface\ChangeMapElementIndexForm.Designer.cs">
<DependentUpon>ChangeMapElementIndexForm.cs</DependentUpon>
</Compile>
<Compile Include="Interface\ErrorCheckForm.cs">
<SubType>Form</SubType>
</Compile>
@ -223,6 +229,9 @@
<Compile Include="ClassicModes\VerticesMode.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Interface\ChangeMapElementIndexForm.resx">
<DependentUpon>ChangeMapElementIndexForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Interface\ImageExportSettingsForm.resx">
<DependentUpon>ImageExportSettingsForm.cs</DependentUpon>
</EmbeddedResource>

View file

@ -163,6 +163,12 @@
<Compile Include="General\Association.cs" />
<Compile Include="General\BuilderPlug.cs" />
<Compile Include="General\CopyStructures.cs" />
<Compile Include="Interface\ChangeMapElementIndexForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Interface\ChangeMapElementIndexForm.Designer.cs">
<DependentUpon>ChangeMapElementIndexForm.cs</DependentUpon>
</Compile>
<Compile Include="Interface\ErrorCheckForm.cs">
<SubType>Form</SubType>
</Compile>
@ -221,6 +227,9 @@
<Compile Include="ClassicModes\VerticesMode.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Interface\ChangeMapElementIndexForm.resx">
<DependentUpon>ChangeMapElementIndexForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Interface\ImageExportSettingsForm.resx">
<DependentUpon>ImageExportSettingsForm.cs</DependentUpon>
</EmbeddedResource>

View file

@ -2346,6 +2346,30 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.RedrawDisplay();
}
[BeginAction("rotateclockwise")]
public void RotateCW()
{
rotation += Angle2D.DegToRad(5);
// Update
UpdateGeometry();
UpdateRectangleComponents();
General.Map.Map.Update();
General.Interface.RedrawDisplay();
}
[BeginAction("rotatecounterclockwise")]
public void RotateCCW()
{
rotation -= Angle2D.DegToRad(5);
// Update
UpdateGeometry();
UpdateRectangleComponents();
General.Map.Map.Update();
General.Interface.RedrawDisplay();
}
#endregion
}
}

View file

@ -2158,6 +2158,31 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.DisplayStatus(StatusType.Action, "Added 'lightfog' flag to " + addedcout + " sidedefs, removed it from " + removedcount + " sidedefs.");
}
[BeginAction("changemapelementindex")]
private void ChangeMapElementIndex()
{
// Make list of selected linedefs
List<Linedef> selected = General.Map.Map.GetSelectedLinedefs(true).ToList();
if ((selected.Count == 0) && (highlighted != null) && !highlighted.IsDisposed) selected.Add(highlighted);
if (selected.Count != 1)
{
General.ToastManager.ShowToast(ToastMessages.CHANGEMAPELEMENTINDEX, ToastType.WARNING, "Changing linedef index failed", "You need to select or highlight exactly 1 linedef.");
return;
}
ChangeMapElementIndexForm f = new ChangeMapElementIndexForm("linedef", selected[0].Index, General.Map.Map.Linedefs.Count - 1);
if (f.ShowDialog() == DialogResult.OK)
{
int newindex = f.GetNewIndex();
int oldindex = selected[0].Index;
General.Map.UndoRedo.CreateUndo("Change linedef index");
selected[0].ChangeIndex(newindex);
General.ToastManager.ShowToast(ToastMessages.CHANGEMAPELEMENTINDEX, ToastType.INFO, "Successfully change linedef index", $"Changed index of linedef {oldindex} to {newindex}.");
}
}
#endregion
}
}

View file

@ -20,6 +20,7 @@ using System;
using System.Collections.Generic;
using System.Drawing;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections.Concurrent;
@ -2838,6 +2839,31 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.RedrawDisplay();
}
[BeginAction("changemapelementindex")]
private void ChangeMapElementIndex()
{
// Make list of selected linedefs
List<Sector> selected = General.Map.Map.GetSelectedSectors(true).ToList();
if ((selected.Count == 0) && (highlighted != null) && !highlighted.IsDisposed) selected.Add(highlighted);
if (selected.Count != 1)
{
General.ToastManager.ShowToast(ToastMessages.CHANGEMAPELEMENTINDEX, ToastType.WARNING, "Changing sector index failed", "You need to select or highlight exactly 1 sector.");
return;
}
ChangeMapElementIndexForm f = new ChangeMapElementIndexForm("sector", selected[0].Index, General.Map.Map.Sectors.Count - 1);
if (f.ShowDialog() == DialogResult.OK)
{
int newindex = f.GetNewIndex();
int oldindex = selected[0].Index;
General.Map.UndoRedo.CreateUndo("Change sector index");
selected[0].ChangeIndex(newindex);
General.ToastManager.ShowToast(ToastMessages.CHANGEMAPELEMENTINDEX, ToastType.INFO, "Successfully change sector index", $"Changed index of sector {oldindex} to {newindex}.");
}
}
#endregion
}
}

View file

@ -1607,6 +1607,31 @@ namespace CodeImp.DoomBuilder.BuilderModes
}
}
[BeginAction("changemapelementindex")]
private void ChangeMapElementIndex()
{
// Make list of selected linedefs
List<Thing> selected = General.Map.Map.GetSelectedThings(true).ToList();
if ((selected.Count == 0) && (highlighted != null) && !highlighted.IsDisposed) selected.Add(highlighted);
if (selected.Count != 1)
{
General.ToastManager.ShowToast(ToastMessages.CHANGEMAPELEMENTINDEX, ToastType.WARNING, "Changing thing index failed", "You need to select or highlight exactly 1 thing.");
return;
}
ChangeMapElementIndexForm f = new ChangeMapElementIndexForm("thing", selected[0].Index, General.Map.Map.Things.Count - 1);
if (f.ShowDialog() == DialogResult.OK)
{
int newindex = f.GetNewIndex();
int oldindex = selected[0].Index;
General.Map.UndoRedo.CreateUndo("Change thing index");
selected[0].ChangeIndex(newindex);
General.ToastManager.ShowToast(ToastMessages.CHANGEMAPELEMENTINDEX, ToastType.INFO, "Successfully change thing index", $"Changed index of thing {oldindex} to {newindex}.");
}
}
#endregion
}
}

View file

@ -1219,11 +1219,36 @@ namespace CodeImp.DoomBuilder.BuilderModes
}
}
[BeginAction("changemapelementindex")]
private void ChangeMapElementIndex()
{
// Make list of selected linedefs
List<Vertex> selected = General.Map.Map.GetSelectedVertices(true).ToList();
if ((selected.Count == 0) && (highlighted != null) && !highlighted.IsDisposed) selected.Add(highlighted);
if (selected.Count != 1)
{
General.ToastManager.ShowToast(ToastMessages.CHANGEMAPELEMENTINDEX, ToastType.WARNING, "Changing vertex index failed", "You need to select or highlight exactly 1 vertex.");
return;
}
ChangeMapElementIndexForm f = new ChangeMapElementIndexForm("vertex", selected[0].Index, General.Map.Map.Vertices.Count - 1);
if (f.ShowDialog() == DialogResult.OK)
{
int newindex = f.GetNewIndex();
int oldindex = selected[0].Index;
General.Map.UndoRedo.CreateUndo("Change vertex index");
selected[0].ChangeIndex(newindex);
General.ToastManager.ShowToast(ToastMessages.CHANGEMAPELEMENTINDEX, ToastType.INFO, "Successfully change vertex index", $"Changed index of vertex {oldindex} to {newindex}.");
}
}
#endregion
#region ================== Action assist (mxd)
//mxd
//mxd
private static void MergeLines(ICollection<Vertex> selected, Linedef ld1, Linedef ld2, Vertex v)
{
Vertex v1 = (ld1.Start == v) ? ld1.End : ld1.Start;

View file

@ -45,6 +45,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
internal class ToastMessages
{
public static readonly string VISUALSLOPING = "visualsloping";
public static readonly string CHANGEMAPELEMENTINDEX = "changemapelementindex";
}
public class BuilderPlug : Plug
@ -257,6 +258,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
// Register toasts
General.ToastManager.RegisterToast(ToastMessages.VISUALSLOPING, "Visual sloping", "Toasts related to visual sloping");
General.ToastManager.RegisterToast(ToastMessages.CHANGEMAPELEMENTINDEX, "Change map element index", "Toasts related to changing the index of map elements");
}
// Disposer

View file

@ -0,0 +1,181 @@

namespace CodeImp.DoomBuilder.BuilderModes.Interface
{
partial class ChangeMapElementIndexForm
{
/// <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 Windows Form 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.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.bntNewIndex = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.lbCurrentIndex = new System.Windows.Forms.Label();
this.lbMaximumIndex = new System.Windows.Forms.Label();
this.btnOk = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.pbWarning = new System.Windows.Forms.PictureBox();
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
((System.ComponentModel.ISupportInitialize)(this.pbWarning)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(22, 22);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(72, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Current index:";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(22, 55);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(82, 13);
this.label2.TabIndex = 1;
this.label2.Text = "Maximum index:";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(22, 88);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(60, 13);
this.label3.TabIndex = 2;
this.label3.Text = "New index:";
//
// bntNewIndex
//
this.bntNewIndex.AllowDecimal = false;
this.bntNewIndex.AllowExpressions = false;
this.bntNewIndex.AllowNegative = false;
this.bntNewIndex.AllowRelative = false;
this.bntNewIndex.ButtonStep = 1;
this.bntNewIndex.ButtonStepBig = 10F;
this.bntNewIndex.ButtonStepFloat = 1F;
this.bntNewIndex.ButtonStepSmall = 0.1F;
this.bntNewIndex.ButtonStepsUseModifierKeys = false;
this.bntNewIndex.ButtonStepsWrapAround = false;
this.bntNewIndex.Location = new System.Drawing.Point(111, 83);
this.bntNewIndex.Name = "bntNewIndex";
this.bntNewIndex.Size = new System.Drawing.Size(100, 24);
this.bntNewIndex.StepValues = null;
this.bntNewIndex.TabIndex = 3;
this.bntNewIndex.WhenTextChanged += new System.EventHandler(this.bntNewIndex_WhenTextChanged);
//
// lbCurrentIndex
//
this.lbCurrentIndex.AutoSize = true;
this.lbCurrentIndex.Location = new System.Drawing.Point(110, 22);
this.lbCurrentIndex.Name = "lbCurrentIndex";
this.lbCurrentIndex.Size = new System.Drawing.Size(25, 13);
this.lbCurrentIndex.TabIndex = 4;
this.lbCurrentIndex.Text = "123";
//
// lbMaximumIndex
//
this.lbMaximumIndex.AutoSize = true;
this.lbMaximumIndex.Location = new System.Drawing.Point(110, 55);
this.lbMaximumIndex.Name = "lbMaximumIndex";
this.lbMaximumIndex.Size = new System.Drawing.Size(37, 13);
this.lbMaximumIndex.TabIndex = 5;
this.lbMaximumIndex.Text = "65535";
//
// btnOk
//
this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOk.Location = new System.Drawing.Point(55, 133);
this.btnOk.Name = "btnOk";
this.btnOk.Size = new System.Drawing.Size(75, 23);
this.btnOk.TabIndex = 6;
this.btnOk.Text = "OK";
this.btnOk.UseVisualStyleBackColor = true;
//
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(136, 133);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 23);
this.btnCancel.TabIndex = 7;
this.btnCancel.Text = "Cancel";
this.btnCancel.UseVisualStyleBackColor = true;
//
// pbWarning
//
this.pbWarning.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Warning;
this.pbWarning.Location = new System.Drawing.Point(217, 87);
this.pbWarning.Name = "pbWarning";
this.pbWarning.Size = new System.Drawing.Size(16, 16);
this.pbWarning.TabIndex = 8;
this.pbWarning.TabStop = false;
this.toolTip.SetToolTip(this.pbWarning, "The new index is too high");
this.pbWarning.Visible = false;
//
// ChangeMapElementIndexForm
//
this.AcceptButton = this.btnOk;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(264, 168);
this.Controls.Add(this.pbWarning);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOk);
this.Controls.Add(this.lbMaximumIndex);
this.Controls.Add(this.lbCurrentIndex);
this.Controls.Add(this.bntNewIndex);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ChangeMapElementIndexForm";
this.Text = "ChangeMapElementIndexForm";
((System.ComponentModel.ISupportInitialize)(this.pbWarning)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private Controls.ButtonsNumericTextbox bntNewIndex;
private System.Windows.Forms.Label lbCurrentIndex;
private System.Windows.Forms.Label lbMaximumIndex;
private System.Windows.Forms.Button btnOk;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.PictureBox pbWarning;
private System.Windows.Forms.ToolTip toolTip;
}
}

View file

@ -0,0 +1,84 @@
#region ================== Copyright (c) 2023 Boris Iwanski
/*
* This program is free software: you can redistribute it and/or modify
*
* it under the terms of the GNU General Public License as published by
*
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
*
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
*
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.If not, see<http://www.gnu.org/licenses/>.
*/
#endregion
using CodeImp.DoomBuilder.Windows;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CodeImp.DoomBuilder.BuilderModes.Interface
{
public partial class ChangeMapElementIndexForm : DelayedForm
{
private int currentindex;
private int maxindex;
public ChangeMapElementIndexForm(string typetitle, int currentindex, int maxindex)
{
InitializeComponent();
Text = $"Change {typetitle} index";
this.currentindex = currentindex;
this.maxindex = maxindex;
lbCurrentIndex.Text = currentindex.ToString();
lbMaximumIndex.Text = maxindex.ToString();
bntNewIndex.Text = "0";
}
public int GetNewIndex()
{
return bntNewIndex.GetResult(0);
}
private void bntNewIndex_WhenTextChanged(object sender, EventArgs e)
{
int targetindex = bntNewIndex.GetResult(0);
if(targetindex > maxindex)
{
toolTip.SetToolTip(pbWarning, "The new index is too high");
btnOk.Enabled = false;
pbWarning.Visible = true;
}
else if(targetindex == currentindex)
{
toolTip.SetToolTip(pbWarning, "The new and old indices are the same");
btnOk.Enabled = false;
pbWarning.Visible = true;
}
else
{
btnOk.Enabled = true;
pbWarning.Visible = false;
}
}
}
}

View file

@ -0,0 +1,126 @@
<?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>
<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

@ -44,6 +44,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.curvelinedefsitem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator();
this.splitlinedefsitem = new System.Windows.Forms.ToolStripMenuItem();
this.changeLindefIndexToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.updatelightfogitem = new System.Windows.Forms.ToolStripMenuItem();
this.aligntexturesitem = new System.Windows.Forms.ToolStripMenuItem();
this.alignFloorToFrontItem = new System.Windows.Forms.ToolStripMenuItem();
@ -79,27 +80,15 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.selectSimilarVertsItem = new System.Windows.Forms.ToolStripMenuItem();
this.globalstrip = new System.Windows.Forms.ToolStrip();
this.manualstrip = new System.Windows.Forms.ToolStrip();
this.buttoncopyproperties = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonpasteproperties = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonpastepropertiesoptions = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.seperatorcopypaste = new System.Windows.Forms.ToolStripSeparator();
this.buttonselectionnumbers = new System.Windows.Forms.ToolStripButton();
this.buttonselectioneffects = new System.Windows.Forms.ToolStripButton();
this.separatorsectors1 = new System.Windows.Forms.ToolStripSeparator();
this.buttonMakeDoor = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.separatorsectors2 = new System.Windows.Forms.ToolStripSeparator();
this.buttonbrightnessgradient = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonfloorgradient = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonceilinggradient = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonflipselectionh = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonflipselectionv = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttoncurvelinedefs = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.gradientModeMenu = new System.Windows.Forms.ToolStripComboBox();
this.gradientInterpolationMenu = new System.Windows.Forms.ToolStripComboBox();
this.separatorsectors3 = new System.Windows.Forms.ToolStripSeparator();
this.buttonMarqueSelectTouching = new System.Windows.Forms.ToolStripButton();
this.syncthingteditbutton = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonAlignThingsToWall = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonTextureOffsetLock = new System.Windows.Forms.ToolStripButton();
this.buttonTextureOffset3DFloorLock = new System.Windows.Forms.ToolStripButton();
this.buttonlightradii = new System.Windows.Forms.ToolStripButton();
@ -116,6 +105,21 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.viewmenuitem = new System.Windows.Forms.ToolStripMenuItem();
this.itemlightradii = new System.Windows.Forms.ToolStripMenuItem();
this.itemsoundradii = new System.Windows.Forms.ToolStripMenuItem();
this.changeThingIndexToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.changeSectorIndexToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.buttoncopyproperties = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonpasteproperties = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonpastepropertiesoptions = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonMakeDoor = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonbrightnessgradient = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonfloorgradient = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonceilinggradient = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonflipselectionh = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonflipselectionv = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttoncurvelinedefs = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.syncthingteditbutton = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.buttonAlignThingsToWall = new CodeImp.DoomBuilder.Controls.ToolStripActionButton();
this.changeVertexIndexToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menustrip.SuspendLayout();
this.manualstrip.SuspendLayout();
this.fileMenuStrip.SuspendLayout();
@ -150,6 +154,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.curvelinedefsitem,
this.toolStripMenuItem3,
this.splitlinedefsitem,
this.changeLindefIndexToolStripMenuItem,
this.updatelightfogitem,
this.aligntexturesitem,
this.toolStripSeparator5,
@ -261,6 +266,14 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.splitlinedefsitem.Text = "S&plit Linedefs";
this.splitlinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// changeLindefIndexToolStripMenuItem
//
this.changeLindefIndexToolStripMenuItem.Name = "changeLindefIndexToolStripMenuItem";
this.changeLindefIndexToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
this.changeLindefIndexToolStripMenuItem.Tag = "changemapelementindex";
this.changeLindefIndexToolStripMenuItem.Text = "Change Lindef Index";
this.changeLindefIndexToolStripMenuItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// updatelightfogitem
//
this.updatelightfogitem.Name = "updatelightfogitem";
@ -339,6 +352,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.alignsectorlinedefsitem,
this.toolStripSeparator8,
this.makedooritem,
this.changeSectorIndexToolStripMenuItem,
this.toolStripSeparator4,
this.selectSimilarSectors});
this.sectorsmenu.Name = "sectorsmenu";
@ -449,6 +463,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.toolStripSeparator3,
this.alignToWallItem,
this.pointAtCursorItem,
this.changeThingIndexToolStripMenuItem,
this.toolStripSeparator6,
this.selectSimilarThingsItem});
this.thingsmenu.Name = "thingsmenu";
@ -515,6 +530,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
//
this.vertsmenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.placethingsv,
this.changeVertexIndexToolStripMenuItem,
this.toolStripSeparator7,
this.selectSimilarVertsItem});
this.vertsmenu.Name = "vertsmenu";
@ -526,7 +542,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
//
this.placethingsv.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings;
this.placethingsv.Name = "placethingsv";
this.placethingsv.Size = new System.Drawing.Size(153, 22);
this.placethingsv.Size = new System.Drawing.Size(182, 22);
this.placethingsv.Tag = "placethings";
this.placethingsv.Text = "&Place Things...";
this.placethingsv.Click += new System.EventHandler(this.InvokeTaggedAction);
@ -534,13 +550,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
// toolStripSeparator7
//
this.toolStripSeparator7.Name = "toolStripSeparator7";
this.toolStripSeparator7.Size = new System.Drawing.Size(150, 6);
this.toolStripSeparator7.Size = new System.Drawing.Size(179, 6);
//
// selectSimilarVertsItem
//
this.selectSimilarVertsItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar;
this.selectSimilarVertsItem.Name = "selectSimilarVertsItem";
this.selectSimilarVertsItem.Size = new System.Drawing.Size(153, 22);
this.selectSimilarVertsItem.Size = new System.Drawing.Size(182, 22);
this.selectSimilarVertsItem.Tag = "selectsimilar";
this.selectSimilarVertsItem.Text = "Select Similar...";
this.selectSimilarVertsItem.Click += new System.EventHandler(this.InvokeTaggedAction);
@ -587,40 +603,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.manualstrip.TabIndex = 2;
this.manualstrip.Text = "toolStrip1";
//
// buttoncopyproperties
//
this.buttoncopyproperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttoncopyproperties.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CopyProperties;
this.buttoncopyproperties.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttoncopyproperties.Name = "buttoncopyproperties";
this.buttoncopyproperties.Size = new System.Drawing.Size(23, 22);
this.buttoncopyproperties.Tag = "classiccopyproperties";
this.buttoncopyproperties.Text = "Copy Properties";
this.buttoncopyproperties.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonpasteproperties
//
this.buttonpasteproperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonpasteproperties.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PasteProperties;
this.buttonpasteproperties.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonpasteproperties.Name = "buttonpasteproperties";
this.buttonpasteproperties.Size = new System.Drawing.Size(23, 22);
this.buttonpasteproperties.Tag = "classicpasteproperties";
this.buttonpasteproperties.Text = "Paste Properties";
this.buttonpasteproperties.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonpastepropertiesoptions
//
this.buttonpastepropertiesoptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonpastepropertiesoptions.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PastePropertiesOptions;
this.buttonpastepropertiesoptions.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonpastepropertiesoptions.Name = "buttonpastepropertiesoptions";
this.buttonpastepropertiesoptions.Size = new System.Drawing.Size(23, 22);
this.buttonpastepropertiesoptions.Tag = "classicpastepropertieswithoptions";
this.buttonpastepropertiesoptions.Text = "Paste Properties Special...";
this.buttonpastepropertiesoptions.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.buttonpastepropertiesoptions.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// seperatorcopypaste
//
this.seperatorcopypaste.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
@ -655,89 +637,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.separatorsectors1.Name = "separatorsectors1";
this.separatorsectors1.Size = new System.Drawing.Size(6, 25);
//
// buttonMakeDoor
//
this.buttonMakeDoor.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonMakeDoor.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Door;
this.buttonMakeDoor.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonMakeDoor.Name = "buttonMakeDoor";
this.buttonMakeDoor.Size = new System.Drawing.Size(23, 22);
this.buttonMakeDoor.Tag = "makedoor";
this.buttonMakeDoor.Text = "Make Door From Selection";
this.buttonMakeDoor.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// separatorsectors2
//
this.separatorsectors2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0);
this.separatorsectors2.Name = "separatorsectors2";
this.separatorsectors2.Size = new System.Drawing.Size(6, 25);
//
// buttonbrightnessgradient
//
this.buttonbrightnessgradient.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonbrightnessgradient.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.BrightnessGradient;
this.buttonbrightnessgradient.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonbrightnessgradient.Name = "buttonbrightnessgradient";
this.buttonbrightnessgradient.Size = new System.Drawing.Size(23, 22);
this.buttonbrightnessgradient.Tag = "gradientbrightness";
this.buttonbrightnessgradient.Text = "Make Brightness Gradient";
this.buttonbrightnessgradient.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonfloorgradient
//
this.buttonfloorgradient.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonfloorgradient.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FloorsGradient;
this.buttonfloorgradient.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonfloorgradient.Name = "buttonfloorgradient";
this.buttonfloorgradient.Size = new System.Drawing.Size(23, 22);
this.buttonfloorgradient.Tag = "gradientfloors";
this.buttonfloorgradient.Text = "Make Floor Heights Gradient";
this.buttonfloorgradient.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonceilinggradient
//
this.buttonceilinggradient.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonceilinggradient.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CeilsGradient;
this.buttonceilinggradient.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonceilinggradient.Name = "buttonceilinggradient";
this.buttonceilinggradient.Size = new System.Drawing.Size(23, 22);
this.buttonceilinggradient.Tag = "gradientceilings";
this.buttonceilinggradient.Text = "Make Ceiling Heights Gradient";
this.buttonceilinggradient.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonflipselectionh
//
this.buttonflipselectionh.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonflipselectionh.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FlipSelectionH;
this.buttonflipselectionh.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonflipselectionh.Name = "buttonflipselectionh";
this.buttonflipselectionh.Size = new System.Drawing.Size(23, 22);
this.buttonflipselectionh.Tag = "flipselectionh";
this.buttonflipselectionh.Text = "Flip Selection Horizontally";
this.buttonflipselectionh.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonflipselectionv
//
this.buttonflipselectionv.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonflipselectionv.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FlipSelectionV;
this.buttonflipselectionv.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonflipselectionv.Name = "buttonflipselectionv";
this.buttonflipselectionv.Size = new System.Drawing.Size(23, 22);
this.buttonflipselectionv.Tag = "flipselectionv";
this.buttonflipselectionv.Text = "Flip Selection Vertically";
this.buttonflipselectionv.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttoncurvelinedefs
//
this.buttoncurvelinedefs.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttoncurvelinedefs.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CurveLines;
this.buttoncurvelinedefs.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttoncurvelinedefs.Name = "buttoncurvelinedefs";
this.buttoncurvelinedefs.Size = new System.Drawing.Size(23, 22);
this.buttoncurvelinedefs.Tag = "curvelinesmode";
this.buttoncurvelinedefs.Text = "Curve Linedefs";
this.buttoncurvelinedefs.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// gradientModeMenu
//
this.gradientModeMenu.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
@ -773,29 +678,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
"";
this.buttonMarqueSelectTouching.Click += new System.EventHandler(this.buttonMarqueSelectTouching_Click);
//
// syncthingteditbutton
//
this.syncthingteditbutton.CheckOnClick = true;
this.syncthingteditbutton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.syncthingteditbutton.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors;
this.syncthingteditbutton.ImageTransparentColor = System.Drawing.Color.Magenta;
this.syncthingteditbutton.Name = "syncthingteditbutton";
this.syncthingteditbutton.Size = new System.Drawing.Size(23, 22);
this.syncthingteditbutton.Tag = "syncedthingedit";
this.syncthingteditbutton.Text = "Synchronized Things Editing";
this.syncthingteditbutton.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonAlignThingsToWall
//
this.buttonAlignThingsToWall.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonAlignThingsToWall.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AlignThings;
this.buttonAlignThingsToWall.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonAlignThingsToWall.Name = "buttonAlignThingsToWall";
this.buttonAlignThingsToWall.Size = new System.Drawing.Size(23, 22);
this.buttonAlignThingsToWall.Tag = "thingaligntowall";
this.buttonAlignThingsToWall.ToolTipText = "Align Things to Nearest Linedef";
this.buttonAlignThingsToWall.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonTextureOffsetLock
//
this.buttonTextureOffsetLock.CheckOnClick = true;
@ -949,6 +831,164 @@ namespace CodeImp.DoomBuilder.BuilderModes
this.itemsoundradii.Text = "Show Ambient Sound Radii";
this.itemsoundradii.Click += new System.EventHandler(this.buttonsoundradii_Click);
//
// changeThingIndexToolStripMenuItem
//
this.changeThingIndexToolStripMenuItem.Name = "changeThingIndexToolStripMenuItem";
this.changeThingIndexToolStripMenuItem.Size = new System.Drawing.Size(244, 22);
this.changeThingIndexToolStripMenuItem.Tag = "changemapelementindex";
this.changeThingIndexToolStripMenuItem.Text = "Change Thing Index";
this.changeThingIndexToolStripMenuItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// changeSectorIndexToolStripMenuItem
//
this.changeSectorIndexToolStripMenuItem.Name = "changeSectorIndexToolStripMenuItem";
this.changeSectorIndexToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
this.changeSectorIndexToolStripMenuItem.Tag = "changemapelementindex";
this.changeSectorIndexToolStripMenuItem.Text = "Change Sector Index";
this.changeSectorIndexToolStripMenuItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttoncopyproperties
//
this.buttoncopyproperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttoncopyproperties.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CopyProperties;
this.buttoncopyproperties.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttoncopyproperties.Name = "buttoncopyproperties";
this.buttoncopyproperties.Size = new System.Drawing.Size(23, 22);
this.buttoncopyproperties.Tag = "classiccopyproperties";
this.buttoncopyproperties.Text = "Copy Properties";
this.buttoncopyproperties.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonpasteproperties
//
this.buttonpasteproperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonpasteproperties.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PasteProperties;
this.buttonpasteproperties.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonpasteproperties.Name = "buttonpasteproperties";
this.buttonpasteproperties.Size = new System.Drawing.Size(23, 22);
this.buttonpasteproperties.Tag = "classicpasteproperties";
this.buttonpasteproperties.Text = "Paste Properties";
this.buttonpasteproperties.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonpastepropertiesoptions
//
this.buttonpastepropertiesoptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonpastepropertiesoptions.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PastePropertiesOptions;
this.buttonpastepropertiesoptions.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonpastepropertiesoptions.Name = "buttonpastepropertiesoptions";
this.buttonpastepropertiesoptions.Size = new System.Drawing.Size(23, 22);
this.buttonpastepropertiesoptions.Tag = "classicpastepropertieswithoptions";
this.buttonpastepropertiesoptions.Text = "Paste Properties Special...";
this.buttonpastepropertiesoptions.TextAlign = System.Drawing.ContentAlignment.TopRight;
this.buttonpastepropertiesoptions.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonMakeDoor
//
this.buttonMakeDoor.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonMakeDoor.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Door;
this.buttonMakeDoor.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonMakeDoor.Name = "buttonMakeDoor";
this.buttonMakeDoor.Size = new System.Drawing.Size(23, 22);
this.buttonMakeDoor.Tag = "makedoor";
this.buttonMakeDoor.Text = "Make Door From Selection";
this.buttonMakeDoor.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonbrightnessgradient
//
this.buttonbrightnessgradient.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonbrightnessgradient.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.BrightnessGradient;
this.buttonbrightnessgradient.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonbrightnessgradient.Name = "buttonbrightnessgradient";
this.buttonbrightnessgradient.Size = new System.Drawing.Size(23, 22);
this.buttonbrightnessgradient.Tag = "gradientbrightness";
this.buttonbrightnessgradient.Text = "Make Brightness Gradient";
this.buttonbrightnessgradient.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonfloorgradient
//
this.buttonfloorgradient.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonfloorgradient.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FloorsGradient;
this.buttonfloorgradient.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonfloorgradient.Name = "buttonfloorgradient";
this.buttonfloorgradient.Size = new System.Drawing.Size(23, 22);
this.buttonfloorgradient.Tag = "gradientfloors";
this.buttonfloorgradient.Text = "Make Floor Heights Gradient";
this.buttonfloorgradient.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonceilinggradient
//
this.buttonceilinggradient.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonceilinggradient.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CeilsGradient;
this.buttonceilinggradient.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonceilinggradient.Name = "buttonceilinggradient";
this.buttonceilinggradient.Size = new System.Drawing.Size(23, 22);
this.buttonceilinggradient.Tag = "gradientceilings";
this.buttonceilinggradient.Text = "Make Ceiling Heights Gradient";
this.buttonceilinggradient.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonflipselectionh
//
this.buttonflipselectionh.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonflipselectionh.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FlipSelectionH;
this.buttonflipselectionh.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonflipselectionh.Name = "buttonflipselectionh";
this.buttonflipselectionh.Size = new System.Drawing.Size(23, 22);
this.buttonflipselectionh.Tag = "flipselectionh";
this.buttonflipselectionh.Text = "Flip Selection Horizontally";
this.buttonflipselectionh.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonflipselectionv
//
this.buttonflipselectionv.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonflipselectionv.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FlipSelectionV;
this.buttonflipselectionv.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonflipselectionv.Name = "buttonflipselectionv";
this.buttonflipselectionv.Size = new System.Drawing.Size(23, 22);
this.buttonflipselectionv.Tag = "flipselectionv";
this.buttonflipselectionv.Text = "Flip Selection Vertically";
this.buttonflipselectionv.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttoncurvelinedefs
//
this.buttoncurvelinedefs.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttoncurvelinedefs.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CurveLines;
this.buttoncurvelinedefs.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttoncurvelinedefs.Name = "buttoncurvelinedefs";
this.buttoncurvelinedefs.Size = new System.Drawing.Size(23, 22);
this.buttoncurvelinedefs.Tag = "curvelinesmode";
this.buttoncurvelinedefs.Text = "Curve Linedefs";
this.buttoncurvelinedefs.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// syncthingteditbutton
//
this.syncthingteditbutton.CheckOnClick = true;
this.syncthingteditbutton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.syncthingteditbutton.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors;
this.syncthingteditbutton.ImageTransparentColor = System.Drawing.Color.Magenta;
this.syncthingteditbutton.Name = "syncthingteditbutton";
this.syncthingteditbutton.Size = new System.Drawing.Size(23, 22);
this.syncthingteditbutton.Tag = "syncedthingedit";
this.syncthingteditbutton.Text = "Synchronized Things Editing";
this.syncthingteditbutton.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonAlignThingsToWall
//
this.buttonAlignThingsToWall.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonAlignThingsToWall.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AlignThings;
this.buttonAlignThingsToWall.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonAlignThingsToWall.Name = "buttonAlignThingsToWall";
this.buttonAlignThingsToWall.Size = new System.Drawing.Size(23, 22);
this.buttonAlignThingsToWall.Tag = "thingaligntowall";
this.buttonAlignThingsToWall.ToolTipText = "Align Things to Nearest Linedef";
this.buttonAlignThingsToWall.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// changeVertexIndexToolStripMenuItem
//
this.changeVertexIndexToolStripMenuItem.Name = "changeVertexIndexToolStripMenuItem";
this.changeVertexIndexToolStripMenuItem.Size = new System.Drawing.Size(182, 22);
this.changeVertexIndexToolStripMenuItem.Tag = "changemapelementindex";
this.changeVertexIndexToolStripMenuItem.Text = "Change Vertex Index";
this.changeVertexIndexToolStripMenuItem.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// MenusForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@ -1066,5 +1106,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
private System.Windows.Forms.ToolStripMenuItem itemsoundradii;
private System.Windows.Forms.ToolStripButton buttonTextureOffset3DFloorLock;
private System.Windows.Forms.ToolStripMenuItem selectionToImageToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem changeLindefIndexToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem changeThingIndexToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem changeSectorIndexToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem changeVertexIndexToolStripMenuItem;
}
}

View file

@ -1317,7 +1317,7 @@ rotateclockwise
{
title = "Rotate Clockwise";
category = "edit";
description = "Rotates selected or highlighted things clockwise. Also rotates floor/ceiling textures in UDMF map format.";
description = "Rotates selected or highlighted things clockwise. Also rotates floor/ceiling textures in UDMF map format, and rotates the selection in Edit Selection mode.";
allowkeys = true;
allowmouse = false;
allowscroll = true;
@ -1330,7 +1330,7 @@ rotatecounterclockwise
{
title = "Rotate Counterclockwise";
category = "edit";
description = "Rotates selected or highlighted things counterclockwise. Also rotates floor/ceiling textures in UDMF map format.";
description = "Rotates selected or highlighted things counterclockwise. Also rotates floor/ceiling textures in UDMF map format, and rotates the selection in Edit Selection mode.";
allowkeys = true;
allowmouse = false;
allowscroll = true;
@ -1551,4 +1551,14 @@ applycamerarotationtothings
allowkeys = true;
allowmouse = true;
allowscroll = false;
}
changemapelementindex
{
title = "Change Map Element Index";
category = "linedefs";
description = "Changes the index of the highlighted or selected vertex, linedef, sector, or thing. Only works on a single map element. It will shift all indices between the old and new index.";
allowkeys = true;
allowmouse = true;
allowscroll = false;
}