mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-11-26 13:51:40 +00:00
Sectors/Linedefs modes: removed "Select Things in Selected Sectors" action.
Sectors mode: removed "Move Things in Selected Sectors" toolbar button. Sectors mode: added "Synchronized Things Editing" menu item, action and toolbar button. When enabled, things dragging will be synchronized to sector dragging. Regular, Paint and Rectangular selection will also select things (holding Alt while selecting inverts this behavior). Deleting sectors will also delete selected things. Linedefs mode: added "Synchronized Things Editing" menu item, action and toolbar button. When enabled, selected things will be dragged when dragging linedefs. Rectangular selection will also select things (holding Alt while selecting inverts this behavior). Changed: selection info now always displays info about all types of map elements. Fixed: .dbs containing only current map settings was created when trying to save unchanged map. Fixed, Visual mode, "Copy Texture" action: when "Use long texture names" option is disabled, texture name as stored in Sidedef should be used, not the 8-char texture name. Updated documentation.
This commit is contained in:
parent
217ca8379c
commit
17ac1c6db5
24 changed files with 332 additions and 322 deletions
|
@ -15,7 +15,8 @@
|
|||
<div id="contents">
|
||||
<p>A Rectangular selection can now be started even when a map element is already highlighted. This means that you can now use it to select sectors, which are completely surrounded by other sectors.<br />
|
||||
Hold <strong>Shift</strong> to enable additive selection, hold <strong>Ctrl</strong> to enable subtractive selection, hold <strong>Ctrl-Shift</strong> to intersect with an existing selection.<br />
|
||||
Hold <strong>Alt</strong> in <strong>Sectors</strong> mode to select things inside of selected sectors.
|
||||
Hold <strong>Alt</strong> in <strong>Sectors </strong><strong> mode</strong> to (de)select things inside of (de)selected sectors when using regular, paint and rectangular selection. This behaviour is inverted when "<strong>Syncronized Things Editing</strong>" option is enabled.<br />
|
||||
Hold <strong>Alt</strong> in<strong> Linedefs mode</strong> to (de)select things inside of rectangular selection marquee. This behaviour is inverted when "<strong>Syncronized Things Editing</strong>" option is enabled.</p>
|
||||
<p>Current behaviour is indicated by the selection outline: additive selection uses the Highlight color, subtractive selection uses the inverted Highlight color.
|
||||
<p>The Rectangular selection mode in <strong>Sectors</strong> and <strong>Linedefs</strong> modes can be toggled between "Select inside" (classic behavior: only map elements which are fully inside selection will be affected) and "Select touching" (map elements which are partially inside selection will be also affected) using this button in the toolbar:
|
||||
<p><img src="selection_mode_btn.jpg" alt="" width="260" height="30" /><br />
|
||||
|
|
|
@ -96,14 +96,14 @@
|
|||
<li>Camera position can be synchronized between Classic and Visual modes. <a href="all_modes/synch_camera.html">More info</a>.</li>
|
||||
<li>You can use <a href="all_modes/colorpicker.html">Color Picker plugin </a> to edit dynamic light properties and sector's fog and tint colors in Classic and Visual modes.</li>
|
||||
<li>You can use <a href="all_modes/tagexplorer.html">Tag Explorer plugin</a> to view all tags and actions used in current map.</li>
|
||||
<li>You can paste only specific properties using "<strong>Paste Properties Special</strong>" action (available via keyboard shortcut, as "Edit -> Paste Properties Special..." menu item and as a button on the Edit Mode toolbar).
|
||||
<li>You can paste only specific properties using "<strong>Paste Properties Special</strong>" action (available via keyboard shortcut, as "<strong>Edit</strong> -> <strong>Paste Properties Special...</strong>" menu item and as a button on the Edit Mode toolbar).
|
||||
<input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
|
||||
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"> <img src="all_modes/paste_properties_options.jpg" alt="" /></div>
|
||||
</li>
|
||||
<li>You can apply <a href="all_modes/jitter.html">randomized transformations</a> to any map element.</li>
|
||||
<li>Image browser shows directory structure of Folder, PK3 and PK7 resources and can filter images by texture type and size. <a href="all_modes/texture_browser.html">More info</a>.</li>
|
||||
<li>Most controls of Edit Sector/Linedef/Thing forms now work in realtime (e.g. you can immediately see texture offset/scale/rotation changes while you are changing appropriate values). Action and Tag changes are still applied only after you press "OK" button.</li>
|
||||
<li><strong>[UDMF] </strong>All UDMF properties (except "comment") can be edited using Edit Sector/Linedef/Thing/Vertex forms user interface.</li>
|
||||
<li><strong>[UDMF] </strong>All UDMF properties can be edited using Edit Sector/Linedef/Thing/Vertex windows user interface.</li>
|
||||
<li>Thing Edit Form has "Random angle" checkbox.</li>
|
||||
<li><strong>[UDMF] </strong>Sector, Linedef and Vertex info panels show additional info if a map is in UDMF format.</li>
|
||||
</ul>
|
||||
|
@ -118,7 +118,7 @@
|
|||
<li><a href="classic_modes/selection.html"> </a>Thing sprites are rendered in classic modes.</li>
|
||||
<li>You can assign custom color to any combination of linedef flags, actions and/or activation. <a href="classic_modes/linedef_color_presets.html">More info</a>.</li>
|
||||
<li><a href="classic_modes/selection.html"> Enhanced rectangular selection</a>.</li>
|
||||
<li>New action: "<strong>Go To Coordinates</strong>", available in <strong>View</strong> menu and by clicking on cursor coordinates in the lower-right corner of UI.</li>
|
||||
<li>New action: "<strong>Go To Coordinates</strong>", available in the <strong>View</strong> menu and by clicking on cursor coordinates in the lower-right corner of UI.</li>
|
||||
<li>You can use <strong>Paint selection </strong>action to select map elements easier.</li>
|
||||
<li><a href="classic_modes/mode_drawrect.html">Draw Rectangle mode</a>.</li>
|
||||
<li><a href="classic_modes/mode_drawellipse.html">Draw Ellipse mode</a>.</li>
|
||||
|
@ -157,7 +157,8 @@
|
|||
<h3><a name="sectors" id="sectors"></a>Sectors mode:</h3>
|
||||
<ul>
|
||||
<li><strong>[UDMF]</strong> Sector Edit Form now has "<strong>Slopes</strong>" tab.</li>
|
||||
<li>Things inside of selected Sectors can be moved when dragging Sectors. This toolbar button toggles this mode: <img src="sectors_mode/drag_things.jpg"/>. When enabled, all things inside of selected sectors will be dragged when dragging sectors. Otherwise, selected things will be dragged.</li>
|
||||
<li>Things selection, dragging and deletion can be syncronized with sectors selection, dragging and deletion by enabling <strong>Sectors -> Syncronized Things Editing</strong> menu item / <strong>Syncronized Things Editing</strong> toolbar button.</li>
|
||||
<li>Things can be (de)selected by holding the <strong>Alt</strong> key when (de)selecting sectors. <strong>Alt</strong> key behaviour is inverted when <strong>Syncronized Things Editing</strong> option is enabled.</li>
|
||||
<li>Sector Tag and Effect can now be shown on top of sectors. You can use "<strong>View Tags and Effects</strong>" button to toggle this overlay.
|
||||
<input class="spoilerbutton" type="button" onclick="ToggleSpoiler(this);" href="javascript:void(0);" value="Show image"/>
|
||||
<div style="display: none; margin: 0px; padding: 6px; border: 1px inset;"><img src="sectors_mode/toggle_effect_overlay.jpg" alt="" /></div>
|
||||
|
@ -176,6 +177,7 @@
|
|||
<li>
|
||||
<h3><a name="linedefs" id="linedefs"></a>Linedefs mode:</h3>
|
||||
<ul>
|
||||
<li>Things dragging can be syncronized with linedefs dragging by enabling <strong>Linedefs -> Syncronized Things Transform</strong> menu item / <strong>Syncronized Things Transform</strong> toolbar button.</li>
|
||||
<li><strong>[UDMF]</strong> New actions: "<strong>Align Ceiling Texture to Back Side</strong>", "<strong>Align Ceiling Texture to Front Side</strong>", "<strong>Align Floor Texture to Back Side</strong>" and "<strong>Align Floor Texture to Front Side</strong>" (available in <strong>Linedefs -> Align Textures</strong> menu).</li>
|
||||
<li><strong>[UDMF]</strong> "<strong>Make brightness gradient</strong>" command is available in Linedefs mode.</li>
|
||||
<li><strong>[UDMF]</strong> Linedef info panel: relative UDMF light values are shown like this: <span class="style7">16</span> (<span class="style9">128</span>), which means "<span class="style7">UDMF light value</span>" ("<span class="style9">total surface brightness</span>"). Total surface brightness is UDMF light value + sector brightness.</li>
|
||||
|
@ -193,7 +195,6 @@
|
|||
</li>
|
||||
<li>You can clone selected/highlighted things by holding "Shift" before starting to drag them.</li>
|
||||
<li>New action: "<strong>Point Thing to cursor</strong>". <a href="things_mode/pointthing.html">More info</a>.</li>
|
||||
<li>New action: "<strong>Select Things in Selected Sectors</strong>" (Default key is Shift+T).</li>
|
||||
<li>New action: "<strong>Align Things To Linedef</strong>".</li>
|
||||
<li>Z-height of a thing can be changed in absolute and relative mode in Thing Edit form.</li>
|
||||
<li>Thing's X and Y position can be edited in Edit Thing form.</li>
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 3.7 KiB |
|
@ -17,6 +17,7 @@
|
|||
#region ================== Namespaces
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Windows.Forms;
|
||||
using System.Reflection;
|
||||
|
@ -136,7 +137,32 @@ namespace CodeImp.DoomBuilder.Editing
|
|||
//mxd
|
||||
public virtual void UpdateSelectionInfo()
|
||||
{
|
||||
General.Interface.DisplayStatus(StatusType.Selection, string.Empty);
|
||||
// Collect info
|
||||
List<string> info = new List<string>();
|
||||
|
||||
if(General.Map.Map.SelectedSectorsCount > 0)
|
||||
info.Add(General.Map.Map.SelectedSectorsCount + (General.Map.Map.SelectedSectorsCount == 1 ? " sector" : " sectors"));
|
||||
|
||||
if(General.Map.Map.SelectedLinedefsCount > 0)
|
||||
info.Add(General.Map.Map.SelectedLinedefsCount + (General.Map.Map.SelectedLinedefsCount == 1 ? " linedef" : " linedefs"));
|
||||
|
||||
if(General.Map.Map.SelectedVerticessCount > 0)
|
||||
info.Add(General.Map.Map.SelectedVerticessCount + (General.Map.Map.SelectedVerticessCount == 1 ? " vertex" : " vertices"));
|
||||
|
||||
if(General.Map.Map.SelectedThingsCount > 0)
|
||||
info.Add(General.Map.Map.SelectedThingsCount + (General.Map.Map.SelectedThingsCount == 1 ? " thing" : " things"));
|
||||
|
||||
// Display results
|
||||
string result = string.Empty;
|
||||
if(info.Count > 0)
|
||||
{
|
||||
result = string.Join(", ", info.ToArray());
|
||||
int pos = result.LastIndexOf(",", StringComparison.Ordinal);
|
||||
if(pos != -1) result = result.Remove(pos, 1).Insert(pos, " and");
|
||||
result += " selected.";
|
||||
}
|
||||
|
||||
General.Interface.DisplayStatus(StatusType.Selection, result);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -991,7 +991,6 @@ namespace CodeImp.DoomBuilder
|
|||
try
|
||||
{
|
||||
string settingsfile = newfilepathname.Substring(0, newfilepathname.Length - 4) + ".dbs";
|
||||
if(File.Exists(settingsfile)) File.Delete(settingsfile);
|
||||
options.WriteConfiguration(settingsfile);
|
||||
}
|
||||
catch(Exception e)
|
||||
|
|
|
@ -216,6 +216,69 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
General.Interface.OnEditFormValuesChanged -= thingEditForm_OnValuesChanged;
|
||||
}
|
||||
|
||||
//mxd
|
||||
protected static void DeleteThings(ICollection<Thing> things)
|
||||
{
|
||||
if(things.Count == 0) return;
|
||||
|
||||
General.Map.Map.BeginAddRemove(); //mxd
|
||||
|
||||
// Dispose selected things
|
||||
foreach(Thing t in things)
|
||||
{
|
||||
//mxd. Do some path reconnecting shenanigans...
|
||||
ThingTypeInfo info = General.Map.Data.GetThingInfo(t.Type);
|
||||
string targetclass = string.Empty;
|
||||
int targetarg = -1;
|
||||
|
||||
// Thing type can be changed in MAPINFO DoomEdNums block...
|
||||
switch(info.ClassName.ToLowerInvariant())
|
||||
{
|
||||
case "interpolationpoint":
|
||||
if(t.Tag != 0 && t.Args[3] != 0)
|
||||
{
|
||||
targetclass = "interpolationpoint";
|
||||
targetarg = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case "patrolpoint":
|
||||
if(t.Tag != 0 && t.Args[0] != 0)
|
||||
{
|
||||
targetclass = "patrolpoint";
|
||||
targetarg = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Try to reconnect path...
|
||||
if(!string.IsNullOrEmpty(targetclass) && targetarg > -1)
|
||||
{
|
||||
General.Map.Map.EndAddRemove(); // We'll need to unlock the things array...
|
||||
|
||||
foreach(Thing other in General.Map.Map.Things)
|
||||
{
|
||||
if(other.Index == t.Index)
|
||||
continue;
|
||||
info = General.Map.Data.GetThingInfo(other.Type);
|
||||
if(info.ClassName.ToLowerInvariant() == targetclass && other.Args[targetarg] == t.Tag)
|
||||
{
|
||||
other.Move(other.Position); //hacky way to call BeforePropsChange()...
|
||||
other.Args[targetarg] = t.Args[targetarg];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
General.Map.Map.BeginAddRemove(); // We'll need to lock it again...
|
||||
}
|
||||
|
||||
// Get rid of the thing
|
||||
t.Dispose();
|
||||
}
|
||||
|
||||
General.Map.Map.EndAddRemove(); //mxd
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ================== Events (mxd)
|
||||
|
@ -328,32 +391,18 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
}
|
||||
|
||||
//mxd
|
||||
[BeginAction("thingsselectinsectors")]
|
||||
public void SelectThingsInSelectedSectors()
|
||||
[BeginAction("syncedthingedit")]
|
||||
public void ToggleSyncronizedThingsEdit()
|
||||
{
|
||||
bool convertselection = !(this is SectorsMode);
|
||||
if(convertselection) General.Map.Map.ConvertSelection(SelectionType.Sectors);
|
||||
BuilderPlug.Me.SyncronizeThingEdit = !BuilderPlug.Me.SyncronizeThingEdit;
|
||||
General.Interface.DisplayStatus(StatusType.Info, (BuilderPlug.Me.SyncronizeThingEdit ?
|
||||
"Things editing is SYNCRONIZED" :
|
||||
"Things editing is not syncronized"));
|
||||
|
||||
if(General.Map.Map.SelectedSectorsCount == 0)
|
||||
{
|
||||
General.Interface.DisplayStatus(StatusType.Warning, "This action requires a!");
|
||||
if(convertselection) General.Map.Map.ConvertSelection(SelectionType.Linedefs);
|
||||
return;
|
||||
}
|
||||
|
||||
ICollection<Sector> sectors = General.Map.Map.GetSelectedSectors(true);
|
||||
foreach(Thing t in General.Map.Map.Things)
|
||||
{
|
||||
t.DetermineSector();
|
||||
if(!t.Selected && t.Sector != null && sectors.Contains(t.Sector)) t.Selected = true;
|
||||
}
|
||||
|
||||
// Update info
|
||||
if(convertselection) General.Map.Map.ConvertSelection(SelectionType.Linedefs);
|
||||
UpdateSelectionInfo();
|
||||
|
||||
// Redraw screen
|
||||
General.Interface.RedrawDisplay();
|
||||
// Update interface
|
||||
BuilderPlug.Me.MenusForm.SyncronizeThingEditButton.Checked = BuilderPlug.Me.SyncronizeThingEdit;
|
||||
BuilderPlug.Me.MenusForm.SyncronizeThingEditLinedefsItem.Checked = BuilderPlug.Me.SyncronizeThingEdit;
|
||||
BuilderPlug.Me.MenusForm.SyncronizeThingEditSectorsItem.Checked = BuilderPlug.Me.SyncronizeThingEdit;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -60,7 +60,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
protected ICollection<Thing> unselectedthings; //mxd
|
||||
|
||||
// List of things, which should be moved
|
||||
protected ICollection<Thing> thingstodrag; //mxd
|
||||
private ICollection<Thing> thingstodrag; //mxd
|
||||
|
||||
//mxd. List of sectors
|
||||
private List<Sector> selectedsectors;
|
||||
|
@ -133,7 +133,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// Make list of selected vertices and things
|
||||
selectedverts = General.Map.Map.GetMarkedVertices(true);
|
||||
selectedthings = General.Map.Map.GetSelectedThings(true); //mxd
|
||||
thingstodrag = GetThingsToDrag(); //mxd
|
||||
thingstodrag = (BuilderPlug.Me.SyncronizeThingEdit ? selectedthings : new List<Thing>()); //mxd
|
||||
|
||||
// Make list of non-selected vertices and things
|
||||
// Non-selected vertices will be used for snapping to nearest items
|
||||
|
@ -210,12 +210,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
Cursor.Current = Cursors.Default;
|
||||
}
|
||||
|
||||
//mxd
|
||||
protected virtual ICollection<Thing> GetThingsToDrag()
|
||||
{
|
||||
return selectedthings;
|
||||
}
|
||||
|
||||
// This moves the selected geometry relatively
|
||||
// Returns true when geometry has actually moved
|
||||
private bool MoveGeometryRelative(Vector2D offset, bool snapgrid, bool snapgridincrement, bool snapnearest, bool snapcardinal)
|
||||
|
|
|
@ -188,25 +188,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
}
|
||||
}
|
||||
|
||||
//mxd
|
||||
protected override ICollection<Thing> GetThingsToDrag()
|
||||
{
|
||||
if (BuilderPlug.Me.DragThingsInSectorsMode)
|
||||
{
|
||||
thingstodrag = new List<Thing>();
|
||||
|
||||
foreach (Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
{
|
||||
t.DetermineSector();
|
||||
if (selectedsectors.Contains(t.Sector)) thingstodrag.Add(t);
|
||||
}
|
||||
|
||||
return thingstodrag;
|
||||
}
|
||||
|
||||
return base.GetThingsToDrag();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -333,10 +333,14 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.MakeGradientBrightness);
|
||||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.GradientInterpolationMenu);
|
||||
}
|
||||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.MarqueSelectTouching); //mxd
|
||||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.CurveLinedefs);
|
||||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.MarqueSelectTouching); //mxd
|
||||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.SyncronizeThingEditButton); //mxd
|
||||
if(General.Map.UDMF) General.Interface.AddButton(BuilderPlug.Me.MenusForm.TextureOffsetLock, ToolbarSection.Geometry); //mxd
|
||||
|
||||
//mxd. Update the tooltip
|
||||
BuilderPlug.Me.MenusForm.SyncronizeThingEditButton.ToolTipText = "Synchronized Things Editing" + Environment.NewLine + BuilderPlug.Me.MenusForm.SyncronizeThingEditLinedefsItem.ToolTipText;
|
||||
|
||||
// Convert geometry selection to linedefs selection
|
||||
General.Map.Map.ConvertSelection(SelectionType.Linedefs);
|
||||
UpdateSelectionInfo(); //mxd
|
||||
|
@ -357,8 +361,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.MakeGradientBrightness);
|
||||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.GradientInterpolationMenu);
|
||||
}
|
||||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.MarqueSelectTouching); //mxd
|
||||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.CurveLinedefs);
|
||||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.MarqueSelectTouching); //mxd
|
||||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.SyncronizeThingEditButton); //mxd
|
||||
if(General.Map.UDMF) General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.TextureOffsetLock); //mxd
|
||||
|
||||
// Going to EditSelectionMode?
|
||||
|
@ -780,26 +785,47 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
};
|
||||
|
||||
//mxd
|
||||
bool selectthings = (marqueSelectionIncludesThings ^ BuilderPlug.Me.SyncronizeThingEdit);
|
||||
switch(marqueSelectionMode)
|
||||
{
|
||||
case MarqueSelectionMode.SELECT:
|
||||
foreach(Linedef l in General.Map.Map.Linedefs)
|
||||
l.Selected = IsInSelectionRect(l, selectionOutline);
|
||||
if(selectthings)
|
||||
{
|
||||
foreach(Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
t.Selected = selectionrect.Contains(t.Position.x, t.Position.y);
|
||||
}
|
||||
break;
|
||||
|
||||
case MarqueSelectionMode.ADD:
|
||||
foreach(Linedef l in General.Map.Map.Linedefs)
|
||||
l.Selected |= IsInSelectionRect(l, selectionOutline);
|
||||
if(selectthings)
|
||||
{
|
||||
foreach(Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
t.Selected |= selectionrect.Contains(t.Position.x, t.Position.y);
|
||||
}
|
||||
break;
|
||||
|
||||
case MarqueSelectionMode.SUBTRACT:
|
||||
foreach(Linedef l in General.Map.Map.Linedefs)
|
||||
if(IsInSelectionRect(l, selectionOutline)) l.Selected = false;
|
||||
if(selectthings)
|
||||
{
|
||||
foreach(Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
if(selectionrect.Contains(t.Position.x, t.Position.y)) t.Selected = false;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
foreach(Linedef l in General.Map.Map.Linedefs)
|
||||
if(!IsInSelectionRect(l, selectionOutline)) l.Selected = false;
|
||||
if(selectthings)
|
||||
{
|
||||
foreach(Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
if(!selectionrect.Contains(t.Position.x, t.Position.y)) t.Selected = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -848,15 +874,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
return base.OnCopyBegin();
|
||||
}
|
||||
|
||||
//mxd
|
||||
public override void UpdateSelectionInfo()
|
||||
{
|
||||
if(General.Map.Map.SelectedLinedefsCount > 0)
|
||||
General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedLinedefsCount + (General.Map.Map.SelectedLinedefsCount == 1 ? " linedef" : " linedefs") + " selected.");
|
||||
else
|
||||
General.Interface.DisplayStatus(StatusType.Selection, string.Empty);
|
||||
}
|
||||
|
||||
//mxd
|
||||
private void RenderComment(Linedef l)
|
||||
{
|
||||
|
|
|
@ -525,7 +525,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
}
|
||||
|
||||
//mxd. Also (de)select things?
|
||||
if (General.Interface.AltState)
|
||||
if(General.Interface.AltState ^ BuilderPlug.Me.SyncronizeThingEdit)
|
||||
{
|
||||
foreach(Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
{
|
||||
|
@ -649,12 +649,30 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.MakeGradientCeilings);
|
||||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.SeparatorSectors3); //mxd
|
||||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.MarqueSelectTouching); //mxd
|
||||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.DragThingsInSelectedSectors); //mxd
|
||||
General.Interface.AddButton(BuilderPlug.Me.MenusForm.SyncronizeThingEditButton); //mxd
|
||||
if(General.Map.UDMF) General.Interface.AddButton(BuilderPlug.Me.MenusForm.TextureOffsetLock, ToolbarSection.Geometry); //mxd
|
||||
|
||||
// Convert geometry selection to sectors only
|
||||
General.Map.Map.ConvertSelection(SelectionType.Sectors);
|
||||
|
||||
//mxd. Update the tooltip
|
||||
BuilderPlug.Me.MenusForm.SyncronizeThingEditButton.ToolTipText = "Synchronized Things Editing" + Environment.NewLine + BuilderPlug.Me.MenusForm.SyncronizeThingEditSectorsItem.ToolTipText;
|
||||
|
||||
//mxd. Select things as well?
|
||||
if(BuilderPlug.Me.SyncronizeThingEdit)
|
||||
{
|
||||
ICollection<Sector> sectors = General.Map.Map.GetSelectedSectors(true);
|
||||
if(sectors.Count > 0)
|
||||
{
|
||||
foreach(Thing t in General.Map.Map.Things)
|
||||
{
|
||||
t.DetermineSector();
|
||||
if(!t.Selected && t.Sector != null && sectors.Contains(t.Sector))
|
||||
t.Selected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Make text labels for sectors
|
||||
SetupLabels();
|
||||
|
||||
|
@ -686,7 +704,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.MakeGradientCeilings);
|
||||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.SeparatorSectors3); //mxd
|
||||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.MarqueSelectTouching); //mxd
|
||||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.DragThingsInSelectedSectors); //mxd
|
||||
General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.SyncronizeThingEditButton); //mxd
|
||||
if(General.Map.UDMF) General.Interface.RemoveButton(BuilderPlug.Me.MenusForm.TextureOffsetLock); //mxd
|
||||
|
||||
// Keep only sectors selected
|
||||
|
@ -804,13 +822,23 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
renderer.Present();
|
||||
|
||||
//mxd. Thing selection state may've changed
|
||||
if(General.Interface.AltState) General.Interface.RedrawDisplay();
|
||||
if(General.Interface.AltState ^ BuilderPlug.Me.SyncronizeThingEdit) General.Interface.RedrawDisplay();
|
||||
}
|
||||
else if(BuilderPlug.Me.AutoClearSelection && General.Map.Map.SelectedSectorsCount > 0) //mxd
|
||||
else if(BuilderPlug.Me.AutoClearSelection && (General.Map.Map.SelectedSectorsCount > 0 || (BuilderPlug.Me.SyncronizeThingEdit && General.Map.Map.SelectedThingsCount > 0))) //mxd
|
||||
{
|
||||
if(General.Map.Map.SelectedSectorsCount > 0)
|
||||
{
|
||||
General.Map.Map.ClearSelectedLinedefs();
|
||||
General.Map.Map.ClearSelectedSectors();
|
||||
UpdateOverlaySurfaces(); //mxd
|
||||
}
|
||||
|
||||
//mxd
|
||||
if(BuilderPlug.Me.SyncronizeThingEdit && General.Map.Map.SelectedThingsCount > 0)
|
||||
{
|
||||
General.Map.Map.ClearSelectedThings();
|
||||
}
|
||||
|
||||
General.Interface.RedrawDisplay();
|
||||
}
|
||||
|
||||
|
@ -1156,25 +1184,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
switch(marqueSelectionMode)
|
||||
{
|
||||
case MarqueSelectionMode.SELECT:
|
||||
bool select;
|
||||
foreach(Sector s in General.Map.Map.Sectors)
|
||||
{
|
||||
select = IsInSelectionRect(s, selectionOutline);
|
||||
|
||||
bool select = IsInSelectionRect(s, selectionOutline);
|
||||
if(select && !s.Selected) SelectSector(s, true, false);
|
||||
else if(!select && s.Selected) SelectSector(s, false, false);
|
||||
}
|
||||
if (marqueSelectionIncludesThings)
|
||||
{
|
||||
ICollection<Sector> selected = General.Map.Map.GetSelectedSectors(true);
|
||||
|
||||
foreach (Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
{
|
||||
t.DetermineSector();
|
||||
if(t.Sector == null) continue;
|
||||
t.Selected = selectionrect.Contains(t.Position.x, t.Position.y) && selected.Contains(t.Sector);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MarqueSelectionMode.ADD:
|
||||
|
@ -1183,17 +1198,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
if(!s.Selected && IsInSelectionRect(s, selectionOutline))
|
||||
SelectSector(s, true, false);
|
||||
}
|
||||
if (marqueSelectionIncludesThings)
|
||||
{
|
||||
ICollection<Sector> selected = General.Map.Map.GetSelectedSectors(true);
|
||||
|
||||
foreach (Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
{
|
||||
t.DetermineSector();
|
||||
if(t.Sector == null) continue;
|
||||
t.Selected |= selectionrect.Contains(t.Position.x, t.Position.y) && selected.Contains(t.Sector);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MarqueSelectionMode.SUBTRACT:
|
||||
|
@ -1203,11 +1207,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
if(IsInSelectionRect(s, selectionOutline))
|
||||
SelectSector(s, false, false);
|
||||
}
|
||||
if (marqueSelectionIncludesThings)
|
||||
{
|
||||
foreach (Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
if (selectionrect.Contains(t.Position.x, t.Position.y)) t.Selected = false;
|
||||
}
|
||||
break;
|
||||
|
||||
default: //should be Intersect
|
||||
|
@ -1217,11 +1216,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
if(!IsInSelectionRect(s, selectionOutline))
|
||||
SelectSector(s, false, false);
|
||||
}
|
||||
if (marqueSelectionIncludesThings)
|
||||
{
|
||||
foreach(Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
if(!selectionrect.Contains(t.Position.x, t.Position.y)) t.Selected = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1320,20 +1314,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
base.OnRedoEnd(); //mxd
|
||||
}
|
||||
|
||||
//mxd
|
||||
public override void UpdateSelectionInfo()
|
||||
{
|
||||
List<string> info = new List<string>();
|
||||
|
||||
if(General.Map.Map.SelectedSectorsCount > 0)
|
||||
info.Add(General.Map.Map.SelectedSectorsCount + (General.Map.Map.SelectedSectorsCount == 1 ? " sector" : " sectors"));
|
||||
|
||||
if(General.Map.Map.SelectedThingsCount > 0)
|
||||
info.Add(General.Map.Map.SelectedThingsCount + (General.Map.Map.SelectedThingsCount == 1 ? " thing" : " things"));
|
||||
|
||||
General.Interface.DisplayStatus(StatusType.Selection, (info.Count > 0 ? string.Join(" and ", info.ToArray()) + " selected." : string.Empty));
|
||||
}
|
||||
|
||||
//mxd
|
||||
private void RenderComment(Sector s)
|
||||
{
|
||||
|
@ -1641,29 +1621,61 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
[BeginAction("deleteitem", BaseAction = true)]
|
||||
public void DeleteItem()
|
||||
{
|
||||
//mxd. Make list of selected things
|
||||
List<Thing> selectedthings = (BuilderPlug.Me.SyncronizeThingEdit ? new List<Thing>(General.Map.Map.GetSelectedThings(true)) : new List<Thing>());
|
||||
|
||||
// Make list of selected sectors
|
||||
List<Sector> selected = new List<Sector>(General.Map.Map.GetSelectedSectors(true));
|
||||
if((selected.Count == 0) && (highlighted != null) && !highlighted.IsDisposed) selected.Add(highlighted);
|
||||
List<Sector> selectedsectors = new List<Sector>(General.Map.Map.GetSelectedSectors(true));
|
||||
if((selectedsectors.Count == 0) && (highlighted != null) && !highlighted.IsDisposed)
|
||||
{
|
||||
selectedsectors.Add(highlighted);
|
||||
|
||||
//mxd. Add things?
|
||||
if(BuilderPlug.Me.SyncronizeThingEdit)
|
||||
{
|
||||
foreach(Thing t in General.Map.ThingsFilter.VisibleThings)
|
||||
{
|
||||
if(t.Sector == null) t.DetermineSector();
|
||||
if(t.Sector == highlighted) selectedthings.Add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(selectedsectors.Count == 0 && selectedthings.Count == 0) return; //mxd
|
||||
|
||||
//mxd. Create undo info text
|
||||
List<string> info = new List<string>();
|
||||
|
||||
//mxd. Create linedef info text
|
||||
if(selectedsectors.Count > 1)
|
||||
info.Add(selectedsectors.Count + " sectors");
|
||||
else
|
||||
info.Add("a sector");
|
||||
|
||||
//mxd. Create things info text
|
||||
if(selectedthings.Count > 1)
|
||||
info.Add(selectedthings.Count + " things");
|
||||
else
|
||||
info.Add("a thing");
|
||||
|
||||
//mxd. Make undo
|
||||
string rest = string.Join(" and ", info.ToArray());
|
||||
General.Map.UndoRedo.CreateUndo("Delete " + rest);
|
||||
General.Interface.DisplayStatus(StatusType.Action, "Deleted " + rest + ".");
|
||||
|
||||
//mxd. Delete things
|
||||
if(selectedthings.Count > 0)
|
||||
{
|
||||
DeleteThings(selectedthings);
|
||||
General.Map.ThingsFilter.Update();
|
||||
}
|
||||
|
||||
// Anything to do?
|
||||
if(selected.Count > 0)
|
||||
if(selectedsectors.Count > 0)
|
||||
{
|
||||
// Make undo
|
||||
if(selected.Count > 1)
|
||||
{
|
||||
General.Map.UndoRedo.CreateUndo("Delete " + selected.Count + " sectors");
|
||||
General.Interface.DisplayStatus(StatusType.Action, "Deleted " + selected.Count + " sectors.");
|
||||
}
|
||||
else
|
||||
{
|
||||
General.Map.UndoRedo.CreateUndo("Delete sector");
|
||||
General.Interface.DisplayStatus(StatusType.Action, "Deleted sector.");
|
||||
}
|
||||
|
||||
General.Map.Map.BeginAddRemove(); //mxd
|
||||
|
||||
// Dispose selected sectors
|
||||
foreach(Sector s in selected)
|
||||
foreach(Sector s in selectedsectors)
|
||||
{
|
||||
//mxd. Get all the linedefs
|
||||
List<Linedef> lines = new List<Linedef>(s.Sidedefs.Count);
|
||||
|
@ -1713,7 +1725,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
}
|
||||
|
||||
General.Map.Map.EndAddRemove(); //mxd
|
||||
}
|
||||
|
||||
if(selectedthings.Count > 0 || selectedsectors.Count > 0)
|
||||
{
|
||||
// Update cache values
|
||||
General.Map.IsChanged = true;
|
||||
General.Map.Map.Update();
|
||||
|
|
|
@ -740,15 +740,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
return base.OnCopyBegin();
|
||||
}
|
||||
|
||||
//mxd
|
||||
public override void UpdateSelectionInfo()
|
||||
{
|
||||
if(General.Map.Map.SelectedThingsCount > 0)
|
||||
General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedThingsCount + (General.Map.Map.SelectedThingsCount == 1 ? " thing" : " things") + " selected.");
|
||||
else
|
||||
General.Interface.DisplayStatus(StatusType.Selection, string.Empty);
|
||||
}
|
||||
|
||||
//mxd
|
||||
private void RenderComment(Thing t)
|
||||
{
|
||||
|
@ -1007,61 +998,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
General.Interface.DisplayStatus(StatusType.Action, "Deleted a thing.");
|
||||
}
|
||||
|
||||
General.Map.Map.BeginAddRemove(); //mxd
|
||||
|
||||
// Dispose selected things
|
||||
foreach(Thing t in selected)
|
||||
{
|
||||
//mxd. Do some path reconnecting shenanigans...
|
||||
ThingTypeInfo info = General.Map.Data.GetThingInfo(t.Type);
|
||||
string targetclass = string.Empty;
|
||||
int targetarg = -1;
|
||||
|
||||
// Thing type can be changed in MAPINFO DoomEdNums block...
|
||||
switch (info.ClassName.ToLowerInvariant())
|
||||
{
|
||||
case "interpolationpoint":
|
||||
if(t.Tag != 0 && t.Args[3] != 0)
|
||||
{
|
||||
targetclass = "interpolationpoint";
|
||||
targetarg = 3;
|
||||
}
|
||||
break;
|
||||
|
||||
case "patrolpoint":
|
||||
if(t.Tag != 0 && t.Args[0] != 0)
|
||||
{
|
||||
targetclass = "patrolpoint";
|
||||
targetarg = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Try to reconnect path...
|
||||
if(!string.IsNullOrEmpty(targetclass) && targetarg > -1)
|
||||
{
|
||||
General.Map.Map.EndAddRemove(); // We'll need to unlock the things array...
|
||||
|
||||
foreach(Thing other in General.Map.Map.Things)
|
||||
{
|
||||
if(other.Index == t.Index) continue;
|
||||
info = General.Map.Data.GetThingInfo(other.Type);
|
||||
if(info.ClassName.ToLowerInvariant() == targetclass && other.Args[targetarg] == t.Tag)
|
||||
{
|
||||
other.Move(other.Position); //hacky way to call BeforePropsChange()...
|
||||
other.Args[targetarg] = t.Args[targetarg];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
General.Map.Map.BeginAddRemove(); // We'll need to lock it again...
|
||||
}
|
||||
|
||||
// Get rid of the thing
|
||||
t.Dispose();
|
||||
}
|
||||
|
||||
General.Map.Map.EndAddRemove(); //mxd
|
||||
DeleteThings(selected); //mxd
|
||||
|
||||
// Update cache values
|
||||
General.Map.IsChanged = true;
|
||||
|
|
|
@ -694,15 +694,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
return base.OnCopyBegin();
|
||||
}
|
||||
|
||||
//mxd
|
||||
public override void UpdateSelectionInfo()
|
||||
{
|
||||
if(General.Map.Map.SelectedVerticessCount > 0)
|
||||
General.Interface.DisplayStatus(StatusType.Selection, General.Map.Map.SelectedVerticessCount + (General.Map.Map.SelectedVerticessCount == 1 ? " vertex" : " vertices") + " selected.");
|
||||
else
|
||||
General.Interface.DisplayStatus(StatusType.Selection, string.Empty);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ================== Actions
|
||||
|
|
|
@ -128,7 +128,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
private bool marqueSelectTouching; //mxd. Select elements partially/fully inside of marque selection?
|
||||
private bool syncSelection; //mxd. Sync selection between Visual and Classic modes.
|
||||
private bool lockSectorTextureOffsetsWhileDragging; //mxd
|
||||
private bool dragThingsInSectorsMode; //mxd
|
||||
private bool syncthingedit; //mxd
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -188,7 +188,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
public bool MarqueSelectTouching { get { return marqueSelectTouching; } set { marqueSelectTouching = value; } } //mxd
|
||||
public bool SyncSelection { get { return syncSelection; } set { syncSelection = value; } } //mxd
|
||||
public bool LockSectorTextureOffsetsWhileDragging { get { return lockSectorTextureOffsetsWhileDragging; } internal set { lockSectorTextureOffsetsWhileDragging = value; } } //mxd
|
||||
public bool DragThingsInSectorsMode { get { return dragThingsInSectorsMode; } internal set { dragThingsInSectorsMode = value; } } //mxd
|
||||
public bool SyncronizeThingEdit { get { return syncthingedit; } internal set { syncthingedit = value; } } //mxd
|
||||
|
||||
//mxd. "Make Door" action persistent settings
|
||||
internal MakeDoorSettings MakeDoor;
|
||||
|
@ -214,7 +214,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
menusform = new MenusForm();
|
||||
menusform.Register();
|
||||
menusform.TextureOffsetLock.Checked = lockSectorTextureOffsetsWhileDragging; //mxd
|
||||
menusform.DragThingsInSelectedSectors.Checked = dragThingsInSectorsMode; //mxd
|
||||
menusform.SyncronizeThingEditButton.Checked = syncthingedit; //mxd
|
||||
menusform.SyncronizeThingEditSectorsItem.Checked = syncthingedit; //mxd
|
||||
menusform.SyncronizeThingEditLinedefsItem.Checked = syncthingedit; //mxd
|
||||
|
||||
// Load Undo\Redo docker
|
||||
undoredopanel = new UndoRedoPanel();
|
||||
|
@ -297,7 +299,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
lockSectorTextureOffsetsWhileDragging = General.Settings.ReadPluginSetting("locktextureoffsets", false); //mxd
|
||||
viewselectionnumbers = General.Settings.ReadPluginSetting("viewselectionnumbers", true);
|
||||
viewselectioneffects = General.Settings.ReadPluginSetting("viewselectioneffects", true); //mxd
|
||||
dragThingsInSectorsMode = General.Settings.ReadPluginSetting("dragthingsinsectorsmode", true); //mxd
|
||||
syncthingedit = General.Settings.ReadPluginSetting("syncthingedit", true); //mxd
|
||||
}
|
||||
|
||||
//mxd. Save settings, which can be changed via UI
|
||||
|
@ -306,7 +308,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
General.Settings.WritePluginSetting("locktextureoffsets", lockSectorTextureOffsetsWhileDragging);
|
||||
General.Settings.WritePluginSetting("viewselectionnumbers", viewselectionnumbers);
|
||||
General.Settings.WritePluginSetting("viewselectioneffects", viewselectioneffects);
|
||||
General.Settings.WritePluginSetting("dragthingsinsectorsmode", dragThingsInSectorsMode);
|
||||
General.Settings.WritePluginSetting("syncthingedit", syncthingedit);
|
||||
}
|
||||
|
||||
//mxd. These should be reset when changing maps
|
||||
|
|
|
@ -28,10 +28,11 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MenusForm));
|
||||
this.menustrip = new System.Windows.Forms.MenuStrip();
|
||||
this.linedefsmenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.placethingsl = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.selectInSectorsItem3 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.syncthingeditlinedefsitem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.selectsinglesideditem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.selectdoublesideditem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
|
@ -52,7 +53,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
this.selectSimilarLinesItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.sectorsmenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.placethingss = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.selectInSectorsItem2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.syncthingeditsectorsitem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.joinsectorsitem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mergesectorsitem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
|
@ -95,7 +96,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
this.gradientInterpolationMenu = new System.Windows.Forms.ToolStripComboBox();
|
||||
this.separatorsectors3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.buttonMarqueSelectTouching = new System.Windows.Forms.ToolStripButton();
|
||||
this.buttonDragThingsInSelectedSectors = new System.Windows.Forms.ToolStripButton();
|
||||
this.syncthingteditbutton = new System.Windows.Forms.ToolStripButton();
|
||||
this.buttonAlignThingsToWall = new System.Windows.Forms.ToolStripButton();
|
||||
this.buttonTextureOffsetLock = new System.Windows.Forms.ToolStripButton();
|
||||
this.fileMenuStrip = new System.Windows.Forms.MenuStrip();
|
||||
|
@ -128,7 +129,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
//
|
||||
this.linedefsmenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.placethingsl,
|
||||
this.selectInSectorsItem3,
|
||||
this.syncthingeditlinedefsitem,
|
||||
this.toolStripSeparator2,
|
||||
this.selectsinglesideditem,
|
||||
this.selectdoublesideditem,
|
||||
|
@ -153,36 +154,41 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
//
|
||||
this.placethingsl.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings;
|
||||
this.placethingsl.Name = "placethingsl";
|
||||
this.placethingsl.Size = new System.Drawing.Size(245, 22);
|
||||
this.placethingsl.Size = new System.Drawing.Size(224, 22);
|
||||
this.placethingsl.Tag = "placethings";
|
||||
this.placethingsl.Text = "&Place Things...";
|
||||
this.placethingsl.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
//
|
||||
// selectInSectorsItem3
|
||||
// syncthingeditlinedefsitem
|
||||
//
|
||||
this.selectInSectorsItem3.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors;
|
||||
this.selectInSectorsItem3.Name = "selectInSectorsItem3";
|
||||
this.selectInSectorsItem3.Size = new System.Drawing.Size(245, 22);
|
||||
this.selectInSectorsItem3.Tag = "thingsselectinsectors";
|
||||
this.selectInSectorsItem3.Text = "&Select Things in Selected Sectors";
|
||||
this.syncthingeditlinedefsitem.CheckOnClick = true;
|
||||
this.syncthingeditlinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors;
|
||||
this.syncthingeditlinedefsitem.Name = "syncthingeditlinedefsitem";
|
||||
this.syncthingeditlinedefsitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.syncthingeditlinedefsitem.Tag = "syncedthingedit";
|
||||
this.syncthingeditlinedefsitem.Text = "&Synchronized Things Editing";
|
||||
this.syncthingeditlinedefsitem.ToolTipText = "When enabled, selected things will be dragged when dragging linedefs.\r\nRectangula" +
|
||||
"r selection will also select things (holding Alt while selecting \r\ninverts this " +
|
||||
"behaviour).";
|
||||
this.syncthingeditlinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(242, 6);
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(221, 6);
|
||||
//
|
||||
// selectsinglesideditem
|
||||
//
|
||||
this.selectsinglesideditem.Name = "selectsinglesideditem";
|
||||
this.selectsinglesideditem.Size = new System.Drawing.Size(245, 22);
|
||||
this.selectsinglesideditem.Size = new System.Drawing.Size(224, 22);
|
||||
this.selectsinglesideditem.Tag = "selectsinglesided";
|
||||
this.selectsinglesideditem.Text = "Select &Single-sided only";
|
||||
this.selectsinglesideditem.Text = "Select S&ingle-sided only";
|
||||
this.selectsinglesideditem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
//
|
||||
// selectdoublesideditem
|
||||
//
|
||||
this.selectdoublesideditem.Name = "selectdoublesideditem";
|
||||
this.selectdoublesideditem.Size = new System.Drawing.Size(245, 22);
|
||||
this.selectdoublesideditem.Size = new System.Drawing.Size(224, 22);
|
||||
this.selectdoublesideditem.Tag = "selectdoublesided";
|
||||
this.selectdoublesideditem.Text = "Select &Double-sided only";
|
||||
this.selectdoublesideditem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -190,13 +196,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// toolStripMenuItem4
|
||||
//
|
||||
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
|
||||
this.toolStripMenuItem4.Size = new System.Drawing.Size(242, 6);
|
||||
this.toolStripMenuItem4.Size = new System.Drawing.Size(221, 6);
|
||||
//
|
||||
// fliplinedefsitem
|
||||
//
|
||||
this.fliplinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Flip;
|
||||
this.fliplinedefsitem.Name = "fliplinedefsitem";
|
||||
this.fliplinedefsitem.Size = new System.Drawing.Size(245, 22);
|
||||
this.fliplinedefsitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.fliplinedefsitem.Tag = "fliplinedefs";
|
||||
this.fliplinedefsitem.Text = "&Flip Linedefs";
|
||||
this.fliplinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -205,7 +211,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
//
|
||||
this.flipsidedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Flip;
|
||||
this.flipsidedefsitem.Name = "flipsidedefsitem";
|
||||
this.flipsidedefsitem.Size = new System.Drawing.Size(245, 22);
|
||||
this.flipsidedefsitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.flipsidedefsitem.Tag = "flipsidedefs";
|
||||
this.flipsidedefsitem.Text = "F&lip Sidedefs";
|
||||
this.flipsidedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -213,13 +219,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// toolStripMenuItem1
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(242, 6);
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(221, 6);
|
||||
//
|
||||
// curvelinedefsitem
|
||||
//
|
||||
this.curvelinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CurveLines;
|
||||
this.curvelinedefsitem.Name = "curvelinedefsitem";
|
||||
this.curvelinedefsitem.Size = new System.Drawing.Size(245, 22);
|
||||
this.curvelinedefsitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.curvelinedefsitem.Tag = "curvelinesmode";
|
||||
this.curvelinedefsitem.Text = "&Curve Linedefs...";
|
||||
this.curvelinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -227,12 +233,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// toolStripMenuItem3
|
||||
//
|
||||
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(242, 6);
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(221, 6);
|
||||
//
|
||||
// splitlinedefsitem
|
||||
//
|
||||
this.splitlinedefsitem.Name = "splitlinedefsitem";
|
||||
this.splitlinedefsitem.Size = new System.Drawing.Size(245, 22);
|
||||
this.splitlinedefsitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.splitlinedefsitem.Tag = "splitlinedefs";
|
||||
this.splitlinedefsitem.Text = "S&plit Linedefs";
|
||||
this.splitlinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -240,7 +246,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// updatelightfogitem
|
||||
//
|
||||
this.updatelightfogitem.Name = "updatelightfogitem";
|
||||
this.updatelightfogitem.Size = new System.Drawing.Size(245, 22);
|
||||
this.updatelightfogitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.updatelightfogitem.Tag = "applylightfogflag";
|
||||
this.updatelightfogitem.Text = "&Update \'lightfog\' flag";
|
||||
this.updatelightfogitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -253,7 +259,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
this.alignCeilingToFrontItem,
|
||||
this.alignCeilingToBackItem});
|
||||
this.aligntexturesitem.Name = "aligntexturesitem";
|
||||
this.aligntexturesitem.Size = new System.Drawing.Size(245, 22);
|
||||
this.aligntexturesitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.aligntexturesitem.Text = "&Align Textures";
|
||||
//
|
||||
// alignFloorToFrontItem
|
||||
|
@ -291,13 +297,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// toolStripSeparator5
|
||||
//
|
||||
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||
this.toolStripSeparator5.Size = new System.Drawing.Size(242, 6);
|
||||
this.toolStripSeparator5.Size = new System.Drawing.Size(221, 6);
|
||||
//
|
||||
// selectSimilarLinesItem
|
||||
//
|
||||
this.selectSimilarLinesItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar;
|
||||
this.selectSimilarLinesItem.Name = "selectSimilarLinesItem";
|
||||
this.selectSimilarLinesItem.Size = new System.Drawing.Size(245, 22);
|
||||
this.selectSimilarLinesItem.Size = new System.Drawing.Size(224, 22);
|
||||
this.selectSimilarLinesItem.Tag = "selectsimilar";
|
||||
this.selectSimilarLinesItem.Text = "Select Similar...";
|
||||
this.selectSimilarLinesItem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -306,7 +312,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
//
|
||||
this.sectorsmenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.placethingss,
|
||||
this.selectInSectorsItem2,
|
||||
this.syncthingeditsectorsitem,
|
||||
this.toolStripSeparator1,
|
||||
this.joinsectorsitem,
|
||||
this.mergesectorsitem,
|
||||
|
@ -325,30 +331,32 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
//
|
||||
this.placethingss.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings;
|
||||
this.placethingss.Name = "placethingss";
|
||||
this.placethingss.Size = new System.Drawing.Size(245, 22);
|
||||
this.placethingss.Size = new System.Drawing.Size(224, 22);
|
||||
this.placethingss.Tag = "placethings";
|
||||
this.placethingss.Text = "&Place Things...";
|
||||
this.placethingss.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
//
|
||||
// selectInSectorsItem2
|
||||
// syncthingeditsectorsitem
|
||||
//
|
||||
this.selectInSectorsItem2.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors;
|
||||
this.selectInSectorsItem2.Name = "selectInSectorsItem2";
|
||||
this.selectInSectorsItem2.Size = new System.Drawing.Size(245, 22);
|
||||
this.selectInSectorsItem2.Tag = "thingsselectinsectors";
|
||||
this.selectInSectorsItem2.Text = "&Select Things in Selected Sectors";
|
||||
this.selectInSectorsItem2.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
this.syncthingeditsectorsitem.CheckOnClick = true;
|
||||
this.syncthingeditsectorsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors;
|
||||
this.syncthingeditsectorsitem.Name = "syncthingeditsectorsitem";
|
||||
this.syncthingeditsectorsitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.syncthingeditsectorsitem.Tag = "syncedthingedit";
|
||||
this.syncthingeditsectorsitem.Text = "&Synchronized Things Editing";
|
||||
this.syncthingeditsectorsitem.ToolTipText = resources.GetString("syncthingeditsectorsitem.ToolTipText");
|
||||
this.syncthingeditsectorsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(242, 6);
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(221, 6);
|
||||
//
|
||||
// joinsectorsitem
|
||||
//
|
||||
this.joinsectorsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Join;
|
||||
this.joinsectorsitem.Name = "joinsectorsitem";
|
||||
this.joinsectorsitem.Size = new System.Drawing.Size(245, 22);
|
||||
this.joinsectorsitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.joinsectorsitem.Tag = "joinsectors";
|
||||
this.joinsectorsitem.Text = "&Join Sectors";
|
||||
this.joinsectorsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -357,7 +365,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
//
|
||||
this.mergesectorsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Merge;
|
||||
this.mergesectorsitem.Name = "mergesectorsitem";
|
||||
this.mergesectorsitem.Size = new System.Drawing.Size(245, 22);
|
||||
this.mergesectorsitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.mergesectorsitem.Tag = "mergesectors";
|
||||
this.mergesectorsitem.Text = "&Merge Sectors";
|
||||
this.mergesectorsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -365,13 +373,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// toolStripMenuItem2
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(242, 6);
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(221, 6);
|
||||
//
|
||||
// flipsectorlinedefsitem
|
||||
//
|
||||
this.flipsectorlinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Flip;
|
||||
this.flipsectorlinedefsitem.Name = "flipsectorlinedefsitem";
|
||||
this.flipsectorlinedefsitem.Size = new System.Drawing.Size(245, 22);
|
||||
this.flipsectorlinedefsitem.Size = new System.Drawing.Size(224, 22);
|
||||
this.flipsectorlinedefsitem.Tag = "fliplinedefs";
|
||||
this.flipsectorlinedefsitem.Text = "&Flip Linedefs";
|
||||
this.flipsectorlinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -379,13 +387,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// toolStripSeparator8
|
||||
//
|
||||
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
||||
this.toolStripSeparator8.Size = new System.Drawing.Size(242, 6);
|
||||
this.toolStripSeparator8.Size = new System.Drawing.Size(221, 6);
|
||||
//
|
||||
// makedooritem
|
||||
//
|
||||
this.makedooritem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Door;
|
||||
this.makedooritem.Name = "makedooritem";
|
||||
this.makedooritem.Size = new System.Drawing.Size(245, 22);
|
||||
this.makedooritem.Size = new System.Drawing.Size(224, 22);
|
||||
this.makedooritem.Tag = "makedoor";
|
||||
this.makedooritem.Text = "Make &Door";
|
||||
this.makedooritem.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -393,14 +401,14 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(242, 6);
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(221, 6);
|
||||
this.toolStripSeparator4.Visible = false;
|
||||
//
|
||||
// selectSimilarSectors
|
||||
//
|
||||
this.selectSimilarSectors.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar;
|
||||
this.selectSimilarSectors.Name = "selectSimilarSectors";
|
||||
this.selectSimilarSectors.Size = new System.Drawing.Size(245, 22);
|
||||
this.selectSimilarSectors.Size = new System.Drawing.Size(224, 22);
|
||||
this.selectSimilarSectors.Tag = "selectsimilar";
|
||||
this.selectSimilarSectors.Text = "Select Similar...";
|
||||
this.selectSimilarSectors.Click += new System.EventHandler(this.InvokeTaggedAction);
|
||||
|
@ -539,7 +547,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
this.gradientInterpolationMenu,
|
||||
this.separatorsectors3,
|
||||
this.buttonMarqueSelectTouching,
|
||||
this.buttonDragThingsInSelectedSectors,
|
||||
this.syncthingteditbutton,
|
||||
this.buttonAlignThingsToWall,
|
||||
this.buttonTextureOffsetLock});
|
||||
this.manualstrip.Location = new System.Drawing.Point(0, 73);
|
||||
|
@ -734,18 +742,17 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
"";
|
||||
this.buttonMarqueSelectTouching.Click += new System.EventHandler(this.buttonMarqueSelectTouching_Click);
|
||||
//
|
||||
// buttonDragThingsInSelectedSectors
|
||||
// syncthingteditbutton
|
||||
//
|
||||
this.buttonDragThingsInSelectedSectors.CheckOnClick = true;
|
||||
this.buttonDragThingsInSelectedSectors.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.buttonDragThingsInSelectedSectors.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.MoveThingsInSectors;
|
||||
this.buttonDragThingsInSelectedSectors.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.buttonDragThingsInSelectedSectors.Name = "buttonDragThingsInSelectedSectors";
|
||||
this.buttonDragThingsInSelectedSectors.Size = new System.Drawing.Size(23, 22);
|
||||
this.buttonDragThingsInSelectedSectors.Text = "Move Things in Selected Sectors";
|
||||
this.buttonDragThingsInSelectedSectors.ToolTipText = "When enabled, all things inside of selected sectors \r\nwill be dragged when draggi" +
|
||||
"ng sectors.\r\nOtherwise, selected things will be dragged.";
|
||||
this.buttonDragThingsInSelectedSectors.Click += new System.EventHandler(this.buttonDragThingsInSelectedSectors_Click);
|
||||
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
|
||||
//
|
||||
|
@ -918,8 +925,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
private System.Windows.Forms.ToolStripMenuItem placethingss;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripButton buttonselectioneffects;
|
||||
private System.Windows.Forms.ToolStripMenuItem selectInSectorsItem3;
|
||||
private System.Windows.Forms.ToolStripMenuItem selectInSectorsItem2;
|
||||
private System.Windows.Forms.ToolStripMenuItem syncthingeditlinedefsitem;
|
||||
private System.Windows.Forms.ToolStripMenuItem syncthingeditsectorsitem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripButton buttonMakeDoor;
|
||||
private System.Windows.Forms.ToolStripMenuItem makedooritem;
|
||||
|
@ -938,7 +945,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
private System.Windows.Forms.ToolStripMenuItem selectSimilarVertsItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem flipsectorlinedefsitem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
|
||||
private System.Windows.Forms.ToolStripButton buttonDragThingsInSelectedSectors;
|
||||
private System.Windows.Forms.ToolStripButton syncthingteditbutton;
|
||||
private System.Windows.Forms.ToolStripComboBox gradientInterpolationMenu;
|
||||
private System.Windows.Forms.ToolStripSeparator separatorsectors2;
|
||||
private System.Windows.Forms.ToolStripSeparator separatorsectors3;
|
||||
|
|
|
@ -85,7 +85,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
public ToolStripButton MarqueSelectTouching { get { return buttonMarqueSelectTouching; } } //mxd
|
||||
public ToolStripButton AlignThingsToWall { get { return buttonAlignThingsToWall; } } //mxd
|
||||
public ToolStripButton TextureOffsetLock { get { return buttonTextureOffsetLock; } } //mxd
|
||||
public ToolStripButton DragThingsInSelectedSectors { get { return buttonDragThingsInSelectedSectors; } } //mxd
|
||||
public ToolStripButton SyncronizeThingEditButton { get { return syncthingteditbutton; } } //mxd
|
||||
public ToolStripMenuItem SyncronizeThingEditSectorsItem { get { return syncthingeditsectorsitem; } } //mxd
|
||||
public ToolStripMenuItem SyncronizeThingEditLinedefsItem { get { return syncthingeditlinedefsitem; } } //mxd
|
||||
public ToolStripButton MakeDoor { get { return buttonMakeDoor; } } //mxd
|
||||
|
||||
#endregion
|
||||
|
@ -268,15 +270,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
General.Interface.FocusDisplay();
|
||||
}
|
||||
|
||||
//mxd
|
||||
private void buttonDragThingsInSelectedSectors_Click(object sender, EventArgs e)
|
||||
{
|
||||
BuilderPlug.Me.DragThingsInSectorsMode = buttonDragThingsInSelectedSectors.Checked;
|
||||
General.Interface.DisplayStatus(StatusType.Info, (buttonDragThingsInSelectedSectors.Checked ?
|
||||
"Drag things in selected sectors" :
|
||||
"Don't drag things in selected sectors"));
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -123,6 +123,12 @@
|
|||
<metadata name="menustrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="syncthingeditsectorsitem.ToolTipText" xml:space="preserve">
|
||||
<value>When enabled, things dragging will be synchronized to sector dragging.
|
||||
Regular, Paint and Rectangular selection will also select things
|
||||
(holding Alt while selecting inverts this behaviour).
|
||||
Deleting sectors will also delete selected things.</value>
|
||||
</data>
|
||||
<metadata name="globalstrip.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5485
|
||||
// Runtime Version:2.0.50727.5466
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
|
@ -263,13 +263,6 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties {
|
|||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap MoveThingsInSectors {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("MoveThingsInSectors", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
internal static System.Drawing.Bitmap PasteProperties {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("PasteProperties", resourceCulture);
|
||||
|
|
|
@ -190,9 +190,6 @@
|
|||
<data name="SelectTouching" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SelectTouching.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="MoveThingsInSectors" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\MoveThingsInSectors.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Merge" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Merge.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
|
|
|
@ -428,11 +428,11 @@ thinglookatcursor
|
|||
}
|
||||
|
||||
//mxd
|
||||
thingsselectinsectors
|
||||
syncedthingedit
|
||||
{
|
||||
title = "Select Things in Selected Sectors";
|
||||
category = "things";
|
||||
description = "Selects Things in Selected Sectors.";
|
||||
title = "Synchronized Things Editing";
|
||||
category = "sectors";
|
||||
description = "When enabled, things selection/dragging will be synchronized to sector selection/dragging in Sectors mode. Selected things will be dragged when dragging linedefs in Linedefs mode. Deleting sectors will delete selected things in Sectors mode.";
|
||||
allowkeys = true;
|
||||
allowmouse = true;
|
||||
allowscroll = false;
|
||||
|
|
|
@ -44,6 +44,7 @@ group multiselection
|
|||
"Hold <b>Shift</b> to toggle additive selection"
|
||||
"Hold <b>Ctrl</b> to enable subtractive selection"
|
||||
"Hold <b>Ctrl-Shift</b> to intersect the new selection with already existing one"
|
||||
"Hold <b>Alt</b> to enable things (de)selection"
|
||||
|
||||
|
||||
class SectorsMode
|
||||
|
@ -68,7 +69,7 @@ group multiselection
|
|||
"Hold <b>Shift</b> to toggle additive selection"
|
||||
"Hold <b>Ctrl</b> to enable subtractive selection"
|
||||
"Hold <b>Ctrl-Shift</b> to intersect the new selection with already existing one"
|
||||
"Hold <b>Alt</b> to select things inside of selected sectors"
|
||||
"Hold <b>Alt</b> to enable things (de)selection"
|
||||
|
||||
|
||||
class ThingsMode
|
||||
|
@ -78,7 +79,6 @@ group general
|
|||
"Hold <k>builder_classicedit</k> to drag selected or highlighted things"
|
||||
"Hold <b>Shift-</b><k>builder_classicedit</k> to clone-drag selected or highlighted things"
|
||||
"Hold <k>builder_classicselect</k> and drag to use rectangular selection"
|
||||
"Press <k>buildermodes_thingsselectinsectors</k> to select things in selected sectors"
|
||||
"Press <k>builder_clearselection</k> to clear selection"
|
||||
"Press <k>builder_deleteitem</k> to delete selected thing(s)"
|
||||
"Press <k>builder_classicedit</k> to edit properties of current selection"
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 561 B |
|
@ -753,8 +753,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// Copy texture
|
||||
public virtual void OnCopyTexture()
|
||||
{
|
||||
if(Texture == null) return; //mxd
|
||||
string texturename = ((!General.Map.Options.UseLongTextureNames && Texture.UsedInMap) ? Texture.ShortName : GetTextureName()); //mxd
|
||||
//mxd. When UseLongTextureNames is disabled, use texture name as stored in Sidedef, otherwise use full name.
|
||||
string texturename = ((General.Map.Options.UseLongTextureNames && Texture != null && Texture.UsedInMap) ? Texture.FullName : GetTextureName());
|
||||
BuilderPlug.Me.CopiedFlat = texturename;
|
||||
if(General.Map.Config.MixTexturesFlats) BuilderPlug.Me.CopiedTexture = texturename;
|
||||
mode.SetActionResult("Copied flat '" + texturename + "'.");
|
||||
|
|
|
@ -1196,8 +1196,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
// Copy texture
|
||||
public virtual void OnCopyTexture()
|
||||
{
|
||||
if(Texture == null) return; //mxd
|
||||
string texturename = ((!General.Map.Options.UseLongTextureNames && Texture.UsedInMap) ? Texture.ShortName : GetTextureName()); //mxd
|
||||
//mxd. When UseLongTextureNames is disabled, use texture name as stored in Sidedef, otherwise use full name.
|
||||
string texturename = ((General.Map.Options.UseLongTextureNames && Texture != null && Texture.UsedInMap) ? Texture.FullName : GetTextureName());
|
||||
BuilderPlug.Me.CopiedTexture = texturename;
|
||||
if(General.Map.Config.MixTexturesFlats) BuilderPlug.Me.CopiedFlat = texturename;
|
||||
mode.SetActionResult("Copied texture '" + texturename + "'.");
|
||||
|
|
|
@ -643,6 +643,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
//mxd
|
||||
public override void UpdateSelectionInfo()
|
||||
{
|
||||
// Collect info
|
||||
int numWalls = 0;
|
||||
int numFloors = 0;
|
||||
int numCeilings = 0;
|
||||
|
@ -668,17 +669,17 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
|||
if(numThings > 0) results.Add(numThings + (numThings > 1 ? " things" : " thing"));
|
||||
if(numVerts > 0) results.Add(numVerts + (numVerts > 1 ? " vertices" : " vertex"));
|
||||
|
||||
if(results.Count == 0)
|
||||
// Display results
|
||||
string result = string.Empty;
|
||||
if(results.Count > 0)
|
||||
{
|
||||
General.Interface.DisplayStatus(StatusType.Selection, string.Empty);
|
||||
}
|
||||
else
|
||||
{
|
||||
string result = string.Join(", ", results.ToArray());
|
||||
int pos = result.LastIndexOf(",");
|
||||
result = string.Join(", ", results.ToArray());
|
||||
int pos = result.LastIndexOf(",", StringComparison.Ordinal);
|
||||
if(pos != -1) result = result.Remove(pos, 1).Insert(pos, " and");
|
||||
General.Interface.DisplayStatus(StatusType.Selection, result + " selected.");
|
||||
result += " selected.";
|
||||
}
|
||||
|
||||
General.Interface.DisplayStatus(StatusType.Selection, result);
|
||||
}
|
||||
|
||||
//mxd
|
||||
|
|
Loading…
Reference in a new issue