From 9ff08fe97baf797070ad5c0a8e626594226e2767 Mon Sep 17 00:00:00 2001 From: justburner Date: Sat, 29 Aug 2020 15:26:59 +0100 Subject: [PATCH 1/3] Rewrote unofficial 2.10 over latest official commit --- Help/Contents.hhc | 32 + Help/e_parallellinedef.html | 91 + Help/e_perpendicularlinedef.html | 97 + Help/e_perpendicularvertex.html | 94 + Help/e_unofficial_changelog.html | 57 + Help/e_unofficial_whatsnew.html | 38 + Help/e_vertexintoshape.html | 150 ++ Help/e_vertexslopeassistant.html | 176 ++ Help/mode_drawshape.html | 200 ++ Help/mode_drawshape.png | Bin 0 -> 44980 bytes Source/Core/Builder.csproj | 20 + Source/Core/Controls/ActionSelectorControl.cs | 7 +- Source/Core/Controls/RenderTargetControl.cs | 11 +- .../Controls/AngleControl.Designer.cs | 6 +- .../Core/GZBuilder/Controls/AngleControl.cs | 114 +- .../Controls/AngleControlF.Designer.cs | 55 + .../Core/GZBuilder/Controls/AngleControlF.cs | 306 +++ .../GZBuilder/Controls/AngleControlF.resx | 123 ++ Source/Core/General/MapManager.cs | 73 +- Source/Core/Geometry/Angle2D.cs | 1 + Source/Core/Geometry/TracksTracer.cs | 290 +++ Source/Core/Geometry/Vector2D.cs | 20 + Source/Core/Properties/Resources.Designer.cs | 395 ++-- Source/Core/Properties/Resources.resx | 5 +- Source/Core/Resources/Actions.cfg | 11 + Source/Core/Resources/Snap1mp.png | Bin 0 -> 191 bytes Source/Core/Windows/ConfigForm.Designer.cs | 1693 +++++++++-------- Source/Core/Windows/ConfigForm.resx | 190 +- Source/Core/Windows/MainForm.Designer.cs | 350 ++-- Source/Core/Windows/ThingBrowser2Form.cs | 362 ++++ .../Windows/ThingBrowser2Form.designer.cs | 313 +++ Source/Core/Windows/ThingBrowser2Form.resx | 126 ++ Source/Core/Windows/ThingEditForm.Designer.cs | 1067 +++++------ Source/Plugins/BuilderEffects/BuilderPlug.cs | 2 +- .../Plugins/BuilderModes/BuilderModes.csproj | 123 ++ .../ClassicModes/DrawShapeMode.cs | 763 ++++++++ .../ClassicModes/InsertThingsRadiallyMode.cs | 2 +- .../BuilderModes/ClassicModes/LinedefsMode.cs | 89 +- .../ClassicModes/MakeSectorMode.cs | 2 +- .../ClassicModes/ParallelLinedefMode.cs | 449 +++++ .../ClassicModes/PerpendicularLinedefMode.cs | 402 ++++ .../ClassicModes/PerpendicularVertexMode.cs | 503 +++++ .../BuilderModes/ClassicModes/SectorsMode.cs | 89 +- .../BuilderModes/ClassicModes/ThingsMode.cs | 34 +- .../ClassicModes/VertexIntoShapeMode.cs | 571 ++++++ .../ClassicModes/VertexSlopeAssistMode.cs | 1150 +++++++++++ .../BuilderModes/ClassicModes/VerticesMode.cs | 117 +- .../BuilderModes/General/BuilderPlug.cs | 40 +- .../DrawShapeOptionsPanel.Designer.cs | 497 +++++ .../Interface/DrawShapeOptionsPanel.cs | 150 ++ .../Interface/DrawShapeOptionsPanel.resx | 141 ++ .../Interface/MenusForm.Designer.cs | 283 ++- .../BuilderModes/Interface/MenusForm.cs | 8 + .../BuilderModes/Interface/MenusForm.resx | 14 +- .../Interface/ParallelLinedefForm.Designer.cs | 222 +++ .../Interface/ParallelLinedefForm.cs | 124 ++ .../Interface/ParallelLinedefForm.resx | 129 ++ .../PerpendicularLinedefForm.Designer.cs | 253 +++ .../Interface/PerpendicularLinedefForm.cs | 103 + .../Interface/PerpendicularLinedefForm.resx | 135 ++ .../PerpendicularVertexForm.Designer.cs | 232 +++ .../Interface/PerpendicularVertexForm.cs | 94 + .../Interface/PerpendicularVertexForm.resx | 132 ++ .../Interface/VertexIntoShapeForm.Designer.cs | 1037 ++++++++++ .../Interface/VertexIntoShapeForm.cs | 398 ++++ .../Interface/VertexIntoShapeForm.resx | 191 ++ .../VertexSlopeAssistForm.Designer.cs | 1108 +++++++++++ .../Interface/VertexSlopeAssistForm.cs | 603 ++++++ .../Interface/VertexSlopeAssistForm.resx | 170 ++ .../Interface/VertexSlopeAssistTagForm.cs | 88 + .../VertexSlopeAssistTagForm.designer.cs | 143 ++ .../Interface/VertexSlopeAssistTagForm.resx | 126 ++ .../Properties/Resources.Designer.cs | 300 ++- .../BuilderModes/Properties/Resources.resx | 54 + .../BuilderModes/Resources/Actions.cfg | 79 +- .../BuilderModes/Resources/AddTriangle.png | Bin 0 -> 413 bytes .../BuilderModes/Resources/AddVertex.png | Bin 0 -> 301 bytes .../Plugins/BuilderModes/Resources/Close.png | Bin 0 -> 699 bytes .../Resources/DrawShape24Sides.png | Bin 0 -> 232 bytes .../Resources/DrawShape3Sides.png | Bin 0 -> 238 bytes .../Resources/DrawShape8Sides.png | Bin 0 -> 234 bytes .../BuilderModes/Resources/DrawShapeMode.png | Bin 0 -> 321 bytes .../Resources/DrawShapeSpike0.png | Bin 0 -> 136 bytes .../Resources/DrawShapeSpike50.png | Bin 0 -> 202 bytes .../Resources/DrawTaggedTriangle.png | Bin 0 -> 440 bytes .../BuilderModes/Resources/DrawTriangle.png | Bin 0 -> 371 bytes .../Plugins/BuilderModes/Resources/Hints.cfg | 13 + .../Resources/ParallelLinedef.png | Bin 0 -> 462 bytes .../Resources/PerpendicularLinedef.png | Bin 0 -> 482 bytes .../Resources/PerpendicularVertex.png | Bin 0 -> 407 bytes .../Plugins/BuilderModes/Resources/Search.png | Bin 0 -> 639 bytes .../BuilderModes/Resources/SingleVertex.png | Bin 0 -> 174 bytes .../Resources/VertexIntoShape.png | Bin 0 -> 351 bytes .../BuilderModes/Resources/VertexSlope.png | Bin 0 -> 618 bytes Source/Plugins/ColorPicker/BuilderPlug.cs | 2 +- 95 files changed, 15683 insertions(+), 1955 deletions(-) create mode 100644 Help/e_parallellinedef.html create mode 100644 Help/e_perpendicularlinedef.html create mode 100644 Help/e_perpendicularvertex.html create mode 100644 Help/e_unofficial_changelog.html create mode 100644 Help/e_unofficial_whatsnew.html create mode 100644 Help/e_vertexintoshape.html create mode 100644 Help/e_vertexslopeassistant.html create mode 100644 Help/mode_drawshape.html create mode 100644 Help/mode_drawshape.png create mode 100644 Source/Core/GZBuilder/Controls/AngleControlF.Designer.cs create mode 100644 Source/Core/GZBuilder/Controls/AngleControlF.cs create mode 100644 Source/Core/GZBuilder/Controls/AngleControlF.resx create mode 100644 Source/Core/Geometry/TracksTracer.cs create mode 100644 Source/Core/Resources/Snap1mp.png create mode 100644 Source/Core/Windows/ThingBrowser2Form.cs create mode 100644 Source/Core/Windows/ThingBrowser2Form.designer.cs create mode 100644 Source/Core/Windows/ThingBrowser2Form.resx create mode 100644 Source/Plugins/BuilderModes/ClassicModes/DrawShapeMode.cs create mode 100644 Source/Plugins/BuilderModes/ClassicModes/ParallelLinedefMode.cs create mode 100644 Source/Plugins/BuilderModes/ClassicModes/PerpendicularLinedefMode.cs create mode 100644 Source/Plugins/BuilderModes/ClassicModes/PerpendicularVertexMode.cs create mode 100644 Source/Plugins/BuilderModes/ClassicModes/VertexIntoShapeMode.cs create mode 100644 Source/Plugins/BuilderModes/ClassicModes/VertexSlopeAssistMode.cs create mode 100644 Source/Plugins/BuilderModes/Interface/DrawShapeOptionsPanel.Designer.cs create mode 100644 Source/Plugins/BuilderModes/Interface/DrawShapeOptionsPanel.cs create mode 100644 Source/Plugins/BuilderModes/Interface/DrawShapeOptionsPanel.resx create mode 100644 Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.Designer.cs create mode 100644 Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.cs create mode 100644 Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.resx create mode 100644 Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.Designer.cs create mode 100644 Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.cs create mode 100644 Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.resx create mode 100644 Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.Designer.cs create mode 100644 Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.cs create mode 100644 Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.resx create mode 100644 Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.Designer.cs create mode 100644 Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.cs create mode 100644 Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.resx create mode 100644 Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.Designer.cs create mode 100644 Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.cs create mode 100644 Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.resx create mode 100644 Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.cs create mode 100644 Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.designer.cs create mode 100644 Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.resx create mode 100644 Source/Plugins/BuilderModes/Resources/AddTriangle.png create mode 100644 Source/Plugins/BuilderModes/Resources/AddVertex.png create mode 100644 Source/Plugins/BuilderModes/Resources/Close.png create mode 100644 Source/Plugins/BuilderModes/Resources/DrawShape24Sides.png create mode 100644 Source/Plugins/BuilderModes/Resources/DrawShape3Sides.png create mode 100644 Source/Plugins/BuilderModes/Resources/DrawShape8Sides.png create mode 100644 Source/Plugins/BuilderModes/Resources/DrawShapeMode.png create mode 100644 Source/Plugins/BuilderModes/Resources/DrawShapeSpike0.png create mode 100644 Source/Plugins/BuilderModes/Resources/DrawShapeSpike50.png create mode 100644 Source/Plugins/BuilderModes/Resources/DrawTaggedTriangle.png create mode 100644 Source/Plugins/BuilderModes/Resources/DrawTriangle.png create mode 100644 Source/Plugins/BuilderModes/Resources/ParallelLinedef.png create mode 100644 Source/Plugins/BuilderModes/Resources/PerpendicularLinedef.png create mode 100644 Source/Plugins/BuilderModes/Resources/PerpendicularVertex.png create mode 100644 Source/Plugins/BuilderModes/Resources/Search.png create mode 100644 Source/Plugins/BuilderModes/Resources/SingleVertex.png create mode 100644 Source/Plugins/BuilderModes/Resources/VertexIntoShape.png create mode 100644 Source/Plugins/BuilderModes/Resources/VertexSlope.png diff --git a/Help/Contents.hhc b/Help/Contents.hhc index a59265d..d3ec239 100644 --- a/Help/Contents.hhc +++ b/Help/Contents.hhc @@ -16,6 +16,14 @@ +
  • + + + +
  • + + +
  • @@ -338,6 +346,10 @@ +
  • + + +
  • @@ -346,6 +358,26 @@ +
  • + + + +
  • + + + +
  • + + + +
  • + + + +
  • + + +
  • diff --git a/Help/e_parallellinedef.html b/Help/e_parallellinedef.html new file mode 100644 index 0000000..e19e73f --- /dev/null +++ b/Help/e_parallellinedef.html @@ -0,0 +1,91 @@ + + + + + Parallel Linedef Mode + + + + + + + + + + + +

    Parallel Linedef Mode

    + +
    +

    + NEW IN UNOFFICIAL 2.10!
    + Parallel linedefs are created alongside each linedef.
    +
    + This mode is helpful for:
    + • Creating tracks quickly.
    + • Expand/shrink shape.
    +
    + This mode shows a small dialog window that you can use to create parallel linedef(s) from a linedef or multiple linedefs. + Although this mode shows a dialog window, you can still use the main interface and zoom/move your view around the map.
    +
    + This mode is volatile, which means that this mode returns to the previous stable mode when the map is saved or closed, either accepting or discarding your preview changes. You can access this mode through the Vertices Mode, Linedefs Mode or Sectors Mode but is recommended to access from Linedefs Mode.
    +
    + WARNING!
    + • Selected vertices with intersections (more than 2 selected linedefs connected) can result in undesirable result! The mode will warn about this whatsoever.
    + • Open-paths will ignore linedefs front/back dir. on the middle, if both end tips are facing opposite directions then the direction will be unpredictable.
    + • Close-paths will ignore all linedefs front/back dir. and always parallel into inside, use "Backwards" to place elements outside.
    + +

    Dialog Settings

    + + + + + + + + + + + + + + + + + +
    Create as...Select which type of elements to create, see below for more information.
    DistanceSet distance between selected linedef(s) and parallel linedef(s).
    Close Open-Paths EndsAttach linedefs between original paths and open-paths at both ends. Only available for linedef elements and doesn't affect close-paths.
    Backwards / OutsideWhen checked, it creates parallel path on the opposite side.
    + +

    "Create as..." types

    + + + + + + + + + + + + + + + + + +
    Linked LinedefCreates a normal parallel linedef.
    Unlinked LinedefCreates an isolated parallel linedef that won't intersect or merge into elements on the map. Not recommended.
    VerticesCreates a vertex at each point of the parallel.
    ThingCreates a thing at each point of the parallel.
    + +

    Default Controls

    + + + + + + + + + +
    EnterAccept and apply the changes, and return to the previous mode.
    EscapeDiscard the changes and return to the previous mode.
    +

    +
    + diff --git a/Help/e_perpendicularlinedef.html b/Help/e_perpendicularlinedef.html new file mode 100644 index 0000000..d0806f2 --- /dev/null +++ b/Help/e_perpendicularlinedef.html @@ -0,0 +1,97 @@ + + + + + Perpendicular Linedef Mode + + + + + + + + + + + +

    Perpendicular Linedef Mode

    + +
    +

    + NEW IN UNOFFICIAL 2.10!
    + Perpendiculars are created alongside each linedef.
    +
    + This mode is helpful for:
    + • Creating track segments. (Due to float inaccuracies you need to use "Snap distance")
    + • Placing things parallel to a path.
    +
    + This mode shows a small dialog window that you can use to create a perpendicular linedef, vertex or thing from a linedef or multiple linedefs. + Although this mode shows a dialog window, you can still use the main interface and zoom/move your view around the map.
    +
    + This mode is volatile, which means that this mode returns to the previous stable mode when the map is saved or closed, either accepting or discarding your preview changes. You can access this mode through the Vertices Mode, Linedefs Mode or Sectors Mode but is recommended to access from Linedefs Mode.
    +
    + WARNING!
    + • Perpendiculars are only created on selected vertices with 1 or 2 selected linedefs connected! (aka. a path line)
    + +

    Dialog Settings

    + + + + + + + + + + + + + + + + + + + + + +
    Create as...Select which type of elements to create, see below for more information.
    DistanceSet distance between selected linedef(s) and the end of the perpendicular.
    Offset %Sets offset along each linedef of where the perpendicular should intersect. 50% means exactly in the center.
    BackwardsWhen checked, it creates a perpendicular on the opposite side of where the linedefs are facing.
    Snap distanceAdjust snap distance to vertices that already exist in the map so perpendiculars get connected to them. Set to zero to disable snapping.
    + +

    "Create as..." types

    + + + + + + + + + + + + + + + + + + + + + +
    Linked LinedefCreates a normal perpendicular linedef.
    Unlinked LinedefCreates an isolated perpendicular linedef that won't intersect or merge into elements on the map. Not recommended.
    VerticesCreates a vertex at the end of the perpendicular.
    Vertices with
    Linedef Split
    Creates a vertex at the end of the perpendicular and split the linedef on same offset.
    ThingCreates a thing at the end of the perpendicular.
    + +

    Default Controls

    + + + + + + + + + +
    EnterAccept and apply the changes, and return to the previous mode.
    EscapeDiscard the changes and return to the previous mode.
    +

    +
    + diff --git a/Help/e_perpendicularvertex.html b/Help/e_perpendicularvertex.html new file mode 100644 index 0000000..409a215 --- /dev/null +++ b/Help/e_perpendicularvertex.html @@ -0,0 +1,94 @@ + + + + + Perpendicular Vertex Mode + + + + + + + + + + + +

    Perpendicular Vertex Mode

    + +
    +

    + NEW IN UNOFFICIAL 2.10!
    + Perpendiculars are created on each vertex. It's required a path with linedefs connected to the selected vertices for the mode to work, it cannot operate on vertices alone!
    +
    + This mode is helpful for:
    + • Creating track segments. (Due to float inaccuracies you need to use "Snap distance")
    + • Alternative to Parallel Linedef Mode for placing things parallel to a path.
    +
    + This mode shows a small dialog window that you can use to create a perpendicular linedef, vertex or thing from a vertex or multiple vertices. + Although this mode shows a dialog window, you can still use the main interface and zoom/move your view around the map.
    +
    + This mode is volatile, which means that this mode returns to the previous stable mode when the map is saved or closed, either accepting or discarding your preview changes. You can access this mode through the Vertices Mode, Linedefs Mode or Sectors Mode but is recommended to access from Linedefs Mode.
    +
    + WARNING!
    + • Perpendiculars are only created on selected vertices with 1 or 2 selected linedefs connected! (aka. a path line)
    + • Path with opposite facing linedefs will not produce any perpendicular.
    + +

    Dialog Settings

    + + + + + + + + + + + + + + + + + + + + + +
    Create as...Select which type of elements to create, see below for more information.
    DistanceSet distance between selected linedef(s) and the end of the perpendicular.
    Process tipsWhen unchecked, vertices with only one linedef selected won't be processed.
    BackwardsWhen checked, it creates a perpendicular on the opposite side of where the linedefs are facing.
    Snap distanceAdjust snap distance to vertices that already exist in the map so perpendiculars get connected to them. Set to zero to disable snapping.
    + +

    "Create as..." types

    + + + + + + + + + + + + + + + + + +
    Linked LinedefCreates a normal perpendicular linedef.
    Unlinked LinedefCreates an isolated perpendicular linedef that won't intersect or merge into elements on the map. Not recommended.
    VerticesCreates a vertex at the end of the perpendicular.
    ThingCreates a thing at the end of the perpendicular.
    + +

    Default Controls

    + + + + + + + + + +
    EnterAccept and apply the changes, and return to the previous mode.
    EscapeDiscard the changes and return to the previous mode.
    +

    +
    + diff --git a/Help/e_unofficial_changelog.html b/Help/e_unofficial_changelog.html new file mode 100644 index 0000000..0182a93 --- /dev/null +++ b/Help/e_unofficial_changelog.html @@ -0,0 +1,57 @@ + + + + + Changelog - Zone Builder Unofficial + + + + + + + + + + + +

    Changelog - Zone Builder Unofficial

    + +
    +

    +

    2.10.0.2506 - 2019/09/23

    + Bugfixes and other minor changes.
    + +

    ~~ Older history: ~~

    + +

    2.10.0.2505 beta - 2019/09/19

    + Bugfixes and other minor changes.
    + +

    2.10.0.2504 beta - 2019/09/15

    + Visual mode now display absolute Z Vertex Slopes properly.
    + Added support for absolute Z in "Vertex Slopes Assistant".
    + "Vertex Slopes Assistant" is more user friendly: group options is also available by right-click on map, ability to create empty triangles and Shift+Wheel for scrolling Tag #.
    + Other minor changes.
    + +

    2.10.0.2503 beta - 2019/09/10

    + Added some missing linedef actions in SRB2 Kart such as "Encore Load".
    + Placed "Point to Cursor" shortcut on "manual" toolstrip in Things Mode.
    + New "Vertex Slope Assistant" to help managing and creating vertex slopes, available in Things Mode.
    + Added tooltips on all new tools and other minor changes.
    + Added randomizer on "Vertex Into Shape" to generate random shapes per vertex.
    + Updated help file with information of the new tool and corrections on previous tools.
    + Implemented SRB2 2.2 / SRB2 Kart Sector Flat Alignment.
    + +

    2.10.0.2502 beta - 2019/08/22

    + Placed "Place things" shortcut on "manual" toolstrip in Vertices Mode, Linedefs Mode and Sectors Mode.
    + New "Perpendicular Tool" to create elements perpendicular to linedefs or vertices, available in Vertices Mode, Linedefs Mode and Sectors Mode.
    + New "Parallel Tool" to create elements parallel to linedefs, available in Vertices Mode, Linedefs Mode and Sectors Mode.
    + New "Draw Shapes Mode" (Alt+D), it peforms the same as Draw Ellipse Mode and Insert Things Radially Mode but with added functionality.
    + New "Vertex Into Shape" to create multiple shapes, available in Vertices Mode.
    + Updated help file with information of the new tools.
    + +

    2.10.0.2501 beta - 2019/04/30

    + Angle component now support loops separated from angle, very useful for creating checkpoints in SRB2 Kart.
    + Dragging while holding middle-button on angle component changes the number of loops.
    +

    +
    + diff --git a/Help/e_unofficial_whatsnew.html b/Help/e_unofficial_whatsnew.html new file mode 100644 index 0000000..4a9e0f1 --- /dev/null +++ b/Help/e_unofficial_whatsnew.html @@ -0,0 +1,38 @@ + + + + + What's New - Zone Builder Unofficial + + + + + + + + + + + +

    What's New - Zone Builder Unofficial

    + +
    +

    +

    Quick way to set laps

    + Angle UI component supports "loops", very useful for creating checkpoints in SRB2 Kart.
    + Dragging mouse while holding middle-button on angle component changes the number of loops.
    + +

    New building tools

    + Perpendicular Tool, create elements perpendicular to linedefs or vertices, available in Vertices Mode, Linedefs Mode and Sectors Mode.
    + Parallel Tool, create elements parallel to linedefs, available in Vertices Mode, Linedefs Mode and Sectors Mode.
    + Draw Shapes Mode (Alt+D), it peforms the same as Draw Ellipse Mode and Insert Things Radially Mode but with added functionality.
    + Vertex Into Shape to create multiple shapes, available in Vertices Mode, works similar to Draw Shapes Mode.
    + Vertex Slope Assistant to help managing and creating vertex slopes, available in Things Mode.
    + +

    Better support for SRB2 Kart

    + SRB2 2.2 / SRB2 Kart Sector Flat Alignment support (by MascaraSnake).
    + VSlope Absolute Z, Visual mode now display absolute Z Vertex Slopes properly.
    + Improved SRB2 Kart configs, added missing sector type "Invert Encore Remap" and linedef trigger "Encore Load" and more.
    +

    +
    + diff --git a/Help/e_vertexintoshape.html b/Help/e_vertexintoshape.html new file mode 100644 index 0000000..0ee102e --- /dev/null +++ b/Help/e_vertexintoshape.html @@ -0,0 +1,150 @@ + + + + + Vertex into Shape Mode + + + + + + + + + + + +

    Vertex into Shape Mode

    + +
    +

    + NEW IN UNOFFICIAL 2.10!
    + Shapes are created on each vertex.
    +
    + This mode is helpful for:
    + • Creating multiple copies of geometric shapes at same time.
    +
    + This mode shows a small dialog window that you can use to adjust the shape to be placed in a vertex or multiple vertices. + Although this mode shows a dialog window, you can still use the main interface and zoom/move your view around the map.
    +
    + This mode is volatile, which means that this mode returns to the previous stable mode when the map is saved or closed, either accepting or discarding your preview changes. You can access this mode through the Vertices Mode.
    + +

    Dialog Settings

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Preview ReferenceVisual only. The reference circle will be shown on screen when checked.
    Remove VerticesWhen checked it will remove the vertices that were used to place the shapes.
    RadiusSets the radius.
    EllipseShape can only be scaled in one axis when unchecked.
    Create shape as...Select which type of elements to create, see below for more information.
    Front Outside /
    Flip Linedefs
    Shape linedefs will point outside when checked, ignored if "Create shape as.." is "Vertices" or "Things".
    SidesSets number of sides that the shape should have, note that reducing sweep angle won't reduce the number of sides.
    SpikinessSets percentage of spikiness. Except "Draw Ellipse behaviour" spike type, in that case spikiness is in mp.
    Spike type combo boxControls how spikes behave in relation to the Spikiness level, see below for more information.
    Start AngleControls the starting angle of the first point.
    Sweep AngleControls the sweep angle of the slice, 360º will create a closed shape without slices.
    Lock to one quadrantLocks start angle to top-right quadrant when checked, internally the angle will automatically adjust based of which quadrant the mouse is in.
    + +

    "Create as..." types

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Close shape
    towards origin
    Sliced shape will be cut towards origin creating a pie look.
    Close shape
    first to last vertex
    Sliced shape will be closed by a linedef connected from the first to last vertex of the shape.
    Open or close shapeSliced shape won't be closed.
    Shape w/o intersect
    or sectors
    Creates an isolated shape that won't intersect or merge into elements on the map. Not recommended.
    VerticesCreates a shape without linedefs.
    ThingCreates a thing at each point of the shape.
    + +

    Spike types combo box

    + + + + + + + + + + + + + + + + + + + + + +
    Spike outsideSpike will go outside of the reference circle.
    Spike insideSpike will go inside of the reference circle, spikiness should not be more than 100!
    Spike zig-zagSpike will go outside and inside of the reference circle causing it to be 2x more severe, spikiness should not be more than 100!
    Spike gearSpike create a gear shape inside and outside of the reference circle, spikiness should not be more than 100! Number of sides must be multiple of 4 in this type.
    DrawEllipse behaviourSimulates Draw Ellipse bevel behaviour, in this case the spikiness will be distance of spikes away from the reference circle rather than a percentage.
    + If Spikiness is more than 0 then sides must be multiple of 2 (except Spike Gear that requires 4).
    + +

    Default Controls

    + + + + + + + + + +
    EnterAccept and apply the changes, and return to the previous mode.
    EscapeDiscard the changes and return to the previous mode.
    +

    +
    + diff --git a/Help/e_vertexslopeassistant.html b/Help/e_vertexslopeassistant.html new file mode 100644 index 0000000..2e82568 --- /dev/null +++ b/Help/e_vertexslopeassistant.html @@ -0,0 +1,176 @@ + + + + + Vertex Slope Assistant + + + + + + + + + + + +

    Vertex Slope Assistant

    + +
    +

    + NEW IN UNOFFICIAL 2.10!
    + Tool to assist on creating and managing Vertex Slopes.
    + (Only for SRB2 and SRB2 Kart!)
    +
    + This mode shows a small dialog window that you can use to manage your Vertex Slopes.
    + Although this mode shows a dialog window, you can still use the main interface and zoom/move your view around the map.
    +
    + This mode is volatile, which means that this mode returns to the previous stable mode when the map is saved or closed, either accepting or discarding your preview changes. You can access this mode through the Things Mode.
    + +

    Creating Vertex Slopes

    + There's 2 ways to create vertex slopes, either by using a Triangle Group or 3x Vertex Groups.
    + Note: To create a new group the selected tag should not have an existing group!
    + +

    Creating Vertex Slopes with Triangle Group

    + Triangle groups allow to quickly create triangles with individual vertices.
    + • Select a free unused tag in "Tag #" or clicking "New" next to "Tag #".
    + • If no shape exists on map use "Draw New Tagged Triangle" to create both shape and vertex slopes, otherwise use "New Triangle Group" and mark the corner points of the triangle geometry.
    + • You can adjust heights of each individual vertex slope after the group has been created.
    + • On map, right-click one of the linedef that form the triangle and apply the correct action.
    + +

    Creating Vertex Slopes with 3 Vertex Groups

    + Vertex groups allows sharing vertex slopes between triangles to optimize resources.
    + If no shape exists on map you can use "Draw New Empty Triangle" to quickly create a triangle shape.
    + • Select a free unused tag in "Tag #" or clicking "New" next to "Tag #".
    + • If a corner of the triangle geometry doesn't have a vertex slope create one with "New Triangle Vertex".
    + • Repeat those steps for each corner of the triangle.
    + • On map, right-click one of the linedef that form the triangle and apply the correct action, you'll need to double-click on the list the other 2 groups that form the triangle.
    + +

    Managing Vertex Slopes

    + You can select a vertex slope group by left-clicking a group in the listbox, alternatively you can left-click a triangle group in the map (doesn't work on vertex groups).
    + To manage the group you either can right-click in the listbox, use the toolstrip buttons or right-click on the map.
    + Note: Different set of options are available depending if the selected tag have an existing group or not.
    + +

    Dialog Settings

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Tag #Tag number to be used for the vertex slope, should be between 1 to 65535.
    New (next to Tag #)Find a new unused tag, that is, not being used by any sector or linedef.
    Move Vertex Slopes...When checked, all Vertex Slopes will slightly move inside the the triangle so height can be adjusted freely without any neighbour sectors affecting it but this will also cause an error of >= 1 pixel on the slope edges.
    + This setting affects: Create New Triangle, New Triangle Group and Remake Group (On triangle groups only).
    Vertex Slope listboxSelect tagged group of vertex slopes for editing. Right-click will open context menu.
    Selected Vertex Slope GroupSet position and height of all Vertex Slopes.
    Absolute Z (unique for each vertex)When checked the Z position of vertex will be absolute otherwise the value is added into sector height. Note: Absolute Z cannot be positioned less than zero.
    Rotate (All)Rotate the Vertex Slope order on the triangle. Affects position and height.
    Flip (All)Flip the 2nd and 3rd Vertex Slope order on the triangle. Affects position and height.
    Rotate (Height)Rotate the Vertex Slope order on the triangle but only affects Height. Useful if you remade the group with the wrong order.
    Flip (Height)Flip the 2nd and 3rd Vertex Slope order on the triangle. Useful if you remade the group with the wrong order.
    Adj. HeightsAdjust all heights together. Any negative value will be clipped to zero.
    + +

    Vertex Slope Group options

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    New Triangle GroupCreate a new Triangle Group that consist of 3 vertex slopes.
    New Vertex GroupCreate a new Vertex Group that consist of a single vertex slope.
    Remake GroupRemake selected tagged group by moving the vertex slope(s) position. Invalid group will be valid by having 3 vertex slopes only. Single vertex group will only remake 1 vertex.
    Remake Group as TriangleRemake selected tagged group by moving the vertex slope(s) position. Invalid group will be valid by having 3 vertex slopes only. Group will be remade with 3 vertex slopes.
    Remake Group as VertexRemake selected tagged group by moving the vertex slope(s) position. Invalid group will be valid by having 1 vertex slope only. Group will be remade with a single vertex slope.
    Change Group TagSet a new tag to the selected tagged group. Using a tag that belong to another group is not allowed.
    Delete GroupDelete current tagged group, all vertex slopes will be erased!
    Draw New Tagged TriangleDraw a new triangle shape with linedefs and attach 3 tagged vertex slopes inside it. Right-click any linedef inside the map to setup a vertex slope action.
    Draw New Empty TriangleDraw a new triangle shape with linedefs.
    + +

    Default Controls

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EnterAccept and apply all changes, and return to the previous mode.
    EscapeDiscard all changes and return to the previous mode.
    BackspaceWhile creating or remarking: Removes the last drawn vertex.
    LMBWhile creating or remarking: Marks a new point.
    In selection mode: Selects a triangle group.
    RMBBrings up context menu.
    Shift+MWheelIncrease or decrease Tag #.
    Ctrl+MWheelIncrease or decrease Tag #.
    +

    +
    + diff --git a/Help/mode_drawshape.html b/Help/mode_drawshape.html new file mode 100644 index 0000000..1452ae7 --- /dev/null +++ b/Help/mode_drawshape.html @@ -0,0 +1,200 @@ + + + + + Draw Shape Mode + + + + + + + + + + + +

    Draw Shape Mode

    + +
    +

    + NEW IN UNOFFICIAL 2.10!
    + Creates shapes, this tool peforms the same as Draw Ellipse Mode and Insert Things Radially Mode but with added functionality.
    + Default key: Alt-D.
    +
    + This mode lets you draw various shapes, including but not limited to:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Triangle3 Sides, no spikiness.
    Square or Rectangle4 Sides, no spikiness. Size depends of reference circle.
    Pentagon5 Sides, no spikiness.
    Hexagon6 Sides, no spikiness.
    Heptagon7 Sides, no spikiness.
    Octagon8 Sides, no spikiness.
    Circle or ellipseHigh number of sides, no spikiness.
    Star10 Sides, with spikiness, "spike inside".
    Gear8+ Sides (multiple of 4), with spikiness, "spike gear".
    Pac-man16+ Sides, no spikiness, 45º Start Angle, 270º Sweep Angle.
    + ...each of this shapes can be sliced.
    + All geometry will fit a reference circle in exception of spikes.
    + + Make sure to expand the right panel under "Draw Shape" to see the settings:
    +
    + +

    Dialog Settings

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Preview ReferenceVisual only. The reference circle will be shown on screen when checked.
    EllipseShape can only be scaled in one axis when unchecked, this also allows to be much easier to setup angles with the mouse.
    1st Point as...Select how the shape will be placed in the map: starting from origin, replicate Draw Ellipse Mode behaviour or side/corner into origin.
    Create shape as...Select which type of elements to create, see below for more information.
    Front Outside /
    Flip Linedefs
    Shape linedefs will point outside when checked, ignored if "Create shape as.." is "Vertices" or "Things".
    SidesSets number of sides that the shape should have, note that reducing sweep angle won't reduce the number of sides.
    SpikinessSets percentage of spikiness. Except "Draw Ellipse behaviour" spike type, in that case spikiness is in mp.
    Spike type combo boxControls how spikes behave in relation to the Spikiness level, see below for more information.
    Start AngleControls the starting angle of the first point.
    Sweep AngleControls the sweep angle of the slice, 360º will create a closed shape without slices.
    Lock to one quadrantLocks start angle to top-right quadrant when checked, internally the angle will automatically adjust based of which quadrant the mouse is in.
    + +

    "Create as..." types

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Close shape
    towards origin
    Sliced shape will be cut towards origin creating a pie look.
    Close shape
    first to last vertex
    Sliced shape will be closed by a linedef connected from the first to last vertex of the shape.
    Open or close shapeSliced shape won't be closed.
    Shape w/o intersect
    or sectors
    Creates an isolated shape that won't intersect or merge into elements on the map. Not recommended.
    VerticesCreates a shape without linedefs.
    ThingCreates a thing at each point of the shape.
    + +

    Spike types combo box

    + + + + + + + + + + + + + + + + + + + + + +
    Spike outsideSpike will go outside of the reference circle.
    Spike insideSpike will go inside of the reference circle, spikiness should not be more than 100!
    Spike zig-zagSpike will go outside and inside of the reference circle causing it to be 2x more severe, spikiness should not be more than 100!
    Spike gearSpike create a gear shape inside and outside of the reference circle, spikiness should not be more than 100! Number of sides must be multiple of 4 in this type.
    DrawEllipse behaviourSimulates Draw Ellipse bevel behaviour, in this case the spikiness will be distance of spikes away from the reference circle rather than a percentage.
    + If Spikiness is more than 0 then sides must be multiple of 2 (except Spike Gear that requires 4).
    + +

    Default Controls

    + + + + + + + + + + + + + + + + + + + + + +
    Alt+DStart this drawing mode (available from any classic mode).
    EnterAccept and apply the changes, and return to the previous mode.
    EscapeDiscard the changes and return to the previous mode.
    Drag Middle ButtonSets Start Angle in relation to the origin and mouse position.
    Drag Middle Button while holding CtrlSets Sweep Angle in relation to the origin, start angle and mouse position.
    +

    +
    + diff --git a/Help/mode_drawshape.png b/Help/mode_drawshape.png new file mode 100644 index 0000000000000000000000000000000000000000..731d195373e1748a2d2e097eb78fd7c04050ee26 GIT binary patch literal 44980 zcmagG1z1#H*gZM}4BgV8fFMYBBPlK2J+y>$=g=q(0-_)tN=kP((jX-b64Kq=1ODp& z-S2zd!a_qoNU8ttzKUoH3Z$i6{h%{g+&Sy@$fOk(DaATVCgk^^R51@b^7}=Q?*VOJ=5hD z9)DkafM;P5oAdtS=O5*gn1fUJoI;WwMsk1>92}hg*S(Y=-j~Og24eT`bkN$&)p4zk ze^LGCs%2(qn4(noqbSJ`A5KU}`1_rn{(iKJlS#wB?)Mu71?5X|vE-j&3PCbivMKra z_zHnhFTbPx><%Z@kKIup6hX=pWdTf};sd)`pUb2^Ez;uIf?t{$HiARo!rko|j+c5~MC6hqGb$s`Nr?yEplWi*`tF+j{`No__GoWd|jYphF`aP7?bi zl3EM5>9%gSZI}&u-ad_Hkhg}4$Klkp^-Se>W#Q+UWV`5d6t$KOLxfAhM>e-OUMe1^ z%bQ>O*P*paKDR&DiYGa_jF(8MPC@wh<4K3BqC9IpY=1M!V>iR=JX=j`Tw=v*qLz(= zwm@`1o(~&oMm}btnYyMrT^+v&H;NP!nss=(`&EfRJ5mc<*B_Ng6#KCfcs6F?)?xC7 zrGbct6{VAf+!U<|; zdF_oG1A2HAD9(2lEs;aLM%DL{90F6jM}}8$!g>Zx5-@ro#e${`MTojvjke}D- z*Z0k_JjGOgb!}~wW~FE{J{4tUhmB#%^MS1n|GMpk=H`Y5vWKy@Y{CQIL9f8#8^MD4 zT9PgTgQ3*X#~u(Gi+Z^yOmk-2uN7wHtv@4tEddSiIOMcC&Try*0Wx1EF7 z7M9{bsNl6+tTQtcKLShtx&U6Osyy;qDPIv1A72)BKl52!+6+}=DQhFr zY+r9tf6>%eiEwB&u1!+mV{}`G8PqQAhu?$OD(=`LX#JEdFeN2k3&9ap5&w8;PD#@On!2M_ARDZ0R zeA#ewJK4W*wY9i3wpR>)L3+5~@~NPppq+&07Z+#jI!uv2#78?jo9zcq$`|^aSVB04 zjJr1eIKEakjUr`^Iyvv9UG}i%&g9zUPHg{v*Z8`F$u)z%bI%?1fFfKg-Irg+y0Sg? zCvhU1k-w0q!~H;dNS<(W%@ZlS4(u+bdoeLFbWTG2$1A-Bx;)MGn&=3Nl942bB)J)c z;(Re}PR@6&*#1Y9ReZs!>mOwTRo*xyB_^BkFFE?Izg|F0)Pm74oy{Y|bUQ;a# z+hP&hg5<+afDAp{{6XZ*j!Ru#eV`cq_a`D!F$&aB!KpnS%4`}=&I)DmYB<)883fB? zqIA_f8-fJM#pBgu{sYZ&^U?J4W9P7DPJ-@sf`dR#mfg|$@F1@O)9gg%MTTtR*Tzr= zYF3nBJC^GJ^97?oy6XUf|B?B9MA{KEX#M#3O&252j<>w+jK9BVG*(Cz^7-|B8WH2C zYRkyVp`#2tX{r8;nlQu1@+Rcu$cZC`)3w%cMqdfXS!G6|nu|}LF3r;uOQi0b#-Vvm z_Gn0ph}nq;*pYaLYEL8YqmeYVH$eYn!H0r`rR7PA+aGxPW~$UkUVdP$KZ(*zQsj!8 z8sXp(qMbO&#UK`B4PS|tjo-01M!E-{ zN0pS2{S1~$`0Vw0=M^jx_E#!f;HM}f(RP1>fP$BZsmmSro{BmH+$0@9;XE@6yj6Ge%yi~$pM`ETap`&)!z0v`{eRBFM& z!6}R)X+W(b_;X?IJLCW&qm!}K9opW*5l&&MSOri!yNb>ls#*(jz{Y*5A`01qpC^*p zNNvH-F17nKH9Y>v=0q6Q>m0N!;kgn#9o^8mK#It;?WZ>f>Uv?O6b8PzI zpNk_37a6oJCzlxclb0%X4helEsYD3}b)oAG!>{ta>{d<|7R6GH)ISh}?vgMs@$w9F z&CB(KOc2)ij>pqm2pKAU)XlIkAUDGKR65<^L(B*g`JV1AUeJ6Elh1}OioQr_`qDjA zx!+?0L3^w$M4*SD1xiW54g3=<(J}Drn3l>Vd~}nZMe(CB09K! z6()|9e&BPzzL}&j28EO*zPCLZnumH!j>rkiv`gR*5YxJ1&Yjhu7vsp_n(p_ct2J^3 z7+Nevnp%3OW_gJeVP3Bvx8r4LiVjI{e^Lg4Ym6seCxQizTGE%2v=<30OxaMc1Ag(D z{8g&%^E80#Q}nXw^e|j^3ZNF`#7$!HKk-Nc!p%>D-fL4R1{c3qE*Y&TZ6IiXATJZ! zs~w4dWiA=?xdGrZ_G|FD3~J&dS_Lv;-|MMwCQ{K)m>3vl%Pp|H%_x@3oRg_k^^#Hr z+ zC=jUJ?2g2}Pd@XSn22`G2AS5Yw7BC}2>l&6FOUMv-K~UJR!aspiD#1up%WkIcviPw ztx94My~<^@=M};JRBmSe^rc}Bp6PM$M!kdN)A9n*hi(6v0UFa-NvP}pb4@H!VfTlD zZi0aOi4CDAA-g*c!LqoZa?AK(CquAqS%!ibxhEm3X^TR&o5%?ZJ(TLtE>FKYLzOw2 zLMNdJe&ySZ(@5JZdV5aYo8LezGuV&sq}qeQHmYO)c7*U7p&|C60wlvuSXNq2n!!JZ zmGaFoeG<>pj0bR9G6=5s7ZVmZW(m-GM~cdOVTi;dTpbp(hq75$XnNR+8h7AI**hQL z)Z!xYkj|k;cJO$Y#6j$mh8>AEzQx`8s{_ezA#Y7L_iLt!eWc>Im#Ab;*(dE@iakvA zR-*-Z+4|>0jGNsJ6xw=u$#+_O^T{2QrWXH9B7=L09S2Ith+2hFp+MDI5dYjoFnS>%!3VI8FF{abKv{6y zpnq{E`l0)}W=LlPKjW!-4_5RiCKj6_lE0G(3O6t=7Ri@-pez&RxDZXz{{N&9QYY7`kUK`q-RfO4a%K{dPjYv z(!7sPt2C>1uDeJ{z%|~=%}+Lu{rxai*g3*A;|m$tT^W1(NJEFVLA%C(ZE96)gXEv5DMOem?U^>S0x)PvepF^sPyH zpa%vQN^)N{+|ci#0X*cP8-j!*xPbF8BxwiDvSO%J+7}=}T8>cl2wZA~c<{gP%^{90(Y96dpW# z`GMBHzP*C#H^sb4Dy32HySvOSEFQ&u_`nP8jiXcw^?*vl5#j%L!2e$`^bJ8S%<|*M z85X^#361hZHih5u%k*4{ush&0Hzc&0eVX(gPh+0>$;kayEwfoIi-mkMePLMgr-#w{ z3TvLOtY5-k%DIY~pQJtgy%%-uvzZq=S#{klhn19&;I=V5p95FSfs_)bJMI!y2wSTF zpr(Wx=Gay}ZCZ-dIYW?#N1K7RR3IdWBeR7GQs_=@|F{t?)JjYrK+^4hhxq>$9WMRE z`%%MIk|C4I2PI@dR3Q3k_%46s28njHaDXYau9KQJG8blBEdDz^* zrqPuLfL}R7`z1|R2zFQ-CD!ScJn|P542(D9!z&=Yn)+9lNmg^`%p=ZSNrNXe0}Oqy zp3lqGFeh5I&P&~oCvN95tG>m&eM$jWd^ov35PfxDJkED0)Bjetm7)es??l#AR zLCQ^Z(X&IyoKo;5xBRuH!SwhP8LN!63}vT&>N>2um?k*5LPso@lTfcdwLK<{&ert9|NCdHeZ|` z2#^H*;KW3;9?fQZX=oshK`vMP%x=Cx5IG&1q^e_QPhdD;QqTb0g)=(A;hOk>KGyQt zu~`d>CFjbY!~;!*`^86TEA$SR#YR%FMI7=9*Mb_e=J6I@;esS8yApUZ-~s3X5achQ zS3bT4lqNb|a~iQ>rk)KsivTos?m_8Q2DLx=FdUCHV2VI-5B_#Jp^a%;DRdBlHd_>N z+t~|A?Jg6J8}8qH7{S^IYdC~>oX8zoQ6|feRvpv%L)eR10%$V!-~6mH7P?X(d3AJn zh+sW&k6ivRDOO*A4j%pRa*^9kXx^i@^g~X&ad~Jr9if3Z zxUWPU?gP4Jg{ZFyuH6${L3eljWA;m$Y#n>dnt!0N5VfDEr=X9xuQH8{;p{U84$-4$ z{=u6srqJ!9Cj!f%Z!R*w*>Fr1^J?=k>3sm2(8@7+ZTNQ7`4d%?n#=cJoPkaVrkrSrsuMm51i{X zHA6-R-o;;J+s8ud5)HU^R#`3K7C2K3!`H?UNj?qy%#A=`g9Let_9O-2(FhuTh(VN- z5F_y+%sA#3lefpbXUz6xv;fS}MP~o9BRohCRBl2^&GxaQYT-j7Hl6&XN;teFD$zO& zwR6yo#h@jZTB_Q}w^=9@x9#0xw z@mo#iHrZFy5XdwKZg0%9dr<9wR)VxBp{*_diIbS$`Sr_}2t1Tw^<)CBHfwze7DK6| zJg$s99ucJA^Ukoax=E4vjgF4fZx9qqQWPN2<07d#4gUlBu-spOh5)J>U}Kh+mez;T z)@cwNlDZ;E(*!*n2UGY|^Ay%-q8+R;-L1{mwCUtl3e;Yx=sd?n3k?A-19UFSCm=ze z%i~(7^|ErJ0C$D4TzOjgj|koPEM5_WEN#ZT+UdxPKK~MT)yS@GV%T=AScR~^ihBlZ z{d+RN5)vCoVh`0E_A$^ZevUxZf`8au4=ujk6toRZloDGNZFd%3!+~*fwr(aa_D4JQUTZ;DXZVOIK1V*^hUfH~OUnqE6 z?PV#7V8b27xU9Qr^tFu6`GtTw>nN^<1rD)=@~7Wa1D|*l<>bU6h2V!I4nPBqt7=Tw zL7h9HWHHU; zb8)Pu;NKUgA5I5PjlV#LO?wgj3qzY-N>$g9R$H?b7z@%Ft)U1eP>p0YvJVMdv7cys zRT58}yH0nAQATBp`X14$jCCk}VA<&#ol$I|D?sGq6E7I$!rVa3(VdnN>vG-1ip8*@ zMYXz9k)593^Xh6#`@Nk~{PlPIE^|Rd&Zws?&Q5_)`>iSMc^wS1B_GuB58w#{vu}n8>y(M5op_6%=0Y2b!5qBaycay6tSUrE9)4 z8zQviLY>PRebdJr8ef(ZjXQITwa(U_YnjCH%RgEtJMpe6GH_v+MDA0DWASUEGZfOk zFWa&WC7u}9o!7$-AcCgiGF(hrTa4#Q{}Rm${8OA-7^y4;{Y{bN`1p<9iWYq@SP1cb zD!w(;+c z-bc$n{=*G@tB>GZQz<#4aCf*oe~()zQt?P89`T91CBR8Z44QJ9eIc8aOoyuq9BO4WDY|TGb@KWOkQ_bxuos;6;l^MyNsl-g6ZgJCm+f(}T zZE$cxXgVZ)$ZdP=R!e@QDFE)&oRSuf6LF$`NN5!Laq<{S(1{Hj@Sd-C7qp*D=f#9z}Elm3(}RdBxw~=!XmQm=%lc* z{NYhBX?gR{m+*Q2pwAM9#lphE($dn^RnuYOpFtG6aG{2_wzlf(696ky+iT+OhC^^2 z&{ZG;`8&>$8lJ%XgV6{BtZLm4p0ZGd)x%ETOnjXrK5<7s* zJ&-FDh%erLc#w4d(_X+6!D6A}*f5Vl(!X^lphnY!ya*dmb^d_^$N^dif0LRBq)nvv zc$F84<`16+Hzy1O6QOY54-rr~LFg^grIeU0=hTHdf2Bq$*4~zWM9&9W;s*}`*U#Bw=iMfO$ zo3OVz3NZU~Wq&xtk6hMOSD|U{V9_lIwvS?(&;S~0LjlYZ^FPHNgaGBuOL2~LJ`|0) zgcmMTZ{R;W0TQriI%JWSPD=q$2d>W#OuC~UzwoRmEVLQ={30hO=NbLG-(^nggLcg~ z1P?k{81O#=7BABFA4xSG=oS7QFa>%b>Urqamb4gZjy!HQ-u7rS*;hYhFe&&ZobC7B zXRqBQJ`?EOJr4qCz3!DU$B!FP+1ppl+u1$UA>{=C!@p96e>Ckj3jLUrM5|SBzwSjA zw^ye-XqF`gjjI)Id-Jkax$>WEn{Qlu7M#cA9Umw1dzjOm-X{>?qUPHCjNIQSOt>eS zr>SIIMG;?|Sc?5`^eP~GQc_ZKad82J{`P&D{UbF>hNPPq8_RMJhW-A;Miq;$UB<|4 z>nMtprP7;U2Imd?DR8p2t z9?&D_^Q1U0Jh_R_5HFwtwQBNFvTd7tR6VLP*_-&LUG=6js8$}^3WulV*^_vqd8ElF zM3&qUYWnFXIQ2^qh+Y%xm+tpFD%{V`RvQM<;=5uxFIKXig;y(Wznqc7?e|1KuS~C$ zrZ9d9Za!Q~sxL1yHZhS&tJq$0ph{v2k9y^v&qNPJIcDi{y2BZ;tlOX~J9BYVMe2Ro z)5sH7)XDj1K8|6r?Zs-VW>1orbdq(BBgSVd%{HP$ zHbteT2qw$LwPWlca?9yx4Wc10LlQAbHI$TMFwmm|jZgQN018t0qPUA{Oc|IzlJSmp zR?n6g`&X7}ub`i72_&IEC53K2UpG`}fH^J~Uj49$$#guNb#|;J@l|saFeVpNZ?S@G z`p9nLOFp$Em-}tkOEVoL!j=WYBb38^DTdpU{{Z;&Zvyju_SMGru!iDl87_wJ#GILFPBuA#qwur{u|)H-uGD zwbaqd`VvhT&*uCpxj3CPDR&~7-*rZICun(!xi|JxX}3pnDPa|5QLAfSWkSf2PRgx! z_LFoMbX9bEXdEwM{f~O0B*Op9hwLe#jw!fE%NCcxNf;E_XLj@k&g6||4)%EDNTA(XP@N$2e!a-k zC8V+w*AaS0o*rRFg@OR>kuDKkUYw1=E_m&RpUe|Ly`UhA6;FFB+Vp(QRpbkdT%P() zA)yd=;7(-FFdcp*Y!3T56x;9M@oaMPlR-rcLxKF~u2qF}$+!d2+Soz@8l&}tGit@+ zTx{{VRy9fd^y-$6&P@qw%iI~Ld0$VLnH}7=TRpaU32w(4H7jXQ(b3USQet&nl^&&K zV)7^Jdpxnb#FP9;1h<73$p+9BC3o)jSyp44Dr**6ysPYSBr`+!~N^{deA^A;~8 z)pQrAZR(6@6sN8!x-=>e2KlQOhzP{8;%K_xk9OsMtI5VmQG{X$I^?OYm``TRrOjJ_8 z%WuH?JwrSc%8=+7Zv-vKl8QbIfTN`XE`Tr(ShvoxctX;#evDT*{|s@i-Gy-ga3a^p zVNxyK1)s`nweq8=eph4aJGaQv@KPc$zzW>|2AuuN!{)w3LD0nqoV^xVjWmC!2VHcL zeA&?3Tac8%6*UNZ$8~&7@96pG*>71jHAI=|p#7Gap?+qN@J|!{JM`Cq;{=!$F?OEG0ak3TKaAGQ{X*JY?7N0nrb8fLx$Jp#LDErp&wDyf`i(uJ zybK^>?uj8x;-SodD?aNnLS$FSWOc`*{EZ-r1v+VZB-n}s$jkRqOEBXQ`HBr)Y4g2L zhD>M!exzf7*2t$B;jqN?RqAyTuo6VmLjKhMsOdqV6Rd--#Z~6={_*BpBfs3(FUIDC zs&|*&d&3*`o~0|n^|jQsgI-a`{ySGpjtxjCqSulVt5l_o&$8&BhW7OD*D!fk0@C;i zHZnC#WhZ0YNi3@Jj}@bi`h2scxEzdUJai8oeO&HMJ)?J=Q#bb9NfNjLoI1>L!X z1i5EW2K5B9Rj$K#7?{GZ>?d6cY~Xp6^se0I^{k_%ZxGjEfrK(=KeqVroN`;{A3=-Y zLRfPMvY^>nqfqrijY-o)M)t&6NW$ZiLx@-OTzq)l;AZTTp#|dY874b;t`<-ExxPM&u4x8_N8(~1GU?-ZyHaXjO;bZ(y z)aF)NiEYExDn&X0MSj`G`QOc~nAW3|>|3hZGc z7&k{+jIVl97V&T=Y_&;|-|hS^|Lns^fHsR*q0&)7z@ zxaT^6-2t9drYghsh<&O+;oJyQt4g#>TPPqgbxa*Mx8Y+UjEi0Xo|JYydo=(q@vQd@ z5-<_0TZ=i-QG8vX)5-n*ER2me-Ch-3eg=+q4^@DFq@tpNOGqe%Yq40KZjGXM*IXaW zJSOQDiuW`~A$}KYq&tAtWbp9o*=ynabDAzLm9H3X(L}P&5(z)=s%}@=(Az?vOc?P9TwLd!C zFm5QFb3dd$+W(|J)xcZI-C`Nq(gsc_Qnup;ghD~&Nn6OTswtoWO7PoI+)yV71QUd` zV)|>BHx+QEUv=}mjP7S3Y4{kq9TH0WNGbg0g5L63Bimas3sX@k8u=bZbHtcLl>~sE zg%Y)8)RhHpIA|xoBzX~nuf4+WR1TM*OOfFoWopmsv}2g1?s6t=!f{;%Wz$U+-NFZ) zD5bB0sj^W1H|?P--A}0z+s*8wr0h?0Yu!%X48)(`zfqgZ?e!6Y@;VWAAw@;EnM+n&z>sPmd>W~yk%^``~)6+g;1z0mlXeUnW z^TdPj#D^hE^}iS#?}|7<93R%QN<47B;pGkG%*!oNsJBRCul$NH&0XD*k%N85nwaph zAdDLgd<$=D$WDz*FaEd}EcF0U7g_GM!c)2#nM0nVm1+r?v(*a6hZumK9(;6u!xeGE z(uHwXMiMdvVKk;A+qem&2*a6q#X?~xGUOlkPbm)s6r7Sq!S|^AMc=iekgRxXn_aKT=21%wLaFmTQBb^~`HkPm>5d|MYMKo8i2pfL zqQz@OpeHMq%m$vOduQ{aD%$Za7~l{H&CIyojGAr?XV?!e-&4gvvs$EAd$?Wew9*xI zPZhI(06kW;DKj@$(S{L0ze)yR#0?;iiNdm27U@A8fZysH$=ndL{edUwGoRD1)!z8_ z_V%GP;URhCW#&jy9wCpzRe+GrRmd4iJ4D@uEPlUBoSUzz8$!OMW+Z?yAaDNW2d$8m z3JD#tq_r*`H;Q`};+K;GjmL*hZw(^oqxQX_&945gmLbguhP!*Kchd8+ya`SS->_LaU!$~W?3_PQ!!;z(oB zA7qNkv)>N@ii@u#W+NeK->qq)(ESqh^P0>GJ?r1~wSWJPxi6?`T_ z39>zwmX~UzA%^G2iqrXUzip zg(LV%T$b~7bVbXCQ3VIS&cgdc>^$|)`2~6nDPkD`!T8gN+c9aDMfU)+^9=Fpt{s_CgJq+XZfZ1$!JFXDyJ%C8CmlgqO`*X)9x4$F%A=vFT9 z13qg6N5EfFyM^B0oAMoWD0$WLb4kRyT?g=`L47A)0{<8a|$a2 zKazD`U~7rAUu3L+7`^q)o{=g1w1O|I{{B;XPn`bw^XJc|+W{f_0G}Sv_b%N>ni;*p z9wMXf{Q&335h8oiZ%l784gl@CP1UPv^*1lcuGOD%f~7|KUS~ z;unVvTq|gycjk+dBK5J}i9F&nUvI;v3jN#h-K{y7y`Q41hQ)er40L{zjpA;5{k;o5 zhH3TuoxAgAn@w}yQlWCKPu9>|4i$EilqcUaDM*M|8qtX-W3i?yrXR!{mcd`rPKV~S zuWq3IY%--9`T}sIJ`Kx;QBC%!uAY4f_XEG;;bmh42^+G>-tE^~3o*&P1xAfyKWh4P zvDn|#TxU>7BY&QqiQ9F?oHy-VtekK z<}W$?ubW>j8RZ!XRzUSaRcGCXs(sm(IRdLWjj zzHnGg&HhFz{7v5N{?**!Alz*P8Qf~BW$wADIzHn!2RmV*kws(=*MNxsDt$iX>=3Ee zs@(3cI&k_u1L1|LxR3+F8OD{K3=?$EpiY{dHwER|Eo>URYk00UCoOxmu}dA&x$O0X zGWsW#cI9c0ZjQ59UEs(COHKl{T77)#{;M~^HMivyiARm&yK=?aC5xf&U-0gSjvnUa zZ>=e7WrU>OKOn&ato0v2cU~?S-o#ka@!oH55Nus`y7qgw{&VzuF~J{=>U1B34XJ7l zS?(C&MF{$Z`yT>_Z;_b895`H&mbBB->WA@3%$(^?+{*ydyXrP)HrLCw$(@$vhc&F8;Owm?RWDH5i#r!&E@V~WcsixG9j6XG#RJ5l8)q}Sodqk&T z17ShNwoH(ofx%$E>*C_!60vDlnGyI249%d(?}J7D$}6C!ILgs?M`_Vg2V#qk-4%AGTkQ)bWWLa8nDBdMzxtcFX?$^WLYnW))B#s8Ww36r z#Bvu8s@B_IMY3Up-)`Hj2FH-#ScRqP{`Y&Bp{%S-A!F#Z!*vH}^^4-eR2!ry z+CCv0!PkJle0?9GW{G?-yG!v)?)4QEQ)^Cm8E2E?+PiVrkT{Uiq~H|Z0INk?TieLU zsJFM*{^JUOg9v%A9i5yCzJBeBdfYGnWM!Jn{(D)hsXMp-F_ftwRZ{3 ztiy=t09)WUv;+wXU1|#kgr5B?x$#&}ku1qbok}Y%-)nb+Q^Y5T(6AZ@2Zxw8O={+1 z7WzdU#*>nUZEX+B0+8zMO(rZMzkUBR1Nn!mYAlawko)!P<*wNF(z+YKP(UQQ9ia)w zN?gmx#$QGu4jgl1F|Ld{$b!=dc+{=|)y0XpS6~FOT7t`005B*oi5vIpDQE>a^FwsD zH;*!Ib2VTrare9=7LkI8)X$yZiEuH@1Tl)Nr$rf|8<%6t*yRc^u}f?oD#rjks7*>N zvYbvYySZi{>Xh}lWYg43aDTp3wuAAMxJ`Z_zzVm9NTHr5u*lIY^lkOSQrG|TuTb44 z(8?#WMNOZ6>KwiG*ZQP-QCJv4iQB#h|Ba+;MGBovIM=y!Vh0d#$mBxt+w4?3m*4%r zx+PAcYlf_noE?kF&C>fK>N6}%sB=bI{=xhD#oZcZsL{Zs`*oP=en~`Yz(>Z)iW}sB znpVI$3qb8SLR)ozP0`<3zYPIO$!Y;SWT6{0AhdqJ*VA?o76$`?Gt*MlO+*aFtEJ2c&KVb)FF5L}J4 zm1Q$@;9ypCOY<+f(Jf%6XE*TQG>()<(FJ`wdTy7(;*c^S@vR!w3o4&I4`mM8ep5=r z_7xx=34+3(vRljO*)hae^z~qYN8Em0{g`3^ z(Zgkh{Ud*A2c^2<;MXUTzqpY@s@+HI;fGxkM**{|c_Fmx(tLL3fdo;{v?b?6b|CtP zzYbX5jTt7ziM^{QaWu2dW47N3I#B}b`cmS*IdQ;j0FmoCii1?}B1n6Q$0eSdD^ za^)lW`nB{Fek2J`Q>KF!RS&1t6s)8)>@!b216%J)xNcSR2+*gR5&@$< z)3V(kw%cu48eg6-=%x%;a<~)CBUE|-d}p1q zq#%}O1)?XNE zNoIqMbv=YDs3+eS9TJt<#L`=(CpLd9)gOL;lLI?OLd~ChISn7B{&Vqlg3XAnhcErq zl3fy6kG0;lOl$ueKV~ZGIKt;B*dZPoXuvTl-V04kA!|hF{fg?IG^?P(V~4oplorik zop%b8Sr#K^7TGpW0H$itQ`@mFO-}2Xnu`SaVw;(42Q95ENs8c4`y?NSp)E1SvH-JM z7*DIHFeSkK!hl4UxsOr7d?c6E=ZwNCBbSf#(!z`;pVlL_Lf@IN$a=m`A%BkB4?L@= zO!Ec5pR=yKG3~p&gO&!Cc~-APpk}msHv{3}brDDEg3Qti;A&lcU>9`0FD%xs+@!Q5`>lrw9KS=qHvO%GZKR#^CTvg=FuxJ7~k2U=uq$;V-ThCW>UYSZ#(* zNxQ>u*N6(y?>CN>2-t8W--zm5>M1AZ`<%!QLL-mZ8Lgdk8#kjq3ZvHm1tQhHvO0&I z)xrPXpk}p2#*OsT4gTV7w#}S|rI&+x_xZvTJwf@N_|<_C)86N0&eXjcjLf3IVr?5f z@%};Pk@&6d#{8Sp9ceOAmD5$^qW<0Xlq%*+Aj}Ig#u~AGb3o`0gvcl;8Q_|X3lMt7 zI2*m}GrhUD`jaoCKar))x8un55uV5~=X$c%$u$%L2)P_Ra4=vLWjNbIA{o0u`&nKi zM|h#iCXGvbLhH04Etx#~5z-HdIeJwlx64@vf~nU3Y12z~T;c*;xj#bhcV;*|P%n7G zZ>|gl*=+7k!w-u6)=XK)?$fIkNvOWV@y0hpUp|M!NkazUL@IDBExFuc=?*xWrUV>K zD`O9j&v6)=2weO9@wZ636@UGQ{KRYzTBo-ak7wg#CbCg}YP+AO81u6-*vXxVXXEJP zr>-f5_BB4zNqZ*|YPgQLmPb?n%o* zQp)CFESbvJfkOenn3L96ycRihbKd6cgq9+Z;It(ibZa9h-L)I$`G%|=Ou;OhX$;P= z95gRJ+}9zkOA1T_d;ilw-T(rnw9mp;@N6)t=*;(wg-sFhkar*pn}^sj%139nw{u=o1+0^=*nRMO3G*s8#h!H|m`|S=$J*2QT~5Io`Nh zUhd4pkz;_;aTDH`&N`x{G_kK48a?!tJ9=~%; z4w6=zE3h{?;M`awD`hGj+Ge35`UT@sRz#21{(dAHK4c!i2BK<390Zegs@&z8`w;`1 zfbnGINL>-V-qStt#jG9K%I%toijZt1vuevYfP46Y zNDs}@T3^7pK+^&$-FW#>l8n(gO4~T=OJmo_io%dL^S=78F5JWsKD_}{69T|u@{Id^ zGvLdA_Q2O6tap@Ry=0|d^c4A*uA3$T;3GiR$;%j(NRQHBzxcgeA6~jh=qY0O%sST3 z)gW+V_Arn%W@dH-Jxw5`^Wk;nn~((P%u2H3xkb z^0@^5dV=pL`fW(fr)H{;v54AN`Y?hJba! zqwA4WruW4f$M1rkIw42$EKegh)g$+hPlH*nb})GF4zo!fJ#w{f)(%)d3fB7F#lZ*+ zqtpaHN|)F3S-ITzOQ~zLj`4m(n3Xp?VJUJ3%1c=-3V1N%YM-=+|I>mN{TkSWG8~(u zU#QgQuuP*q8Mz?OE-Zsn?n3zN6BjIQremU_Gc-Dls2q z*1@WY{ws!%Y~SjMd*W=Z-4$k@BtJO8WAHQ`&Q(&#qu0su;ZFNUW-3~k?PYjB(A!UP z{Z^?o$Y2AP)l|o+`zdPOEJgexkjp{$y>i=E$R^+UZ4bcM$~A)t?%v0YpPitrtHZpx zVpZa~W?39%W$&w4NxpwTT3nf5YEG>VA;c@Svh~ua+ZivfSET~;2+jgW>s^%k4O?t? zc;tqCn}DYI5pYZNchK_N9VuUWABk%jS!HtvN2?~Yr60*ICcCqIc36>c^PgzuG3`K!Fu@~4VQ)KGGl^kZVJxB96>8=G#JAAOhIz( z_-g}7f0)0OW>MtsMKu;R4@s%juE)H+qIHgixn`Bq9-(1t+cr$EoBt#Kz5VzTm-UYZ zk0SymoeG=jG9W}_V`KNxcx5F*>zucz*!cNL@a>sC9uk)7UJV4Ku}~1j7AxMEyhQkP zVkeM!g+;SzlJHJbqvdeeIr>=41HU}TDUy+t>?5D>L?>%iSflmAMT2f3-a8*q&{P_= z{7FK?ze z4fq2L>BW+ZLRb&%V&6FQ&^ozbM1YW~~?cy|TBt-ru%AlT>1@uTydv`nVB2 z?;|7E+Cn01k%^?CPAZjEmd=oq`-PAu$;Ux6MNznLL9G|=To^MzR!qoz71t#4u3qLy zL|m>Cqs;C0F(uoVIUxhV7*cO={xfhxT+F@C_y;87`YAI6yQR-haEL$ygWL3pUaO#Z zNWFb452BO=>SP^9c;SEyf!R)|i)p2ID5 zP@G?U1z(_nwGiL4Nt*^vHTzBZI2S+ZGx{M6UATgYHVtm-yqD+#`W!|xlaX|%WQoMK z_d&085PMg_mtR6hbuaBsPDxHas!?0-m z8xa~)di_t3Q&@8tHh|A6CI*gRdTKB7Pk+!!(ORaokVu z=FW$Xg}?f}EnUOu3HWlpf2PQ8<)Lc|L;&BA*@bb+EV}+);vK4~Ic4%gRldFIj&6eG z#FP^J0jieu_<_VP{o=r`0Ner0EG)3w({Xy)AXQaW3L*OqR3g-^5*YmM=*U*Ji6WCI zz5r%C@z022U1-ezYHKNabhb}@`F6uK$ICn2WjKIKy2kTG1NK*3jwBKEMlNTAsO=-$ zPefEzeY&4{tvQ89g)L=|i11XsNIELT4@Zdh)pH)gM3VM4Jk-?qg&_Ml}id<}0iuiQ2N&?1s~`0QsEpyFy@I}3IW+0}rVjdgr3>pUGG|uS?*(YU zC)yR8HfVfH@95=!8ynlGOnuQ4JTKYZLr@onm;DHpsUngzyM3#)4wBtuhQQxYZ@1s` zBn%PTfJk*gtpI>eSlv_BRF&(;rXUK4Hl^U$vTd{iH4GbTn8TCTIC54af(hbo8F z$u7b9iL-@kuP5#Lt7}d)1Tpp4=r*_;TV9?WMI^yn)CUfq@7yRCf1Qgx94y3TuQK+S zBR>2j$KH5j>*8|xV}54!BuWAre3!FY$$!f)B;-0(X6h67CB{V0aiNTUEs%twYTaf0 zAkMkJ8M~)pQ4sb0fXu<{HrjT$52sH!?C^rypb`|fo#OhsI+sqooD`2ij}hb3nD~+t zP1P1#-7iegF|l82``X#r3BNV&ITaMfVtYl#=Z*c&ZcpyZ&QIwFWLcDwp@r596($+l z6$eB(_M+1OF2n;VMOCPFwf4@JK;CgfP{nXNY?48y*kE57=zCQiMDf36)BIxtcY>%pxrF?weHloFHvD{Rbo+Qfd>t9F?a`dZ+XGH^(qy2o zP4aw^Bxi!>yXz#3bzKbS4gOSm2gPc-S6-iiliB;eVKOGWUR`HTJA`ubms&2s+Z>k= zdv9ow%p)%tJStjY2OXnE&>|#l9Vj{xofE3NFNXcB5IBHv`U5}Q_|Wp2oR6k2E`%gZ z{z_^lbyK|VNj~=`RL^k6MU+>}-b7$U>Y3d9{2(2x=mhppHZ&_ww#e0o?c~dJE*_e$9mhiTHN#6usNoZiGc6pW;s>?svmUn*gsn?iju1y-Pf&^d zMfL!*cn1--{I|@Nk9?P_Jf?kmf@!~tYC9Vrh1|-@XW7gQ^L%#~jg$E3Zi^43mCws) z#Glf_rO8pfaEVe3YFn=&65tVh)}B&Q09u%psQLUqMMw1r2K zae#cW#))pxA^38;wqjNAS%G;UHy(U%TaugKk!C-`WkLh zfd%5NULEPR{0ukm1NLP-xJ2G){fC&vj%Cy!Gl2@))*w4St$UIC^T+OPmH9CP4Xr36 zb#)@mZyn6E;Z9;A7@p%&DE)6@d9}=P&pJ*s(`s0W#v|SoRyL}TQljB}8pIo}s-?P^ zpE4SEP>A6OV5L$nyv9YR#hrO^MrDO_>Gz|B=F`~K)IsKouXwmgl*HG2OTw;I4LBoI zm5{=+oEE}*aFD~iwVNOws-4=EfGdLKQo){lJ$gcEW-&d-Kls3T6Sr^JQ(0&x-uc#H zrJIG^m%`+E`z(?f>mols-VnXCYsolAF*c05}}g`?ir!^PN>eBaXRl*UZ{;7A5n`HQ$wSDOe4CQ2phyNvG4=x0X` z3f)>|(%C-a%c+rz3Sy#u5LVdT^{ydt&+@#beVk7icKX=%Bj;sK*vtWIwe!zj=Lnr& zk47|JBhRFwCxoC#VqFWpkq%N1YYa}dbzgKn>gJeAhvm`ZN>zsXr7&EXmh3YLb?ZuXs&tsbTg68%0P(Fe zcO&vWlTtW!^bs|*DB6WyZeU%0-P{z?!0r1W;^0$#01ehP{y?xDR+G0UHAhHzxZO%; z=r3lH=(klg|B;jwu%8zVmr@_7Y*iqcJY;EomFBXvghsjG}P+=3ebT6Qy*w zk5jTF7>5pt`Z@m zcV2tt>)<1+!q(kwHkIBrm?A|_M_1KF3Je$8)wZjXcI)lc&e>la5^ullv$b$JoI!g% z-G&-TOYi#Lt6aCng(XD~uNDhu$LQX%PM$iMvCn`PO^IaT#HD0`{@2H!MpLlt!`9uE z7HNW^_?r(8D20@&;~q{jusOS(;0)^>O7Ahxa-G~c)(EDT811SaSw8F&fR+eEsKPg) zTuuTmMNH*}4YDKqIANtEogvd*%T8fo7_aXLZ;_i0T){MX5UF$AbGRHVcC`VtEx-9Wuq+VBTh?YmF}6ie*@_EaXm~!PaW3>R9{&-$GMjf;g?u$&Q02UNC`;~#j?ypPt4rWibWlj)f>sFcRt9g z6O&=)EK^=RFxGgR_Ze4mKLOT3xRP|Dds8l$t93dj+Xypg0=1>)VfCiS0o=oNx5^%% zHRj>g^#*9JS0|gGwE~^(>M1ZCIyec`yJ0#_OVUu)GaCaQFwktM`GEdNu~(YYMMiy0q>56_gtB`HTAwuA$Vl~9adfP zuTn#iCsVTQiDBO5pO(#x(sbrcrHl?U<2I(dW2ALuP2XwWUQz{nj4e>MV%1V65x;Jz z6nJM1bBqn7ip~mZfK2eF<+0Re>^!-<-=o^qwmDwcIR_h-Q3<>$J-=%x+wfN(xBq~- z@)O?+qwW_TF+*EXEFO)POhv%E>0j^6o8xu{^VYo>;~p6PVPm^LzTR1zXH~C+ADplK znYp{Yc2WBMjiu|{zca_Ku9IUM9%mJ=kHg%~pHw)~Rz%@9I<$7 zrlh!Tx($V%|KO<+B8xB)V^Zp&)zA72VYlDDRVi(M z8v@a*`6$nJlnLlPWg{@T5ng$NZH-SVsotpfR4V$kI<_`ui^f<3*U{8fN7QN>0U;sn zo09KhAs^Es%zS`|p!Skq0dhLv2S5BCc6D<35H!2Buk(=%Eru3GMYo=}wk#EBF?px< zE*Y*Db^7HgC#sswx17xSe)OnmrZ`Y(__(vx{L23=N@3=rC?E&87pQutvv)eNA;=%| z{H{z0AZ}qn_x57?;kwmiE)4l*nf}1pul&VjF4EZ8IOz-%OHFdJ*BZe_WU9x!^(7R! z9D&aknfPxp`%zrq_hLdkyu}CKlx2!t-yb>V)QZ!7<7XK8KzY%JR}WWgp7l>nq3OiT z(TfN&8I>GY**#lBGCE)dNWBpCj1xI_R-O8kI=k`D@rD5hz5i!gshuq{9GS=XCXS5ozCs_2Ici4JA-rpD4 zf3N9xV=f1l<{!_?kNn&7vJBWSp3LaBW8x6hIIaoOFlxLZGKcUQNw6N1io5WCHkz2q z`G~OEX0>Z?z0kCj3brXcEaCaRshHF1@_O?D+VB_qUtYPsSxdp0ElDI0{49Qz+!8v3 z1l0WhZd4A_V5e;yZ3`?x)48`}lI!nR(PA3;{J&_+l4icb4v~9PA>i zi|ajh?FY56!+Up`q3&@3ae(i^e@YXq};8djYt=3w%AItNyDtC9@&@AQSxZ~IQ zH!((Qx2s}NP+)D$bfZ4V(<)_VW>(t03Ik2y8^3uO85yOYT+-Im9LK$Z)BbI3x6-ay zdb%(4D8}rFsOwD}>_x9hg7*+TS9`+d;xH-=r4l}i(NAV*?u7A>Jw|BG_L?;96!^ER zS{?_VzEgHJtbk4goOH~OXc!`Ne|-lvp0+x>klld@HzLB4#15jV8+{|98J!tLoj-*i z{P+T9AFW!@spt`gI%;B)8BsRa+Wdm`N7@d`hSzKZ-}pZpy7e zL7-Co5IP`WLAcj~oHwP>Rb0%@7S1<}GRC}3dPq@)6&yF~bi(Yis7?eRSDuosPBD=` zAoDK;P!D~e78^-MSV6xhf87Fn73%c5+lV6nPgmlO(S+Jtoi%5{A}CGf+B$hGr{U+% zpJRlEI&VK%Kc6yycS;R<<=mkHg5Vvc57l7s-ABSwF{^LRXs+Oh3>Ak$K-c0#6#Cux z5d9wy^e+RnDY}8X-^;QpV=3wBNIP{jQ0Zjo3eGMMKg%oiwWBLk#ho?kt8CCd4Y@q* zpw<;_QT>`fMLiuP;>e_>BB5_=5R!cDu6*++6Zvuk@kICb%UfK`x)M&86~`;b#pw^5 znAo@!7i8aOg+n=S<&wxZY!3-8C0%8Eo(}Qcod#uDv5UF;h%46A&0Mxj@;&WZLEZFo z(o?S3E%4|=Op|7#qNV6IbEDYnE z5ZBOiVHDn3bjk{C)$3~eN~m4-G3Byl{LMOh1-g~xnQjqO_OihjK#7igte)I8*jr6{ z&LW#V!%VSV-@vhuV$`m%s0L$yZ{A(ZHjq&DmBHU_X>H~IG}R_!`A2hovXRGf=3=Ak z&C^(&<{q2|wyT2iPnAOTQV7r3dzwg~M*}x!J3&c>BF+ainqVzDHl9(S+Yj01_*hkt z(|o^%-cK#l>(j?kadEtlMyP3F$sbxD&XCFKC!!s49orlY!)-oPp4k&tJlB(cs=-Sy zI1o}cA8y*UQqMD7h3{^XUGH+dc0!HJIevtlg-xsBXOq@TIZH2g!Cg%o*h{uoBL5=( z%3l$SMK(R*kze0g@Z>V}A$zhpHk&)*ILD|FG3Z9=jWW0|yUOmY)n0}dp?SZYA&ze3 z@HuDRkn+bNA|bJRv)~1kG{bf1)qL?04Kfwcp`X{Q@h?0OJi1TX_d9!n!@m1>Sv?99 z$6=t~d-U!#mfwWnJG^Qex;~9WdXxTes-czbNyAQ^8nu_&C5H51w??%oJ$q*#7Oy7P z@Xjd|rnqoqC1Vld1hb3y)HaMEmwU&*SopKV?>%QXcj z6~E6R9R!;aCqBVlr6-o6N5Ml3n=&QtEWrNkVv9do8%~w%+rBCebm?*cpAy5algfUn zU*^4Y8yYVH;Ia?->D=xlV|i1qeG-V_5|%fF)jEnL?IG-r;qgy-j9dNiyc+c-P;(2Z zq?rd^bMB(=<-Ds5b_ZKeC3SUmO-)T(Tdp=DOD+`mlIrSez{CNC?P_Mt{b%Itim$%( zy$yPj7~pd{EhmWrL~%{x>DgYo_!~)uEXeMP3PNXYIb zUfHgwoh-2iL|hZUPH{i~ruxUH>`SkQ=mxL)Q@Df?=jXFG>rw;y*?xFERmF&xYlSN} z$YJN$F3C*g5&@!DEcxi|;U--}Fg`PUM-`l=PcmU|@VsW#nqCkG=lp1fd|u@I=AuWa z+SJ_J@&!{lUSQGwG=%L3XfOUtSkS`U7P-b(MzH=ZOn>!q)voFPz`K6Dz|c9>A@$%QHGM8H%D#eI%K;_NL~3Y!_s)CXP{|3aHmn8DW6=b9?btM&hhB-;OEnfCCJvGcmML^^?I)*|_q4=n z{$sB#OrfJ8Iyewp(Yw;o>#hry3teu04x^AGc;A^08y2kSwoBL0;HnTWhdcZ9x<)H4 zKmlw+d4lg713Z#KJOeJlBAy!6V)0&6>;mBLBo1-yM2HMGnO5F(JUxUvp;qq`bA2H4 zxEWj2-#C_cqrkkI-=J{VKd4qKFXn~4gih+cC56)V z^qx;;o&#+5Vz{gtJapLP!-uWX%Aw8ZE9?53Jc;fFHi)&S!CE^bcfxxYl&r9uWgfZe zE{O4TQbc+c*93$g$NBp@7RTxQ%Ak$iP-O=q8w_r?WOp?glmS}*prIwZ^Kh1j!_mqT5HW`! z3V|2v_6?8A86fK`D-?pZ>2r<0p@-1_sAA+7jjR^lK@y9LR~*kCvx1oifVGpu?A?%L z0~<$acXr4gn~t|h)?$t|a301QkBUbo1oe`>;@r{?oupQ^|LA1Y`J0>NZsw)}C#yze zd?#98Nxv$!?D3V1ZQPjyY z{+#O9>VG@vLwvBp1Q5+g8ZS92kqQuS&{K|UqjNU{$mAAJD!T%2ov0=xsUvY-R1RRP zLVa&;PgyCypcGG3l3$K+x#kli5*4v!d;La=hbbacoB@3zjSBwBUfy{F4er3I<5?yK zT9Y{Z#k$iosSSEr;Oa90q&Hx@J2*HvULUX{^r=!f@Z7!rIrrk= z(sCbl0c1uDBnU?*{01cRSiVm}ro#;E4VqoR2ztEA5>j-C=aW-~bqeuUOnSsQpG`o-`uRhfMw>c@ABm9bn`4WYOSB8IX2R-T7kWY*k2#UftTCF%Ui#Ly%RX@o^4QW_)geEvc+ z=R>W@x1e?;A}<#n4KU)-T;)R=ekcZSmczYr4&|G^-7U63#e0)tTSFM4J6}Om|N7wuu{3oiOg6r(@k51)&P zIHaOHsm!x#ZD^+OQlIpNM7V>QH6K}jHuikZx=U2nb{N#2k+>l%G5$f8IN*vEU zq;8T&U+i8VS1BT9N8Q8t+`myfJ#Dhc-MQ3oM)Z`M^aE;an^Mf{AU)(EjROiV$eX5E z_r_I^#8Q;|F+jLImWIDKgl}=0WDT;6WGIj%9#aFO(TKt5s7sEhI-vF~M-&?Gxiatu zPZQlc60P2mC1`|K9-++SV_?_T);gABGRkZTEE@Ye*CKxM&3}IYdU+dw$+meq@Hst_ zHBI^{!fUATyRk;CqFa!QKuUe##JjeGQ9Axo>obF{nOXPQgL8L|oV1920pr=?#o9n_N(VLJGRF9HWTI9vJ$3)A<3h<9A z)DMb)bE^65J|2hl6gP!Gk9!^pSTD7C;}Z~yFA`_d zTAg-1*OYoX%&Z<7P4uVWwUAAokFH2Uv4@+Ck7302aG1`UibsYPCbdydw`K)jRb4SC z6l3NLQB2X)kZcYhtp^ElVKC*1QrQPsgu(+MpKp1$I+b$ugDWPK(bRRI?BjW>P;iaZcZjGO$HX9deySus7 zqAT}z4wyYmmNHF+;Z`mFe{6x@P=Q4}e$d#_U(v`2@c&YeYLS=c$RRFo9h%&hH^y)b z)MTPFn3*gX`<&!l9Nq>~jqs_6Q}=&x;8(1T=iHalD;<-X9F|3|teQ&rK0J#0$=pe0 z@>tqb3i6Q0t=XxF}^IHuhhCz4F4FL$IzJ?aMKVjvR*UzsEwE3Sy zkO%|~JHvjwL^UV)jxq7)4Gsi&xmcUeE>V18r}l-;y;@%n8A zPu%n!92C#*;eSMc`llb-_*3a<=)K}l&$&HS`4YSxH+oEcfBHfNpI2qir8;{f?MD$O zqWb7dN(Yj@*G!D7fAZfWL1>~4Ij=(^SE+45)E!_gaMbt~#nRre zLpz*luU+BPk(6T*^SS%$G-Zj_sRk0Owby}^KVGL@E>h)HB;QEJc_Kkre7*GH-Iq?E z=h3tR0Ao7oEASm`;o}%5#OAMd^+jieFON}Q{t%24z03Cvredz%o=Xuv+bg8hLQejj zAZ(4vAQc_4raUVuwEU*yty!qn<#RV<)QLw}Q6!pEfCy*_Kbdp;@V=>XlVKg9-Pc1OX0+sd>@5;ht7+Z*tbb-PO-zzA;8|C$8-FB8U5kFiXnMRjb} z&7ruxWzNJck>E^C7w@tdP!GAn|Etf<~KkUOImmL2T^_~o8Em7UBd;T7)`-N4Q zt{E=iL%y^`9O;Ovp+foIv3HC5yd|rQ%{yL|-%iu5f<6QF*)|Kgc5SV)J_L7|?TJzW z0cGv0z1y5f2RKD_5Tb+I%s$?!z6$Q5ziKjm$Ufp3o&X{8-g2@eO7mCJbY%&hwLoVa z_oegsw@fDmm)!}<^Poi=Xd*cf!}$U3nJ;S%MTPTPVEin9`CteqVng;~Ds~RHo#*Hfa;0t{;^{Yi%L)2q#K&7j6B@MQB9?sG6U>SL&ew1c z=S$%K51g;|GJ3sf;-}oJ@QeyGar4sVs8SyACc7@crZ)DJQqI4e&eERfeau&xPlgHZ zwH&e+j?gU|mJ~Cqv)tq5`n{!T;{u!@TR#K-2zk*9cf|firj&7mYb}VeY(vgplVH<7?Ess@C20V+bu#^vt&*#r z-yTdo&@ zf(q<;-h1<`fIN4zLG7s|D6N0_f@K*9(vc)z7TarDoE-?Ph5_4o_&(KIE)h~Wf|&ir zD;pb5eq=NtuSHG#E?6t;?p}9jO2Py{bvT%U2uPDu_(S*@Jm6 zaV5BSWV-Jp<>*}y{Z3{7tal-pQCB-2c-CrzBP-k!cb^xgWvO4nd2e^>$f!KT{Yykc zGegGu=@o|pgi(W!QRAU}YdeS{A`AC&dOv@R7>0g13Trou>&_j1^-!PhVPRoaRRXF_ z5fbNC#DLz>a9EhQXVjtr#E#(KKZy#a!?VZax-!NM_U+{wS6%|VH4M^X;(6usU-$VQ znFl9)>Fjzr0-A4C^g;$r806)AyZvot%iS&%yHKSGnwo!kEmGKT;CW2o#mB^`{G&9! zad+t_9lIP)03#oGR=P|P=#y_tykpT9RFYu7|SM~m!075LRk>KEhSZ5%Q{gpJ<{E1r866~^Um>M4R64{)i{ z44C82zu3#98rn!6FdKNyl96dTA*LZza688AsV!gH1Yz8}GV3s6b>NotH;KN}Zz{>B=-ecu) z$p6L4=X|>Dm_3E0WAy?5quTYd>j+=zy;IWn?3g#k6_{FGy>ZVRdayMjU0L(d=f1(7`94l z^beilfcfL!<6`iJ&m357?acvX2d8dYf%owPb{aVk=)E?|rI|D?X}j6Z4~#knDW~__ zi>vKDJ^Bj?C}LkM@APe}a-A2=DMCO)mU7Y>GBN@(1(*ouOSn2)1A81!Ez>cPU)o7# z8#pV`iHT9Mg5?fFyPO(9qK`TDAyX$13SwRPi=i%JCJYdFlHWYInegoUFrD`|Ge=*k zMn(veR_@lDdXiZ$;rc2=A)1--|E6{h6?W_XWU$FB>wU$>$jJEHVG>}mE9X7QcQ8oN zSn;u#JXD*+P_Aa~!0S`zZ1C+b#`8V0JBggOdLf&_ftbP1f8YQ2aHUF8$&-7l!J8p| zK+%!J^Q}9b@2#xp?VaPY>uM(h40d&IjF{90wbqJcgflWIv%689vuYYpwfSj6qvh?I zdRw-7?&;gf2$@AtA%WjzL#_<>5CR|`1}H$O4I-U&3cOoHSuTo!5EWdpzaKLGohSbQ zDJl^MqgSRkFjK!s&ebE^ry2&Go6ofFcpc5%FY0hLam!%>Qk1s0t_JtT*TrRE=xuJ6 z8}I%ecEH^`@c%}^pSNi|KZIfXV#E+WrUNMOSoF zqc8FwI^Rc5!X!ZO?1%6n{|G+aH%{i7(K`_DcQ#kA1uPkq19s=6g-1Y_g!g~>~ zBUbGdrRi9sKgbf2m#=hChh^Y1b^0y)BMV)tOG&7T@rJJb9}UeEjnufbfuK?$dx z8U~xa{dqF^FoeV+(kHPM6t&!4o6^n z`<;UXE3)KJCd%#!HQ(JMe;RM3|A)ckC2`2EU$eyH_|NM2BZ<9rG{#PJo0=~iflMR( z3Gn0W;Y#|lrMK1u4rvz&v^&TTXi0zTBGqhtP28016TuV|C~C5bqnGfqw9a!An}Ny1 zEuXU2e&p>y7_@>~3T2+d=midM#tQN8{wVe1DTgj)#VPKTf}b^r=sMJGM|c(;;)!nvhX|A%ry3a3k^zNkOQUH2jU_;=`;<~htHMOy@@l5_@#$ zEpQinTp&rJnKLy062>;FIhc6`!q+`1!r^o#pPoAjc+U#n;hjY{1$$4v6;>NtA$C9% zP?`<6z(0-iBAdf*;z4apX8fiCl1T^1=)G=0>tGB4?`w6J@vcAQyOk8d@(T48Mrz^F zQyHZ{SwL7%%!m3XnyWMB6juV`XBWsr`K!6WgJ`%bi@0IQa40Wv1`#=xl$0h?qno&V zw)iQ350Q?MvjbU3M-WE0P>Hm>WngA?)J()wd#!CoMQzD_w$?QsIYgEhuDV6%Oiu8z zqNJn*AnPNdqN1|BsM}slOoxC>oXqwPNa?Z$bcNbAL^Kr9bH68xFdNF8O3yL9uLB*ZG{54-#ZXjU@+o(EXhzY=V%#HFV3s zxZ1`jg<}E#Ej@Md(j;N&-7Lxy``5@;gA=c2!_&l=X2WiTC-E(B#hzk3@0g*H1t?52 zcKw(KN`=fyv8W|B<5aU7sC)M?Oz&7ra}MKNcF(mxhoOypSth&s&r)F6aH(|Kjr1=C zZ#A*#4Tl~8p@)utHS@S#F^CVdE5;Nv>pY0Me6R*Rl?ZFd*{2y8(<{GvF zgCBTRupTlgF036KOx9+Ly51~l8DeDXXA3wVUN8glV6hcB*4o zQf%H+7|~t}a3K^Nx8>W`mrZ3XWWvzl(<=(aAA9+32%$NR;5kec#tIGzBW3HKWoE-DuUqCi5gj|EQ5W&OF z;=3Q}(`(>XJZ}I3g2Rrt(9>ktgwEH!1@6{77^ZxzY+>}T^}vwZP^|9_av)%~_PIKd zjNhp{a4Rz6xf+dP7H!TMw4(ACY6~F!ps7G2DpFxRV*h3!aLV!J9Uky^M!8;IaxLak z*hN`!Vg#IFa;#DZy(IR)?$&Rz0Dy=4kW)H~$G`!JdI?r;v5#&!gd z%nPmSczDlyPV`lZ2rGF5#m!?8DCPaR-9jcWjr@xhjatO;6q zVQ8Y(eqBfg(BDP!&tN9Fkhw$nd)}l5Ib#Dij~GAB#)spN74L=Bj|6?lnJFlE z#A&jYVr?H*-QxZ_zZINaJGlz^GWWOU0n7>3Y*@28P^hyW4Ft(Rf|P9(v;L@p`&TJ( z?wZ!qvBuG)K7eoYU$%E#v3`Ob^g?SrzJ+23Qx{%q^nWj_d(t(0h6tW8Af4BuVGjKk z<8E%|K+Q|s!(Q8t=RKUm>U-k~>4phFU5+s6CZoA>~uycR+>oc82bmfK`Z zsf~s6%|Se;{cTTaqxH*{P}6(J#{C$`6n{l4D8wLDE3|QEg#o9YT+uzm94K&g{yw0I zMtI~e5`&R?+mmwG^>63##_*dj-~VDWKtyhw?^j&$zy;S#FO`ef-|Vu<9z@ocsh*<4 zm>GE_dcU6Q>!`+SMez48un-#Te~^z_+!AZ4^+;8?-QWSN#UD!w@RxQ?U19wY+Bi99^%#e6+`y-D`tQUQ?NsI+$ThdvVAgm)ZRN2RKsQFX^nzrSDD^BIi2i}UOM$dJt^AK5x z?Yqd!D(2_VQBHq`&R&x0^XKT<$AVnRA4?zL)_cC(G=>Wi>4Iby_XhslI}+t{v-g0^ z;(1sYf8`L^0KC2p&(En}4tI?Gn*0}!07AL=#d&r7x+Mhm&lMDRNvP)1DwHU@`SXIP zBc2O6F^0vbosvAY6{u9{JD>IK5iQTG1AsK{0G-P0t`(Uu(LWLm;|Ki9KIuunK$T9}9VAo90m;cjTl z*!-3@ZzNspRj|o;w9+v-u==Q6`-dm9`i%Z%j<9;}!?HH#f*TwAM?q!eY1K&Ba9&8^ zu8w+7c(9_GlVduZxu~fLPF$>RvegNF{_)Q{L0-HU7!78ZV$1%Jw+#^{cFWJX@a2u=GVxkYVBk1ZZJ zm<^~E;oaUJvq1?uNThjSs1>#}lr~Yi_+Ihm#*XG&0=M`Ie5S z$L8hSWc2V=1iG!#Vh`lWQ9G0Jl(Fl`5YvIx;hePjH`H_GEdu>IewdYwJIPpEP2XOg zsY=LTc~FX;W31IZ&42}7@cu6-pz%spbgfsF9nfAP?i|wC4IHjNVMbORC4U5N&`b@I?5xL;Q$6f1z;x}dcXyK2!g%g(jh%Caxq*XfH$=QpgVgQ zharzcUfN1N9~v4vp*pchO?p$G)%knL$YfF_;3Szbx5j5T_^Z%e3 zm--Pca@K-)M0}jk^aP#PX)m@37VP!#(G#9KGhXd&T=~a|Z^jpr@4!_wSJG|*(2bZ% zi7evVDbIjU##T~CMsSH^dn?Ws0NXj9Z$C&=&bJiz3Qo00q5C~0c?$QT9n93LGkTmX z)E7P-!fa;7HFuekT!*m5AS260Mu1LMG_p%M7#H#@S88z@ZC+2V*^uLlRUrrz&p*G@ zIze7YM<-U89#HE3>rY8K9RT)HyPDq{z!|i{X(9;ZWAR+@Bcp+xjp4km*9z0YkG&vE zG}W5h-E_|tIUL_6g;oO+ru><;CJiC~^eP1!$fEcT;A+Ir+H20H-#{zb60B|}9|FD) z6u$G=r>@`zIS<^x-+i-K)B z8MLOT_lCV>oL{VP7~cF{sBjSvzW-pX9Pu`JF<(^$WHYaFDEVKdUwl(;;qsD%TNixh zeq^|yioE{Hn8)WHUX*(0J(%l~5ovh>?#PRLXngC89_@Y9_l7iZ`th6i@iW)`@ck0C z7q6ghWVx%~6dx2F-O)i(3qwub(!RII_8=pEvT*Z5+XZKcE@wYMWF6x6@_S9kOuH0v zFSBsU&1(e&&4>3P8qIti#tE>?CAFr7>tV&q^J|JC*It)_NZj7rY5zJ4h=?bT&2r~E z&=YE^frzZ6%pW4Wj#k_ENGJ0u?$Ak@{9w5})I<80OQi3o1Z8@;gdC4pfurE?otmgf z=w!*hkfb>O2AKomh8%zgq_Lft1zNYwLL0S!ce*#TmqIS(eF)+`udw2;^R9pN6mwtkD4qQNmsZjn?-bQd`kZS);bcJTKR)-9oR z1gTz5KQNsc$p@E1SDk)1XW_Ea+pVG-R2)3~%LN4dtq0!^NrC%YOJs-IXajk|zVP)0 z%3pcy;OTz42iVS07XjnD2{69fChM&x{(j`8RFk)GI8^G~4+Z|lFP$)h-T5pobfIRs zV6x&1h}CHfJ78&FS_wUgVSY;HKumJ)P!)x@f4D!sv8jc{9H{x}J#tS#>mL{w0Q>JD z5-!l~UfoF$|FB*sYE6|t$!)d%{nD-aXX^d$DGfTxr#D<2s*T^Fyw;0ah-}Lvx1)w5 zia$CpHbBedPYe_B-o&|x+XivE9xtlqKZq@EY-RP#dD;#f4Q2GmMzWIU=s078HTKkI zy0Q81z0Q1Wbncz}ntbbyO?OZj)NtRX5_Ag`-zT2_vR3o27T+*iquQhx8>E$zFzCHK zk;*l%DMmi(1xOn`wWg-uyh)-gx89tG^^Q@`Sar_t$m`b>ql^_UyRU|G=QcU#Lj)3L z&P&c#q;kXqe?1uvSc8o9 zDj)@V9mSe}!qn_6YHx>Vz-rpMjWEbH(v3K(5)qHXGmP|5I8`U+uQveytiVGyFz|qh zkcv{!N6ESn7a8a2?;g=LLNjVU^WeAe^x-s!HaFWaa}32D^_zZ~goI|-t4 ztPOeY=X8x5mJinFd$W?I&J6PVYN`lyA|jcS^s5EeDQmfwH%cHTM3s)CNc&ERH9=N8qtYFMtLeXrH>L z@On1T&784g>NlyKAOlfoPfmi0YCrdje_n|HNZC_-2Xt119(kkQHE3^9bgdNqiPm%2 zqUiggQH~ArEKAT0ga}`jtS)}Uo~R^wlaygi?8i-mc;pisyP5tK_fKAGPI6G_0}+W6 zWDN`Nx^*#5qI4?Hy}K7=;x`9UAYfhoDM*gCE`Jd{<1{`fIT9NioU|lNx1;pXEW6L9 zs#)W13$m5?cjTHF)pBLJm8Dl&3+vNWr#tjut-6NE^xp71fC zUo__%uJaVvV-V5tgFk5|FxU2a%E9?*EEGI%zCX5xMIe$;_I|2j)v zp9ws;ruE=d9saeT;jSB{xT{v+K)$*~L{tKiJ%Kswp1oYhced0$5YSL`gSVcJi3D;T zxQ-rE*^%>8NmrL=u2~o{J}~$)(x-yXMkW1qz~_wo$SXZGyaZ(KY0B`Q(CKw-b`akj z8J#sDBq8q-X$lBBY&~EnJZhVmg!lfk3;zf#K~FK8y#4>3Qv(7>(5oTF9j_JS4(qwFdP?!KoD;XJ=wV7QFYfo*_nYq%rnT-BDviBS}DQAyS129s>14z8>_K=aS z*yL6PQGwG%ngJoZBk@t8xcnT2V$^p!1wdiX(fm8p+O9OQ5&w@VWL{ulZE1uGr1nc|Dxl|hpoistD+1JSOhFXH*eiJours>CzeiFRKZei; ze6pd3G?L<{cwqC;nu4|8pM(J{{dP?#2N^H{^VaIP)x`+Zb^EAsLOa#Y=c77X}DI|y3KDfDa ze@m5_8jPCEl9K=FgacIEvK!nQB|3v6{$fJ6#X8EwJd)#nr*7P$fetclDsNkv5R$%) zBs6SokpCr!OD7{#@P<__ZDBZ95q@5Ik5*}6OOoYw`(hvkPX8y0nE-3t~=EI zo84NASz#YfBDtnU>SOQoI992b*e;^g*cV=0bR)UKY0%!|1I|98!2W=9Ha3!ho}<@D zy_gh1efckv?DG~4lz;QGUT|Fam)^t{ZatsBvpVrLx>Mh+e#Z#<_x86^xGd|gP_%ks z#~nOO{ht#1NmqTK8Qxvy#r>qv`wy~P?>CUhX)_&od7neq*V99or*@xx3(jewkk?E! z3`GiMNYn4(-`*6%vIa3FHonk()@xSp2BiC}M4N>sZ^bx1kDJ4eZ^Tc5J4M~q^$H|- zH>Vnd3{3XAgBAt$dL-U?k8|A(o&e4n1rBdf<0qix^VnI2J5>%oSc0~BvEz=B;S*u` zgWs@OO*$)7$3@kKL!hEa9zdZ4&Z7VZA^;VDLUn5$fs)!>yV4T-5`7$2#zHh z!K=@u4CJAH7tPEN@NgsUQs(0=cfT|^#BO6(+@T9dRIaY9^d<eWZdN;f^TO z85rA(C%*QTu+>w(wbrJ18>%i$%xXDVyBB zCMs?qzXgGCOf;U4nf#!ceqR65Y;cpVKJIU9sTr(1V zxmgYP{R86gIskr1Nl|SVfMS?l9<34)5e?R<=fAbd)o-Ta26%OF{ZKrOnwe|T^p}L@ z-S0tQi$NjvZ7ZDW%bWuU3mB=*gH15g{|UZB|G2<|>XY-X)i3;!qAihv7l&0j1ZkhXJd)N0IHnO1tiGs{gltj^o%IDM_-*Xy70+Pew~tLq^}M?2)}k zc2X%sAwr0Z%u4pLXNYu?ab)kEJ)Rrio?p*(J=gQk(?4BZbk1kI-}n178M%$!wAi@x=S%M#v1%%?k;RuZ1H8bPSlg2BW2q{R93=~LrN zLbX*5Au`)qH*VN9@wX?9FZuL&fO5;=;2^u_oSgLn=MTdfP71vAC@mDW4;{v9)t(A$ zKnA~I3Ayjzqc7WI5+fp>kb4yoNTk*C-g2_ANY|(Dq?|8FI#^rvsH?C&-?X(QUZxyW z$Y7Smsy&&q;2+F#RQG2pd>7yXLK1c;@KHFSg(t2qlCb=WeT#siXexbY6YFJd@wj4q{`F zegiPh29~~cO)p`ua$2CLdMivp7jM#kTh#w;+L2SJ3WiSxr^J|R)g4`g2S(4-W_shx zk*+WmKS{_Y=OzcMdF4E435>BWq6}cg7ULDf)3UO*hr+MTl&0&n#H)+*D5hc-& zx#@lTPY$Eyp``-z*cJjy$&^)29SKc7Q3Qmq9BRRrd?Ld;wEmTkcbr;9K_>N{Asi~f z$I`+=)gsqY??HxooWopy1z^kBvJEiN4NZU@+D<*Ih}eS1x|czJjhVukih+K753i!D;1Q1+_znc3IGOP-#a z1U+vnPovH=hUs8T3Z`Bsuw$G-+_I3U{JQ2b`M#i;j*c47MlBATg(A^^mT?Zkalf`S zG}!tYoXwbMc`Y^ii}h_SF39lF?l=p}xqIT!Nus-qm=c=x+jGwh*4rfhjK-FmxAF(a zNQSZ`S!Oqvq%&t9o>))i*n7eoY(WPnzrXjGNK37@tISMa6nu&3d&-RuI&eZ!NvWx^ z(X~ql-qRsyeu*^y7AjKex4B}h%Xgahgzo5C#+~Pw9c2xx6Am)TH6|+c=`vxT+5=kF zcfw?_yzZ^nE^YdUFz$w4*XrA0R z^&B(=Evqog%7&+`3Kyxt6q1STP<~xFu{M-$dX-g?cq)ebbA2{B`r6oD0FCCZ^E+~RreYh&@uPLG7D8xj9zEoFU+{wJ>Tqit*pu@z{AE)8V+_ z5A%HsM$e6oC%YMfx!@~Gn+C=?Q)2iB@36ttdUp4Yf#If$XIBB>%)b;#y z4J3+_bLhogXdIq?Zxr>Y?$q(~HKtTYs(WBdY|PA*Q5?R-n*2TOI1*AaDUapMv=!Qu zzHD)4ONUW$H-9;vwmkjBuD5f_e+GzD-k=Xmk7XQpo^~OIgiG&z;?SA(gn4I zpcS`7j9b6PLZ#vYfmb0l<0^r&hwdb!?WD<2hD5T?nWOi;S0CK#RuRw~e9-1xEk@-E zyJc%*WrZu2RHUr|QZl7$*Te+IbLyIxqwKE#xl%pV@Q2nX*spQlx8Y)EvP%li^fCMy z_ROlDk+y+&<+*yeg4T(4*-3KF{be6`kXIF~*!j#1DG|>FjvqIGU00Gxz8uxXmd^=Y z5lX9r2>ZI<$pcKn4vZ3Zfh@j^tzl1z&$(I5+58+Ark|@De3QTF6!uuZ+8UZ#Mu&$* z&D#3kJY+Mdfw=Hm(ut}ir_60GTTdKB%s@{e`}4r#A3wBA)|NW1?W~mVyiHEdNjx$o zgufLMU1^2(^a;&X!enB*G|#49s~_Uu7+o626U=sLcW5{7*pc}jeq~3MXDeTI35~B$ z#Lo3GeK?6V&G_)IbLK`MEcJBFY~2!Bg;dqoSw$1+v*kN%EjbVASktqzG|QXl*w1Tg zX|4Vy=!x0%X|H|q2k-Tlk&*e-Nsbk4DCOT#He=$pU#x=(YDKR+h|rz|_guBMkla~&_LQTB{pH4|{b z^S;&*ns-GIYI$U2c8X`qV5RXDknwUsl*c>?9kYU*F4Vg1s31P!Q6Iv{75?5tqsqQI^@1N;P=cb z<$RBj#j5w~)nHx7&M?;7ZOynY|C^2vj>izz5bUj6)< z%+?YNhZgkMD}kkNa5X~$9PeVW|EcbT4uQ(S1MF4+vt-A9Eg0?f%*o zPUfElHs0{pLLSMKkP0bogw6Vlex9*#tN2$_y4I6_8_6r}QcA6ywRpCC3Al@BZ7EnShhA20|5VVdAy8#&Q z-(9#ra_(lX)-dTElktijMt`vGT?d#mh{oOxmu-hmye~0g*|+mYHrEzk$-Ky^i*1`0 zTA3R+QIn3(H6eVqUPMDONzZ0z9a}E#g-9*7V$}Zn_hw-R(^J8gf5rLCBeOH_+ z*g7t@8O|Wj_p0GVV|a7DSFp^8CrdZ=Bm0jD`f*5ViIIB(i2xbtfX;hWiW!RslLF3$r7+!w1j@gh z+wZ8jx~@VJRZmU9$%NGnpfm4GXZ*8eJrN$m2RtTkbg^4Xeo52eiaGaZGsK36cNEwV zfl8RSZ$sq{eI)2YS~h6R_`^_jY&nW0N*%w1)S_8G!dKHB8ng@=B~U_u#ne_F1)Yqd zntJy|CnUJ9JUdo6kq+XJ)KfydjvmcSIht(q53ir@3#{hf<^Sj}k}EOJ!7qRGSecn0 z{B26`3xK34FffqHi}&vSR@Zl@)B4Sjj0$knmte9nKmbPumd1O_g=it^GDGt#fQiNd z)Er++x#*U-hDBOYerS6d`AyzNHh#|U@c#8;$IkK^O>-;{B%yAW4QAM(nzl~{l|fqz zshnfZEhGxgnDs&Sog<8lHBDKN;y~IvSK&|2Nz65@113SJ80V{%XG1IlSREv?2E5QQ0erj|af&Ut)Lvi~CAw=PJ;cSSEDr3E#}rjcAyGl(AY@|9Kvy<|^!;AGzwC24F_ENekS zSLt+j0pTh44?|%xk7oOkJ{^yhuqF9qr;W%Q@|*Ta&>*oJ#w^gAotk>nJ%x*1rXRhp z)~8dD>cN@4>7DLGopSLP#=I>7NlFv+0O*Dt@m$Zfg`6D0UiPc|pURiQDCoU);Pv|S zSpAvl-GT)9UW6d&EysL@^SZIA>2>02%@Za7H^o2{iKAU6zKzcm&(6R=kxwlH!jF72 zs1VW;xnMsov>W-tAxAbnex&!p&i0DTi4~^1Awt0`Q5Y?E*~euITMEy*{m}c1AcIjb z$9}kRY;4S9wltCvb4)zPw3UtCmgD{_5%bF6-;dJMPmif10(1yjI?;BJo&p%z2E~rs zH)xiR=%?2y-_<~3Xee*DTJOB5jqmEn{$T{|+LC*_SvhBIg|+~WtL5o#H{Vc8kVgR2 z;k$URG?-gfOY2Cz8hsjsvLPP%1akM~sRn9ypz~7Pn{R%f))Rh|$)4l2#5J7HO9<&J zH$t>pR+c@DGI)F{Wg-HZhw`dfEXeDusUjRWeN{cCR!dPf?=2D)i%u>o+GRn#3a9F;bgGEk zQ*d%EHlIzIIaJAZw%f2)Xp4)F{0@cP*0!GMZdcP1_TPnwYN>hj=uy1q0wp$vRCNqE z+qP1xZ^v8Wa2o*ZF5K!j4)zT`Mw^4RezLvhKzxo_N$#tbjn-@XI^R=|v8sEdVsEU=+eS;NX;y^};zg z<;LyJ^zlB(-tR6fBIeiG37ATG^sX8A{sopLUwU#F0PpQWdu}XC6;XEm!o>M3cMS<)=4vgpq%A$n2qx&P#8|!i!Sk}^bsvJkf{(K(lED|dbn6K z7=&vbH`M5qBbu0)q@<=^5EjRBs^R83DY)IfTQtz}xxefJQIXPOVQgoFg7EEwDp zJ=XGW6@2UU&ie}uyZ{`%W(r4X9?Kwq81~g{WhC%EjF{$1dh4d&=))~Kd3nABXw~)o z#hb9PLQStwwz;4*93B@d$f6{xb00Xwl70c=QCA5}RZx0&smBU1;eoU)BQLc4a3%*E zx3$z3q}59|DYd9XGl8;)gK1S4iF$}(Z)t3FU+ywZN=hnh@MTf7CYIfYw9Q`)boFY$ z9~)FsB3W!o!XkguzbgVXTE5h-6e7J4#H7dNgB!Wj6OW=}rnteBXj6bhkvZKVn$q7F z6wyoFH7WUn@wP4%J5TrDE4KY5FTQ9W9^f(fjvT`lpyFDA<{-GXpxe02l-1Q4v6H_P zJLTqKk(Ez>>Mq$`TvK?iJg=SS$jN1FbpDLn`gJqHSEhZyjd)r%0xRsuRFflL^W3!OQm9AXFfDei~OL6hR*2X2m z$8@B6YB0Cu_sq0+?_7a=bL;8``aJR(s%fN;HBoz&ihrL{VP_OXwDSVj1N;uNxGjfR z^cxTX20CQH!vTHds{j}fefxWS5Jw)G=d zhh_>%Z#qjj(w1SgDEH$;jCXm*yBkToajphUFZpM1OGkzx7ijb1P`RX}%-ATT!ByZz z6crzL=8}3em*=b?FGwo79u%biUmPgy9&gv2T4zdqxn4jCTK7l9tdG^_K@x@PwACrr^xr(OY_=PaFKSGf>s zCILP;wHqT&Z7fe4dIz;aF2Q0J=rM~5oTW})GH+v;!{%Fp0y?0eexigvuWW@ktWsE< zn#Ae!5lC&yx7R0W>GY4rekBDq9q%yPS9;;XIA5I4?gECN@!$CbBHw1fhkx!Y&<`o} z?RLN$H5oZie)WCpNK#hyZWN8Bs0Fnp7!+Q@^0aMr)0*w{SNKD2iQ#p$wwE(D-mNLT zk2+67O>Nm*^c$d;TNj#R15W<8QBhG55r<@I8K#8v81i2393L07VC5SiEbfkDTqM79 zN}nvY(ZSx{eQ9jI?EJp({4JO@iU?9CdMGNAl9e~*} z$Kxv^58b9+jyfg1TO+*eM#xVPyYUzDiThwlfFKgrU0}mbk4YA zQE*utYBsd#yI6$wsK{q^$n_6<>fm8t1l&d|8$wDNNyG7)byi7RDzf>3H;+}8-IgTR zUtt|{5ugo;>6&Sr+X%czYHDhaovoF+5cc@!=(RqNSzih%-4&<8B77?VcL+Vvu<^nn zBLdoug=^3-1P3z%&aJqWZ~kM{`XO$OJ;h?zjwgMeo;{ly$nRiru49c@m?-z}t=Lj& zeF4}82|PeJKv#(4*?D=wr%zMede;Bz`kZDJ5gj9IYr*^V_HkKu`nxYVW`#Pa#JMgm zT9|4&lhNYmsNJDpn|Y6P75zFgvW}Vz==HtrQfsjzi=)6>aAd_wIw{WGO96twN5c}% zm95W`1P8zLI%upK`(~5>==LRg|0ig{m>vb(VDUe$wETag83dgij2L!tnyrBTDByZLA{bh;_ZsW} zn-(CIMJczD3qf1Q|V+MPOu^w3NJ}WfN~lqCuby9 zFDom{Yw(NMm1jpPG&zE@cSXeapo-kiHn+{9X```bLtlZW_k5+EjPzy)w!Mn>!%4kw z*~CP9-FF1nMeLVrwAWNrXkBbv;7NIg=htJ;rEL02!Wjxr zadAf)k8;l+O%d$#_$V4aGW^_#rh@A4jL8%%<}PY8ZWAjP^i<=<4|T5BezwfW$XJsU z`Z~C4~=tp)|_346>-UnJElq}WM>Qa~vr>wkVv>JXAaroVZ z4Ag1gkq?SL3CHVX1+sPSq&kzw{#0*QGR6U-b z+@HaoRl1&zeN1-@=f#t*lTjV_l__0d?r7~PzL{4}3r071uEt-`GWkt5UP5$|*D#Tn zH@WfN>ufSLE z3XW+L&A{I(!L)B?Z_&Et5N+fYRLsoGk^;-9@CgeF>m=r}FVeeK1wJBgQx}H)VgKmX74=i*y4KP*W3dKTbJ{0;ZtKu0+0%)B>pGQo z#-a0t`n#Q*9Ol;_H$92}uw5H4AknU>z0(=|)5`K;_3L*XaSNq2eord=Fw4_5ht!mX z09Qh@!kd(o%SZhjO$cRFni-C3-NYTQpB3P`B})ZHTx`NUTu3L^Y1veTqQj4vHW5>L z64wPPOH)o;^E*EZlU#<$Etrp$8|W;|_WxSkw$bw|#>Csy%p{;7uyG37r}cwgDNC!nndyzx`OqE=OMu%~C)L!?*1jvh5{CH0vt? zSvLrHx5rHM$z?E7cdWZapLy?-4@K$unx7@Eqmv zC^+i(jb$~=N@%k?=u}FSLAomQ-a#dnaG?zxfr(@%_ESKTUKtKHKX@d#{i?1Y^oudV wkl24`Y5N`*P*+94P2|F{`~Uq31I3zmGTmWQ@(1Jo2>5gLlIq1Qd40eC0`)b<#{d8T literal 0 HcmV?d00001 diff --git a/Source/Core/Builder.csproj b/Source/Core/Builder.csproj index 4bd3281..1d4b7e3 100644 --- a/Source/Core/Builder.csproj +++ b/Source/Core/Builder.csproj @@ -170,6 +170,13 @@ + + + UserControl + + + AngleControlF.cs + UserControl @@ -442,6 +449,12 @@ TextureSetForm.cs + + Form + + + ThingBrowser2Form.cs + Form @@ -557,6 +570,9 @@ + + AngleControlF.cs + PairedFloatControl.cs @@ -708,6 +724,7 @@ + @@ -1332,6 +1349,9 @@ Designer TextureSetForm.cs + + ThingBrowser2Form.cs + Designer ThingBrowserForm.cs diff --git a/Source/Core/Controls/ActionSelectorControl.cs b/Source/Core/Controls/ActionSelectorControl.cs index 67398d4..a60f746 100644 --- a/Source/Core/Controls/ActionSelectorControl.cs +++ b/Source/Core/Controls/ActionSelectorControl.cs @@ -35,7 +35,7 @@ namespace CodeImp.DoomBuilder.Controls private List generalizedcategories; private List generalizedoptions; //mxd private bool controlpressed; - private readonly bool grayout; + private bool grayout; // Constants private const string NUMBER_SEPERATOR = "\t"; @@ -43,16 +43,17 @@ namespace CodeImp.DoomBuilder.Controls // Properties public bool Empty { get { return (number.Text.Length == 0); } set { if(value) number.Text = ""; } } public int Value { get { return GetValue(); } set { number.Text = value.ToString(); } } + public bool GrayOut { get { return grayout; } set { grayout = value; } } public List GeneralizedCategories { get { return generalizedcategories; } set { generalizedcategories = value; } } public List GeneralizedOptions { get { return generalizedoptions; } set { generalizedoptions = value; } } //mxd // Constructor - public ActionSelectorControl(bool grayout = true) + public ActionSelectorControl() { // Initialize InitializeComponent(); number.MouseWheel += number_OnMouseWheel; //mxd - this.grayout = grayout; + this.grayout = true; } // This returns the numeric value diff --git a/Source/Core/Controls/RenderTargetControl.cs b/Source/Core/Controls/RenderTargetControl.cs index 1ed2836..ae049ef 100644 --- a/Source/Core/Controls/RenderTargetControl.cs +++ b/Source/Core/Controls/RenderTargetControl.cs @@ -39,14 +39,13 @@ namespace CodeImp.DoomBuilder.Controls #region ================== Properties public event KeyEventHandler OnKeyReleased; //mxd. Sometimes it's handeled here, not by MainForm - public Point LocationAbs { get { return this.PointToScreen(new Point(-(General.MainWindow.Width - General.MainWindow.ClientSize.Width) / 2, 0)); } } //mxd #endregion #region ================== Constructor / Disposer // Constructor - internal RenderTargetControl() + public RenderTargetControl() { // Initialize this.SetStyle(ControlStyles.FixedWidth, true); @@ -77,11 +76,17 @@ namespace CodeImp.DoomBuilder.Controls { if(OnKeyReleased != null) OnKeyReleased(this, e); } - + #endregion #region ================== Methods + //JBR removed from properties as was causing issues in Component Properties panel + public Point GetLocationAbs() + { + return this.PointToScreen(new Point(-(General.MainWindow.Width - General.MainWindow.ClientSize.Width) / 2, 0)); + } + // This sets up the control to display the splash logo public void SetSplashLogoDisplay() { diff --git a/Source/Core/GZBuilder/Controls/AngleControl.Designer.cs b/Source/Core/GZBuilder/Controls/AngleControl.Designer.cs index e0ece7a..72c04a8 100644 --- a/Source/Core/GZBuilder/Controls/AngleControl.Designer.cs +++ b/Source/Core/GZBuilder/Controls/AngleControl.Designer.cs @@ -39,11 +39,11 @@ this.Name = "AngleControl"; this.Size = new System.Drawing.Size(40, 40); this.toolTip.SetToolTip(this, "Left-click (and drag) to set angle snapped to 45-degree increment.\r\nRight-click (" + - "and drag) to set precise angle."); + "and drag) to set precise angle.\r\nMiddle-click (and drag) to set loop number."); this.Load += new System.EventHandler(this.AngleSelector_Load); - this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.AngleSelector_MouseMove); - this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.AngleSelector_MouseDown); this.SizeChanged += new System.EventHandler(this.AngleSelector_SizeChanged); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.AngleSelector_MouseDown); + this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.AngleSelector_MouseMove); this.ResumeLayout(false); } diff --git a/Source/Core/GZBuilder/Controls/AngleControl.cs b/Source/Core/GZBuilder/Controls/AngleControl.cs index fa4c0be..2a5253a 100644 --- a/Source/Core/GZBuilder/Controls/AngleControl.cs +++ b/Source/Core/GZBuilder/Controls/AngleControl.cs @@ -9,9 +9,11 @@ using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; using CodeImp.DoomBuilder.Geometry; +using System.ComponentModel; #endregion +//JBR Loops implementation by me, rest remains untouched namespace CodeImp.DoomBuilder.GZBuilder.Controls { public partial class AngleControl : UserControl @@ -20,12 +22,17 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls private int angle; private int angleoffset; + private bool allowLoops = true; //JBR + private bool startAtOne = true; //JBR + private int turnThrehold = 16; //JBR private Rectangle drawRegion; private const int drawOffset = 2; private const int markScaler = 5; private Point origin; + private Point startClick; //JBR + //UI colors private readonly Color fillColor = SystemColors.Window; private readonly Color fillInactiveColor = SystemColors.Control; @@ -35,6 +42,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls private readonly Color needleInactiveColor = SystemColors.ControlDarkDark; private readonly Color marksColor = SystemColors.ActiveBorder; private readonly Color marksInactiveColor = SystemColors.ControlDark; + private readonly Color turnTextColor = SystemColors.ControlText; + private readonly Color turnTextInactiveColor = SystemColors.ControlDarkDark; #endregion @@ -46,6 +55,33 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls public int AngleOffset { get { return angleoffset; } set { angleoffset = value; this.Refresh(); } } public const int NO_ANGLE = int.MinValue; + [Description("Allow loop changing, setting to false will restore old behaviour.")] + [DefaultValue(true)] + public bool AllowLoops //JBR + { + get { return allowLoops; } + set + { + allowLoops = value; + if (value) + { + this.toolTip.SetToolTip(this, "Left-click (and drag) to set snapped angle.\r\nRight-click (and drag) to set precise angle.\r\nMiddle-click (and drag) to set loop number."); + } + else + { + this.toolTip.SetToolTip(this, "Left-click (and drag) to set snapped angle.\r\nRight-click (and drag) to set precise angle."); + } + } + } + + [Description("Start at loop 1 instead of loop 0, useful for checkpoint number match in SRB2.")] + [DefaultValue(true)] + public bool StartAtOne { get { return startAtOne; } set { startAtOne = value; } } //JBR + + [Description("Drag distance in pixels for user to change the loop number.")] + [DefaultValue(16)] + public int TurnThrehold { get { return turnThrehold; } set { turnThrehold = value; } } //JBR + #endregion public AngleControl() @@ -87,6 +123,13 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls return ((int)Math.Round(Math.Atan2(-yDiff, xDiff) * 180.0 / Angle2D.PI) + 360) % 360; } + private static int GetNumLoops(int angle) //JBR + { + if (angle == NO_ANGLE) return 0; + if (angle > 0) return angle / 360; + return (angle - 359) / 360; + } + #endregion #region Events @@ -111,14 +154,16 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls Pen marks; SolidBrush fill; Brush center; + Brush text; - if(this.Enabled) + if (this.Enabled) { outline = new Pen(outlineColor, 2.0f); fill = new SolidBrush(fillColor); needle = new Pen(needleColor); center = new SolidBrush(needleColor); marks = new Pen(marksColor); + text = new SolidBrush(turnTextColor); } else { @@ -127,6 +172,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls needle = new Pen(needleInactiveColor); center = new SolidBrush(needleInactiveColor); marks = new Pen(marksInactiveColor); + text = new SolidBrush(turnTextInactiveColor); } Rectangle originSquare = new Rectangle(origin.X - 1, origin.Y - 1, 3, 3); @@ -138,15 +184,34 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls // Draw angle marks int offset = this.Height / markScaler; - for(int i = 0; i < 360; i += 45) + for (int i = 0; i < 360; i += 45) { PointF p1 = DegreesToXY(i, origin.X - 6, origin); PointF p2 = DegreesToXY(i, origin.X - offset, origin); g.DrawLine(marks, p1, p2); } + //JBR Draw loop number + if (allowLoops) + { + int loop = GetNumLoops(angle); + if (startAtOne && loop >= 0) loop++; + string loopStr = "↺" + loop.ToString(); + StringFormat strFormat = new StringFormat(); + strFormat.LineAlignment = StringAlignment.Far; + strFormat.Alignment = StringAlignment.Far; + if (loop != (startAtOne ? 1 : 0)) + { + g.DrawString(loopStr, Font, fill, drawRegion.Right - 1, drawRegion.Bottom - 1, strFormat); + g.DrawString(loopStr, Font, fill, drawRegion.Right + 1, drawRegion.Bottom - 1, strFormat); + g.DrawString(loopStr, Font, fill, drawRegion.Right - 1, drawRegion.Bottom + 1, strFormat); + g.DrawString(loopStr, Font, fill, drawRegion.Right + 1, drawRegion.Bottom + 1, strFormat); + g.DrawString(loopStr, Font, text, drawRegion.Right, drawRegion.Bottom, strFormat); + } + } + // Draw needle - if(angle != NO_ANGLE) + if (angle != NO_ANGLE) { PointF anglePoint = DegreesToXY(angle, origin.X - 4, origin); g.DrawLine(needle, origin, anglePoint); @@ -165,17 +230,21 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls base.OnPaint(e); } - private void AngleSelector_MouseDown(object sender, MouseEventArgs e) + private void AngleSelector_MouseDown(object sender, MouseEventArgs e) //JBR supports looping { - int thisAngle = XYToDegrees(new Point(e.X, e.Y), origin); + startClick = new Point(e.X, e.Y); - if(e.Button == MouseButtons.Left) + if (e.Button == MouseButtons.Middle) return; + int thisAngle = XYToDegrees(startClick, origin); + + if (e.Button == MouseButtons.Left) { thisAngle = (int)Math.Round(thisAngle / 45f) * 45; if(thisAngle == 360) thisAngle = 0; } + if (allowLoops) thisAngle += GetNumLoops(angle) * 360; - if(thisAngle != angle) + if (thisAngle != angle) { angle = thisAngle; if(!this.DesignMode && AngleChanged != null) AngleChanged(this, EventArgs.Empty); //Raise event @@ -183,19 +252,40 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls } } - private void AngleSelector_MouseMove(object sender, MouseEventArgs e) + private void AngleSelector_MouseMove(object sender, MouseEventArgs e) //JBR supports looping { - if(e.Button == MouseButtons.Left || e.Button == MouseButtons.Right) + if (allowLoops && e.Button == MouseButtons.Middle) { - int thisAngle = XYToDegrees(new Point(e.X, e.Y), origin); + int dist = (e.X - startClick.X) - (e.Y - startClick.Y); + if (dist < -turnThrehold || dist >= turnThrehold) + { + startClick = new Point(e.X, e.Y); + int thisAngle = angle + 360; + if (dist < 0) thisAngle = angle - 360; - if(e.Button == MouseButtons.Left) + if (thisAngle != angle) + { + angle = thisAngle; + if (!this.DesignMode && AngleChanged != null) AngleChanged(this, EventArgs.Empty); //Raise event + this.Refresh(); + } + } + } + + if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right) + { + startClick = new Point(e.X, e.Y); + int thisAngle = XYToDegrees(startClick, origin); + + if (e.Button == MouseButtons.Left) { thisAngle = (int)Math.Round(thisAngle / 45f) * 45; if(thisAngle == 360) thisAngle = 0; } - if(thisAngle != angle) + if (allowLoops) thisAngle += GetNumLoops(angle) * 360; + + if (thisAngle != angle) { angle = thisAngle; if(!this.DesignMode && AngleChanged != null) AngleChanged(this, EventArgs.Empty); //Raise event diff --git a/Source/Core/GZBuilder/Controls/AngleControlF.Designer.cs b/Source/Core/GZBuilder/Controls/AngleControlF.Designer.cs new file mode 100644 index 0000000..6bfa21b --- /dev/null +++ b/Source/Core/GZBuilder/Controls/AngleControlF.Designer.cs @@ -0,0 +1,55 @@ +namespace CodeImp.DoomBuilder.GZBuilder.Controls +{ + partial class AngleControlF + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if(disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.toolTip = new System.Windows.Forms.ToolTip(this.components); + this.SuspendLayout(); + // + // AngleControlF + // + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.Name = "AngleControlF"; + this.Size = new System.Drawing.Size(40, 40); + this.toolTip.SetToolTip(this, "Left-click (and drag) to set snapped angle.\r\nRight-click (and drag) to set precis" + + "e angle.\r\nMiddle-click (and drag) to set loop number."); + this.Load += new System.EventHandler(this.AngleSelector_Load); + this.SizeChanged += new System.EventHandler(this.AngleSelector_SizeChanged); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.AngleSelector_MouseDown); + this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.AngleSelector_MouseMove); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ToolTip toolTip; + } +} diff --git a/Source/Core/GZBuilder/Controls/AngleControlF.cs b/Source/Core/GZBuilder/Controls/AngleControlF.cs new file mode 100644 index 0000000..9696f91 --- /dev/null +++ b/Source/Core/GZBuilder/Controls/AngleControlF.cs @@ -0,0 +1,306 @@ +#region Namespaces + +//Downloaded from +//Visual C# Kicks - http://vckicks.110mb.com +//The Code Project - http://www.codeproject.com + +using System; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Windows.Forms; +using CodeImp.DoomBuilder.Geometry; +using System.ComponentModel; + +#endregion + +// JBR Float version of the AngleControl! +// Supports changing snap angle +namespace CodeImp.DoomBuilder.GZBuilder.Controls +{ + public partial class AngleControlF : UserControl + { + #region Variables + + private float angle; + private float angleoffset; + private bool allowLoops = true; //JBR + private bool startAtOne = true; //JBR + private int turnThrehold = 16; //JBR + private float snapangle = 45f; //JBR + + private Rectangle drawRegion; + private const int drawOffset = 2; + private const int markScaler = 5; + private Point origin; + + private Point startClick; //JBR + + //UI colors + private readonly Color fillColor = SystemColors.Window; + private readonly Color fillInactiveColor = SystemColors.Control; + private readonly Color outlineColor = SystemColors.WindowFrame; + private readonly Color outlineInactiveColor = SystemColors.ControlDarkDark; + private readonly Color needleColor = SystemColors.ControlText; + private readonly Color needleInactiveColor = SystemColors.ControlDarkDark; + private readonly Color marksColor = SystemColors.ActiveBorder; + private readonly Color marksInactiveColor = SystemColors.ControlDark; + private readonly Color turnTextColor = SystemColors.ControlText; + private readonly Color turnTextInactiveColor = SystemColors.ControlDarkDark; + + #endregion + + #region Properties + + public event EventHandler AngleChanged; + + public float Angle { get { return (angle == NO_ANGLE ? NO_ANGLE : angle - angleoffset); } set { angle = (value == NO_ANGLE ? NO_ANGLE : value + angleoffset); this.Refresh(); } } + public float AngleOffset { get { return angleoffset; } set { angleoffset = value; this.Refresh(); } } + public const float NO_ANGLE = float.MinValue; + + [Description("Allow loop changing, setting to false will restore old behaviour.")] + [DefaultValue(true)] + public bool AllowLoops //JBR + { + get { return allowLoops; } + set + { + allowLoops = value; + if (value) + { + this.toolTip.SetToolTip(this, "Left-click (and drag) to set snapped angle.\r\nRight-click (and drag) to set precise angle.\r\nMiddle-click (and drag) to set loop number."); + } + else + { + this.toolTip.SetToolTip(this, "Left-click (and drag) to set snapped angle.\r\nRight-click (and drag) to set precise angle."); + } + } + } + + [Description("Start at loop 1 instead of loop 0, useful for checkpoint number match in SRB2.")] + [DefaultValue(true)] + public bool StartAtOne { get { return startAtOne; } set { startAtOne = value; } } //JBR + + [Description("Drag distance in pixels for user to change the loop number.")] + [DefaultValue(16)] + public int TurnThrehold { get { return turnThrehold; } set { turnThrehold = value; } } //JBR + + [Description("Snap angle in degrees.")] + [DefaultValue(45f)] + public float SnapAngle { get { return snapangle; } set { snapangle = value; } } //JBR + + #endregion + + public AngleControlF() + { + InitializeComponent(); + this.DoubleBuffered = true; + } + + #region Methods + + private void SetDrawRegion() + { + drawRegion = new Rectangle(0, 0, this.Width, this.Height); + drawRegion.X += 2; + drawRegion.Y += 2; + drawRegion.Width -= 4; + drawRegion.Height -= 4; + + origin = new Point(drawRegion.Width / 2 + drawOffset, drawRegion.Height / 2 + drawOffset); + + this.Refresh(); + } + + private static PointF DegreesToXY(float degrees, float radius, Point origin) + { + PointF xy = new PointF(); + float radians = degrees * Angle2D.PI / 180.0f; + + xy.X = (float)Math.Cos(radians) * radius + origin.X; + xy.Y = (float)Math.Sin(-radians) * radius + origin.Y; + + return xy; + } + + private static float XYToDegrees(Point xy, Point origin) + { + float xDiff = xy.X - origin.X; + float yDiff = xy.Y - origin.Y; + float angle = ((float)Math.Atan2(-yDiff, xDiff) * 180f / Angle2D.PI) + 360f; + if (angle < 0f) angle += 360f; + if (angle >= 360f) angle -= 360f; + return angle; + } + + private static int GetNumLoops(float angle) //JBR + { + if (angle == NO_ANGLE) return 0; + if (angle > 0f) return (int)angle / 360; + return ((int)angle - 359) / 360; + } + + #endregion + + #region Events + + private void AngleSelector_Load(object sender, EventArgs e) + { + SetDrawRegion(); + } + + private void AngleSelector_SizeChanged(object sender, EventArgs e) + { + this.Height = this.Width; // Keep it there and keep it square! + SetDrawRegion(); + } + + protected override void OnPaint(PaintEventArgs e) + { + Graphics g = e.Graphics; + + Pen outline; + Pen needle; + Pen marks; + SolidBrush fill; + Brush center; + Brush text; + + if (this.Enabled) + { + outline = new Pen(outlineColor, 2.0f); + fill = new SolidBrush(fillColor); + needle = new Pen(needleColor); + center = new SolidBrush(needleColor); + marks = new Pen(marksColor); + text = new SolidBrush(turnTextColor); + } + else + { + outline = new Pen(outlineInactiveColor, 2.0f); + fill = new SolidBrush(fillInactiveColor); + needle = new Pen(needleInactiveColor); + center = new SolidBrush(needleInactiveColor); + marks = new Pen(marksInactiveColor); + text = new SolidBrush(turnTextInactiveColor); + } + + Rectangle originSquare = new Rectangle(origin.X - 1, origin.Y - 1, 3, 3); + + //Draw circle + g.SmoothingMode = SmoothingMode.AntiAlias; + g.DrawEllipse(outline, drawRegion); + g.FillEllipse(fill, drawRegion); + + // Draw angle marks + int offset = this.Height / markScaler; + for (float di = 0f; di < 360f; di += snapangle) + { + PointF p1 = DegreesToXY(di, origin.X - 6, origin); + PointF p2 = DegreesToXY(di, origin.X - offset, origin); + g.DrawLine(marks, p1, p2); + } + + //JBR Draw loop number + if (allowLoops) + { + int loop = GetNumLoops(angle); + if (startAtOne && loop >= 0) loop++; + string loopStr = "↺" + loop.ToString(); + StringFormat strFormat = new StringFormat(); + strFormat.LineAlignment = StringAlignment.Far; + strFormat.Alignment = StringAlignment.Far; + if (loop != (startAtOne ? 1 : 0)) + { + g.DrawString(loopStr, Font, fill, drawRegion.Right - 1, drawRegion.Bottom - 1, strFormat); + g.DrawString(loopStr, Font, fill, drawRegion.Right + 1, drawRegion.Bottom - 1, strFormat); + g.DrawString(loopStr, Font, fill, drawRegion.Right - 1, drawRegion.Bottom + 1, strFormat); + g.DrawString(loopStr, Font, fill, drawRegion.Right + 1, drawRegion.Bottom + 1, strFormat); + g.DrawString(loopStr, Font, text, drawRegion.Right, drawRegion.Bottom, strFormat); + } + } + + // Draw needle + if (angle != NO_ANGLE) + { + PointF anglePoint = DegreesToXY(angle, origin.X - 4, origin); + g.DrawLine(needle, origin, anglePoint); + } + + g.SmoothingMode = SmoothingMode.HighSpeed; //Make the square edges sharp + g.FillRectangle(center, originSquare); + + //mxd. Dispose brushes + fill.Dispose(); + center.Dispose(); + outline.Dispose(); + marks.Dispose(); + needle.Dispose(); + + base.OnPaint(e); + } + + private void AngleSelector_MouseDown(object sender, MouseEventArgs e) //JBR supports looping + { + startClick = new Point(e.X, e.Y); + + if (e.Button == MouseButtons.Middle) return; + float thisAngle = XYToDegrees(startClick, origin); + + if (e.Button == MouseButtons.Left) + { + thisAngle = (float)Math.Round(thisAngle / snapangle) * snapangle; + if (thisAngle == 360f) thisAngle = 0f; + } + if (allowLoops) thisAngle += (float)GetNumLoops(angle) * 360f; + + if (thisAngle != angle) + { + angle = thisAngle; + if (!this.DesignMode && AngleChanged != null) AngleChanged(this, EventArgs.Empty); //Raise event + this.Refresh(); + } + } + + private void AngleSelector_MouseMove(object sender, MouseEventArgs e) //JBR supports looping + { + if (allowLoops && e.Button == MouseButtons.Middle) + { + int dist = (e.X - startClick.X) - (e.Y - startClick.Y); + if (dist < -turnThrehold || dist >= turnThrehold) + { + startClick = new Point(e.X, e.Y); + float thisAngle = angle + 360f; + if (dist < 0) thisAngle = angle - 360f; + + if (thisAngle != angle) + { + angle = thisAngle; + if (!this.DesignMode && AngleChanged != null) AngleChanged(this, EventArgs.Empty); //Raise event + this.Refresh(); + } + } + } + if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right) + { + startClick = new Point(e.X, e.Y); + float thisAngle = XYToDegrees(startClick, origin); + + if (e.Button == MouseButtons.Left) + { + thisAngle = (float)Math.Round(thisAngle / snapangle) * snapangle; + if (thisAngle == 360f) thisAngle = 0f; + } + if (allowLoops) thisAngle += (float)GetNumLoops(angle) * 360f; + + if (thisAngle != angle) + { + angle = thisAngle; + if (!this.DesignMode && AngleChanged != null) AngleChanged(this, EventArgs.Empty); //Raise event + this.Refresh(); + } + } + } + + #endregion + } +} diff --git a/Source/Core/GZBuilder/Controls/AngleControlF.resx b/Source/Core/GZBuilder/Controls/AngleControlF.resx new file mode 100644 index 0000000..5deed0a --- /dev/null +++ b/Source/Core/GZBuilder/Controls/AngleControlF.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Source/Core/General/MapManager.cs b/Source/Core/General/MapManager.cs index 1ca70b5..32ec324 100644 --- a/Source/Core/General/MapManager.cs +++ b/Source/Core/General/MapManager.cs @@ -2554,8 +2554,67 @@ namespace CodeImp.DoomBuilder Cursor.Current = Cursors.Default; } + //JBR + [BeginAction("snapvertsto1mp")] + private void SnapSelectedMapElementsTo1mp() + { + // Get selected elements + ICollection verts = map.GetSelectedVertices(true); + ICollection lines = map.GetSelectedLinedefs(true); // Sector lines are auto-selected when a sector is selected + ICollection things = map.GetSelectedThings(true); + + // Get vertices from selection + Dictionary vertstosnap = new Dictionary(verts.Count); + foreach (Vertex v in verts) vertstosnap.Add(v.Index, v); + foreach (Linedef l in lines) + { + if (!vertstosnap.ContainsKey(l.Start.Index)) vertstosnap.Add(l.Start.Index, l.Start); + if (!vertstosnap.ContainsKey(l.End.Index)) vertstosnap.Add(l.End.Index, l.End); + } + + // Anything to snap? + if (vertstosnap.Count == 0 && things.Count == 0) + { + General.Interface.DisplayStatus(StatusType.Warning, "Select any map element first!"); + return; + } + + // Make undo + undoredo.CreateUndo("Force snap map elements to 1mp"); + + // Do the snapping + Cursor.Current = Cursors.AppStarting; + + // Snap vertices? + int snappedverts = (vertstosnap.Count > 0 ? SnapVertices(vertstosnap.Values, false, true) : 0); + + // Snap things?.. + int snappedthings = (things.Count > 0 ? SnapThings(things, false, true) : 0); + + // Assemble status message + List message = new List(); + if (snappedverts > 0) message.Add(snappedverts + " vertices"); + if (snappedthings > 0) message.Add(snappedthings + " things"); + + // Display status + General.Interface.DisplayStatus(StatusType.Info, "Force snapped " + string.Join(" and ", message.ToArray())); + + // Invoke clear selection to update sector highlight overlay + //General.Actions.InvokeAction("builder_clearselection"); + + // Update cached values + General.Map.Map.Update(); + + // Map is changed + General.Map.IsChanged = true; + + // Done + General.Interface.RedrawDisplay(); + Cursor.Current = Cursors.Default; + } + //mxd - private int SnapVertices(IEnumerable verts) + private int SnapVertices(IEnumerable verts, bool snapToGrid = true, bool addAll = false) //JBR Added snapToGrid & addAll { int snappedCount = 0; List movedVerts = new List(); @@ -2565,9 +2624,10 @@ namespace CodeImp.DoomBuilder foreach(Vertex v in verts) { Vector2D pos = v.Position; - v.SnapToGrid(); + if (snapToGrid) v.SnapToGrid(); + else v.Move(GridSetup.SnappedToGrid(v.Position, 1f, 1f)); - if(v.Position.x != pos.x || v.Position.y != pos.y) + if (v.Position.x != pos.x || v.Position.y != pos.y || addAll) { snappedCount++; movedVerts.Add(v); @@ -2654,7 +2714,7 @@ namespace CodeImp.DoomBuilder } //mxd - private static int SnapThings(IEnumerable things) + private static int SnapThings(IEnumerable things, bool snapToGrid = true, bool addAll = false) //JBR Added snapToGrid & addAll { int snappedCount = 0; @@ -2662,8 +2722,9 @@ namespace CodeImp.DoomBuilder foreach(Thing t in things) { Vector2D pos = t.Position; - t.SnapToGrid(); - if(t.Position.x != pos.x || t.Position.y != pos.y) snappedCount++; + if (snapToGrid) t.SnapToGrid(); + else t.Move(GridSetup.SnappedToGrid(t.Position, 1f, 1f)); + if (t.Position.x != pos.x || t.Position.y != pos.y || addAll) snappedCount++; } return snappedCount; diff --git a/Source/Core/Geometry/Angle2D.cs b/Source/Core/Geometry/Angle2D.cs index 9d6a1de..36a8bb1 100644 --- a/Source/Core/Geometry/Angle2D.cs +++ b/Source/Core/Geometry/Angle2D.cs @@ -28,6 +28,7 @@ namespace CodeImp.DoomBuilder.Geometry public const float PI = (float)Math.PI; public const float PIHALF = (float)Math.PI * 0.5f; + public const float PIANDHALF = (float)Math.PI * 1.5f; //JBR public const float PI2 = (float)Math.PI * 2f; public const float PIDEG = 57.295779513082320876798154814105f; public const float SQRT2 = 1.4142135623730950488016887242097f; diff --git a/Source/Core/Geometry/TracksTracer.cs b/Source/Core/Geometry/TracksTracer.cs new file mode 100644 index 0000000..730cb37 --- /dev/null +++ b/Source/Core/Geometry/TracksTracer.cs @@ -0,0 +1,290 @@ +using System; +using System.Collections.Generic; +using CodeImp.DoomBuilder.Map; +using System.Collections.ObjectModel; +using CodeImp.DoomBuilder.IO; + +//JBR Tracks tracer +namespace CodeImp.DoomBuilder.Geometry +{ + public class TracksTracer + { + private List> openpaths; + private List> closepaths; + private bool isvalid; + + public List> OpenPaths { get { return openpaths; } } + public List> ClosePaths { get { return closepaths; } } + public bool IsValid { get { return isvalid; } } + + #region ==== Public methods ==== + + /// + /// Create tracks tracer class + /// + /// Linedefs to trace + public TracksTracer(ICollection lines) + { + isvalid = true; + + // Get all vertices connected to the linedefs + List allvertices = new List(); + foreach (Linedef ld in lines) + { + if (!allvertices.Contains(ld.Start)) allvertices.Add(ld.Start); + if (!allvertices.Contains(ld.End)) allvertices.Add(ld.End); + } + + // Create a list of valid vertices + List vertices = new List(); + foreach (Vertex v in allvertices) + { + List list = GetSelectedLinedefFromVertex(lines, v); + if (list.Count == 1 || list.Count == 2) vertices.Add(v); + } + + // Scan for open paths + openpaths = new List>(); + List processed = new List(); // for holding processed locations + foreach (Vertex v in vertices) + { + if (!processed.Contains(v.Position)) + { + List list1 = GetSelectedLinedefFromVertex(lines, v); + if (list1.Count == 1) + { + List path = new List(); + processed.Add(v.Position); + path.Add(v.Position); + Vertex v2 = (list1[0].Start == v) ? list1[0].End : list1[0].Start; + bool reverse = (list1[0].Start == v); + do + { + processed.Add(v2.Position); + path.Add(v2.Position); + List list2 = GetSelectedLinedefFromVertex(lines, v2); + if (list2.Count == 1) + { + // Linedef continue on the opposide side + v2 = (list2[0].Start == v2) ? list2[0].End : list2[0].Start; + } + else if (list2.Count == 2) + { + // Linedef continue in one of the opposide sides + Vertex v3 = (list2[0].Start == v2) ? list2[0].End : list2[0].Start; + if (processed.Contains(v3.Position)) + { + v2 = (list2[1].Start == v2) ? list2[1].End : list2[1].Start; + } + else + { + v2 = v3; + } + } + else + { + // Collided with a 3+ way vertex, no good... + isvalid = false; + break; + } + } while (!processed.Contains(v2.Position)); + if (reverse) path.Reverse(); + openpaths.Add(path); + } + } + } + + // Scan for close paths + closepaths = new List>(); + foreach (Vertex v in vertices) + { + if (!processed.Contains(v.Position)) + { + List list1 = GetSelectedLinedefFromVertex(lines, v); + List path = new List(); + processed.Add(v.Position); + path.Add(v.Position); + Vertex v2 = (list1[0].Start == v) ? list1[0].End : list1[0].Start; + do + { + processed.Add(v2.Position); + path.Add(v2.Position); + List list2 = GetSelectedLinedefFromVertex(lines, v2); + if (list2.Count == 2) + { + // Linedef continue in one of the opposide sides + Vertex v3 = (list2[0].Start == v2) ? list2[0].End : list2[0].Start; + if (processed.Contains(v3.Position)) + { + v2 = (list2[1].Start == v2) ? list2[1].End : list2[1].Start; + } + else + { + v2 = v3; + } + } + else + { + // Collided with a 3+ way vertex, no good... + isvalid = false; + break; + } + } while (!processed.Contains(v2.Position)); + path.Add(path[0]); // Close it by looping back to 0 + if (!InsideCheckFlip(path)) path.Reverse(); // Reverse if parallel was created outside + closepaths.Add(path); + } + } + } + + /// + /// Parallelize open-path, used to create roads + /// + /// Path in OpenPaths + /// Distance between parallels / Width of the track + /// Flip to the other side? + /// Parallel path + public static List ParallelizeOpenPath(List path, float distance, bool flip) + { + List parallel = new List(); + if (path.Count < 2) return parallel; + parallel.Add(GetPerpendicular3(path[0], path[0], path[1], distance, flip)); + int i = 2; + for (; i < path.Count; i++) + { + parallel.Add(GetPerpendicular3(path[i - 2], path[i - 1], path[i], distance, flip)); + } + parallel.Add(GetPerpendicular3(path[i - 2], path[i - 1], path[i - 1], distance, flip)); + return parallel; + } + + /// + /// Parallelize close-path, used to create roads + /// + /// Path in ClosePaths + /// Distance between parallels / Width of the track + /// Flip to the other side? + /// Parallel path + public static List ParallelizeClosePath(List path, float distance, bool flip) + { + List parallel = new List(); + if (path.Count < 2) return parallel; + int i = path.Count; + parallel.Add(GetPerpendicular3(path[i - 2], path[0], path[1], distance, flip)); + for (i = 2; i < path.Count; i++) + { + parallel.Add(GetPerpendicular3(path[i - 2], path[i - 1], path[i], distance, flip)); + } + parallel.Add(GetPerpendicular3(path[i - 2], path[i - 1], path[1], distance, flip)); + return parallel; + } + + /// + /// Add path into DrawnVertex list + /// + /// DrawnVertex list + /// Path to add + /// Stitch? + /// Stitchline? + /// Number of elements added + public static int AddPathToDrawnVertex(List dvl, List path, bool stitch, bool stitchline) + { + int elements = 0; + DrawnVertex newpoint = new DrawnVertex(); // struct + newpoint.stitch = stitch; + newpoint.stitchline = stitchline; + foreach (Vector2D pos in path) + { + if (pos.x < General.Map.Config.LeftBoundary || pos.x > General.Map.Config.RightBoundary || + pos.y > General.Map.Config.TopBoundary || pos.y < General.Map.Config.BottomBoundary) + continue; + + newpoint.pos = pos; + dvl.Add(newpoint); + elements++; + } + return elements; + } + + /// + /// Add point into DrawnVertex list + /// + /// DrawnVertex list + /// Point to add + /// Stitch? + /// Stitchline? + /// Number of elements added, 1 if success + public static int AddPointToDrawnVertex(List dvl, Vector2D pos, bool stitch, bool stitchline) + { + if (pos.x < General.Map.Config.LeftBoundary || pos.x > General.Map.Config.RightBoundary || + pos.y > General.Map.Config.TopBoundary || pos.y < General.Map.Config.BottomBoundary) + return 0; + + DrawnVertex newpoint = new DrawnVertex(); + newpoint.pos = pos; + newpoint.stitch = stitch; + newpoint.stitchline = stitchline; + dvl.Add(newpoint); + return 1; + } + + #endregion + + #region ==== Private methods ==== + + private bool InsideCheckFlip(List track) + { + if (track.Count < 2) return false; + + // Calculate median point + double x = 0, y = 0; + foreach (Vector2D v in track) + { + x += v.x; + y += v.y; + } + x /= track.Count; + y /= track.Count; + Vector2D median = new Vector2D((float)x, (float)y); + + // See which side is the first track line + Line2D line = new Line2D(track[0], track[1]); + return line.GetSideOfLine(median) >= 0; + } + + /// + /// Get selected linedefs from a vertex + /// + /// Collection of lines + /// Vertex to get linedefs from + /// List of all selected linedefs + private List GetSelectedLinedefFromVertex(ICollection lines, Vertex v) + { + List list = new List(); + foreach (Linedef ld in v.Linedefs) + { + if (lines.Contains(ld)) list.Add(ld); + } + return list; + } + + /// + /// Create line on the center vertex that is perpendicular to left and right vertices + /// + /// Left vertex + /// Center vertex + /// Right vertex + /// Scale of the perpendicular line + /// Should perpendicular go backwards? + /// Position of the perpendicular + private static Vector2D GetPerpendicular3(Vector2D left, Vector2D center, Vector2D right, float scale, bool backwards) + { + Vector2D deltapos = (right - center).GetNormal() - (left - center).GetNormal(); + if (backwards) deltapos = -deltapos; + Vector2D normalunit = deltapos.GetPerpendicular().GetNormal(); + return center + normalunit * scale; + } + + #endregion + } +} diff --git a/Source/Core/Geometry/Vector2D.cs b/Source/Core/Geometry/Vector2D.cs index 3bf2fd3..75b9b87 100644 --- a/Source/Core/Geometry/Vector2D.cs +++ b/Source/Core/Geometry/Vector2D.cs @@ -341,6 +341,26 @@ namespace CodeImp.DoomBuilder.Geometry return new Vector2D(rx, ry); } + //JBR Linear interpolate into... + public Vector2D LinearInto(Vector2D dest, float delta) + { + float px = x + (dest.x - x) * delta; + float py = y + (dest.y - y) * delta; + return new Vector2D(px, py); + } + + //JBR Check if close to another vector (square collision) + public bool CloseTo(Vector2D dest, float epsilon) + { + return Math.Abs(dest.x - x) <= epsilon && Math.Abs(dest.y - y) <= epsilon; + } + + //JBR Round coordinates + public Vector2D GetRounded() + { + return new Vector2D((float)Math.Round(x), (float)Math.Round(y)); + } + // Checks if the Vector has valid values for x and y public bool IsFinite() { diff --git a/Source/Core/Properties/Resources.Designer.cs b/Source/Core/Properties/Resources.Designer.cs index 57be92f..12d94ff 100644 --- a/Source/Core/Properties/Resources.Designer.cs +++ b/Source/Core/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.42000 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -// der Code erneut generiert wird. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,12 +13,12 @@ namespace CodeImp.DoomBuilder.Properties { /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert - // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. - // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] @@ -33,7 +33,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap About { get { @@ -71,7 +71,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Add { get { @@ -81,7 +81,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Angle { get { @@ -91,7 +91,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ArrowDown { get { @@ -101,7 +101,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ArrowUp { get { @@ -111,7 +111,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap axis1 { get { @@ -121,7 +121,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Brightness { get { @@ -131,7 +131,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Check { get { @@ -141,7 +141,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Clear { get { @@ -151,7 +151,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ClearTextures { get { @@ -161,7 +161,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CLogo { get { @@ -171,7 +171,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Close { get { @@ -181,7 +181,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Collapse { get { @@ -191,7 +191,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ColorPick { get { @@ -201,7 +201,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Comment { get { @@ -211,7 +211,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CommentInfo { get { @@ -221,7 +221,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CommentProblem { get { @@ -231,7 +231,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CommentQuestion { get { @@ -241,7 +241,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CommentRegular { get { @@ -251,7 +251,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CommentSmile { get { @@ -261,7 +261,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Configuration { get { @@ -271,7 +271,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Copy { get { @@ -281,7 +281,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Cursor { get { @@ -291,7 +291,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Cut { get { @@ -301,7 +301,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap DockerCollapse { get { @@ -311,7 +311,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap DockerExpand { get { @@ -321,7 +321,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ErrorLarge { get { @@ -331,7 +331,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Expand { get { @@ -341,7 +341,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Failed { get { @@ -351,7 +351,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap File { get { @@ -361,7 +361,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Filter { get { @@ -371,7 +371,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap fog { get { @@ -381,7 +381,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Folder { get { @@ -391,7 +391,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap FolderExplore { get { @@ -401,7 +401,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap fx { get { @@ -411,7 +411,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Grid2 { get { @@ -421,7 +421,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Grid2_arrowup { get { @@ -431,7 +431,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Grid4 { get { @@ -441,7 +441,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap GridDecrease { get { @@ -451,7 +451,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap GridDynamic { get { @@ -461,7 +461,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap GridIncrease { get { @@ -471,7 +471,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Group { get { @@ -481,7 +481,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap GroupAdd { get { @@ -491,7 +491,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap GroupRemove { get { @@ -501,7 +501,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap GZDB_Logo_small { get { @@ -511,7 +511,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Icon ähnlich wie (Symbol). + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// internal static System.Drawing.Icon GZDB2 { get { @@ -521,7 +521,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Help { get { @@ -531,7 +531,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Hourglass { get { @@ -541,7 +541,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ImageStack { get { @@ -551,7 +551,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap InfoLine { get { @@ -561,7 +561,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap InfoPanelCollapse { get { @@ -571,7 +571,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap InfoPanelExpand { get { @@ -581,7 +581,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Keyboard { get { @@ -591,7 +591,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap KnownTextureSet { get { @@ -601,7 +601,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Light { get { @@ -611,7 +611,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Light_animate { get { @@ -621,7 +621,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Lightbulb { get { @@ -631,7 +631,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap LightDisabled { get { @@ -641,7 +641,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap LinedefColorPresets { get { @@ -651,7 +651,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Link { get { @@ -661,7 +661,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap List { get { @@ -671,7 +671,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap List_Images { get { @@ -681,7 +681,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Marine { get { @@ -691,7 +691,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap MCrash { get { @@ -701,7 +701,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap mergegeometry { get { @@ -711,7 +711,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap mergegeometry2 { get { @@ -721,7 +721,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap MissingTexture { get { @@ -731,7 +731,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap MissingThing { get { @@ -741,7 +741,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap MixedThings { get { @@ -751,7 +751,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap MLogo { get { @@ -761,7 +761,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Model { get { @@ -771,7 +771,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Model_selected { get { @@ -781,7 +781,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ModelDisabled { get { @@ -791,7 +791,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ModelFiltered { get { @@ -801,7 +801,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Monster2 { get { @@ -811,7 +811,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Monster3 { get { @@ -821,7 +821,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap NewMap { get { @@ -831,7 +831,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap NewScript { get { @@ -841,7 +841,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap OpenMap { get { @@ -851,7 +851,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap OpenScript { get { @@ -861,7 +861,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Paste { get { @@ -871,7 +871,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap PasteSpecial { get { @@ -881,7 +881,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Pin { get { @@ -891,7 +891,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Prefab { get { @@ -901,7 +901,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Prefab2 { get { @@ -911,7 +911,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Preferences { get { @@ -921,7 +921,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Properties { get { @@ -931,7 +931,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap PuzzlePiece { get { @@ -941,7 +941,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Question { get { @@ -951,7 +951,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Redo { get { @@ -961,7 +961,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Reload { get { @@ -971,7 +971,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Replace { get { @@ -981,7 +981,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Reset { get { @@ -991,7 +991,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SaveAll { get { @@ -1001,7 +1001,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SaveMap { get { @@ -1011,7 +1011,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SaveScript { get { @@ -1021,7 +1021,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Screenshot { get { @@ -1031,7 +1031,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ScreenshotActiveWindow { get { @@ -1041,7 +1041,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Script2 { get { @@ -1051,7 +1051,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ScriptCompile { get { @@ -1059,23 +1059,21 @@ namespace CodeImp.DoomBuilder.Properties { return ((System.Drawing.Bitmap)(obj)); } } - + /// - /// Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ScriptConstant - { + internal static System.Drawing.Bitmap ScriptConstant { get { object obj = ResourceManager.GetObject("ScriptConstant", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - + /// - /// Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ScriptError - { + internal static System.Drawing.Bitmap ScriptError { get { object obj = ResourceManager.GetObject("ScriptError", resourceCulture); return ((System.Drawing.Bitmap)(obj)); @@ -1083,7 +1081,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ScriptHelp { get { @@ -1091,12 +1089,11 @@ namespace CodeImp.DoomBuilder.Properties { return ((System.Drawing.Bitmap)(obj)); } } - + /// - /// Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ScriptKeyword - { + internal static System.Drawing.Bitmap ScriptKeyword { get { object obj = ResourceManager.GetObject("ScriptKeyword", resourceCulture); return ((System.Drawing.Bitmap)(obj)); @@ -1104,7 +1101,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ScriptPalette { get { @@ -1112,19 +1109,21 @@ namespace CodeImp.DoomBuilder.Properties { return ((System.Drawing.Bitmap)(obj)); } } - - internal static System.Drawing.Bitmap ScriptProperty { + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ScriptProperty { get { object obj = ResourceManager.GetObject("ScriptProperty", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } - } - + } + /// - /// Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ScriptSnippet - { + internal static System.Drawing.Bitmap ScriptSnippet { get { object obj = ResourceManager.GetObject("ScriptSnippet", resourceCulture); return ((System.Drawing.Bitmap)(obj)); @@ -1132,7 +1131,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Search { get { @@ -1142,7 +1141,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SearchClear { get { @@ -1152,7 +1151,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SearchMatch { get { @@ -1162,7 +1161,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SearchMatchCase { get { @@ -1172,7 +1171,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SearchNext { get { @@ -1182,7 +1181,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SearchPrev { get { @@ -1192,7 +1191,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Sky { get { @@ -1202,7 +1201,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + /// Looks up a localized resource of type System.Byte[]. /// internal static byte[] SkySphere { get { @@ -1212,7 +1211,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SlimDX_small { get { @@ -1222,7 +1221,17 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Snap1mp { + get { + object obj = ResourceManager.GetObject("Snap1mp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SnapVerts { get { @@ -1232,7 +1241,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Splash3_small { get { @@ -1242,7 +1251,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Splash3_trans { get { @@ -1252,7 +1261,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Status0 { get { @@ -1262,7 +1271,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Status1 { get { @@ -1272,7 +1281,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Status10 { get { @@ -1282,7 +1291,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Status11 { get { @@ -1292,7 +1301,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Status12 { get { @@ -1302,7 +1311,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Status2 { get { @@ -1312,7 +1321,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap TagStatistics { get { @@ -1322,7 +1331,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Test { get { @@ -1332,7 +1341,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Text { get { @@ -1340,37 +1349,39 @@ namespace CodeImp.DoomBuilder.Properties { return ((System.Drawing.Bitmap)(obj)); } } - - internal static System.Drawing.Bitmap TextIndent - { - get - { + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TextIndent { + get { object obj = ResourceManager.GetObject("TextIndent", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - - internal static System.Drawing.Bitmap TextUnindent - { - get - { + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TextUnindent { + get { object obj = ResourceManager.GetObject("TextUnindent", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - - internal static System.Drawing.Bitmap TextWhitespace - { - get - { + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TextWhitespace { + get { object obj = ResourceManager.GetObject("TextWhitespace", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } - - + /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ThingStatistics { get { @@ -1380,7 +1391,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap treeview { get { @@ -1390,7 +1401,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Undo { get { @@ -1400,7 +1411,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap UnknownImage { get { @@ -1410,7 +1421,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Unlink { get { @@ -1420,7 +1431,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Unpin { get { @@ -1430,7 +1441,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Update { get { @@ -1440,7 +1451,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ViewBrightness { get { @@ -1450,7 +1461,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ViewNormal { get { @@ -1460,7 +1471,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ViewTextureCeiling { get { @@ -1470,7 +1481,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ViewTextureFloor { get { @@ -1480,7 +1491,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap VisualVertices { get { @@ -1490,7 +1501,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Warning { get { @@ -1500,7 +1511,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap WarningLarge { get { @@ -1510,7 +1521,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap WarningOff { get { @@ -1520,7 +1531,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap WordWrap { get { @@ -1530,7 +1541,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ZB16 { get { @@ -1540,7 +1551,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ZBLogo { get { @@ -1550,7 +1561,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap zonebuilder { get { @@ -1560,7 +1571,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Zoom { get { @@ -1570,7 +1581,7 @@ namespace CodeImp.DoomBuilder.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Zoom_arrowup { get { diff --git a/Source/Core/Properties/Resources.resx b/Source/Core/Properties/Resources.resx index 7ac990d..ce183c3 100644 --- a/Source/Core/Properties/Resources.resx +++ b/Source/Core/Properties/Resources.resx @@ -264,7 +264,7 @@ ..\Resources\ScriptConstant.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\FolderExplore.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -574,4 +574,7 @@ ..\Resources\ScriptProperty.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Snap1mp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Source/Core/Resources/Actions.cfg b/Source/Core/Resources/Actions.cfg index 5c4bb6d..56718c7 100644 --- a/Source/Core/Resources/Actions.cfg +++ b/Source/Core/Resources/Actions.cfg @@ -142,6 +142,17 @@ snapvertstogrid allowscroll = false; } +//JBR +snapvertsto1mp +{ + title = "Force Snap Selected Elements to 1mp"; + category = "edit"; + description = "Force snap selected map elements to 1mp."; + allowkeys = true; + allowmouse = false; + allowscroll = false; +} + configuration { title = "Game Configurations"; diff --git a/Source/Core/Resources/Snap1mp.png b/Source/Core/Resources/Snap1mp.png new file mode 100644 index 0000000000000000000000000000000000000000..21c715d6db1184601cfeb8c206c3d8aa9eaba580 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ZJsWUAr`&KX$c7%(i0Lq5*ipL zWxBDkwN private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.Windows.Forms.Label label5; - System.Windows.Forms.Label label6; - System.Windows.Forms.Label label3; - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigForm)); - System.Windows.Forms.Label label2; - System.Windows.Forms.Label label7; - System.Windows.Forms.Label label9; - System.Windows.Forms.Label label1; - System.Windows.Forms.Label label4; - System.Windows.Forms.Label label10; - this.labelparameters = new System.Windows.Forms.Label(); - this.cancel = new System.Windows.Forms.Button(); - this.apply = new System.Windows.Forms.Button(); - this.tabs = new System.Windows.Forms.TabControl(); - this.tabresources = new System.Windows.Forms.TabPage(); - this.configdata = new CodeImp.DoomBuilder.Controls.ResourceListEditor(); - this.tabnodebuilder = new System.Windows.Forms.TabPage(); - this.nodebuildertest = new System.Windows.Forms.ComboBox(); - this.nodebuildersave = new System.Windows.Forms.ComboBox(); - this.tabtesting = new System.Windows.Forms.TabPage(); - this.gametype = new CodeImp.DoomBuilder.Controls.ActionSelectorControl(false); - this.skin = new System.Windows.Forms.ComboBox(); - this.btnRemoveEngine = new System.Windows.Forms.Button(); - this.btnNewEngine = new System.Windows.Forms.Button(); - this.cbEngineSelector = new System.Windows.Forms.ComboBox(); - this.label13 = new System.Windows.Forms.Label(); - this.shortpaths = new System.Windows.Forms.CheckBox(); - this.customparameters = new System.Windows.Forms.CheckBox(); - this.skill = new CodeImp.DoomBuilder.Controls.ActionSelectorControl(); - this.browsetestprogram = new System.Windows.Forms.Button(); - this.noresultlabel = new System.Windows.Forms.Label(); - this.testresult = new System.Windows.Forms.TextBox(); - this.labelresult = new System.Windows.Forms.Label(); - this.testparameters = new System.Windows.Forms.TextBox(); - this.testapplication = new System.Windows.Forms.TextBox(); - this.tabtextures = new System.Windows.Forms.TabPage(); - this.listtextures = new System.Windows.Forms.ListView(); - this.smallimages = new System.Windows.Forms.ImageList(this.components); - this.restoretexturesets = new System.Windows.Forms.Button(); - this.edittextureset = new System.Windows.Forms.Button(); - this.pastetexturesets = new System.Windows.Forms.Button(); - this.copytexturesets = new System.Windows.Forms.Button(); - this.removetextureset = new System.Windows.Forms.Button(); - this.addtextureset = new System.Windows.Forms.Button(); - this.tabmodes = new System.Windows.Forms.TabPage(); - this.startmode = new System.Windows.Forms.ComboBox(); - this.label11 = new System.Windows.Forms.Label(); - this.listmodes = new System.Windows.Forms.ListView(); - this.colmodename = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.colmodeplugin = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.listconfigs = new System.Windows.Forms.ListView(); - this.columnname = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.copypastemenu = new System.Windows.Forms.ContextMenuStrip(this.components); - this.copyall = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.pasteall = new System.Windows.Forms.ToolStripMenuItem(); - this.pasteresources = new System.Windows.Forms.ToolStripMenuItem(); - this.pasteengines = new System.Windows.Forms.ToolStripMenuItem(); - this.pastecolorpresets = new System.Windows.Forms.ToolStripMenuItem(); - this.testprogramdialog = new System.Windows.Forms.OpenFileDialog(); - this.hintlabel = new System.Windows.Forms.Label(); - this.hint = new System.Windows.Forms.PictureBox(); - this.tooltip = new System.Windows.Forms.ToolTip(this.components); - label5 = new System.Windows.Forms.Label(); - label6 = new System.Windows.Forms.Label(); - label3 = new System.Windows.Forms.Label(); - label2 = new System.Windows.Forms.Label(); - label7 = new System.Windows.Forms.Label(); - label9 = new System.Windows.Forms.Label(); - label1 = new System.Windows.Forms.Label(); - label4 = new System.Windows.Forms.Label(); - label10 = new System.Windows.Forms.Label(); - label14 = new System.Windows.Forms.Label(); - label12 = new System.Windows.Forms.Label(); - label8 = new System.Windows.Forms.Label(); - this.tabs.SuspendLayout(); - this.tabresources.SuspendLayout(); - this.tabnodebuilder.SuspendLayout(); - this.tabtesting.SuspendLayout(); - this.tabtextures.SuspendLayout(); - this.tabmodes.SuspendLayout(); - this.copypastemenu.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.hint)).BeginInit(); - this.SuspendLayout(); - // - // label5 - // - label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - label5.AutoSize = true; - label5.Location = new System.Drawing.Point(12, 272); - label5.Name = "label5"; - label5.Size = new System.Drawing.Size(299, 39); - label5.TabIndex = 19; - label5.Text = "Drag && drop resources to add them.\r\nDrag items to change order (lower items over" + + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.Label label5; + System.Windows.Forms.Label label6; + System.Windows.Forms.Label label3; + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigForm)); + System.Windows.Forms.Label label2; + System.Windows.Forms.Label label7; + System.Windows.Forms.Label label9; + System.Windows.Forms.Label label1; + System.Windows.Forms.Label label4; + System.Windows.Forms.Label label10; + this.label14 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.labelparameters = new System.Windows.Forms.Label(); + this.cancel = new System.Windows.Forms.Button(); + this.apply = new System.Windows.Forms.Button(); + this.tabs = new System.Windows.Forms.TabControl(); + this.tabresources = new System.Windows.Forms.TabPage(); + this.configdata = new CodeImp.DoomBuilder.Controls.ResourceListEditor(); + this.tabnodebuilder = new System.Windows.Forms.TabPage(); + this.nodebuildertest = new System.Windows.Forms.ComboBox(); + this.nodebuildersave = new System.Windows.Forms.ComboBox(); + this.tabtesting = new System.Windows.Forms.TabPage(); + this.gametype = new CodeImp.DoomBuilder.Controls.ActionSelectorControl(); + this.skin = new System.Windows.Forms.ComboBox(); + this.btnRemoveEngine = new System.Windows.Forms.Button(); + this.btnNewEngine = new System.Windows.Forms.Button(); + this.cbEngineSelector = new System.Windows.Forms.ComboBox(); + this.label13 = new System.Windows.Forms.Label(); + this.shortpaths = new System.Windows.Forms.CheckBox(); + this.customparameters = new System.Windows.Forms.CheckBox(); + this.skill = new CodeImp.DoomBuilder.Controls.ActionSelectorControl(); + this.browsetestprogram = new System.Windows.Forms.Button(); + this.noresultlabel = new System.Windows.Forms.Label(); + this.testresult = new System.Windows.Forms.TextBox(); + this.labelresult = new System.Windows.Forms.Label(); + this.testparameters = new System.Windows.Forms.TextBox(); + this.testapplication = new System.Windows.Forms.TextBox(); + this.tabtextures = new System.Windows.Forms.TabPage(); + this.listtextures = new System.Windows.Forms.ListView(); + this.smallimages = new System.Windows.Forms.ImageList(this.components); + this.restoretexturesets = new System.Windows.Forms.Button(); + this.edittextureset = new System.Windows.Forms.Button(); + this.pastetexturesets = new System.Windows.Forms.Button(); + this.copytexturesets = new System.Windows.Forms.Button(); + this.removetextureset = new System.Windows.Forms.Button(); + this.addtextureset = new System.Windows.Forms.Button(); + this.tabmodes = new System.Windows.Forms.TabPage(); + this.startmode = new System.Windows.Forms.ComboBox(); + this.label11 = new System.Windows.Forms.Label(); + this.listmodes = new System.Windows.Forms.ListView(); + this.colmodename = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.colmodeplugin = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.listconfigs = new System.Windows.Forms.ListView(); + this.columnname = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.copypastemenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.copyall = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.pasteall = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteresources = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteengines = new System.Windows.Forms.ToolStripMenuItem(); + this.pastecolorpresets = new System.Windows.Forms.ToolStripMenuItem(); + this.testprogramdialog = new System.Windows.Forms.OpenFileDialog(); + this.hintlabel = new System.Windows.Forms.Label(); + this.hint = new System.Windows.Forms.PictureBox(); + this.tooltip = new System.Windows.Forms.ToolTip(this.components); + label5 = new System.Windows.Forms.Label(); + label6 = new System.Windows.Forms.Label(); + label3 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + label7 = new System.Windows.Forms.Label(); + label9 = new System.Windows.Forms.Label(); + label1 = new System.Windows.Forms.Label(); + label4 = new System.Windows.Forms.Label(); + label10 = new System.Windows.Forms.Label(); + this.tabs.SuspendLayout(); + this.tabresources.SuspendLayout(); + this.tabnodebuilder.SuspendLayout(); + this.tabtesting.SuspendLayout(); + this.tabtextures.SuspendLayout(); + this.tabmodes.SuspendLayout(); + this.copypastemenu.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hint)).BeginInit(); + this.SuspendLayout(); + // + // label5 + // + label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + label5.AutoSize = true; + label5.Location = new System.Drawing.Point(12, 272); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(299, 39); + label5.TabIndex = 19; + label5.Text = "Drag && drop resources to add them.\r\nDrag items to change order (lower items over" + "ride higher items).\r\nUse the context menu to cut, copy, paste or remove items."; - // - // label6 - // - label6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + // label6 + // + label6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label6.AutoEllipsis = true; - label6.Location = new System.Drawing.Point(12, 15); - label6.Name = "label6"; - label6.Size = new System.Drawing.Size(457, 37); - label6.TabIndex = 21; - label6.Text = "These are the resources that will be loaded when this configuration is chosen for" + + label6.AutoEllipsis = true; + label6.Location = new System.Drawing.Point(12, 15); + label6.Name = "label6"; + label6.Size = new System.Drawing.Size(457, 37); + label6.TabIndex = 21; + label6.Text = "These are the resources that will be loaded when this configuration is chosen for" + " editing. Usually you add your IWAD (like DOOM.WAD or DOOM2.WAD) here."; - // - // label3 - // - label3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + // label3 + // + label3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label3.AutoEllipsis = true; - label3.Location = new System.Drawing.Point(12, 15); - label3.Name = "label3"; - label3.Size = new System.Drawing.Size(468, 54); - label3.TabIndex = 22; - label3.Text = resources.GetString("label3.Text"); - // - // label2 - // - label2.AutoSize = true; - label2.Location = new System.Drawing.Point(12, 86); - label2.Name = "label2"; - label2.Size = new System.Drawing.Size(144, 13); - label2.TabIndex = 24; - label2.Text = "Configuration for saving map:"; - // - // label7 - // - label7.AutoSize = true; - label7.Location = new System.Drawing.Point(35, 125); - label7.Name = "label7"; - label7.Size = new System.Drawing.Size(121, 13); - label7.TabIndex = 26; - label7.Text = "Configuration for testing:"; - // - // label9 - // - label9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + label3.AutoEllipsis = true; + label3.Location = new System.Drawing.Point(12, 15); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(468, 54); + label3.TabIndex = 22; + label3.Text = resources.GetString("label3.Text"); + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(12, 86); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(144, 13); + label2.TabIndex = 24; + label2.Text = "Configuration for saving map:"; + // + // label7 + // + label7.AutoSize = true; + label7.Location = new System.Drawing.Point(35, 125); + label7.Name = "label7"; + label7.Size = new System.Drawing.Size(121, 13); + label7.TabIndex = 26; + label7.Text = "Configuration for testing:"; + // + // label9 + // + label9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label9.AutoEllipsis = true; - label9.Location = new System.Drawing.Point(12, 15); - label9.Name = "label9"; - label9.Size = new System.Drawing.Size(477, 54); - label9.TabIndex = 23; - label9.Text = "Here you can specify the program settings to use for launching a game engine when" + + label9.AutoEllipsis = true; + label9.Location = new System.Drawing.Point(12, 15); + label9.Name = "label9"; + label9.Size = new System.Drawing.Size(477, 54); + label9.TabIndex = 23; + label9.Text = "Here you can specify the program settings to use for launching a game engine when" + " testing the map. Press F1 for help with custom parameters."; - // - // label1 - // - label1.AutoSize = true; - label1.Location = new System.Drawing.Point(15, 89); - label1.Name = "label1"; - label1.Size = new System.Drawing.Size(62, 13); - label1.TabIndex = 24; - label1.Text = "Application:"; - // - // label4 - // - label4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + // label1 + // + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(15, 89); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(62, 13); + label1.TabIndex = 24; + label1.Text = "Application:"; + // + // label4 + // + label4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label4.AutoEllipsis = true; - label4.Location = new System.Drawing.Point(12, 15); - label4.Name = "label4"; - label4.Size = new System.Drawing.Size(483, 46); - label4.TabIndex = 24; - label4.Text = "Texture Sets are a way to group textures and flats into categories, so that you c" + + label4.AutoEllipsis = true; + label4.Location = new System.Drawing.Point(12, 15); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(483, 46); + label4.TabIndex = 24; + label4.Text = "Texture Sets are a way to group textures and flats into categories, so that you c" + "an easily find a texture for the specific style or purpose you need by selecting" + " one of the categories."; - // - // label10 - // - label10.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + // label10 + // + label10.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label10.AutoEllipsis = true; - label10.Location = new System.Drawing.Point(12, 15); - label10.Name = "label10"; - label10.Size = new System.Drawing.Size(470, 58); - label10.TabIndex = 25; - label10.Text = resources.GetString("label10.Text"); - // - // labelparameters - // - this.labelparameters.AutoSize = true; - this.labelparameters.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelparameters.ForeColor = System.Drawing.SystemColors.HotTrack; - this.labelparameters.Location = new System.Drawing.Point(16, 169); - this.labelparameters.Name = "labelparameters"; - this.labelparameters.Size = new System.Drawing.Size(63, 13); - this.labelparameters.TabIndex = 27; - this.labelparameters.Text = "Parameters:"; - this.tooltip.SetToolTip(this.labelparameters, resources.GetString("labelparameters.ToolTip")); - this.labelparameters.Visible = false; - // - // cancel - // - 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(671, 379); - this.cancel.Name = "cancel"; - this.cancel.Size = new System.Drawing.Size(112, 25); - this.cancel.TabIndex = 3; - this.cancel.Text = "Cancel"; - this.cancel.UseVisualStyleBackColor = true; - this.cancel.Click += new System.EventHandler(this.cancel_Click); - // - // 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(553, 379); - this.apply.Name = "apply"; - this.apply.Size = new System.Drawing.Size(112, 25); - this.apply.TabIndex = 2; - this.apply.Text = "OK"; - this.apply.UseVisualStyleBackColor = true; - this.apply.Click += new System.EventHandler(this.apply_Click); - // - // tabs - // - this.tabs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + label10.AutoEllipsis = true; + label10.Location = new System.Drawing.Point(12, 15); + label10.Name = "label10"; + label10.Size = new System.Drawing.Size(470, 58); + label10.TabIndex = 25; + label10.Text = resources.GetString("label10.Text"); + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(231, 119); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(58, 13); + this.label14.TabIndex = 43; + this.label14.Text = "Gametype:"; + this.label14.Visible = false; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(48, 119); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(31, 13); + this.label12.TabIndex = 41; + this.label12.Text = "Skin:"; + this.label12.Visible = false; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(21, 119); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(58, 13); + this.label8.TabIndex = 34; + this.label8.Text = "Skill Level:"; + // + // labelparameters + // + this.labelparameters.AutoSize = true; + this.labelparameters.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelparameters.ForeColor = System.Drawing.SystemColors.HotTrack; + this.labelparameters.Location = new System.Drawing.Point(16, 169); + this.labelparameters.Name = "labelparameters"; + this.labelparameters.Size = new System.Drawing.Size(63, 13); + this.labelparameters.TabIndex = 27; + this.labelparameters.Text = "Parameters:"; + this.tooltip.SetToolTip(this.labelparameters, resources.GetString("labelparameters.ToolTip")); + this.labelparameters.Visible = false; + // + // cancel + // + 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(671, 379); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(112, 25); + this.cancel.TabIndex = 3; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // 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(553, 379); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(112, 25); + this.apply.TabIndex = 2; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // tabs + // + this.tabs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right))); - this.tabs.Controls.Add(this.tabresources); - this.tabs.Controls.Add(this.tabnodebuilder); - this.tabs.Controls.Add(this.tabtesting); - this.tabs.Controls.Add(this.tabtextures); - this.tabs.Controls.Add(this.tabmodes); - this.tabs.Enabled = false; - this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabs.Location = new System.Drawing.Point(277, 12); - this.tabs.Name = "tabs"; - this.tabs.Padding = new System.Drawing.Point(24, 3); - this.tabs.SelectedIndex = 0; - this.tabs.Size = new System.Drawing.Size(506, 358); - this.tabs.TabIndex = 1; - // - // tabresources - // - this.tabresources.Controls.Add(label6); - this.tabresources.Controls.Add(this.configdata); - this.tabresources.Controls.Add(label5); - this.tabresources.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabresources.Location = new System.Drawing.Point(4, 22); - this.tabresources.Name = "tabresources"; - this.tabresources.Padding = new System.Windows.Forms.Padding(6); - this.tabresources.Size = new System.Drawing.Size(498, 332); - this.tabresources.TabIndex = 0; - this.tabresources.Text = "Resources"; - this.tabresources.UseVisualStyleBackColor = true; - // - // configdata - // - this.configdata.AllowDrop = true; - this.configdata.DialogOffset = new System.Drawing.Point(-120, 10); - this.configdata.Location = new System.Drawing.Point(15, 55); - this.configdata.Name = "configdata"; - this.configdata.Size = new System.Drawing.Size(467, 204); - this.configdata.TabIndex = 0; - this.configdata.OnContentChanged += new CodeImp.DoomBuilder.Controls.ResourceListEditor.ContentChanged(this.resourcelocations_OnContentChanged); - // - // tabnodebuilder - // - this.tabnodebuilder.Controls.Add(label7); - this.tabnodebuilder.Controls.Add(this.nodebuildertest); - this.tabnodebuilder.Controls.Add(label2); - this.tabnodebuilder.Controls.Add(this.nodebuildersave); - this.tabnodebuilder.Controls.Add(label3); - this.tabnodebuilder.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabnodebuilder.Location = new System.Drawing.Point(4, 22); - this.tabnodebuilder.Name = "tabnodebuilder"; - this.tabnodebuilder.Padding = new System.Windows.Forms.Padding(6); - this.tabnodebuilder.Size = new System.Drawing.Size(498, 332); - this.tabnodebuilder.TabIndex = 1; - this.tabnodebuilder.Text = "Nodebuilder"; - this.tabnodebuilder.UseVisualStyleBackColor = true; - // - // nodebuildertest - // - this.nodebuildertest.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.tabs.Controls.Add(this.tabresources); + this.tabs.Controls.Add(this.tabnodebuilder); + this.tabs.Controls.Add(this.tabtesting); + this.tabs.Controls.Add(this.tabtextures); + this.tabs.Controls.Add(this.tabmodes); + this.tabs.Enabled = false; + this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabs.Location = new System.Drawing.Point(277, 12); + this.tabs.Name = "tabs"; + this.tabs.Padding = new System.Drawing.Point(24, 3); + this.tabs.SelectedIndex = 0; + this.tabs.Size = new System.Drawing.Size(506, 358); + this.tabs.TabIndex = 1; + // + // tabresources + // + this.tabresources.Controls.Add(label6); + this.tabresources.Controls.Add(this.configdata); + this.tabresources.Controls.Add(label5); + this.tabresources.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabresources.Location = new System.Drawing.Point(4, 22); + this.tabresources.Name = "tabresources"; + this.tabresources.Padding = new System.Windows.Forms.Padding(6); + this.tabresources.Size = new System.Drawing.Size(498, 332); + this.tabresources.TabIndex = 0; + this.tabresources.Text = "Resources"; + this.tabresources.UseVisualStyleBackColor = true; + // + // configdata + // + this.configdata.AllowDrop = true; + this.configdata.DialogOffset = new System.Drawing.Point(-120, 10); + this.configdata.Location = new System.Drawing.Point(15, 55); + this.configdata.Name = "configdata"; + this.configdata.Size = new System.Drawing.Size(467, 204); + this.configdata.TabIndex = 0; + this.configdata.OnContentChanged += new CodeImp.DoomBuilder.Controls.ResourceListEditor.ContentChanged(this.resourcelocations_OnContentChanged); + // + // tabnodebuilder + // + this.tabnodebuilder.Controls.Add(label7); + this.tabnodebuilder.Controls.Add(this.nodebuildertest); + this.tabnodebuilder.Controls.Add(label2); + this.tabnodebuilder.Controls.Add(this.nodebuildersave); + this.tabnodebuilder.Controls.Add(label3); + this.tabnodebuilder.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabnodebuilder.Location = new System.Drawing.Point(4, 22); + this.tabnodebuilder.Name = "tabnodebuilder"; + this.tabnodebuilder.Padding = new System.Windows.Forms.Padding(6); + this.tabnodebuilder.Size = new System.Drawing.Size(498, 332); + this.tabnodebuilder.TabIndex = 1; + this.tabnodebuilder.Text = "Nodebuilder"; + this.tabnodebuilder.UseVisualStyleBackColor = true; + // + // nodebuildertest + // + this.nodebuildertest.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.nodebuildertest.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.nodebuildertest.FormattingEnabled = true; - this.nodebuildertest.Location = new System.Drawing.Point(167, 122); - this.nodebuildertest.Name = "nodebuildertest"; - this.nodebuildertest.Size = new System.Drawing.Size(313, 21); - this.nodebuildertest.Sorted = true; - this.nodebuildertest.TabIndex = 1; - this.nodebuildertest.SelectedIndexChanged += new System.EventHandler(this.nodebuildertest_SelectedIndexChanged); - // - // nodebuildersave - // - this.nodebuildersave.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.nodebuildertest.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.nodebuildertest.FormattingEnabled = true; + this.nodebuildertest.Location = new System.Drawing.Point(167, 122); + this.nodebuildertest.Name = "nodebuildertest"; + this.nodebuildertest.Size = new System.Drawing.Size(313, 21); + this.nodebuildertest.Sorted = true; + this.nodebuildertest.TabIndex = 1; + this.nodebuildertest.SelectedIndexChanged += new System.EventHandler(this.nodebuildertest_SelectedIndexChanged); + // + // nodebuildersave + // + this.nodebuildersave.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.nodebuildersave.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.nodebuildersave.FormattingEnabled = true; - this.nodebuildersave.Location = new System.Drawing.Point(167, 83); - this.nodebuildersave.Name = "nodebuildersave"; - this.nodebuildersave.Size = new System.Drawing.Size(313, 21); - this.nodebuildersave.Sorted = true; - this.nodebuildersave.TabIndex = 0; - this.nodebuildersave.SelectedIndexChanged += new System.EventHandler(this.nodebuildersave_SelectedIndexChanged); - // - // tabtesting - // - this.tabtesting.Controls.Add(this.gametype); - this.tabtesting.Controls.Add(label14); - this.tabtesting.Controls.Add(this.skin); - this.tabtesting.Controls.Add(label12); - this.tabtesting.Controls.Add(this.btnRemoveEngine); - this.tabtesting.Controls.Add(this.btnNewEngine); - this.tabtesting.Controls.Add(this.cbEngineSelector); - this.tabtesting.Controls.Add(this.label13); - this.tabtesting.Controls.Add(this.shortpaths); - this.tabtesting.Controls.Add(this.customparameters); - this.tabtesting.Controls.Add(this.skill); - this.tabtesting.Controls.Add(label8); - this.tabtesting.Controls.Add(this.browsetestprogram); - this.tabtesting.Controls.Add(this.noresultlabel); - this.tabtesting.Controls.Add(this.testresult); - this.tabtesting.Controls.Add(this.labelresult); - this.tabtesting.Controls.Add(this.testparameters); - this.tabtesting.Controls.Add(this.labelparameters); - this.tabtesting.Controls.Add(this.testapplication); - this.tabtesting.Controls.Add(label1); - this.tabtesting.Controls.Add(label9); - this.tabtesting.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabtesting.Location = new System.Drawing.Point(4, 22); - this.tabtesting.Name = "tabtesting"; - this.tabtesting.Padding = new System.Windows.Forms.Padding(6); - this.tabtesting.Size = new System.Drawing.Size(498, 332); - this.tabtesting.TabIndex = 2; - this.tabtesting.Text = "Testing"; - this.tabtesting.UseVisualStyleBackColor = true; - // - // gametype - // - this.gametype.BackColor = System.Drawing.Color.Transparent; - this.gametype.Cursor = System.Windows.Forms.Cursors.Default; - this.gametype.Empty = false; - this.gametype.GeneralizedCategories = null; - this.gametype.GeneralizedOptions = null; - this.gametype.Location = new System.Drawing.Point(297, 116); - this.gametype.Name = "gametype"; - this.gametype.Size = new System.Drawing.Size(190, 21); - this.gametype.TabIndex = 44; - this.gametype.Value = -1; - this.gametype.Visible = false; - this.gametype.ValueChanges += new System.EventHandler(this.gametype_ValueChanges); - // - // label14 - // - label14.AutoSize = true; - label14.Location = new System.Drawing.Point(231, 119); - label14.Name = "label14"; - label14.Size = new System.Drawing.Size(58, 13); - label14.TabIndex = 43; - label14.Text = "Gametype:"; - label14.Visible = false; - // - // skin - // - this.skin.FormattingEnabled = true; - this.skin.Location = new System.Drawing.Point(87, 116); - this.skin.Name = "skin"; - this.skin.Size = new System.Drawing.Size(111, 21); - this.skin.TabIndex = 42; - this.skin.Visible = false; - this.skin.SelectedIndexChanged += new System.EventHandler(this.skin_SelectedIndexChanged); - // - // label12 - // - label12.AutoSize = true; - label12.Location = new System.Drawing.Point(48, 119); - label12.Name = "label12"; - label12.Size = new System.Drawing.Size(31, 13); - label12.TabIndex = 41; - label12.Text = "Skin:"; - label12.Visible = false; - // - // btnRemoveEngine - // - this.btnRemoveEngine.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear; - this.btnRemoveEngine.Location = new System.Drawing.Point(463, 51); - this.btnRemoveEngine.Name = "btnRemoveEngine"; - this.btnRemoveEngine.Size = new System.Drawing.Size(26, 24); - this.btnRemoveEngine.TabIndex = 40; - this.tooltip.SetToolTip(this.btnRemoveEngine, "Remove currently selected game engine"); - this.btnRemoveEngine.UseVisualStyleBackColor = true; - this.btnRemoveEngine.Click += new System.EventHandler(this.btnRemoveEngine_Click); - // - // btnNewEngine - // - this.btnNewEngine.Image = global::CodeImp.DoomBuilder.Properties.Resources.Add; - this.btnNewEngine.Location = new System.Drawing.Point(433, 51); - this.btnNewEngine.Name = "btnNewEngine"; - this.btnNewEngine.Size = new System.Drawing.Size(26, 24); - this.btnNewEngine.TabIndex = 39; - this.tooltip.SetToolTip(this.btnNewEngine, "Add new game engine"); - this.btnNewEngine.UseVisualStyleBackColor = true; - this.btnNewEngine.Click += new System.EventHandler(this.btnNewEngine_Click); - // - // cbEngineSelector - // - this.cbEngineSelector.FormattingEnabled = true; - this.cbEngineSelector.Location = new System.Drawing.Point(87, 53); - this.cbEngineSelector.Name = "cbEngineSelector"; - this.cbEngineSelector.Size = new System.Drawing.Size(340, 21); - this.cbEngineSelector.TabIndex = 38; - this.cbEngineSelector.DropDown += new System.EventHandler(this.cbEngineSelector_DropDown); - this.cbEngineSelector.SelectedIndexChanged += new System.EventHandler(this.cbEngineSelector_SelectedIndexChanged); - // - // label13 - // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(36, 56); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(43, 13); - this.label13.TabIndex = 37; - this.label13.Text = "Engine:"; - // - // shortpaths - // - this.shortpaths.AutoSize = true; - this.shortpaths.Location = new System.Drawing.Point(87, 217); - this.shortpaths.Name = "shortpaths"; - this.shortpaths.Size = new System.Drawing.Size(269, 17); - this.shortpaths.TabIndex = 5; - this.shortpaths.Text = "Use short paths and file names (MSDOS 8.3 format)"; - this.shortpaths.UseVisualStyleBackColor = true; - this.shortpaths.Visible = false; - this.shortpaths.CheckedChanged += new System.EventHandler(this.shortpaths_CheckedChanged); - // - // customparameters - // - this.customparameters.AutoSize = true; - this.customparameters.Location = new System.Drawing.Point(87, 146); - this.customparameters.Name = "customparameters"; - this.customparameters.Size = new System.Drawing.Size(129, 17); - this.customparameters.TabIndex = 3; - this.customparameters.Text = "Customize parameters"; - this.customparameters.UseVisualStyleBackColor = true; - this.customparameters.CheckedChanged += new System.EventHandler(this.customparameters_CheckedChanged); - // - // skill - // - this.skill.BackColor = System.Drawing.Color.Transparent; - this.skill.Cursor = System.Windows.Forms.Cursors.Default; - this.skill.Empty = false; - this.skill.GeneralizedCategories = null; - this.skill.GeneralizedOptions = null; - this.skill.Location = new System.Drawing.Point(85, 116); - this.skill.Name = "skill"; - this.skill.Size = new System.Drawing.Size(402, 21); - this.skill.TabIndex = 2; - this.skill.Value = 402; - this.skill.ValueChanges += new System.EventHandler(this.skill_ValueChanges); - // - // label8 - // - label8.AutoSize = true; - label8.Location = new System.Drawing.Point(21, 119); - label8.Name = "label8"; - label8.Size = new System.Drawing.Size(58, 13); - label8.TabIndex = 34; - label8.Text = "Skill Level:"; - // - // browsetestprogram - // - this.browsetestprogram.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.browsetestprogram.Image = global::CodeImp.DoomBuilder.Properties.Resources.Folder; - this.browsetestprogram.Location = new System.Drawing.Point(459, 84); - this.browsetestprogram.Name = "browsetestprogram"; - this.browsetestprogram.Size = new System.Drawing.Size(30, 24); - this.browsetestprogram.TabIndex = 1; - this.browsetestprogram.Text = " "; - this.tooltip.SetToolTip(this.browsetestprogram, "Browse game engine"); - this.browsetestprogram.UseVisualStyleBackColor = true; - this.browsetestprogram.Click += new System.EventHandler(this.browsetestprogram_Click); - // - // noresultlabel - // - this.noresultlabel.Location = new System.Drawing.Point(84, 244); - this.noresultlabel.Name = "noresultlabel"; - this.noresultlabel.Size = new System.Drawing.Size(272, 43); - this.noresultlabel.TabIndex = 32; - this.noresultlabel.Text = "An example result cannot be displayed, because it requires a map to be loaded."; - this.noresultlabel.Visible = false; - // - // testresult - // - this.testresult.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.nodebuildersave.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.nodebuildersave.FormattingEnabled = true; + this.nodebuildersave.Location = new System.Drawing.Point(167, 83); + this.nodebuildersave.Name = "nodebuildersave"; + this.nodebuildersave.Size = new System.Drawing.Size(313, 21); + this.nodebuildersave.Sorted = true; + this.nodebuildersave.TabIndex = 0; + this.nodebuildersave.SelectedIndexChanged += new System.EventHandler(this.nodebuildersave_SelectedIndexChanged); + // + // tabtesting + // + this.tabtesting.Controls.Add(this.gametype); + this.tabtesting.Controls.Add(this.label14); + this.tabtesting.Controls.Add(this.skin); + this.tabtesting.Controls.Add(this.label12); + this.tabtesting.Controls.Add(this.btnRemoveEngine); + this.tabtesting.Controls.Add(this.btnNewEngine); + this.tabtesting.Controls.Add(this.cbEngineSelector); + this.tabtesting.Controls.Add(this.label13); + this.tabtesting.Controls.Add(this.shortpaths); + this.tabtesting.Controls.Add(this.customparameters); + this.tabtesting.Controls.Add(this.skill); + this.tabtesting.Controls.Add(this.label8); + this.tabtesting.Controls.Add(this.browsetestprogram); + this.tabtesting.Controls.Add(this.noresultlabel); + this.tabtesting.Controls.Add(this.testresult); + this.tabtesting.Controls.Add(this.labelresult); + this.tabtesting.Controls.Add(this.testparameters); + this.tabtesting.Controls.Add(this.labelparameters); + this.tabtesting.Controls.Add(this.testapplication); + this.tabtesting.Controls.Add(label1); + this.tabtesting.Controls.Add(label9); + this.tabtesting.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabtesting.Location = new System.Drawing.Point(4, 22); + this.tabtesting.Name = "tabtesting"; + this.tabtesting.Padding = new System.Windows.Forms.Padding(6); + this.tabtesting.Size = new System.Drawing.Size(498, 332); + this.tabtesting.TabIndex = 2; + this.tabtesting.Text = "Testing"; + this.tabtesting.UseVisualStyleBackColor = true; + // + // gametype + // + this.gametype.BackColor = System.Drawing.Color.Transparent; + this.gametype.Cursor = System.Windows.Forms.Cursors.Default; + this.gametype.Empty = false; + this.gametype.GeneralizedCategories = null; + this.gametype.GeneralizedOptions = null; + this.gametype.GrayOut = false; + this.gametype.Location = new System.Drawing.Point(297, 116); + this.gametype.Name = "gametype"; + this.gametype.Size = new System.Drawing.Size(190, 21); + this.gametype.TabIndex = 44; + this.gametype.Value = -1; + this.gametype.Visible = false; + this.gametype.ValueChanges += new System.EventHandler(this.gametype_ValueChanges); + // + // skin + // + this.skin.FormattingEnabled = true; + this.skin.Location = new System.Drawing.Point(87, 116); + this.skin.Name = "skin"; + this.skin.Size = new System.Drawing.Size(111, 21); + this.skin.TabIndex = 42; + this.skin.Visible = false; + this.skin.SelectedIndexChanged += new System.EventHandler(this.skin_SelectedIndexChanged); + // + // btnRemoveEngine + // + this.btnRemoveEngine.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear; + this.btnRemoveEngine.Location = new System.Drawing.Point(463, 51); + this.btnRemoveEngine.Name = "btnRemoveEngine"; + this.btnRemoveEngine.Size = new System.Drawing.Size(26, 24); + this.btnRemoveEngine.TabIndex = 40; + this.tooltip.SetToolTip(this.btnRemoveEngine, "Remove currently selected game engine"); + this.btnRemoveEngine.UseVisualStyleBackColor = true; + this.btnRemoveEngine.Click += new System.EventHandler(this.btnRemoveEngine_Click); + // + // btnNewEngine + // + this.btnNewEngine.Image = global::CodeImp.DoomBuilder.Properties.Resources.Add; + this.btnNewEngine.Location = new System.Drawing.Point(433, 51); + this.btnNewEngine.Name = "btnNewEngine"; + this.btnNewEngine.Size = new System.Drawing.Size(26, 24); + this.btnNewEngine.TabIndex = 39; + this.tooltip.SetToolTip(this.btnNewEngine, "Add new game engine"); + this.btnNewEngine.UseVisualStyleBackColor = true; + this.btnNewEngine.Click += new System.EventHandler(this.btnNewEngine_Click); + // + // cbEngineSelector + // + this.cbEngineSelector.FormattingEnabled = true; + this.cbEngineSelector.Location = new System.Drawing.Point(87, 53); + this.cbEngineSelector.Name = "cbEngineSelector"; + this.cbEngineSelector.Size = new System.Drawing.Size(340, 21); + this.cbEngineSelector.TabIndex = 38; + this.cbEngineSelector.DropDown += new System.EventHandler(this.cbEngineSelector_DropDown); + this.cbEngineSelector.SelectedIndexChanged += new System.EventHandler(this.cbEngineSelector_SelectedIndexChanged); + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(36, 56); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(43, 13); + this.label13.TabIndex = 37; + this.label13.Text = "Engine:"; + // + // shortpaths + // + this.shortpaths.AutoSize = true; + this.shortpaths.Location = new System.Drawing.Point(87, 217); + this.shortpaths.Name = "shortpaths"; + this.shortpaths.Size = new System.Drawing.Size(269, 17); + this.shortpaths.TabIndex = 5; + this.shortpaths.Text = "Use short paths and file names (MSDOS 8.3 format)"; + this.shortpaths.UseVisualStyleBackColor = true; + this.shortpaths.Visible = false; + this.shortpaths.CheckedChanged += new System.EventHandler(this.shortpaths_CheckedChanged); + // + // customparameters + // + this.customparameters.AutoSize = true; + this.customparameters.Location = new System.Drawing.Point(87, 146); + this.customparameters.Name = "customparameters"; + this.customparameters.Size = new System.Drawing.Size(129, 17); + this.customparameters.TabIndex = 3; + this.customparameters.Text = "Customize parameters"; + this.customparameters.UseVisualStyleBackColor = true; + this.customparameters.CheckedChanged += new System.EventHandler(this.customparameters_CheckedChanged); + // + // skill + // + this.skill.BackColor = System.Drawing.Color.Transparent; + this.skill.Cursor = System.Windows.Forms.Cursors.Default; + this.skill.Empty = false; + this.skill.GeneralizedCategories = null; + this.skill.GeneralizedOptions = null; + this.skill.GrayOut = true; + this.skill.Location = new System.Drawing.Point(85, 116); + this.skill.Name = "skill"; + this.skill.Size = new System.Drawing.Size(402, 21); + this.skill.TabIndex = 2; + this.skill.Value = 402; + this.skill.ValueChanges += new System.EventHandler(this.skill_ValueChanges); + // + // browsetestprogram + // + this.browsetestprogram.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.browsetestprogram.Image = global::CodeImp.DoomBuilder.Properties.Resources.Folder; + this.browsetestprogram.Location = new System.Drawing.Point(459, 84); + this.browsetestprogram.Name = "browsetestprogram"; + this.browsetestprogram.Size = new System.Drawing.Size(30, 24); + this.browsetestprogram.TabIndex = 1; + this.browsetestprogram.Text = " "; + this.tooltip.SetToolTip(this.browsetestprogram, "Browse game engine"); + this.browsetestprogram.UseVisualStyleBackColor = true; + this.browsetestprogram.Click += new System.EventHandler(this.browsetestprogram_Click); + // + // noresultlabel + // + this.noresultlabel.Location = new System.Drawing.Point(84, 244); + this.noresultlabel.Name = "noresultlabel"; + this.noresultlabel.Size = new System.Drawing.Size(272, 43); + this.noresultlabel.TabIndex = 32; + this.noresultlabel.Text = "An example result cannot be displayed, because it requires a map to be loaded."; + this.noresultlabel.Visible = false; + // + // testresult + // + this.testresult.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.testresult.BackColor = System.Drawing.SystemColors.Control; - this.testresult.Location = new System.Drawing.Point(86, 241); - this.testresult.Multiline = true; - this.testresult.Name = "testresult"; - this.testresult.ReadOnly = true; - this.testresult.Size = new System.Drawing.Size(403, 79); - this.testresult.TabIndex = 6; - this.testresult.Visible = false; - // - // labelresult - // - this.labelresult.AutoSize = true; - this.labelresult.Location = new System.Drawing.Point(38, 244); - this.labelresult.Name = "labelresult"; - this.labelresult.Size = new System.Drawing.Size(40, 13); - this.labelresult.TabIndex = 30; - this.labelresult.Text = "Result:"; - this.labelresult.Visible = false; - // - // testparameters - // - this.testparameters.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.testresult.BackColor = System.Drawing.SystemColors.Control; + this.testresult.Location = new System.Drawing.Point(86, 241); + this.testresult.Multiline = true; + this.testresult.Name = "testresult"; + this.testresult.ReadOnly = true; + this.testresult.Size = new System.Drawing.Size(403, 79); + this.testresult.TabIndex = 6; + this.testresult.Visible = false; + // + // labelresult + // + this.labelresult.AutoSize = true; + this.labelresult.Location = new System.Drawing.Point(38, 244); + this.labelresult.Name = "labelresult"; + this.labelresult.Size = new System.Drawing.Size(40, 13); + this.labelresult.TabIndex = 30; + this.labelresult.Text = "Result:"; + this.labelresult.Visible = false; + // + // testparameters + // + this.testparameters.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.testparameters.Location = new System.Drawing.Point(87, 166); - this.testparameters.Multiline = true; - this.testparameters.Name = "testparameters"; - this.testparameters.Size = new System.Drawing.Size(402, 41); - this.testparameters.TabIndex = 4; - this.testparameters.Visible = false; - this.testparameters.TextChanged += new System.EventHandler(this.testparameters_TextChanged); - // - // testapplication - // - this.testapplication.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.testparameters.Location = new System.Drawing.Point(87, 166); + this.testparameters.Multiline = true; + this.testparameters.Name = "testparameters"; + this.testparameters.Size = new System.Drawing.Size(402, 41); + this.testparameters.TabIndex = 4; + this.testparameters.Visible = false; + this.testparameters.TextChanged += new System.EventHandler(this.testparameters_TextChanged); + // + // testapplication + // + this.testapplication.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.testapplication.Location = new System.Drawing.Point(87, 86); - this.testapplication.Name = "testapplication"; - this.testapplication.ReadOnly = true; - this.testapplication.Size = new System.Drawing.Size(366, 20); - this.testapplication.TabIndex = 0; - this.testapplication.TextChanged += new System.EventHandler(this.testapplication_TextChanged); - // - // tabtextures - // - this.tabtextures.Controls.Add(this.listtextures); - this.tabtextures.Controls.Add(this.restoretexturesets); - this.tabtextures.Controls.Add(this.edittextureset); - this.tabtextures.Controls.Add(this.pastetexturesets); - this.tabtextures.Controls.Add(this.copytexturesets); - this.tabtextures.Controls.Add(this.removetextureset); - this.tabtextures.Controls.Add(this.addtextureset); - this.tabtextures.Controls.Add(label4); - this.tabtextures.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabtextures.Location = new System.Drawing.Point(4, 22); - this.tabtextures.Name = "tabtextures"; - this.tabtextures.Size = new System.Drawing.Size(498, 332); - this.tabtextures.TabIndex = 3; - this.tabtextures.Text = "Textures"; - this.tabtextures.UseVisualStyleBackColor = true; - // - // listtextures - // - this.listtextures.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.testapplication.Location = new System.Drawing.Point(87, 86); + this.testapplication.Name = "testapplication"; + this.testapplication.ReadOnly = true; + this.testapplication.Size = new System.Drawing.Size(366, 20); + this.testapplication.TabIndex = 0; + this.testapplication.TextChanged += new System.EventHandler(this.testapplication_TextChanged); + // + // tabtextures + // + this.tabtextures.Controls.Add(this.listtextures); + this.tabtextures.Controls.Add(this.restoretexturesets); + this.tabtextures.Controls.Add(this.edittextureset); + this.tabtextures.Controls.Add(this.pastetexturesets); + this.tabtextures.Controls.Add(this.copytexturesets); + this.tabtextures.Controls.Add(this.removetextureset); + this.tabtextures.Controls.Add(this.addtextureset); + this.tabtextures.Controls.Add(label4); + this.tabtextures.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabtextures.Location = new System.Drawing.Point(4, 22); + this.tabtextures.Name = "tabtextures"; + this.tabtextures.Size = new System.Drawing.Size(498, 332); + this.tabtextures.TabIndex = 3; + this.tabtextures.Text = "Textures"; + this.tabtextures.UseVisualStyleBackColor = true; + // + // listtextures + // + this.listtextures.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.listtextures.FullRowSelect = true; - this.listtextures.HideSelection = false; - this.listtextures.Location = new System.Drawing.Point(15, 64); - this.listtextures.Name = "listtextures"; - this.listtextures.ShowGroups = false; - this.listtextures.Size = new System.Drawing.Size(467, 174); - this.listtextures.SmallImageList = this.smallimages; - this.listtextures.Sorting = System.Windows.Forms.SortOrder.Ascending; - this.listtextures.TabIndex = 0; - this.listtextures.UseCompatibleStateImageBehavior = false; - this.listtextures.View = System.Windows.Forms.View.List; - this.listtextures.SelectedIndexChanged += new System.EventHandler(this.listtextures_SelectedIndexChanged); - this.listtextures.DoubleClick += new System.EventHandler(this.listtextures_DoubleClick); - // - // smallimages - // - this.smallimages.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("smallimages.ImageStream"))); - this.smallimages.TransparentColor = System.Drawing.Color.Transparent; - this.smallimages.Images.SetKeyName(0, "KnownTextureSet.ico"); - // - // restoretexturesets - // - this.restoretexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.restoretexturesets.Location = new System.Drawing.Point(15, 282); - this.restoretexturesets.Name = "restoretexturesets"; - this.restoretexturesets.Size = new System.Drawing.Size(140, 24); - this.restoretexturesets.TabIndex = 6; - this.restoretexturesets.Text = "Add Default Sets"; - this.restoretexturesets.UseVisualStyleBackColor = true; - this.restoretexturesets.Click += new System.EventHandler(this.restoretexturesets_Click); - // - // edittextureset - // - this.edittextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.edittextureset.Enabled = false; - this.edittextureset.Location = new System.Drawing.Point(88, 244); - this.edittextureset.Name = "edittextureset"; - this.edittextureset.Size = new System.Drawing.Size(67, 24); - this.edittextureset.TabIndex = 2; - this.edittextureset.Text = "Edit..."; - this.edittextureset.UseVisualStyleBackColor = true; - this.edittextureset.Click += new System.EventHandler(this.edittextureset_Click); - // - // pastetexturesets - // - this.pastetexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.pastetexturesets.Enabled = false; - this.pastetexturesets.Location = new System.Drawing.Point(424, 244); - this.pastetexturesets.Name = "pastetexturesets"; - this.pastetexturesets.Size = new System.Drawing.Size(58, 24); - this.pastetexturesets.TabIndex = 5; - this.pastetexturesets.Text = "Paste"; - this.pastetexturesets.UseVisualStyleBackColor = true; - this.pastetexturesets.Click += new System.EventHandler(this.pastetexturesets_Click); - // - // copytexturesets - // - this.copytexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.copytexturesets.Enabled = false; - this.copytexturesets.Location = new System.Drawing.Point(360, 244); - this.copytexturesets.Name = "copytexturesets"; - this.copytexturesets.Size = new System.Drawing.Size(58, 24); - this.copytexturesets.TabIndex = 4; - this.copytexturesets.Text = "Copy"; - this.copytexturesets.UseVisualStyleBackColor = true; - this.copytexturesets.Click += new System.EventHandler(this.copytexturesets_Click); - // - // removetextureset - // - this.removetextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.removetextureset.Enabled = false; - this.removetextureset.Location = new System.Drawing.Point(161, 244); - this.removetextureset.Name = "removetextureset"; - this.removetextureset.Size = new System.Drawing.Size(68, 24); - this.removetextureset.TabIndex = 3; - this.removetextureset.Text = "Remove"; - this.removetextureset.UseVisualStyleBackColor = true; - this.removetextureset.Click += new System.EventHandler(this.removetextureset_Click); - // - // addtextureset - // - this.addtextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.addtextureset.Location = new System.Drawing.Point(15, 244); - this.addtextureset.Name = "addtextureset"; - this.addtextureset.Size = new System.Drawing.Size(67, 24); - this.addtextureset.TabIndex = 1; - this.addtextureset.Text = "Add..."; - this.addtextureset.UseVisualStyleBackColor = true; - this.addtextureset.Click += new System.EventHandler(this.addtextureset_Click); - // - // tabmodes - // - this.tabmodes.Controls.Add(this.startmode); - this.tabmodes.Controls.Add(this.label11); - this.tabmodes.Controls.Add(this.listmodes); - this.tabmodes.Controls.Add(label10); - this.tabmodes.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabmodes.Location = new System.Drawing.Point(4, 22); - this.tabmodes.Name = "tabmodes"; - this.tabmodes.Size = new System.Drawing.Size(498, 332); - this.tabmodes.TabIndex = 4; - this.tabmodes.Text = "Modes"; - this.tabmodes.UseVisualStyleBackColor = true; - // - // startmode - // - this.startmode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.startmode.FormattingEnabled = true; - this.startmode.Location = new System.Drawing.Point(215, 288); - this.startmode.Name = "startmode"; - this.startmode.Size = new System.Drawing.Size(267, 21); - this.startmode.TabIndex = 27; - this.startmode.SelectedIndexChanged += new System.EventHandler(this.startmode_SelectedIndexChanged); - // - // label11 - // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(12, 291); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(197, 13); - this.label11.TabIndex = 26; - this.label11.Text = "When opening a map, start in this mode:"; - // - // listmodes - // - this.listmodes.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.listtextures.FullRowSelect = true; + this.listtextures.HideSelection = false; + this.listtextures.Location = new System.Drawing.Point(15, 64); + this.listtextures.Name = "listtextures"; + this.listtextures.ShowGroups = false; + this.listtextures.Size = new System.Drawing.Size(467, 174); + this.listtextures.SmallImageList = this.smallimages; + this.listtextures.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.listtextures.TabIndex = 0; + this.listtextures.UseCompatibleStateImageBehavior = false; + this.listtextures.View = System.Windows.Forms.View.List; + this.listtextures.SelectedIndexChanged += new System.EventHandler(this.listtextures_SelectedIndexChanged); + this.listtextures.DoubleClick += new System.EventHandler(this.listtextures_DoubleClick); + // + // smallimages + // + this.smallimages.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("smallimages.ImageStream"))); + this.smallimages.TransparentColor = System.Drawing.Color.Transparent; + this.smallimages.Images.SetKeyName(0, "KnownTextureSet.ico"); + // + // restoretexturesets + // + this.restoretexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.restoretexturesets.Location = new System.Drawing.Point(15, 282); + this.restoretexturesets.Name = "restoretexturesets"; + this.restoretexturesets.Size = new System.Drawing.Size(140, 24); + this.restoretexturesets.TabIndex = 6; + this.restoretexturesets.Text = "Add Default Sets"; + this.restoretexturesets.UseVisualStyleBackColor = true; + this.restoretexturesets.Click += new System.EventHandler(this.restoretexturesets_Click); + // + // edittextureset + // + this.edittextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.edittextureset.Enabled = false; + this.edittextureset.Location = new System.Drawing.Point(88, 244); + this.edittextureset.Name = "edittextureset"; + this.edittextureset.Size = new System.Drawing.Size(67, 24); + this.edittextureset.TabIndex = 2; + this.edittextureset.Text = "Edit..."; + this.edittextureset.UseVisualStyleBackColor = true; + this.edittextureset.Click += new System.EventHandler(this.edittextureset_Click); + // + // pastetexturesets + // + this.pastetexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.pastetexturesets.Enabled = false; + this.pastetexturesets.Location = new System.Drawing.Point(424, 244); + this.pastetexturesets.Name = "pastetexturesets"; + this.pastetexturesets.Size = new System.Drawing.Size(58, 24); + this.pastetexturesets.TabIndex = 5; + this.pastetexturesets.Text = "Paste"; + this.pastetexturesets.UseVisualStyleBackColor = true; + this.pastetexturesets.Click += new System.EventHandler(this.pastetexturesets_Click); + // + // copytexturesets + // + this.copytexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.copytexturesets.Enabled = false; + this.copytexturesets.Location = new System.Drawing.Point(360, 244); + this.copytexturesets.Name = "copytexturesets"; + this.copytexturesets.Size = new System.Drawing.Size(58, 24); + this.copytexturesets.TabIndex = 4; + this.copytexturesets.Text = "Copy"; + this.copytexturesets.UseVisualStyleBackColor = true; + this.copytexturesets.Click += new System.EventHandler(this.copytexturesets_Click); + // + // removetextureset + // + this.removetextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.removetextureset.Enabled = false; + this.removetextureset.Location = new System.Drawing.Point(161, 244); + this.removetextureset.Name = "removetextureset"; + this.removetextureset.Size = new System.Drawing.Size(68, 24); + this.removetextureset.TabIndex = 3; + this.removetextureset.Text = "Remove"; + this.removetextureset.UseVisualStyleBackColor = true; + this.removetextureset.Click += new System.EventHandler(this.removetextureset_Click); + // + // addtextureset + // + this.addtextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.addtextureset.Location = new System.Drawing.Point(15, 244); + this.addtextureset.Name = "addtextureset"; + this.addtextureset.Size = new System.Drawing.Size(67, 24); + this.addtextureset.TabIndex = 1; + this.addtextureset.Text = "Add..."; + this.addtextureset.UseVisualStyleBackColor = true; + this.addtextureset.Click += new System.EventHandler(this.addtextureset_Click); + // + // tabmodes + // + this.tabmodes.Controls.Add(this.startmode); + this.tabmodes.Controls.Add(this.label11); + this.tabmodes.Controls.Add(this.listmodes); + this.tabmodes.Controls.Add(label10); + this.tabmodes.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabmodes.Location = new System.Drawing.Point(4, 22); + this.tabmodes.Name = "tabmodes"; + this.tabmodes.Size = new System.Drawing.Size(498, 332); + this.tabmodes.TabIndex = 4; + this.tabmodes.Text = "Modes"; + this.tabmodes.UseVisualStyleBackColor = true; + // + // startmode + // + this.startmode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.startmode.FormattingEnabled = true; + this.startmode.Location = new System.Drawing.Point(215, 288); + this.startmode.Name = "startmode"; + this.startmode.Size = new System.Drawing.Size(267, 21); + this.startmode.TabIndex = 27; + this.startmode.SelectedIndexChanged += new System.EventHandler(this.startmode_SelectedIndexChanged); + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(12, 291); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(197, 13); + this.label11.TabIndex = 26; + this.label11.Text = "When opening a map, start in this mode:"; + // + // listmodes + // + this.listmodes.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.listmodes.CheckBoxes = true; - this.listmodes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.listmodes.CheckBoxes = true; + this.listmodes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.colmodename, this.colmodeplugin}); - this.listmodes.FullRowSelect = true; - this.listmodes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.listmodes.Location = new System.Drawing.Point(15, 70); - this.listmodes.MultiSelect = false; - this.listmodes.Name = "listmodes"; - this.listmodes.ShowGroups = false; - this.listmodes.Size = new System.Drawing.Size(467, 201); - this.listmodes.Sorting = System.Windows.Forms.SortOrder.Ascending; - this.listmodes.TabIndex = 0; - this.listmodes.UseCompatibleStateImageBehavior = false; - this.listmodes.View = System.Windows.Forms.View.Details; - this.listmodes.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listmodes_ItemChecked); - // - // colmodename - // - this.colmodename.Text = "Editing Mode"; - this.colmodename.Width = 179; - // - // colmodeplugin - // - this.colmodeplugin.Text = "Plugin"; - this.colmodeplugin.Width = 221; - // - // listconfigs - // - this.listconfigs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.listmodes.FullRowSelect = true; + this.listmodes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listmodes.Location = new System.Drawing.Point(15, 70); + this.listmodes.MultiSelect = false; + this.listmodes.Name = "listmodes"; + this.listmodes.ShowGroups = false; + this.listmodes.Size = new System.Drawing.Size(467, 201); + this.listmodes.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.listmodes.TabIndex = 0; + this.listmodes.UseCompatibleStateImageBehavior = false; + this.listmodes.View = System.Windows.Forms.View.Details; + this.listmodes.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listmodes_ItemChecked); + // + // colmodename + // + this.colmodename.Text = "Editing Mode"; + this.colmodename.Width = 179; + // + // colmodeplugin + // + this.colmodeplugin.Text = "Plugin"; + this.colmodeplugin.Width = 221; + // + // listconfigs + // + this.listconfigs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); - this.listconfigs.CheckBoxes = true; - this.listconfigs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.listconfigs.CheckBoxes = true; + this.listconfigs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnname}); - this.listconfigs.ContextMenuStrip = this.copypastemenu; - this.listconfigs.FullRowSelect = true; - this.listconfigs.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.listconfigs.HideSelection = false; - this.listconfigs.Location = new System.Drawing.Point(12, 12); - this.listconfigs.MultiSelect = false; - this.listconfigs.Name = "listconfigs"; - this.listconfigs.ShowGroups = false; - this.listconfigs.Size = new System.Drawing.Size(259, 358); - this.listconfigs.TabIndex = 0; - this.listconfigs.UseCompatibleStateImageBehavior = false; - this.listconfigs.View = System.Windows.Forms.View.Details; - this.listconfigs.KeyUp += new System.Windows.Forms.KeyEventHandler(this.listconfigs_KeyUp); - this.listconfigs.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listconfigs_MouseUp); - // - // columnname - // - this.columnname.Text = "Configuration"; - this.columnname.Width = 200; - // - // copypastemenu - // - this.copypastemenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.listconfigs.ContextMenuStrip = this.copypastemenu; + this.listconfigs.FullRowSelect = true; + this.listconfigs.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.listconfigs.HideSelection = false; + this.listconfigs.Location = new System.Drawing.Point(12, 12); + this.listconfigs.MultiSelect = false; + this.listconfigs.Name = "listconfigs"; + this.listconfigs.ShowGroups = false; + this.listconfigs.Size = new System.Drawing.Size(259, 358); + this.listconfigs.TabIndex = 0; + this.listconfigs.UseCompatibleStateImageBehavior = false; + this.listconfigs.View = System.Windows.Forms.View.Details; + this.listconfigs.KeyUp += new System.Windows.Forms.KeyEventHandler(this.listconfigs_KeyUp); + this.listconfigs.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listconfigs_MouseUp); + // + // columnname + // + this.columnname.Text = "Configuration"; + this.columnname.Width = 200; + // + // copypastemenu + // + this.copypastemenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.copyall, this.toolStripSeparator1, this.pasteall, this.pasteresources, this.pasteengines, this.pastecolorpresets}); - this.copypastemenu.Name = "copypastemenu"; - this.copypastemenu.Size = new System.Drawing.Size(175, 120); - this.copypastemenu.Opening += new System.ComponentModel.CancelEventHandler(this.copypastemenu_Opening); - // - // copyall - // - this.copyall.Image = global::CodeImp.DoomBuilder.Properties.Resources.Copy; - this.copyall.Name = "copyall"; - this.copyall.Size = new System.Drawing.Size(174, 22); - this.copyall.Text = "Copy"; - this.copyall.Click += new System.EventHandler(this.copyall_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(171, 6); - // - // pasteall - // - this.pasteall.Image = global::CodeImp.DoomBuilder.Properties.Resources.Paste; - this.pasteall.Name = "pasteall"; - this.pasteall.Size = new System.Drawing.Size(174, 22); - this.pasteall.Text = "Paste"; - this.pasteall.Click += new System.EventHandler(this.pasteall_Click); - // - // pasteresources - // - this.pasteresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; - this.pasteresources.Name = "pasteresources"; - this.pasteresources.Size = new System.Drawing.Size(174, 22); - this.pasteresources.Text = "Paste Resources"; - this.pasteresources.Click += new System.EventHandler(this.pasteresources_Click); - // - // pasteengines - // - this.pasteengines.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; - this.pasteengines.Name = "pasteengines"; - this.pasteengines.Size = new System.Drawing.Size(174, 22); - this.pasteengines.Text = "Paste Test Engines"; - this.pasteengines.Click += new System.EventHandler(this.pasteengines_Click); - // - // pastecolorpresets - // - this.pastecolorpresets.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; - this.pastecolorpresets.Name = "pastecolorpresets"; - this.pastecolorpresets.Size = new System.Drawing.Size(174, 22); - this.pastecolorpresets.Text = "Paste Color Presets"; - this.pastecolorpresets.Click += new System.EventHandler(this.pastecolorpresets_Click); - // - // testprogramdialog - // - this.testprogramdialog.Filter = "Executable Files (*.exe)|*.exe|Batch Files (*.bat)|*.bat"; - this.testprogramdialog.Title = "Browse Test Program"; - // - // hintlabel - // - this.hintlabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.hintlabel.AutoSize = true; - this.hintlabel.Location = new System.Drawing.Point(30, 384); - this.hintlabel.Name = "hintlabel"; - this.hintlabel.Size = new System.Drawing.Size(276, 13); - this.hintlabel.TabIndex = 6; - this.hintlabel.Text = "Use the context menu to copy-paste game configurations"; - // - // hint - // - this.hint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.hint.Image = global::CodeImp.DoomBuilder.Properties.Resources.Lightbulb; - this.hint.Location = new System.Drawing.Point(12, 383); - this.hint.Name = "hint"; - this.hint.Size = new System.Drawing.Size(16, 16); - this.hint.TabIndex = 5; - this.hint.TabStop = false; - // - // tooltip - // - this.tooltip.AutomaticDelay = 0; - this.tooltip.AutoPopDelay = 30000; - this.tooltip.InitialDelay = 10; - this.tooltip.ReshowDelay = 100; - this.tooltip.ToolTipTitle = "Supported Placeholders:"; - this.tooltip.UseAnimation = false; - this.tooltip.UseFading = false; - // - // ConfigForm - // - this.AcceptButton = this.apply; - 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(794, 416); - this.Controls.Add(this.hintlabel); - this.Controls.Add(this.hint); - this.Controls.Add(this.listconfigs); - this.Controls.Add(this.tabs); - this.Controls.Add(this.cancel); - this.Controls.Add(this.apply); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ConfigForm"; - this.Opacity = 1D; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Game Configurations"; - this.Shown += new System.EventHandler(this.ConfigForm_Shown); - this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.ConfigForm_HelpRequested); - this.tabs.ResumeLayout(false); - this.tabresources.ResumeLayout(false); - this.tabresources.PerformLayout(); - this.tabnodebuilder.ResumeLayout(false); - this.tabnodebuilder.PerformLayout(); - this.tabtesting.ResumeLayout(false); - this.tabtesting.PerformLayout(); - this.tabtextures.ResumeLayout(false); - this.tabmodes.ResumeLayout(false); - this.tabmodes.PerformLayout(); - this.copypastemenu.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.hint)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + this.copypastemenu.Name = "copypastemenu"; + this.copypastemenu.Size = new System.Drawing.Size(175, 120); + this.copypastemenu.Opening += new System.ComponentModel.CancelEventHandler(this.copypastemenu_Opening); + // + // copyall + // + this.copyall.Image = global::CodeImp.DoomBuilder.Properties.Resources.Copy; + this.copyall.Name = "copyall"; + this.copyall.Size = new System.Drawing.Size(174, 22); + this.copyall.Text = "Copy"; + this.copyall.Click += new System.EventHandler(this.copyall_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(171, 6); + // + // pasteall + // + this.pasteall.Image = global::CodeImp.DoomBuilder.Properties.Resources.Paste; + this.pasteall.Name = "pasteall"; + this.pasteall.Size = new System.Drawing.Size(174, 22); + this.pasteall.Text = "Paste"; + this.pasteall.Click += new System.EventHandler(this.pasteall_Click); + // + // pasteresources + // + this.pasteresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; + this.pasteresources.Name = "pasteresources"; + this.pasteresources.Size = new System.Drawing.Size(174, 22); + this.pasteresources.Text = "Paste Resources"; + this.pasteresources.Click += new System.EventHandler(this.pasteresources_Click); + // + // pasteengines + // + this.pasteengines.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; + this.pasteengines.Name = "pasteengines"; + this.pasteengines.Size = new System.Drawing.Size(174, 22); + this.pasteengines.Text = "Paste Test Engines"; + this.pasteengines.Click += new System.EventHandler(this.pasteengines_Click); + // + // pastecolorpresets + // + this.pastecolorpresets.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; + this.pastecolorpresets.Name = "pastecolorpresets"; + this.pastecolorpresets.Size = new System.Drawing.Size(174, 22); + this.pastecolorpresets.Text = "Paste Color Presets"; + this.pastecolorpresets.Click += new System.EventHandler(this.pastecolorpresets_Click); + // + // testprogramdialog + // + this.testprogramdialog.Filter = "Executable Files (*.exe)|*.exe|Batch Files (*.bat)|*.bat"; + this.testprogramdialog.Title = "Browse Test Program"; + // + // hintlabel + // + this.hintlabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.hintlabel.AutoSize = true; + this.hintlabel.Location = new System.Drawing.Point(30, 384); + this.hintlabel.Name = "hintlabel"; + this.hintlabel.Size = new System.Drawing.Size(276, 13); + this.hintlabel.TabIndex = 6; + this.hintlabel.Text = "Use the context menu to copy-paste game configurations"; + // + // hint + // + this.hint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.hint.Image = global::CodeImp.DoomBuilder.Properties.Resources.Lightbulb; + this.hint.Location = new System.Drawing.Point(12, 383); + this.hint.Name = "hint"; + this.hint.Size = new System.Drawing.Size(16, 16); + this.hint.TabIndex = 5; + this.hint.TabStop = false; + // + // tooltip + // + this.tooltip.AutomaticDelay = 0; + this.tooltip.AutoPopDelay = 30000; + this.tooltip.InitialDelay = 10; + this.tooltip.ReshowDelay = 100; + this.tooltip.ToolTipTitle = "Supported Placeholders:"; + this.tooltip.UseAnimation = false; + this.tooltip.UseFading = false; + // + // ConfigForm + // + this.AcceptButton = this.apply; + 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(794, 416); + this.Controls.Add(this.hintlabel); + this.Controls.Add(this.hint); + this.Controls.Add(this.listconfigs); + this.Controls.Add(this.tabs); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ConfigForm"; + this.Opacity = 1D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Game Configurations"; + this.Shown += new System.EventHandler(this.ConfigForm_Shown); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.ConfigForm_HelpRequested); + this.tabs.ResumeLayout(false); + this.tabresources.ResumeLayout(false); + this.tabresources.PerformLayout(); + this.tabnodebuilder.ResumeLayout(false); + this.tabnodebuilder.PerformLayout(); + this.tabtesting.ResumeLayout(false); + this.tabtesting.PerformLayout(); + this.tabtextures.ResumeLayout(false); + this.tabmodes.ResumeLayout(false); + this.tabmodes.PerformLayout(); + this.copypastemenu.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.hint)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); } @@ -957,9 +959,8 @@ namespace CodeImp.DoomBuilder.Windows private System.Windows.Forms.ToolTip tooltip; private CodeImp.DoomBuilder.Controls.ActionSelectorControl gametype; private System.Windows.Forms.ComboBox skin; - private System.Windows.Forms.Label label14; - private System.Windows.Forms.Label label12; - private System.Windows.Forms.Label label8; - - } + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label12; + } } \ No newline at end of file diff --git a/Source/Core/Windows/ConfigForm.resx b/Source/Core/Windows/ConfigForm.resx index 9ce862e..d03f29c 100644 --- a/Source/Core/Windows/ConfigForm.resx +++ b/Source/Core/Windows/ConfigForm.resx @@ -117,65 +117,63 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + False - - + + True - - + + False - - + + True - - + + False - - + + True - + The nodebuilder is a compiler which builds geometry structures for your map. You need these structures to be able to play the map in the game. For each purpose you can choose the desired nodebuilder configuration here. - + False - - + + True - - + + False - - + + True - - + + False - - + + False - - + + False - - + + True - - + + False - - + + True - + Here you can select the editing modes that you wish to use in this configuration. This is useful in case there are plugins with additional editing modes that can be used as a replacement for the original editing modes. - - + 416, 17 - + %F - WAD file with the map that is to be tested. NOTE: this is a temporary file and not the file you opened or saved. %WP - IWAD resource file with full path included. This is the first (highest) IWAD file that is found in the resources list. @@ -187,45 +185,69 @@ %S - Skill number at which to test. %NM - Either -nomonsters when testing without monsters, or nothing at all. - + True - - + + True - - + + True - - + + True - - + + True - - - False - - - False - - - False - - + + True - - + + True - - + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + 159, 17 - + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA4 - CAAAAk1TRnQBSQFMAwEBAAHwAQEB9AEBARMBAAEQAQAE/wEJARAI/wFCAU0BNgEEBgABNgEEAgABKAMA + CAAAAk1TRnQBSQFMAwEBAAEEAQIBBAECARMBAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA AUwDAAEQAwABAQEAAQgFAAHAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -260,37 +282,37 @@ AfQBbEAAAQcK/wFsQAACBwS1AfcBtQLtApHSAAFCAU0BPgcAAT4DAAEoAwABTAMAARADAAEBAQABAQUA AcAXAAP/AQAC/wHgCQAC/wHgCQABwAEDAeAJAAHAAQMB4AkAAcABAAHgCQABwAEAAeAJAAHAAQABIAkA AcABAAEgCQABwAEAASAJAAHAAQABIAkAAfABAAEgCQAB8AEAASAJAAH8AQABIAkAAfwBAAEgCQAC/wHg - CQAC/wHgHwAL + CQAC/wHgCQAL - + True - - + + True - - + + True - - + + True - - + + True - - + + True - - + + True - - - True - - + + 278, 17 - - + + 17, 17 - + + + 416, 17 + \ No newline at end of file diff --git a/Source/Core/Windows/MainForm.Designer.cs b/Source/Core/Windows/MainForm.Designer.cs index ef555c3..4307bca 100644 --- a/Source/Core/Windows/MainForm.Designer.cs +++ b/Source/Core/Windows/MainForm.Designer.cs @@ -73,12 +73,14 @@ namespace CodeImp.DoomBuilder.Windows this.itempaste = new System.Windows.Forms.ToolStripMenuItem(); this.itempastespecial = new System.Windows.Forms.ToolStripMenuItem(); this.itemsnaptogrid = new System.Windows.Forms.ToolStripMenuItem(); + this.itemdynamicgridsize = new System.Windows.Forms.ToolStripMenuItem(); this.itemautomerge = new System.Windows.Forms.ToolStripMenuItem(); this.itemautoclearsidetextures = new System.Windows.Forms.ToolStripMenuItem(); this.seperatoreditgeometry = new System.Windows.Forms.ToolStripSeparator(); this.itemgridinc = new System.Windows.Forms.ToolStripMenuItem(); this.itemgriddec = new System.Windows.Forms.ToolStripMenuItem(); this.itemdosnaptogrid = new System.Windows.Forms.ToolStripMenuItem(); + this.itemdosnapto1mp = new System.Windows.Forms.ToolStripMenuItem(); this.itemgridsetup = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); this.addToGroup = new System.Windows.Forms.ToolStripMenuItem(); @@ -98,6 +100,8 @@ namespace CodeImp.DoomBuilder.Windows this.seperatorviewviews = new System.Windows.Forms.ToolStripSeparator(); this.itemfullbrightness = new System.Windows.Forms.ToolStripMenuItem(); this.itemtogglegrid = new System.Windows.Forms.ToolStripMenuItem(); + this.itemrendernightspath = new System.Windows.Forms.ToolStripMenuItem(); + this.itemtogglecomments = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.menuzoom = new System.Windows.Forms.ToolStripMenuItem(); this.item2zoom800 = new System.Windows.Forms.ToolStripMenuItem(); @@ -173,18 +177,18 @@ namespace CodeImp.DoomBuilder.Windows this.separatorfilters = new System.Windows.Forms.ToolStripSeparator(); this.buttonfullbrightness = new System.Windows.Forms.ToolStripButton(); this.buttontogglegrid = new System.Windows.Forms.ToolStripButton(); - this.buttontoggledynamicgrid = new System.Windows.Forms.ToolStripButton(); - this.buttontogglenightspath = new System.Windows.Forms.ToolStripButton(); - this.separatorfullbrightness = new System.Windows.Forms.ToolStripSeparator(); + this.buttontogglecomments = new System.Windows.Forms.ToolStripButton(); + this.separatorfullbrightness = new System.Windows.Forms.ToolStripSeparator(); this.buttonviewnormal = new System.Windows.Forms.ToolStripButton(); this.buttonviewbrightness = new System.Windows.Forms.ToolStripButton(); this.buttonviewfloors = new System.Windows.Forms.ToolStripButton(); this.buttonviewceilings = new System.Windows.Forms.ToolStripButton(); this.seperatorviews = new System.Windows.Forms.ToolStripSeparator(); - this.buttontogglecomments = new System.Windows.Forms.ToolStripButton(); this.buttonsnaptogrid = new System.Windows.Forms.ToolStripButton(); + this.buttontoggledynamicgrid = new System.Windows.Forms.ToolStripButton(); this.buttonautomerge = new System.Windows.Forms.ToolStripButton(); this.buttonautoclearsidetextures = new System.Windows.Forms.ToolStripButton(); + this.buttontogglenightspath = new System.Windows.Forms.ToolStripButton(); this.seperatorgeometry = new System.Windows.Forms.ToolStripSeparator(); this.buttontogglefx = new System.Windows.Forms.ToolStripButton(); this.dynamiclightmode = new System.Windows.Forms.ToolStripSplitButton(); @@ -197,8 +201,8 @@ namespace CodeImp.DoomBuilder.Windows this.modelsshowfiltered = new System.Windows.Forms.ToolStripMenuItem(); this.modelsshowall = new System.Windows.Forms.ToolStripMenuItem(); this.buttontogglefog = new System.Windows.Forms.ToolStripButton(); - this.buttontogglesky = new System.Windows.Forms.ToolStripButton(); - this.buttontoggleeventlines = new System.Windows.Forms.ToolStripButton(); + this.buttontogglesky = new System.Windows.Forms.ToolStripButton(); + this.buttontoggleeventlines = new System.Windows.Forms.ToolStripButton(); this.buttontogglevisualvertices = new System.Windows.Forms.ToolStripButton(); this.separatorgzmodes = new System.Windows.Forms.ToolStripSeparator(); this.buttontest = new System.Windows.Forms.ToolStripSplitButton(); @@ -245,7 +249,7 @@ namespace CodeImp.DoomBuilder.Windows this.thinginfo = new CodeImp.DoomBuilder.Controls.ThingInfoPanel(); this.sectorinfo = new CodeImp.DoomBuilder.Controls.SectorInfoPanel(); this.redrawtimer = new System.Windows.Forms.Timer(this.components); - this.display = new RenderTargetControl(); + this.display = new CodeImp.DoomBuilder.Controls.RenderTargetControl(); this.processor = new System.Windows.Forms.Timer(this.components); this.statusflasher = new System.Windows.Forms.Timer(this.components); this.statusresetter = new System.Windows.Forms.Timer(this.components); @@ -255,10 +259,7 @@ namespace CodeImp.DoomBuilder.Windows this.dockerscollapser = new System.Windows.Forms.Timer(this.components); this.flowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel(); this.modecontrolsloolbar = new System.Windows.Forms.ToolStrip(); - this.itemtogglecomments = new System.Windows.Forms.ToolStripMenuItem(); - this.itemdynamicgridsize = new System.Windows.Forms.ToolStripMenuItem(); - this.itemrendernightspath = new System.Windows.Forms.ToolStripMenuItem(); - toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); @@ -322,13 +323,13 @@ namespace CodeImp.DoomBuilder.Windows // this.seperatoreditgrid.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.seperatoreditgrid.Name = "seperatoreditgrid"; - this.seperatoreditgrid.Size = new System.Drawing.Size(216, 6); + this.seperatoreditgrid.Size = new System.Drawing.Size(221, 6); // // seperatoreditcopypaste // this.seperatoreditcopypaste.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.seperatoreditcopypaste.Name = "seperatoreditcopypaste"; - this.seperatoreditcopypaste.Size = new System.Drawing.Size(216, 6); + this.seperatoreditcopypaste.Size = new System.Drawing.Size(221, 6); // // seperatorfile // @@ -382,8 +383,7 @@ namespace CodeImp.DoomBuilder.Windows this.menuhelp}); this.menumain.Location = new System.Drawing.Point(0, 0); this.menumain.Name = "menumain"; - this.menumain.Size = new System.Drawing.Size(328, 24); - this.menumain.ImageScalingSize = MainForm.ScaledIconSize; + this.menumain.Size = new System.Drawing.Size(420, 24); this.menumain.TabIndex = 0; // // menufile @@ -524,6 +524,7 @@ namespace CodeImp.DoomBuilder.Windows this.itemgridinc, this.itemgriddec, this.itemdosnaptogrid, + this.itemdosnapto1mp, this.itemgridsetup, this.toolStripSeparator5, this.addToGroup, @@ -542,7 +543,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemundo.Image = global::CodeImp.DoomBuilder.Properties.Resources.Undo; this.itemundo.Name = "itemundo"; - this.itemundo.Size = new System.Drawing.Size(219, 22); + this.itemundo.Size = new System.Drawing.Size(224, 22); this.itemundo.Tag = "builder_undo"; this.itemundo.Text = "&Undo"; this.itemundo.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -551,7 +552,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemredo.Image = global::CodeImp.DoomBuilder.Properties.Resources.Redo; this.itemredo.Name = "itemredo"; - this.itemredo.Size = new System.Drawing.Size(219, 22); + this.itemredo.Size = new System.Drawing.Size(224, 22); this.itemredo.Tag = "builder_redo"; this.itemredo.Text = "&Redo"; this.itemredo.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -560,13 +561,13 @@ namespace CodeImp.DoomBuilder.Windows // this.seperatoreditundo.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.seperatoreditundo.Name = "seperatoreditundo"; - this.seperatoreditundo.Size = new System.Drawing.Size(216, 6); + this.seperatoreditundo.Size = new System.Drawing.Size(221, 6); // // itemcut // this.itemcut.Image = global::CodeImp.DoomBuilder.Properties.Resources.Cut; this.itemcut.Name = "itemcut"; - this.itemcut.Size = new System.Drawing.Size(219, 22); + this.itemcut.Size = new System.Drawing.Size(224, 22); this.itemcut.Tag = "builder_cutselection"; this.itemcut.Text = "Cu&t"; this.itemcut.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -575,7 +576,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemcopy.Image = global::CodeImp.DoomBuilder.Properties.Resources.Copy; this.itemcopy.Name = "itemcopy"; - this.itemcopy.Size = new System.Drawing.Size(219, 22); + this.itemcopy.Size = new System.Drawing.Size(224, 22); this.itemcopy.Tag = "builder_copyselection"; this.itemcopy.Text = "&Copy"; this.itemcopy.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -584,7 +585,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itempaste.Image = global::CodeImp.DoomBuilder.Properties.Resources.Paste; this.itempaste.Name = "itempaste"; - this.itempaste.Size = new System.Drawing.Size(219, 22); + this.itempaste.Size = new System.Drawing.Size(224, 22); this.itempaste.Tag = "builder_pasteselection"; this.itempaste.Text = "&Paste"; this.itempaste.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -593,7 +594,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itempastespecial.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; this.itempastespecial.Name = "itempastespecial"; - this.itempastespecial.Size = new System.Drawing.Size(219, 22); + this.itempastespecial.Size = new System.Drawing.Size(224, 22); this.itempastespecial.Tag = "builder_pasteselectionspecial"; this.itempastespecial.Text = "Paste Special..."; this.itempastespecial.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -604,18 +605,30 @@ namespace CodeImp.DoomBuilder.Windows this.itemsnaptogrid.CheckState = System.Windows.Forms.CheckState.Checked; this.itemsnaptogrid.Image = global::CodeImp.DoomBuilder.Properties.Resources.Grid4; this.itemsnaptogrid.Name = "itemsnaptogrid"; - this.itemsnaptogrid.Size = new System.Drawing.Size(219, 22); + this.itemsnaptogrid.Size = new System.Drawing.Size(224, 22); this.itemsnaptogrid.Tag = "builder_togglesnap"; this.itemsnaptogrid.Text = "&Snap to Grid"; this.itemsnaptogrid.Click += new System.EventHandler(this.InvokeTaggedAction); // + // itemdynamicgridsize + // + this.itemdynamicgridsize.Checked = true; + this.itemdynamicgridsize.CheckOnClick = true; + this.itemdynamicgridsize.CheckState = System.Windows.Forms.CheckState.Checked; + this.itemdynamicgridsize.Image = global::CodeImp.DoomBuilder.Properties.Resources.GridDynamic; + this.itemdynamicgridsize.Name = "itemdynamicgridsize"; + this.itemdynamicgridsize.Size = new System.Drawing.Size(224, 22); + this.itemdynamicgridsize.Tag = "builder_toggledynamicgrid"; + this.itemdynamicgridsize.Text = "Dynamic Grid Size"; + this.itemdynamicgridsize.Click += new System.EventHandler(this.InvokeTaggedAction); + // // itemautomerge // this.itemautomerge.Checked = true; this.itemautomerge.CheckState = System.Windows.Forms.CheckState.Checked; this.itemautomerge.Image = global::CodeImp.DoomBuilder.Properties.Resources.mergegeometry2; this.itemautomerge.Name = "itemautomerge"; - this.itemautomerge.Size = new System.Drawing.Size(219, 22); + this.itemautomerge.Size = new System.Drawing.Size(224, 22); this.itemautomerge.Tag = "builder_toggleautomerge"; this.itemautomerge.Text = "&Merge Geometry"; this.itemautomerge.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -626,7 +639,7 @@ namespace CodeImp.DoomBuilder.Windows this.itemautoclearsidetextures.CheckState = System.Windows.Forms.CheckState.Checked; this.itemautoclearsidetextures.Image = global::CodeImp.DoomBuilder.Properties.Resources.ClearTextures; this.itemautoclearsidetextures.Name = "itemautoclearsidetextures"; - this.itemautoclearsidetextures.Size = new System.Drawing.Size(219, 22); + this.itemautoclearsidetextures.Size = new System.Drawing.Size(224, 22); this.itemautoclearsidetextures.Tag = "builder_toggleautoclearsidetextures"; this.itemautoclearsidetextures.Text = "&Auto Clear Sidedef Textures"; this.itemautoclearsidetextures.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -635,13 +648,13 @@ namespace CodeImp.DoomBuilder.Windows // this.seperatoreditgeometry.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.seperatoreditgeometry.Name = "seperatoreditgeometry"; - this.seperatoreditgeometry.Size = new System.Drawing.Size(216, 6); + this.seperatoreditgeometry.Size = new System.Drawing.Size(221, 6); // // itemgridinc // this.itemgridinc.Image = global::CodeImp.DoomBuilder.Properties.Resources.GridIncrease; this.itemgridinc.Name = "itemgridinc"; - this.itemgridinc.Size = new System.Drawing.Size(219, 22); + this.itemgridinc.Size = new System.Drawing.Size(224, 22); this.itemgridinc.Tag = "builder_griddec"; this.itemgridinc.Text = "&Increase Grid Size"; this.itemgridinc.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -650,7 +663,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemgriddec.Image = global::CodeImp.DoomBuilder.Properties.Resources.GridDecrease; this.itemgriddec.Name = "itemgriddec"; - this.itemgriddec.Size = new System.Drawing.Size(219, 22); + this.itemgriddec.Size = new System.Drawing.Size(224, 22); this.itemgriddec.Tag = "builder_gridinc"; this.itemgriddec.Text = "&Decrease Grid Size"; this.itemgriddec.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -659,16 +672,25 @@ namespace CodeImp.DoomBuilder.Windows // this.itemdosnaptogrid.Image = global::CodeImp.DoomBuilder.Properties.Resources.SnapVerts; this.itemdosnaptogrid.Name = "itemdosnaptogrid"; - this.itemdosnaptogrid.Size = new System.Drawing.Size(219, 22); + this.itemdosnaptogrid.Size = new System.Drawing.Size(224, 22); this.itemdosnaptogrid.Tag = "builder_snapvertstogrid"; this.itemdosnaptogrid.Text = "Snap Selection to Grid"; this.itemdosnaptogrid.Click += new System.EventHandler(this.InvokeTaggedAction); // + // itemdosnapto1mp + // + this.itemdosnapto1mp.Image = global::CodeImp.DoomBuilder.Properties.Resources.Snap1mp; + this.itemdosnapto1mp.Name = "itemdosnapto1mp"; + this.itemdosnapto1mp.Size = new System.Drawing.Size(224, 22); + this.itemdosnapto1mp.Tag = "builder_snapvertsto1mp"; + this.itemdosnapto1mp.Text = "Force Snap Selection to 1mp"; + this.itemdosnapto1mp.Click += new System.EventHandler(this.InvokeTaggedAction); + // // itemgridsetup // this.itemgridsetup.Image = global::CodeImp.DoomBuilder.Properties.Resources.Grid2; this.itemgridsetup.Name = "itemgridsetup"; - this.itemgridsetup.Size = new System.Drawing.Size(219, 22); + this.itemgridsetup.Size = new System.Drawing.Size(224, 22); this.itemgridsetup.Tag = "builder_gridsetup"; this.itemgridsetup.Text = "&Grid and Backdrop Setup..."; this.itemgridsetup.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -676,34 +698,34 @@ namespace CodeImp.DoomBuilder.Windows // toolStripSeparator5 // this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(216, 6); + this.toolStripSeparator5.Size = new System.Drawing.Size(221, 6); // // addToGroup // this.addToGroup.Image = global::CodeImp.DoomBuilder.Properties.Resources.GroupAdd; this.addToGroup.Name = "addToGroup"; - this.addToGroup.Size = new System.Drawing.Size(219, 22); + this.addToGroup.Size = new System.Drawing.Size(224, 22); this.addToGroup.Text = "Add Selection to Group"; // // selectGroup // this.selectGroup.Image = global::CodeImp.DoomBuilder.Properties.Resources.Group; this.selectGroup.Name = "selectGroup"; - this.selectGroup.Size = new System.Drawing.Size(219, 22); + this.selectGroup.Size = new System.Drawing.Size(224, 22); this.selectGroup.Text = "Select Group"; // // clearGroup // this.clearGroup.Image = global::CodeImp.DoomBuilder.Properties.Resources.GroupRemove; this.clearGroup.Name = "clearGroup"; - this.clearGroup.Size = new System.Drawing.Size(219, 22); + this.clearGroup.Size = new System.Drawing.Size(224, 22); this.clearGroup.Text = "Clear Group"; // // itemmapoptions // this.itemmapoptions.Image = global::CodeImp.DoomBuilder.Properties.Resources.Properties; this.itemmapoptions.Name = "itemmapoptions"; - this.itemmapoptions.Size = new System.Drawing.Size(219, 22); + this.itemmapoptions.Size = new System.Drawing.Size(224, 22); this.itemmapoptions.Tag = "builder_mapoptions"; this.itemmapoptions.Text = "Map &Options..."; this.itemmapoptions.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -712,7 +734,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemviewusedtags.Image = global::CodeImp.DoomBuilder.Properties.Resources.TagStatistics; this.itemviewusedtags.Name = "itemviewusedtags"; - this.itemviewusedtags.Size = new System.Drawing.Size(219, 22); + this.itemviewusedtags.Size = new System.Drawing.Size(224, 22); this.itemviewusedtags.Tag = "builder_viewusedtags"; this.itemviewusedtags.Text = "View Used Tags..."; this.itemviewusedtags.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -721,7 +743,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemviewthingtypes.Image = global::CodeImp.DoomBuilder.Properties.Resources.ThingStatistics; this.itemviewthingtypes.Name = "itemviewthingtypes"; - this.itemviewthingtypes.Size = new System.Drawing.Size(219, 22); + this.itemviewthingtypes.Size = new System.Drawing.Size(224, 22); this.itemviewthingtypes.Tag = "builder_viewthingtypes"; this.itemviewthingtypes.Text = "View Thing Types..."; this.itemviewthingtypes.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -841,6 +863,30 @@ namespace CodeImp.DoomBuilder.Windows this.itemtogglegrid.Text = "&Render Grid"; this.itemtogglegrid.Click += new System.EventHandler(this.InvokeTaggedAction); // + // itemrendernightspath + // + this.itemrendernightspath.Checked = true; + this.itemrendernightspath.CheckOnClick = true; + this.itemrendernightspath.CheckState = System.Windows.Forms.CheckState.Checked; + this.itemrendernightspath.Image = global::CodeImp.DoomBuilder.Properties.Resources.axis1; + this.itemrendernightspath.Name = "itemrendernightspath"; + this.itemrendernightspath.Size = new System.Drawing.Size(215, 22); + this.itemrendernightspath.Tag = "builder_togglenightspath"; + this.itemrendernightspath.Text = "&Show NiGHTS Path"; + this.itemrendernightspath.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // itemtogglecomments + // + this.itemtogglecomments.Checked = true; + this.itemtogglecomments.CheckOnClick = true; + this.itemtogglecomments.CheckState = System.Windows.Forms.CheckState.Checked; + this.itemtogglecomments.Image = global::CodeImp.DoomBuilder.Properties.Resources.Comment; + this.itemtogglecomments.Name = "itemtogglecomments"; + this.itemtogglecomments.Size = new System.Drawing.Size(215, 22); + this.itemtogglecomments.Tag = "builder_togglecomments"; + this.itemtogglecomments.Text = "Show Comments"; + this.itemtogglecomments.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; @@ -1149,7 +1195,7 @@ namespace CodeImp.DoomBuilder.Windows this.menuhelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.itemhelprefmanual, this.itemShortcutReference, - this.itemopenconfigfolder, + this.itemopenconfigfolder, this.itemhelpeditmode, this.itemhelpcheckupdates, this.seperatorhelpmanual, @@ -1162,7 +1208,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemhelprefmanual.Image = global::CodeImp.DoomBuilder.Properties.Resources.Help; this.itemhelprefmanual.Name = "itemhelprefmanual"; - this.itemhelprefmanual.Size = new System.Drawing.Size(232, 22); + this.itemhelprefmanual.Size = new System.Drawing.Size(233, 22); this.itemhelprefmanual.Text = "Reference &Manual"; this.itemhelprefmanual.Click += new System.EventHandler(this.itemhelprefmanual_Click); // @@ -1170,16 +1216,16 @@ namespace CodeImp.DoomBuilder.Windows // this.itemShortcutReference.Image = global::CodeImp.DoomBuilder.Properties.Resources.Keyboard; this.itemShortcutReference.Name = "itemShortcutReference"; - this.itemShortcutReference.Size = new System.Drawing.Size(232, 22); + this.itemShortcutReference.Size = new System.Drawing.Size(233, 22); this.itemShortcutReference.Tag = ""; this.itemShortcutReference.Text = "Keyboard Shortcuts Reference"; this.itemShortcutReference.Click += new System.EventHandler(this.itemShortcutReference_Click); // // itemopenconfigfolder - // + // this.itemopenconfigfolder.Image = global::CodeImp.DoomBuilder.Properties.Resources.FolderExplore; this.itemopenconfigfolder.Name = "itemopenconfigfolder"; - this.itemopenconfigfolder.Size = new System.Drawing.Size(232, 22); + this.itemopenconfigfolder.Size = new System.Drawing.Size(233, 22); this.itemopenconfigfolder.Tag = ""; this.itemopenconfigfolder.Text = "Program Configuration Folder"; this.itemopenconfigfolder.Click += new System.EventHandler(this.itemopenconfigfolder_Click); @@ -1188,7 +1234,7 @@ namespace CodeImp.DoomBuilder.Windows // this.itemhelpeditmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.Question; this.itemhelpeditmode.Name = "itemhelpeditmode"; - this.itemhelpeditmode.Size = new System.Drawing.Size(232, 22); + this.itemhelpeditmode.Size = new System.Drawing.Size(233, 22); this.itemhelpeditmode.Text = "About this &Editing Mode"; this.itemhelpeditmode.Click += new System.EventHandler(this.itemhelpeditmode_Click); // @@ -1196,29 +1242,28 @@ namespace CodeImp.DoomBuilder.Windows // this.itemhelpcheckupdates.Image = global::CodeImp.DoomBuilder.Properties.Resources.Update; this.itemhelpcheckupdates.Name = "itemhelpcheckupdates"; - this.itemhelpcheckupdates.Size = new System.Drawing.Size(232, 22); + this.itemhelpcheckupdates.Size = new System.Drawing.Size(233, 22); this.itemhelpcheckupdates.Text = "&Check for updates..."; + this.itemhelpcheckupdates.Visible = false; this.itemhelpcheckupdates.Click += new System.EventHandler(this.itemhelpcheckupdates_Click); - this.itemhelpcheckupdates.Visible = false; // // seperatorhelpmanual // this.seperatorhelpmanual.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.seperatorhelpmanual.Name = "seperatorhelpmanual"; - this.seperatorhelpmanual.Size = new System.Drawing.Size(229, 6); + this.seperatorhelpmanual.Size = new System.Drawing.Size(230, 6); // // itemhelpabout // this.itemhelpabout.Image = global::CodeImp.DoomBuilder.Properties.Resources.ZB16; this.itemhelpabout.Name = "itemhelpabout"; - this.itemhelpabout.Size = new System.Drawing.Size(232, 22); + this.itemhelpabout.Size = new System.Drawing.Size(233, 22); this.itemhelpabout.Text = "&About Zone Builder..."; this.itemhelpabout.Click += new System.EventHandler(this.itemhelpabout_Click); // // toolbar // this.toolbar.AutoSize = false; - this.toolbar.ImageScalingSize = MainForm.ScaledIconSize; this.toolbar.ContextMenuStrip = this.toolbarContextMenu; this.toolbar.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.toolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -1289,9 +1334,8 @@ namespace CodeImp.DoomBuilder.Windows this.toggleRendering}); this.toolbarContextMenu.Name = "toolbarContextMenu"; this.toolbarContextMenu.Size = new System.Drawing.Size(227, 224); - this.toolbarContextMenu.ImageScalingSize = MainForm.ScaledIconSize; - this.toolbarContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.toolbarContextMenu_Opening); this.toolbarContextMenu.Closing += new System.Windows.Forms.ToolStripDropDownClosingEventHandler(this.toolbarContextMenu_Closing); + this.toolbarContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.toolbarContextMenu_Opening); // // toggleFile // @@ -1505,7 +1549,7 @@ namespace CodeImp.DoomBuilder.Windows this.thingfilters.ImageTransparentColor = System.Drawing.Color.Magenta; this.thingfilters.Margin = new System.Windows.Forms.Padding(1, 1, 0, 2); this.thingfilters.Name = "thingfilters"; - this.thingfilters.Size = new System.Drawing.Size((int)(120 * MainForm.DPIScaler.Width), (int)(22 * MainForm.DPIScaler.Height)); + this.thingfilters.Size = new System.Drawing.Size(120, 23); this.thingfilters.Text = "(show all)"; this.thingfilters.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.thingfilters.DropDownClosed += new System.EventHandler(this.LoseFocus); @@ -1535,11 +1579,11 @@ namespace CodeImp.DoomBuilder.Windows this.linedefcolorpresets.ImageTransparentColor = System.Drawing.Color.Magenta; this.linedefcolorpresets.Margin = new System.Windows.Forms.Padding(1, 1, 0, 2); this.linedefcolorpresets.Name = "linedefcolorpresets"; - this.linedefcolorpresets.Size = new System.Drawing.Size((int)(120 * MainForm.DPIScaler.Width), (int)(22 * MainForm.DPIScaler.Height)); + this.linedefcolorpresets.Size = new System.Drawing.Size(120, 23); this.linedefcolorpresets.Text = "No presets"; this.linedefcolorpresets.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.linedefcolorpresets.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.linedefcolorpresets_DropDownItemClicked); this.linedefcolorpresets.DropDownClosed += new System.EventHandler(this.LoseFocus); + this.linedefcolorpresets.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.linedefcolorpresets_DropDownItemClicked); this.linedefcolorpresets.Click += new System.EventHandler(this.linedefcolorpresets_MouseLeave); // // separatorfilters @@ -1576,37 +1620,22 @@ namespace CodeImp.DoomBuilder.Windows this.buttontogglegrid.Text = "Render Grid"; this.buttontogglegrid.Click += new System.EventHandler(this.InvokeTaggedAction); // - // buttontoggledynamicgrid + // buttontogglecomments // - this.buttontoggledynamicgrid.Checked = true; - this.buttontoggledynamicgrid.CheckOnClick = true; - this.buttontoggledynamicgrid.CheckState = System.Windows.Forms.CheckState.Checked; - this.buttontoggledynamicgrid.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.buttontoggledynamicgrid.Image = global::CodeImp.DoomBuilder.Properties.Resources.GridDynamic; - this.buttontoggledynamicgrid.ImageTransparentColor = System.Drawing.Color.Magenta; - this.buttontoggledynamicgrid.Name = "buttontoggledynamicgrid"; - this.buttontoggledynamicgrid.Size = new System.Drawing.Size(23, 22); - this.buttontoggledynamicgrid.Tag = "builder_toggledynamicgrid"; - this.buttontoggledynamicgrid.Text = "Dynamic Grid Size"; - this.buttontoggledynamicgrid.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // buttontogglenightspath - // - this.buttontogglenightspath.Checked = true; - this.buttontogglenightspath.CheckOnClick = true; - this.buttontogglenightspath.CheckState = System.Windows.Forms.CheckState.Checked; - this.buttontogglenightspath.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.buttontogglenightspath.Image = global::CodeImp.DoomBuilder.Properties.Resources.axis1; - this.buttontogglenightspath.ImageTransparentColor = System.Drawing.Color.Magenta; - this.buttontogglenightspath.Name = "buttontogglenightspath"; - this.buttontogglenightspath.Size = new System.Drawing.Size(23, 22); - this.buttontogglenightspath.Tag = "builder_togglenightspath"; - this.buttontogglenightspath.Text = "Show Waypoint and NiGHTS Paths"; - this.buttontogglenightspath.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // separatorfullbrightness - // - this.separatorfullbrightness.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.buttontogglecomments.Checked = true; + this.buttontogglecomments.CheckState = System.Windows.Forms.CheckState.Checked; + this.buttontogglecomments.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttontogglecomments.Image = global::CodeImp.DoomBuilder.Properties.Resources.Comment; + this.buttontogglecomments.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttontogglecomments.Name = "buttontogglecomments"; + this.buttontogglecomments.Size = new System.Drawing.Size(23, 22); + this.buttontogglecomments.Tag = "builder_togglecomments"; + this.buttontogglecomments.Text = "Show Comments"; + this.buttontogglecomments.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // separatorfullbrightness + // + this.separatorfullbrightness.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.separatorfullbrightness.Name = "separatorfullbrightness"; this.separatorfullbrightness.Size = new System.Drawing.Size(6, 25); // @@ -1664,19 +1693,6 @@ namespace CodeImp.DoomBuilder.Windows this.seperatorviews.Name = "seperatorviews"; this.seperatorviews.Size = new System.Drawing.Size(6, 25); // - // buttontogglecomments - // - this.buttontogglecomments.Checked = true; - this.buttontogglecomments.CheckState = System.Windows.Forms.CheckState.Checked; - this.buttontogglecomments.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.buttontogglecomments.Image = global::CodeImp.DoomBuilder.Properties.Resources.Comment; - this.buttontogglecomments.ImageTransparentColor = System.Drawing.Color.Magenta; - this.buttontogglecomments.Name = "buttontogglecomments"; - this.buttontogglecomments.Size = new System.Drawing.Size(23, 22); - this.buttontogglecomments.Tag = "builder_togglecomments"; - this.buttontogglecomments.Text = "Show Comments"; - this.buttontogglecomments.Click += new System.EventHandler(this.InvokeTaggedAction); - // // buttonsnaptogrid // this.buttonsnaptogrid.Checked = true; @@ -1690,6 +1706,20 @@ namespace CodeImp.DoomBuilder.Windows this.buttonsnaptogrid.Text = "Snap to Grid"; this.buttonsnaptogrid.Click += new System.EventHandler(this.InvokeTaggedAction); // + // buttontoggledynamicgrid + // + this.buttontoggledynamicgrid.Checked = true; + this.buttontoggledynamicgrid.CheckOnClick = true; + this.buttontoggledynamicgrid.CheckState = System.Windows.Forms.CheckState.Checked; + this.buttontoggledynamicgrid.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttontoggledynamicgrid.Image = global::CodeImp.DoomBuilder.Properties.Resources.GridDynamic; + this.buttontoggledynamicgrid.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttontoggledynamicgrid.Name = "buttontoggledynamicgrid"; + this.buttontoggledynamicgrid.Size = new System.Drawing.Size(23, 22); + this.buttontoggledynamicgrid.Tag = "builder_toggledynamicgrid"; + this.buttontoggledynamicgrid.Text = "Dynamic Grid Size"; + this.buttontoggledynamicgrid.Click += new System.EventHandler(this.InvokeTaggedAction); + // // buttonautomerge // this.buttonautomerge.Checked = true; @@ -1716,6 +1746,20 @@ namespace CodeImp.DoomBuilder.Windows this.buttonautoclearsidetextures.Text = "Auto Clear Sidedef Textures"; this.buttonautoclearsidetextures.Click += new System.EventHandler(this.InvokeTaggedAction); // + // buttontogglenightspath + // + this.buttontogglenightspath.Checked = true; + this.buttontogglenightspath.CheckOnClick = true; + this.buttontogglenightspath.CheckState = System.Windows.Forms.CheckState.Checked; + this.buttontogglenightspath.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttontogglenightspath.Image = global::CodeImp.DoomBuilder.Properties.Resources.axis1; + this.buttontogglenightspath.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttontogglenightspath.Name = "buttontogglenightspath"; + this.buttontogglenightspath.Size = new System.Drawing.Size(23, 22); + this.buttontogglenightspath.Tag = "builder_togglenightspath"; + this.buttontogglenightspath.Text = "Show NiGHTS Path"; + this.buttontogglenightspath.Click += new System.EventHandler(this.InvokeTaggedAction); + // // seperatorgeometry // this.seperatorgeometry.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); @@ -1728,7 +1772,7 @@ namespace CodeImp.DoomBuilder.Windows this.buttontogglefx.Image = global::CodeImp.DoomBuilder.Properties.Resources.fx; this.buttontogglefx.ImageTransparentColor = System.Drawing.Color.Magenta; this.buttontogglefx.Name = "buttontogglefx"; - this.buttontogglefx.Size = new System.Drawing.Size(23, 22); + this.buttontogglefx.Size = new System.Drawing.Size(23, 20); this.buttontogglefx.Tag = "builder_gztogglefx"; this.buttontogglefx.Text = "Toggle GZDoom Effects"; this.buttontogglefx.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -1845,22 +1889,22 @@ namespace CodeImp.DoomBuilder.Windows this.buttontogglefog.Tag = "builder_gztogglefog"; this.buttontogglefog.Text = "Toggle Fog Rendering"; this.buttontogglefog.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // buttontogglesky - // - this.buttontogglesky.CheckOnClick = true; - this.buttontogglesky.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.buttontogglesky.Image = global::CodeImp.DoomBuilder.Properties.Resources.Sky; - this.buttontogglesky.ImageTransparentColor = System.Drawing.Color.Magenta; - this.buttontogglesky.Name = "buttontogglesky"; - this.buttontogglesky.Size = new System.Drawing.Size(23, 20); - this.buttontogglesky.Tag = "builder_gztogglesky"; - this.buttontogglesky.Text = "Toggle Sky Rendering"; - this.buttontogglesky.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // buttontoggleeventlines - // - this.buttontoggleeventlines.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + // + // buttontogglesky + // + this.buttontogglesky.CheckOnClick = true; + this.buttontogglesky.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttontogglesky.Image = global::CodeImp.DoomBuilder.Properties.Resources.Sky; + this.buttontogglesky.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttontogglesky.Name = "buttontogglesky"; + this.buttontogglesky.Size = new System.Drawing.Size(23, 20); + this.buttontogglesky.Tag = "builder_gztogglesky"; + this.buttontogglesky.Text = "Toggle Sky Rendering"; + this.buttontogglesky.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // buttontoggleeventlines + // + this.buttontoggleeventlines.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttontoggleeventlines.Image = global::CodeImp.DoomBuilder.Properties.Resources.InfoLine; this.buttontoggleeventlines.ImageTransparentColor = System.Drawing.Color.Magenta; this.buttontoggleeventlines.Name = "buttontoggleeventlines"; @@ -1925,7 +1969,6 @@ namespace CodeImp.DoomBuilder.Windows this.statusbar.Name = "statusbar"; this.statusbar.ShowItemToolTips = true; this.statusbar.Size = new System.Drawing.Size(1012, 23); - this.statusbar.ImageScalingSize = MainForm.ScaledIconSize; this.statusbar.TabIndex = 2; // // statuslabel @@ -1934,7 +1977,7 @@ namespace CodeImp.DoomBuilder.Windows this.statuslabel.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.statuslabel.Margin = new System.Windows.Forms.Padding(2, 3, 0, 2); this.statuslabel.Name = "statuslabel"; - this.statuslabel.Size = new System.Drawing.Size(340, 18); + this.statuslabel.Size = new System.Drawing.Size(338, 18); this.statuslabel.Spring = true; this.statuslabel.Text = "Initializing user interface..."; this.statuslabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -1944,7 +1987,7 @@ namespace CodeImp.DoomBuilder.Windows this.configlabel.AutoSize = false; this.configlabel.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.configlabel.Name = "configlabel"; - this.configlabel.Size = new System.Drawing.Size((int)(280 * MainForm.DPIScaler.Width), (int)(18 * MainForm.DPIScaler.Height)); + this.configlabel.Size = new System.Drawing.Size(280, 18); this.configlabel.Text = "ZDoom (Doom in Hexen Format)"; this.configlabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.configlabel.ToolTipText = "Current Game Configuration"; @@ -2292,9 +2335,9 @@ namespace CodeImp.DoomBuilder.Windows // // console // - this.console.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); + this.console.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.console.Location = new System.Drawing.Point(3, 3); this.console.Name = "console"; this.console.Size = new System.Drawing.Size(851, 98); @@ -2355,16 +2398,16 @@ namespace CodeImp.DoomBuilder.Windows this.display.Name = "display"; this.display.Size = new System.Drawing.Size(542, 307); this.display.TabIndex = 5; - this.display.MouseUp += new System.Windows.Forms.MouseEventHandler(this.display_MouseUp); - this.display.MouseLeave += new System.EventHandler(this.display_MouseLeave); this.display.Paint += new System.Windows.Forms.PaintEventHandler(this.display_Paint); - this.display.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.display_PreviewKeyDown); - this.display.MouseMove += new System.Windows.Forms.MouseEventHandler(this.display_MouseMove); - this.display.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.display_MouseDoubleClick); this.display.MouseClick += new System.Windows.Forms.MouseEventHandler(this.display_MouseClick); + this.display.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.display_MouseDoubleClick); this.display.MouseDown += new System.Windows.Forms.MouseEventHandler(this.display_MouseDown); - this.display.Resize += new System.EventHandler(this.display_Resize); this.display.MouseEnter += new System.EventHandler(this.display_MouseEnter); + this.display.MouseLeave += new System.EventHandler(this.display_MouseLeave); + this.display.MouseMove += new System.Windows.Forms.MouseEventHandler(this.display_MouseMove); + this.display.MouseUp += new System.Windows.Forms.MouseEventHandler(this.display_MouseUp); + this.display.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.display_PreviewKeyDown); + this.display.Resize += new System.EventHandler(this.display_Resize); // // processor // @@ -2382,7 +2425,7 @@ namespace CodeImp.DoomBuilder.Windows // dockersspace // this.dockersspace.Dock = System.Windows.Forms.DockStyle.Left; - this.dockersspace.Location = new System.Drawing.Point(0, 49); + this.dockersspace.Location = new System.Drawing.Point(30, 49); this.dockersspace.Name = "dockersspace"; this.dockersspace.Size = new System.Drawing.Size(26, 515); this.dockersspace.TabIndex = 6; @@ -2390,7 +2433,6 @@ namespace CodeImp.DoomBuilder.Windows // modestoolbar // this.modestoolbar.AutoSize = false; - this.modestoolbar.ImageScalingSize = MainForm.ScaledIconSize; this.modestoolbar.Dock = System.Windows.Forms.DockStyle.Left; this.modestoolbar.Location = new System.Drawing.Point(0, 49); this.modestoolbar.Name = "modestoolbar"; @@ -2406,9 +2448,9 @@ namespace CodeImp.DoomBuilder.Windows this.dockerspanel.Size = new System.Drawing.Size(236, 467); this.dockerspanel.TabIndex = 7; this.dockerspanel.TabStop = false; - this.dockerspanel.UserResize += new System.EventHandler(this.dockerspanel_UserResize); - this.dockerspanel.Collapsed += new System.EventHandler(this.LoseFocus); this.dockerspanel.MouseContainerEnter += new System.EventHandler(this.dockerspanel_MouseContainerEnter); + this.dockerspanel.Collapsed += new System.EventHandler(this.LoseFocus); + this.dockerspanel.UserResize += new System.EventHandler(this.dockerspanel_UserResize); // // dockerscollapser // @@ -2431,50 +2473,13 @@ namespace CodeImp.DoomBuilder.Windows this.modecontrolsloolbar.Location = new System.Drawing.Point(328, 0); this.modecontrolsloolbar.Name = "modecontrolsloolbar"; this.modecontrolsloolbar.Size = new System.Drawing.Size(43, 24); - this.modecontrolsloolbar.ImageScalingSize = MainForm.ScaledIconSize; this.modecontrolsloolbar.TabIndex = 1; this.modecontrolsloolbar.Text = "toolStrip1"; this.modecontrolsloolbar.Visible = false; // - // itemtogglecomments + // MainForm // - this.itemtogglecomments.Checked = true; - this.itemtogglecomments.CheckOnClick = true; - this.itemtogglecomments.CheckState = System.Windows.Forms.CheckState.Checked; - this.itemtogglecomments.Image = global::CodeImp.DoomBuilder.Properties.Resources.Comment; - this.itemtogglecomments.Name = "itemtogglecomments"; - this.itemtogglecomments.Size = new System.Drawing.Size(215, 22); - this.itemtogglecomments.Tag = "builder_togglecomments"; - this.itemtogglecomments.Text = "Show Comments"; - this.itemtogglecomments.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // itemdynamicgridsize - // - this.itemdynamicgridsize.Checked = true; - this.itemdynamicgridsize.CheckOnClick = true; - this.itemdynamicgridsize.CheckState = System.Windows.Forms.CheckState.Checked; - this.itemdynamicgridsize.Image = global::CodeImp.DoomBuilder.Properties.Resources.GridDynamic; - this.itemdynamicgridsize.Name = "itemdynamicgridsize"; - this.itemdynamicgridsize.Size = new System.Drawing.Size(219, 22); - this.itemdynamicgridsize.Tag = "builder_toggledynamicgrid"; - this.itemdynamicgridsize.Text = "Dynamic Grid Size"; - this.itemdynamicgridsize.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // itemrendernightspath - // - this.itemrendernightspath.Checked = true; - this.itemrendernightspath.CheckOnClick = true; - this.itemrendernightspath.CheckState = System.Windows.Forms.CheckState.Checked; - this.itemrendernightspath.Image = global::CodeImp.DoomBuilder.Properties.Resources.axis1; - this.itemrendernightspath.Name = "itemrendernightspath"; - this.itemrendernightspath.Size = new System.Drawing.Size(215, 22); - this.itemrendernightspath.Tag = "builder_togglenightspath"; - this.itemrendernightspath.Text = "Show Waypoint and NiGHTS Paths"; - this.itemrendernightspath.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // MainForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.ClientSize = new System.Drawing.Size(1012, 693); this.Controls.Add(this.dockerspanel); @@ -2488,18 +2493,18 @@ namespace CodeImp.DoomBuilder.Windows this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MainMenuStrip = this.menumain; this.Name = "MainForm"; - this.Opacity = 1; + this.Opacity = 1D; this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; this.Text = "Zone Builder"; + this.Activated += new System.EventHandler(this.MainForm_Activated); this.Deactivate += new System.EventHandler(this.MainForm_Deactivate); this.Load += new System.EventHandler(this.MainForm_Load); this.Shown += new System.EventHandler(this.MainForm_Shown); - this.Activated += new System.EventHandler(this.MainForm_Activated); + this.ResizeEnd += new System.EventHandler(this.MainForm_ResizeEnd); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyDown); this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyUp); this.Move += new System.EventHandler(this.MainForm_Move); this.Resize += new System.EventHandler(this.MainForm_Resize); - this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyDown); - this.ResizeEnd += new System.EventHandler(this.MainForm_ResizeEnd); this.menumain.ResumeLayout(false); this.menumain.PerformLayout(); this.toolbar.ResumeLayout(false); @@ -2737,5 +2742,6 @@ namespace CodeImp.DoomBuilder.Windows private ToolStripMenuItem itemdynamicgridsize; private ToolStripMenuItem itemrendernightspath; private ToolStripMenuItem itemtogglecomments; + private ToolStripMenuItem itemdosnapto1mp; } } \ No newline at end of file diff --git a/Source/Core/Windows/ThingBrowser2Form.cs b/Source/Core/Windows/ThingBrowser2Form.cs new file mode 100644 index 0000000..a6f76c7 --- /dev/null +++ b/Source/Core/Windows/ThingBrowser2Form.cs @@ -0,0 +1,362 @@ + +#region ================== Copyright (c) 2007 Pascal vd Heiden + +/* + * Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com + * This program is released under GNU General Public License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#endregion + +#region ================== Namespaces + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; +using CodeImp.DoomBuilder.Config; +using CodeImp.DoomBuilder.Geometry; +using CodeImp.DoomBuilder.Map; +using CodeImp.DoomBuilder.Types; + +#endregion + +//JBR A little more advanced version of ThingBrowserForm +namespace CodeImp.DoomBuilder.Windows +{ + /// + /// Dialog window that allows setting up Thing properties. + /// + public partial class ThingBrowser2Form : DelayedForm + { + #region ================== Properties + + public int SelectedType { get { return s_thingType; } } + public int SelectedParameter { get { return s_parameter; } } + public Dictionary SelectedFlags { get { return s_flags; } } // oh no... not read-only at all but atleast it's fast. + public float SelectedAngleDoom { get { return s_angleDoom; } } + public float SelectedPosZ { get { return s_posZ; } } + + #endregion + + #region ================== Variables + + private bool m_ok; + private static int s_thingType = 1; + private static int s_parameter = 0; + private static Dictionary s_flags = new Dictionary(); + private static int s_angleDoom = 0; + private static float s_posZ = 0f; + + private ThingTypeInfo thinginfo; + private bool preventchanges; + private bool flagsvalue_ignore = false; + private bool flags_ignore = false; + + //JBR Hold result + public struct Result + { + public readonly bool OK; + public readonly int Type; + public readonly int Parameter; + public readonly Dictionary Flags; + public readonly int AngleDoom; + public readonly float Z; + + public Result(bool ok, int type, int parameter, Dictionary flags, int angledoom, float z) + { + this.OK = ok; + this.Type = type; + this.Parameter = parameter; + this.Flags = flags; + this.AngleDoom = angledoom; + this.Z = z; + } + + public void Apply(Thing t) + { + t.SRB2Type = this.Type; + t.Parameter = this.Parameter; + foreach (KeyValuePair flag in this.Flags) + { + t.SetFlag(flag.Key, flag.Value); + } + t.Move(t.Position.x, t.Position.y, this.Z); + t.Rotate(this.AngleDoom); + } + } + + #endregion + + #region ================== Constructor + + // Constructor + public ThingBrowser2Form() + { + // Initialize + InitializeComponent(); + m_ok = false; + + preventchanges = true; + + // Fill flags list + foreach(KeyValuePair tf in General.Map.Config.ThingFlags) + flags.Add(tf.Value, tf.Key); + + // Thing height? + posZ.Visible = General.Map.FormatInterface.HasThingHeight; + zlabel.Visible = General.Map.FormatInterface.HasThingHeight; + + //mxd. Decimals allowed? + if(General.Map.FormatInterface.VertexDecimals > 0) + { + posZ.AllowDecimal = true; + } + + // Setup types list + thingslist.Setup(); + + // Set type + thingslist.SelectType(s_thingType, s_parameter); + + // Flags + ThingTypeInfo ti = General.Map.Data.GetThingInfoEx(s_thingType); + IDictionary newFlags = (ti == null || ti.Flags.Count == 0) ? General.Map.Config.ThingFlags : ti.Flags; + flags.UpdateCheckboxes(newFlags); + anglelabel.Text = (ti == null) ? "Angle:" : ti.AngleText + ":"; + flagsvallabel.Text = (ti == null) ? "Flags value:" : ti.FlagsValueText + ":"; + foreach (CheckBox c in flags.Checkboxes) + if (s_flags.ContainsKey(c.Tag.ToString())) c.Checked = s_flags[c.Tag.ToString()]; + + // Coordination + angle.Text = s_angleDoom.ToString(); + + // Z Position + posZ.Text = s_posZ.ToString(); + posZ.AllowNegative = General.Map.FormatInterface.MinThingHeight < 0; + + // Update... + flags.UpdateCheckboxes(newFlags); + if (ti != null) + { + flagsvallabel.Text = ti.FlagsValueText + ":"; + } + + preventchanges = false; + + angle_WhenTextChanged(angle, EventArgs.Empty); + flags_OnValueChanged(flags, EventArgs.Empty); + flagsvalue.Text = evaluateFlagsValue(); + } + + #endregion + + #region ================== Methods + + private string evaluateFlagsValue() + { + int i = 1; + int value = 0; + foreach (CheckBox box in flags.Checkboxes) + { + if (box.CheckState == CheckState.Indeterminate) return ""; + if (box.CheckState == CheckState.Checked) value += i; + i *= 2; + } + + if (General.Map.SRB2) + { + float z = posZ.GetResultFloat(s_posZ); + return (value + ((int)z << 4)).ToString(); + } + else return value.ToString(); + } + + public Result GetThingResult() + { + return new Result(m_ok, s_thingType, s_parameter, s_flags, s_angleDoom, s_posZ); + } + + // This browses for a thing type + // Returns the new thing type or the same thing type when cancelled + public static Result BrowseThing(IWin32Window owner) + { + ThingBrowser2Form f = new ThingBrowser2Form(); + DialogResult result = f.ShowDialog(owner); + Result tr = f.GetThingResult(); + f.Dispose(); + return tr; + } + + #endregion + + #region ================== Events + + //mxd + private void thingtype_OnTypeDoubleClicked() + { + apply_Click(this, EventArgs.Empty); + } + + // Angle text changes + private void angle_WhenTextChanged(object sender, EventArgs e) + { + if(preventchanges) return; + preventchanges = true; + anglecontrol.Angle = angle.GetResult(GZBuilder.Controls.AngleControl.NO_ANGLE); + preventchanges = false; + } + + //mxd. Angle control clicked + private void anglecontrol_AngleChanged(object sender, EventArgs e) + { + if(preventchanges) return; + angle.Text = anglecontrol.Angle.ToString(); + } + + // Apply clicked + private void apply_Click(object sender, EventArgs e) + { + List defaultflags = new List(); + + // Verify the type + if(((thingslist.GetFullType(0) < General.Map.FormatInterface.MinThingType) || (thingslist.GetFullType(0) > General.Map.FormatInterface.MaxThingType))) + { + General.ShowWarningMessage("Thing type must be between " + General.Map.FormatInterface.MinThingType + " and " + General.Map.FormatInterface.MaxThingType + ".", MessageBoxButtons.OK); + return; + } + + // Apply all flags + s_thingType = thingslist.GetResult(s_thingType); + s_parameter = thingslist.GetFullType(s_thingType) / 4096; + s_angleDoom = angle.GetResult(s_angleDoom); + s_posZ = posZ.GetResultFloat(s_posZ); + s_flags = new Dictionary(); + foreach (CheckBox c in flags.Checkboxes) + { + s_flags.Add(c.Tag.ToString(), c.Checked); + } + m_ok = true; + + // Done + this.DialogResult = DialogResult.OK; + this.Close(); + } + + // Cancel clicked + private void cancel_Click(object sender, EventArgs e) + { + // Be gone + this.DialogResult = DialogResult.Cancel; + this.Close(); + } + + //mxd + private void ThingBrowserAdvForm_Shown(object sender, EventArgs e) + { + thingslist.FocusTextbox(); + } + + // Help + private void ThingBrowserAdvForm_HelpRequested(object sender, HelpEventArgs hlpevent) + { + General.ShowHelp("w_thingedit.html"); + hlpevent.Handled = true; + } + + private void posZ_WhenTextChanged(object sender, EventArgs e) + { + if (preventchanges) return; + if (!flagsvalue_ignore) + { + flagsvalue_ignore = true; + flagsvalue.Text = evaluateFlagsValue(); + flagsvalue_ignore = false; + } + } + + private void flagsvalue_TextChanged(object sender, EventArgs e) + { + if (!flagsvalue_ignore && !string.IsNullOrEmpty(flagsvalue.Text)) + { + flagsvalue_ignore = true; + int value = General.Clamp(flagsvalue.GetResult(0), 0, 0xFFFF); + int i = 1; + flags_ignore = true; + foreach (CheckBox box in flags.Checkboxes) + { + box.Checked = ((value & i) == i); + i *= 2; + } + flags_ignore = false; + flags_OnValueChanged(this, null); + + if (General.Map.SRB2) + { + int z = value >> 4; + posZ.Text = z.ToString(); + } + flagsvalue_ignore = false; + } + } + + // Selected type changes + private void thingtype_OnTypeChanged(ThingTypeInfo value) + { + thinginfo = value; + + //mxd. Update things + if(preventchanges) return; + + if(((thingslist.GetResult(0) < General.Map.FormatInterface.MinThingType) || (thingslist.GetResult(0) > General.Map.FormatInterface.MaxThingType))) + return; + + IDictionary newFlags = (thinginfo == null || thinginfo.Flags.Count == 0) ? General.Map.Config.ThingFlags : thinginfo.Flags; + flags.UpdateCheckboxes(newFlags); + anglelabel.Text = (thinginfo == null) ? "Angle:" : thinginfo.AngleText + ":"; + flagsvallabel.Text = (thinginfo == null) ? "Flags value:" : thinginfo.FlagsValueText + ":"; + } + + //mxd + private void flags_OnValueChanged(object sender, EventArgs e) + { + if(flags_ignore || preventchanges) return; + + // Gather enabled flags + HashSet activeflags = new HashSet(); + foreach(CheckBox cb in flags.Checkboxes) + { + if(cb.CheckState != CheckState.Unchecked) activeflags.Add(cb.Tag.ToString()); + } + + // Check em + List warnings = ThingFlagsCompare.CheckFlags(activeflags); + if(warnings.Count > 0) + { + //got missing flags + tooltip.SetToolTip(missingflags, string.Join(Environment.NewLine, warnings.ToArray())); + missingflags.Visible = true; + settingsgroup.ForeColor = Color.DarkRed; + return; + } + + //everything is OK + missingflags.Visible = false; + settingsgroup.ForeColor = SystemColors.ControlText; + if (!flagsvalue_ignore) + { + flagsvalue_ignore = true; + flagsvalue.Text = evaluateFlagsValue(); + flagsvalue_ignore = false; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Source/Core/Windows/ThingBrowser2Form.designer.cs b/Source/Core/Windows/ThingBrowser2Form.designer.cs new file mode 100644 index 0000000..709e952 --- /dev/null +++ b/Source/Core/Windows/ThingBrowser2Form.designer.cs @@ -0,0 +1,313 @@ +namespace CodeImp.DoomBuilder.Windows +{ + partial class ThingBrowser2Form + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.GroupBox groupBox2; + this.anglecontrol = new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl(); + this.anglelabel = new System.Windows.Forms.Label(); + this.posZ = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.angle = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.zlabel = new System.Windows.Forms.Label(); + this.tooltip = new System.Windows.Forms.ToolTip(this.components); + this.apply = new System.Windows.Forms.Button(); + this.cancel = new System.Windows.Forms.Button(); + this.applypanel = new System.Windows.Forms.Panel(); + this.panel = new System.Windows.Forms.Panel(); + this.typegroup = new System.Windows.Forms.GroupBox(); + this.thingslist = new CodeImp.DoomBuilder.Controls.ThingBrowserControl(); + this.settingsgroup = new System.Windows.Forms.GroupBox(); + this.flagsvallabel = new System.Windows.Forms.Label(); + this.flagsvalue = new CodeImp.DoomBuilder.Controls.NumericTextbox(); + this.missingflags = new System.Windows.Forms.PictureBox(); + this.flags = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl(); + groupBox2 = new System.Windows.Forms.GroupBox(); + groupBox2.SuspendLayout(); + this.applypanel.SuspendLayout(); + this.panel.SuspendLayout(); + this.typegroup.SuspendLayout(); + this.settingsgroup.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.missingflags)).BeginInit(); + this.SuspendLayout(); + // + // groupBox2 + // + groupBox2.Controls.Add(this.anglecontrol); + groupBox2.Controls.Add(this.anglelabel); + groupBox2.Controls.Add(this.posZ); + groupBox2.Controls.Add(this.angle); + groupBox2.Controls.Add(this.zlabel); + groupBox2.Location = new System.Drawing.Point(279, 242); + groupBox2.Name = "groupBox2"; + groupBox2.Size = new System.Drawing.Size(271, 134); + groupBox2.TabIndex = 2; + groupBox2.TabStop = false; + // + // anglecontrol + // + this.anglecontrol.Angle = 0; + this.anglecontrol.AngleOffset = 0; + this.anglecontrol.Location = new System.Drawing.Point(149, 12); + this.anglecontrol.Name = "anglecontrol"; + this.anglecontrol.Size = new System.Drawing.Size(116, 116); + this.anglecontrol.TabIndex = 2; + this.anglecontrol.AngleChanged += new System.EventHandler(this.anglecontrol_AngleChanged); + // + // anglelabel + // + this.anglelabel.Location = new System.Drawing.Point(9, 23); + this.anglelabel.Name = "anglelabel"; + this.anglelabel.Size = new System.Drawing.Size(50, 14); + this.anglelabel.TabIndex = 0; + this.anglelabel.Text = "Angle:"; + this.anglelabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // posZ + // + this.posZ.AllowDecimal = false; + this.posZ.AllowNegative = true; + this.posZ.AllowRelative = true; + this.posZ.ButtonStep = 8; + this.posZ.ButtonStepBig = 16F; + this.posZ.ButtonStepFloat = 1F; + this.posZ.ButtonStepSmall = 1F; + this.posZ.ButtonStepsUseModifierKeys = true; + this.posZ.ButtonStepsWrapAround = false; + this.posZ.Location = new System.Drawing.Point(61, 104); + this.posZ.Name = "posZ"; + this.posZ.Size = new System.Drawing.Size(82, 24); + this.posZ.StepValues = null; + this.posZ.TabIndex = 4; + this.posZ.WhenTextChanged += new System.EventHandler(this.posZ_WhenTextChanged); + // + // angle + // + this.angle.AllowDecimal = false; + this.angle.AllowNegative = true; + this.angle.AllowRelative = true; + this.angle.ButtonStep = 5; + this.angle.ButtonStepBig = 15F; + this.angle.ButtonStepFloat = 1F; + this.angle.ButtonStepSmall = 1F; + this.angle.ButtonStepsUseModifierKeys = true; + this.angle.ButtonStepsWrapAround = false; + this.angle.Location = new System.Drawing.Point(61, 19); + this.angle.Name = "angle"; + this.angle.Size = new System.Drawing.Size(82, 24); + this.angle.StepValues = null; + this.angle.TabIndex = 1; + this.angle.WhenTextChanged += new System.EventHandler(this.angle_WhenTextChanged); + // + // zlabel + // + this.zlabel.Location = new System.Drawing.Point(5, 109); + this.zlabel.Name = "zlabel"; + this.zlabel.Size = new System.Drawing.Size(50, 14); + this.zlabel.TabIndex = 3; + this.zlabel.Text = "Height:"; + this.zlabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.apply.Location = new System.Drawing.Point(320, 4); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(112, 25); + this.apply.TabIndex = 0; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(438, 4); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(112, 25); + this.cancel.TabIndex = 1; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // applypanel + // + this.applypanel.Controls.Add(this.cancel); + this.applypanel.Controls.Add(this.apply); + this.applypanel.Location = new System.Drawing.Point(12, 401); + this.applypanel.Name = "applypanel"; + this.applypanel.Size = new System.Drawing.Size(553, 32); + this.applypanel.TabIndex = 1; + // + // panel + // + this.panel.BackColor = System.Drawing.SystemColors.Window; + this.panel.Controls.Add(this.typegroup); + this.panel.Controls.Add(groupBox2); + this.panel.Controls.Add(this.settingsgroup); + this.panel.Location = new System.Drawing.Point(12, 12); + this.panel.Name = "panel"; + this.panel.Size = new System.Drawing.Size(553, 378); + this.panel.TabIndex = 0; + // + // typegroup + // + this.typegroup.Controls.Add(this.thingslist); + this.typegroup.Location = new System.Drawing.Point(4, 3); + this.typegroup.Name = "typegroup"; + this.typegroup.Size = new System.Drawing.Size(269, 373); + this.typegroup.TabIndex = 0; + this.typegroup.TabStop = false; + this.typegroup.Text = " Thing "; + // + // thingslist + // + this.thingslist.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.thingslist.Location = new System.Drawing.Point(9, 13); + this.thingslist.Margin = new System.Windows.Forms.Padding(6); + this.thingslist.Name = "thingslist"; + this.thingslist.Size = new System.Drawing.Size(251, 357); + this.thingslist.TabIndex = 0; + this.thingslist.UseMultiSelection = false; + this.thingslist.OnTypeChanged += new CodeImp.DoomBuilder.Controls.ThingBrowserControl.TypeChangedDeletegate(this.thingtype_OnTypeChanged); + this.thingslist.OnTypeDoubleClicked += new CodeImp.DoomBuilder.Controls.ThingBrowserControl.TypeDoubleClickDeletegate(this.thingtype_OnTypeDoubleClicked); + // + // settingsgroup + // + this.settingsgroup.Controls.Add(this.flagsvallabel); + this.settingsgroup.Controls.Add(this.flagsvalue); + this.settingsgroup.Controls.Add(this.missingflags); + this.settingsgroup.Controls.Add(this.flags); + this.settingsgroup.Location = new System.Drawing.Point(279, 3); + this.settingsgroup.Name = "settingsgroup"; + this.settingsgroup.Size = new System.Drawing.Size(271, 233); + this.settingsgroup.TabIndex = 1; + this.settingsgroup.TabStop = false; + this.settingsgroup.Text = " Settings "; + // + // flagsvallabel + // + this.flagsvallabel.Location = new System.Drawing.Point(86, 198); + this.flagsvallabel.Name = "flagsvallabel"; + this.flagsvallabel.Size = new System.Drawing.Size(75, 14); + this.flagsvallabel.TabIndex = 1; + this.flagsvallabel.Text = "Flags value:"; + this.flagsvallabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // flagsvalue + // + this.flagsvalue.AllowDecimal = false; + this.flagsvalue.AllowNegative = false; + this.flagsvalue.AllowRelative = false; + this.flagsvalue.ForeColor = System.Drawing.SystemColors.HotTrack; + this.flagsvalue.ImeMode = System.Windows.Forms.ImeMode.Off; + this.flagsvalue.Location = new System.Drawing.Point(177, 196); + this.flagsvalue.Name = "flagsvalue"; + this.flagsvalue.Size = new System.Drawing.Size(72, 20); + this.flagsvalue.TabIndex = 2; + this.flagsvalue.TextChanged += new System.EventHandler(this.flagsvalue_TextChanged); + // + // missingflags + // + this.missingflags.BackColor = System.Drawing.SystemColors.Window; + this.missingflags.Image = global::CodeImp.DoomBuilder.Properties.Resources.Warning; + this.missingflags.Location = new System.Drawing.Point(55, -2); + this.missingflags.Name = "missingflags"; + this.missingflags.Size = new System.Drawing.Size(16, 16); + this.missingflags.TabIndex = 5; + this.missingflags.TabStop = false; + this.missingflags.Visible = false; + // + // flags + // + this.flags.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.flags.AutoScroll = true; + this.flags.Columns = 2; + this.flags.Location = new System.Drawing.Point(14, 19); + this.flags.Name = "flags"; + this.flags.Size = new System.Drawing.Size(251, 211); + this.flags.TabIndex = 0; + this.flags.VerticalSpacing = 1; + this.flags.OnValueChanged += new System.EventHandler(this.flags_OnValueChanged); + // + // ThingBrowser2Form + // + this.AcceptButton = this.apply; + 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(577, 447); + this.Controls.Add(this.applypanel); + this.Controls.Add(this.panel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ThingBrowser2Form"; + this.Opacity = 1D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Choose Thing Type"; + this.Shown += new System.EventHandler(this.ThingBrowserAdvForm_Shown); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.ThingBrowserAdvForm_HelpRequested); + groupBox2.ResumeLayout(false); + this.applypanel.ResumeLayout(false); + this.panel.ResumeLayout(false); + this.typegroup.ResumeLayout(false); + this.settingsgroup.ResumeLayout(false); + this.settingsgroup.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.missingflags)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Button apply; + private System.Windows.Forms.GroupBox settingsgroup; + private CodeImp.DoomBuilder.Controls.CheckboxArrayControl flags; + private System.Windows.Forms.Label zlabel; + private CodeImp.DoomBuilder.Controls.ThingBrowserControl thingslist; + private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox angle; + private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox posZ; + private System.Windows.Forms.PictureBox missingflags; + private System.Windows.Forms.ToolTip tooltip; + private System.Windows.Forms.Panel panel; + private System.Windows.Forms.GroupBox typegroup; + private System.Windows.Forms.Panel applypanel; + private System.Windows.Forms.Label flagsvallabel; + private Controls.NumericTextbox flagsvalue; + private GZBuilder.Controls.AngleControl anglecontrol; + private System.Windows.Forms.Label anglelabel; + } +} \ No newline at end of file diff --git a/Source/Core/Windows/ThingBrowser2Form.resx b/Source/Core/Windows/ThingBrowser2Form.resx new file mode 100644 index 0000000..75d5970 --- /dev/null +++ b/Source/Core/Windows/ThingBrowser2Form.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + 17, 17 + + \ No newline at end of file diff --git a/Source/Core/Windows/ThingEditForm.Designer.cs b/Source/Core/Windows/ThingEditForm.Designer.cs index 3fbfa89..72dbd7e 100644 --- a/Source/Core/Windows/ThingEditForm.Designer.cs +++ b/Source/Core/Windows/ThingEditForm.Designer.cs @@ -1,542 +1,543 @@ namespace CodeImp.DoomBuilder.Windows { - partial class ThingEditForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; + partial class ThingEditForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } - #region Windows Form Designer generated code + #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.Windows.Forms.Label label7; - System.Windows.Forms.GroupBox groupBox2; - this.cbAbsoluteHeight = new System.Windows.Forms.CheckBox(); - this.label2 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.posX = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); - this.posY = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); - this.posZ = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); - this.zlabel = new System.Windows.Forms.Label(); - this.tooltip = new System.Windows.Forms.ToolTip(this.components); - this.browseaction = new System.Windows.Forms.Button(); - this.apply = new System.Windows.Forms.Button(); - this.cancel = new System.Windows.Forms.Button(); - this.applypanel = new System.Windows.Forms.Panel(); - this.hintlabel = new System.Windows.Forms.Label(); - this.hint = new System.Windows.Forms.PictureBox(); - this.panel = new System.Windows.Forms.Panel(); - this.actiongroup = new System.Windows.Forms.GroupBox(); - this.argscontrol = new CodeImp.DoomBuilder.Controls.ArgumentsControl(); - this.actionhelp = new CodeImp.DoomBuilder.Controls.ActionSpecialHelpButton(); - this.action = new CodeImp.DoomBuilder.Controls.ActionSelectorControl(true); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.cbRandomAngle = new System.Windows.Forms.CheckBox(); - this.anglecontrol = new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl(); - this.angle = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); - this.idgroup = new System.Windows.Forms.GroupBox(); - this.tagSelector = new CodeImp.DoomBuilder.GZBuilder.Controls.TagSelector(); - this.typegroup = new System.Windows.Forms.GroupBox(); - this.thingtype = new CodeImp.DoomBuilder.Controls.ThingBrowserControl(); - this.settingsgroup = new System.Windows.Forms.GroupBox(); - this.label3 = new System.Windows.Forms.Label(); - this.flagsvalue = new CodeImp.DoomBuilder.Controls.NumericTextbox(); - this.missingflags = new System.Windows.Forms.PictureBox(); - this.flags = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl(); - label7 = new System.Windows.Forms.Label(); - groupBox2 = new System.Windows.Forms.GroupBox(); - groupBox2.SuspendLayout(); - this.applypanel.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.hint)).BeginInit(); - this.panel.SuspendLayout(); - this.actiongroup.SuspendLayout(); - this.groupBox4.SuspendLayout(); - this.idgroup.SuspendLayout(); - this.typegroup.SuspendLayout(); - this.settingsgroup.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.missingflags)).BeginInit(); - this.SuspendLayout(); - // - // label7 - // - label7.AutoSize = true; - label7.Location = new System.Drawing.Point(15, 30); - label7.Name = "label7"; - label7.Size = new System.Drawing.Size(40, 13); - label7.TabIndex = 9; - label7.Text = "Action:"; - // - // groupBox2 - // - groupBox2.Controls.Add(this.cbAbsoluteHeight); - groupBox2.Controls.Add(this.label2); - groupBox2.Controls.Add(this.label1); - groupBox2.Controls.Add(this.posX); - groupBox2.Controls.Add(this.posY); - groupBox2.Controls.Add(this.posZ); - groupBox2.Controls.Add(this.zlabel); - groupBox2.Location = new System.Drawing.Point(279, 242); - groupBox2.Name = "groupBox2"; - groupBox2.Size = new System.Drawing.Size(158, 134); - groupBox2.TabIndex = 2; - groupBox2.TabStop = false; - groupBox2.Text = " Position "; - // - // cbAbsoluteHeight - // - this.cbAbsoluteHeight.AutoSize = true; - this.cbAbsoluteHeight.Location = new System.Drawing.Point(12, 111); - this.cbAbsoluteHeight.Name = "cbAbsoluteHeight"; - this.cbAbsoluteHeight.Size = new System.Drawing.Size(101, 17); - this.cbAbsoluteHeight.TabIndex = 16; - this.cbAbsoluteHeight.Text = "Absolute Height"; - this.cbAbsoluteHeight.UseVisualStyleBackColor = true; - this.cbAbsoluteHeight.CheckedChanged += new System.EventHandler(this.cbAbsoluteHeight_CheckedChanged); - // - // label2 - // - this.label2.Location = new System.Drawing.Point(5, 21); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(50, 14); - this.label2.TabIndex = 15; - this.label2.Text = "X:"; - this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // label1 - // - this.label1.Location = new System.Drawing.Point(5, 51); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(50, 14); - this.label1.TabIndex = 14; - this.label1.Text = "Y:"; - this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // posX - // - this.posX.AllowDecimal = false; - this.posX.AllowNegative = true; - this.posX.AllowRelative = true; - this.posX.ButtonStep = 8; - this.posX.ButtonStepBig = 16F; - this.posX.ButtonStepFloat = 1F; - this.posX.ButtonStepSmall = 1F; - this.posX.ButtonStepsUseModifierKeys = true; - this.posX.ButtonStepsWrapAround = false; - this.posX.Location = new System.Drawing.Point(61, 16); - this.posX.Name = "posX"; - this.posX.Size = new System.Drawing.Size(72, 24); - this.posX.StepValues = null; - this.posX.TabIndex = 13; - this.posX.WhenTextChanged += new System.EventHandler(this.posX_WhenTextChanged); - // - // posY - // - this.posY.AllowDecimal = false; - this.posY.AllowNegative = true; - this.posY.AllowRelative = true; - this.posY.ButtonStep = 8; - this.posY.ButtonStepBig = 16F; - this.posY.ButtonStepFloat = 1F; - this.posY.ButtonStepSmall = 1F; - this.posY.ButtonStepsUseModifierKeys = true; - this.posY.ButtonStepsWrapAround = false; - this.posY.Location = new System.Drawing.Point(61, 46); - this.posY.Name = "posY"; - this.posY.Size = new System.Drawing.Size(72, 24); - this.posY.StepValues = null; - this.posY.TabIndex = 12; - this.posY.WhenTextChanged += new System.EventHandler(this.posY_WhenTextChanged); - // - // posZ - // - this.posZ.AllowDecimal = false; - this.posZ.AllowNegative = true; - this.posZ.AllowRelative = true; - this.posZ.ButtonStep = 8; - this.posZ.ButtonStepBig = 16F; - this.posZ.ButtonStepFloat = 1F; - this.posZ.ButtonStepSmall = 1F; - this.posZ.ButtonStepsUseModifierKeys = true; - this.posZ.ButtonStepsWrapAround = false; - this.posZ.Location = new System.Drawing.Point(61, 76); - this.posZ.Name = "posZ"; - this.posZ.Size = new System.Drawing.Size(72, 24); - this.posZ.StepValues = null; - this.posZ.TabIndex = 11; - this.posZ.WhenTextChanged += new System.EventHandler(this.posZ_WhenTextChanged); - // - // zlabel - // - this.zlabel.Location = new System.Drawing.Point(5, 81); - this.zlabel.Name = "zlabel"; - this.zlabel.Size = new System.Drawing.Size(50, 14); - this.zlabel.TabIndex = 9; - this.zlabel.Text = "Height:"; - this.zlabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // browseaction - // - this.browseaction.Image = global::CodeImp.DoomBuilder.Properties.Resources.List; - this.browseaction.Location = new System.Drawing.Point(482, 25); - this.browseaction.Name = "browseaction"; - this.browseaction.Size = new System.Drawing.Size(28, 25); - this.browseaction.TabIndex = 1; - this.browseaction.Text = " "; - this.tooltip.SetToolTip(this.browseaction, "Browse Action"); - this.browseaction.UseVisualStyleBackColor = true; - this.browseaction.Click += new System.EventHandler(this.browseaction_Click); - // - // apply - // - this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.apply.Location = new System.Drawing.Point(320, 4); - this.apply.Name = "apply"; - this.apply.Size = new System.Drawing.Size(112, 25); - this.apply.TabIndex = 1; - this.apply.Text = "OK"; - this.apply.UseVisualStyleBackColor = true; - this.apply.Click += new System.EventHandler(this.apply_Click); - // - // cancel - // - this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancel.Location = new System.Drawing.Point(438, 4); - this.cancel.Name = "cancel"; - this.cancel.Size = new System.Drawing.Size(112, 25); - this.cancel.TabIndex = 2; - this.cancel.Text = "Cancel"; - this.cancel.UseVisualStyleBackColor = true; - this.cancel.Click += new System.EventHandler(this.cancel_Click); - // - // applypanel - // - this.applypanel.Controls.Add(this.cancel); - this.applypanel.Controls.Add(this.apply); - this.applypanel.Controls.Add(this.hintlabel); - this.applypanel.Controls.Add(this.hint); - this.applypanel.Location = new System.Drawing.Point(12, 624); - this.applypanel.Name = "applypanel"; - this.applypanel.Size = new System.Drawing.Size(553, 32); - this.applypanel.TabIndex = 6; - // - // hintlabel - // - this.hintlabel.AutoSize = true; - this.hintlabel.Location = new System.Drawing.Point(18, 3); - this.hintlabel.Name = "hintlabel"; - this.hintlabel.Size = new System.Drawing.Size(195, 26); - this.hintlabel.TabIndex = 4; - this.hintlabel.Text = "Select categories or several thing types \r\nto randomly assign them to selection"; - // - // hint - // - this.hint.Image = global::CodeImp.DoomBuilder.Properties.Resources.Lightbulb; - this.hint.Location = new System.Drawing.Point(0, 8); - this.hint.Name = "hint"; - this.hint.Size = new System.Drawing.Size(16, 16); - this.hint.TabIndex = 3; - this.hint.TabStop = false; - // - // panel - // - this.panel.BackColor = System.Drawing.SystemColors.Window; - this.panel.Controls.Add(this.actiongroup); - this.panel.Controls.Add(this.groupBox4); - this.panel.Controls.Add(this.idgroup); - this.panel.Controls.Add(this.typegroup); - this.panel.Controls.Add(groupBox2); - this.panel.Controls.Add(this.settingsgroup); - this.panel.Location = new System.Drawing.Point(12, 12); - this.panel.Name = "panel"; - this.panel.Size = new System.Drawing.Size(553, 606); - this.panel.TabIndex = 5; - // - // actiongroup - // - this.actiongroup.Controls.Add(this.argscontrol); - this.actiongroup.Controls.Add(this.actionhelp); - this.actiongroup.Controls.Add(label7); - this.actiongroup.Controls.Add(this.action); - this.actiongroup.Controls.Add(this.browseaction); - this.actiongroup.Location = new System.Drawing.Point(4, 382); - this.actiongroup.Name = "actiongroup"; - this.actiongroup.Size = new System.Drawing.Size(546, 145); - this.actiongroup.TabIndex = 22; - this.actiongroup.TabStop = false; - this.actiongroup.Text = " Action "; - // - // argscontrol - // - this.argscontrol.Location = new System.Drawing.Point(6, 57); - this.argscontrol.Name = "argscontrol"; - this.argscontrol.Size = new System.Drawing.Size(534, 80); - this.argscontrol.TabIndex = 15; - // - // actionhelp - // - this.actionhelp.Location = new System.Drawing.Point(512, 25); - this.actionhelp.Name = "actionhelp"; - this.actionhelp.Size = new System.Drawing.Size(28, 25); - this.actionhelp.TabIndex = 14; - // - // action - // - this.action.BackColor = System.Drawing.SystemColors.Control; - this.action.Cursor = System.Windows.Forms.Cursors.Default; - this.action.Empty = false; - this.action.GeneralizedCategories = null; - this.action.GeneralizedOptions = null; - this.action.Location = new System.Drawing.Point(62, 27); - this.action.Name = "action"; - this.action.Size = new System.Drawing.Size(414, 21); - this.action.TabIndex = 0; - this.action.Value = 402; - this.action.ValueChanges += new System.EventHandler(this.action_ValueChanges); - // - // groupBox4 - // - this.groupBox4.Controls.Add(this.cbRandomAngle); - this.groupBox4.Controls.Add(this.anglecontrol); - this.groupBox4.Controls.Add(this.angle); - this.groupBox4.Location = new System.Drawing.Point(443, 242); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.Size = new System.Drawing.Size(107, 134); - this.groupBox4.TabIndex = 3; - this.groupBox4.TabStop = false; - this.groupBox4.Text = " Angle"; - // - // cbRandomAngle - // - this.cbRandomAngle.AutoSize = true; - this.cbRandomAngle.Location = new System.Drawing.Point(6, 111); - this.cbRandomAngle.Name = "cbRandomAngle"; - this.cbRandomAngle.Size = new System.Drawing.Size(95, 17); - this.cbRandomAngle.TabIndex = 17; - this.cbRandomAngle.Text = "Random value"; - this.cbRandomAngle.UseVisualStyleBackColor = true; - this.cbRandomAngle.CheckedChanged += new System.EventHandler(this.cbRandomAngle_CheckedChanged); - // - // anglecontrol - // - this.anglecontrol.Angle = 0; - this.anglecontrol.AngleOffset = 0; - this.anglecontrol.Location = new System.Drawing.Point(20, 40); - this.anglecontrol.Name = "anglecontrol"; - this.anglecontrol.Size = new System.Drawing.Size(69, 69); - this.anglecontrol.TabIndex = 20; - this.anglecontrol.AngleChanged += new System.EventHandler(this.anglecontrol_AngleChanged); - // - // angle - // - this.angle.AllowDecimal = false; - this.angle.AllowNegative = true; - this.angle.AllowRelative = true; - this.angle.ButtonStep = 5; - this.angle.ButtonStepBig = 15F; - this.angle.ButtonStepFloat = 1F; - this.angle.ButtonStepSmall = 1F; - this.angle.ButtonStepsUseModifierKeys = true; - this.angle.ButtonStepsWrapAround = false; - this.angle.Location = new System.Drawing.Point(13, 16); - this.angle.Name = "angle"; - this.angle.Size = new System.Drawing.Size(82, 24); - this.angle.StepValues = null; - this.angle.TabIndex = 10; - this.angle.WhenTextChanged += new System.EventHandler(this.angle_WhenTextChanged); - // - // idgroup - // - this.idgroup.Controls.Add(this.tagSelector); - this.idgroup.Location = new System.Drawing.Point(4, 533); - this.idgroup.Name = "idgroup"; - this.idgroup.Size = new System.Drawing.Size(546, 66); - this.idgroup.TabIndex = 0; - this.idgroup.TabStop = false; - this.idgroup.Text = " Identification "; - // - // tagSelector - // - this.tagSelector.Location = new System.Drawing.Point(6, 19); - this.tagSelector.Name = "tagSelector"; - this.tagSelector.Size = new System.Drawing.Size(430, 35); - this.tagSelector.TabIndex = 8; - // - // typegroup - // - this.typegroup.Controls.Add(this.thingtype); - this.typegroup.Location = new System.Drawing.Point(4, 3); - this.typegroup.Name = "typegroup"; - this.typegroup.Size = new System.Drawing.Size(269, 373); - this.typegroup.TabIndex = 0; - this.typegroup.TabStop = false; - this.typegroup.Text = " Thing "; - // - // thingtype - // - this.thingtype.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); - this.thingtype.Location = new System.Drawing.Point(9, 13); - this.thingtype.Margin = new System.Windows.Forms.Padding(6); - this.thingtype.Name = "thingtype"; - this.thingtype.Size = new System.Drawing.Size(251, 357); - this.thingtype.TabIndex = 0; - this.thingtype.UseMultiSelection = true; - this.thingtype.OnTypeChanged += new CodeImp.DoomBuilder.Controls.ThingBrowserControl.TypeChangedDeletegate(this.thingtype_OnTypeChanged); - this.thingtype.OnTypeDoubleClicked += new CodeImp.DoomBuilder.Controls.ThingBrowserControl.TypeDoubleClickDeletegate(this.thingtype_OnTypeDoubleClicked); - // - // settingsgroup - // - this.settingsgroup.Controls.Add(this.label3); - this.settingsgroup.Controls.Add(this.flagsvalue); - this.settingsgroup.Controls.Add(this.missingflags); - this.settingsgroup.Controls.Add(this.flags); - this.settingsgroup.Location = new System.Drawing.Point(279, 3); - this.settingsgroup.Name = "settingsgroup"; - this.settingsgroup.Size = new System.Drawing.Size(271, 233); - this.settingsgroup.TabIndex = 1; - this.settingsgroup.TabStop = false; - this.settingsgroup.Text = " Settings "; - // - // label3 - // - this.label3.Location = new System.Drawing.Point(86, 198); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(75, 14); - this.label3.TabIndex = 16; - this.label3.Text = "Flags value:"; - this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // flagsvalue - // - this.flagsvalue.AllowDecimal = false; - this.flagsvalue.AllowNegative = false; - this.flagsvalue.AllowRelative = false; - this.flagsvalue.ForeColor = System.Drawing.SystemColors.HotTrack; - this.flagsvalue.ImeMode = System.Windows.Forms.ImeMode.Off; - this.flagsvalue.Location = new System.Drawing.Point(177, 196); - this.flagsvalue.Name = "flagsvalue"; - this.flagsvalue.Size = new System.Drawing.Size(72, 20); - this.flagsvalue.TabIndex = 14; - this.flagsvalue.TextChanged += new System.EventHandler(this.flagsvalue_TextChanged); - // - // missingflags - // - this.missingflags.BackColor = System.Drawing.SystemColors.Window; - this.missingflags.Image = global::CodeImp.DoomBuilder.Properties.Resources.Warning; - this.missingflags.Location = new System.Drawing.Point(55, -2); - this.missingflags.Name = "missingflags"; - this.missingflags.Size = new System.Drawing.Size(16, 16); - this.missingflags.TabIndex = 5; - this.missingflags.TabStop = false; - this.missingflags.Visible = false; - // - // flags - // - this.flags.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.flags.AutoScroll = true; - this.flags.Columns = 2; - this.flags.Location = new System.Drawing.Point(14, 19); - this.flags.Name = "flags"; - this.flags.Size = new System.Drawing.Size(251, 211); - this.flags.TabIndex = 0; - this.flags.VerticalSpacing = 1; - this.flags.OnValueChanged += new System.EventHandler(this.flags_OnValueChanged); - // - // ThingEditForm - // - this.AcceptButton = this.apply; - 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(577, 670); - this.Controls.Add(this.applypanel); - this.Controls.Add(this.panel); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ThingEditForm"; - this.Opacity = 1D; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Edit Thing"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ThingEditForm_FormClosing); - this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.ThingEditForm_HelpRequested); - groupBox2.ResumeLayout(false); - groupBox2.PerformLayout(); - this.applypanel.ResumeLayout(false); - this.applypanel.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.hint)).EndInit(); - this.panel.ResumeLayout(false); - this.actiongroup.ResumeLayout(false); - this.actiongroup.PerformLayout(); - this.groupBox4.ResumeLayout(false); - this.groupBox4.PerformLayout(); - this.idgroup.ResumeLayout(false); - this.typegroup.ResumeLayout(false); - this.settingsgroup.ResumeLayout(false); - this.settingsgroup.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.missingflags)).EndInit(); - this.ResumeLayout(false); + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.Label label7; + System.Windows.Forms.GroupBox groupBox2; + this.cbAbsoluteHeight = new System.Windows.Forms.CheckBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.posX = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.posY = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.posZ = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.zlabel = new System.Windows.Forms.Label(); + this.tooltip = new System.Windows.Forms.ToolTip(this.components); + this.browseaction = new System.Windows.Forms.Button(); + this.apply = new System.Windows.Forms.Button(); + this.cancel = new System.Windows.Forms.Button(); + this.applypanel = new System.Windows.Forms.Panel(); + this.hintlabel = new System.Windows.Forms.Label(); + this.hint = new System.Windows.Forms.PictureBox(); + this.panel = new System.Windows.Forms.Panel(); + this.actiongroup = new System.Windows.Forms.GroupBox(); + this.argscontrol = new CodeImp.DoomBuilder.Controls.ArgumentsControl(); + this.actionhelp = new CodeImp.DoomBuilder.Controls.ActionSpecialHelpButton(); + this.action = new CodeImp.DoomBuilder.Controls.ActionSelectorControl(); + this.action.GrayOut = true; + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.cbRandomAngle = new System.Windows.Forms.CheckBox(); + this.anglecontrol = new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl(); + this.angle = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.idgroup = new System.Windows.Forms.GroupBox(); + this.tagSelector = new CodeImp.DoomBuilder.GZBuilder.Controls.TagSelector(); + this.typegroup = new System.Windows.Forms.GroupBox(); + this.thingtype = new CodeImp.DoomBuilder.Controls.ThingBrowserControl(); + this.settingsgroup = new System.Windows.Forms.GroupBox(); + this.label3 = new System.Windows.Forms.Label(); + this.flagsvalue = new CodeImp.DoomBuilder.Controls.NumericTextbox(); + this.missingflags = new System.Windows.Forms.PictureBox(); + this.flags = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl(); + label7 = new System.Windows.Forms.Label(); + groupBox2 = new System.Windows.Forms.GroupBox(); + groupBox2.SuspendLayout(); + this.applypanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hint)).BeginInit(); + this.panel.SuspendLayout(); + this.actiongroup.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.idgroup.SuspendLayout(); + this.typegroup.SuspendLayout(); + this.settingsgroup.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.missingflags)).BeginInit(); + this.SuspendLayout(); + // + // label7 + // + label7.AutoSize = true; + label7.Location = new System.Drawing.Point(15, 30); + label7.Name = "label7"; + label7.Size = new System.Drawing.Size(40, 13); + label7.TabIndex = 9; + label7.Text = "Action:"; + // + // groupBox2 + // + groupBox2.Controls.Add(this.cbAbsoluteHeight); + groupBox2.Controls.Add(this.label2); + groupBox2.Controls.Add(this.label1); + groupBox2.Controls.Add(this.posX); + groupBox2.Controls.Add(this.posY); + groupBox2.Controls.Add(this.posZ); + groupBox2.Controls.Add(this.zlabel); + groupBox2.Location = new System.Drawing.Point(279, 242); + groupBox2.Name = "groupBox2"; + groupBox2.Size = new System.Drawing.Size(158, 134); + groupBox2.TabIndex = 2; + groupBox2.TabStop = false; + groupBox2.Text = " Position "; + // + // cbAbsoluteHeight + // + this.cbAbsoluteHeight.AutoSize = true; + this.cbAbsoluteHeight.Location = new System.Drawing.Point(12, 111); + this.cbAbsoluteHeight.Name = "cbAbsoluteHeight"; + this.cbAbsoluteHeight.Size = new System.Drawing.Size(101, 17); + this.cbAbsoluteHeight.TabIndex = 16; + this.cbAbsoluteHeight.Text = "Absolute Height"; + this.cbAbsoluteHeight.UseVisualStyleBackColor = true; + this.cbAbsoluteHeight.CheckedChanged += new System.EventHandler(this.cbAbsoluteHeight_CheckedChanged); + // + // label2 + // + this.label2.Location = new System.Drawing.Point(5, 21); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(50, 14); + this.label2.TabIndex = 15; + this.label2.Text = "X:"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label1 + // + this.label1.Location = new System.Drawing.Point(5, 51); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(50, 14); + this.label1.TabIndex = 14; + this.label1.Text = "Y:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // posX + // + this.posX.AllowDecimal = false; + this.posX.AllowNegative = true; + this.posX.AllowRelative = true; + this.posX.ButtonStep = 8; + this.posX.ButtonStepBig = 16F; + this.posX.ButtonStepFloat = 1F; + this.posX.ButtonStepSmall = 1F; + this.posX.ButtonStepsUseModifierKeys = true; + this.posX.ButtonStepsWrapAround = false; + this.posX.Location = new System.Drawing.Point(61, 16); + this.posX.Name = "posX"; + this.posX.Size = new System.Drawing.Size(72, 24); + this.posX.StepValues = null; + this.posX.TabIndex = 13; + this.posX.WhenTextChanged += new System.EventHandler(this.posX_WhenTextChanged); + // + // posY + // + this.posY.AllowDecimal = false; + this.posY.AllowNegative = true; + this.posY.AllowRelative = true; + this.posY.ButtonStep = 8; + this.posY.ButtonStepBig = 16F; + this.posY.ButtonStepFloat = 1F; + this.posY.ButtonStepSmall = 1F; + this.posY.ButtonStepsUseModifierKeys = true; + this.posY.ButtonStepsWrapAround = false; + this.posY.Location = new System.Drawing.Point(61, 46); + this.posY.Name = "posY"; + this.posY.Size = new System.Drawing.Size(72, 24); + this.posY.StepValues = null; + this.posY.TabIndex = 12; + this.posY.WhenTextChanged += new System.EventHandler(this.posY_WhenTextChanged); + // + // posZ + // + this.posZ.AllowDecimal = false; + this.posZ.AllowNegative = true; + this.posZ.AllowRelative = true; + this.posZ.ButtonStep = 8; + this.posZ.ButtonStepBig = 16F; + this.posZ.ButtonStepFloat = 1F; + this.posZ.ButtonStepSmall = 1F; + this.posZ.ButtonStepsUseModifierKeys = true; + this.posZ.ButtonStepsWrapAround = false; + this.posZ.Location = new System.Drawing.Point(61, 76); + this.posZ.Name = "posZ"; + this.posZ.Size = new System.Drawing.Size(72, 24); + this.posZ.StepValues = null; + this.posZ.TabIndex = 11; + this.posZ.WhenTextChanged += new System.EventHandler(this.posZ_WhenTextChanged); + // + // zlabel + // + this.zlabel.Location = new System.Drawing.Point(5, 81); + this.zlabel.Name = "zlabel"; + this.zlabel.Size = new System.Drawing.Size(50, 14); + this.zlabel.TabIndex = 9; + this.zlabel.Text = "Height:"; + this.zlabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // browseaction + // + this.browseaction.Image = global::CodeImp.DoomBuilder.Properties.Resources.List; + this.browseaction.Location = new System.Drawing.Point(482, 25); + this.browseaction.Name = "browseaction"; + this.browseaction.Size = new System.Drawing.Size(28, 25); + this.browseaction.TabIndex = 1; + this.browseaction.Text = " "; + this.tooltip.SetToolTip(this.browseaction, "Browse Action"); + this.browseaction.UseVisualStyleBackColor = true; + this.browseaction.Click += new System.EventHandler(this.browseaction_Click); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.apply.Location = new System.Drawing.Point(320, 4); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(112, 25); + this.apply.TabIndex = 1; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(438, 4); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(112, 25); + this.cancel.TabIndex = 2; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // applypanel + // + this.applypanel.Controls.Add(this.cancel); + this.applypanel.Controls.Add(this.apply); + this.applypanel.Controls.Add(this.hintlabel); + this.applypanel.Controls.Add(this.hint); + this.applypanel.Location = new System.Drawing.Point(12, 624); + this.applypanel.Name = "applypanel"; + this.applypanel.Size = new System.Drawing.Size(553, 32); + this.applypanel.TabIndex = 6; + // + // hintlabel + // + this.hintlabel.AutoSize = true; + this.hintlabel.Location = new System.Drawing.Point(18, 3); + this.hintlabel.Name = "hintlabel"; + this.hintlabel.Size = new System.Drawing.Size(195, 26); + this.hintlabel.TabIndex = 4; + this.hintlabel.Text = "Select categories or several thing types \r\nto randomly assign them to selection"; + // + // hint + // + this.hint.Image = global::CodeImp.DoomBuilder.Properties.Resources.Lightbulb; + this.hint.Location = new System.Drawing.Point(0, 8); + this.hint.Name = "hint"; + this.hint.Size = new System.Drawing.Size(16, 16); + this.hint.TabIndex = 3; + this.hint.TabStop = false; + // + // panel + // + this.panel.BackColor = System.Drawing.SystemColors.Window; + this.panel.Controls.Add(this.actiongroup); + this.panel.Controls.Add(this.groupBox4); + this.panel.Controls.Add(this.idgroup); + this.panel.Controls.Add(this.typegroup); + this.panel.Controls.Add(groupBox2); + this.panel.Controls.Add(this.settingsgroup); + this.panel.Location = new System.Drawing.Point(12, 12); + this.panel.Name = "panel"; + this.panel.Size = new System.Drawing.Size(553, 606); + this.panel.TabIndex = 5; + // + // actiongroup + // + this.actiongroup.Controls.Add(this.argscontrol); + this.actiongroup.Controls.Add(this.actionhelp); + this.actiongroup.Controls.Add(label7); + this.actiongroup.Controls.Add(this.action); + this.actiongroup.Controls.Add(this.browseaction); + this.actiongroup.Location = new System.Drawing.Point(4, 382); + this.actiongroup.Name = "actiongroup"; + this.actiongroup.Size = new System.Drawing.Size(546, 145); + this.actiongroup.TabIndex = 22; + this.actiongroup.TabStop = false; + this.actiongroup.Text = " Action "; + // + // argscontrol + // + this.argscontrol.Location = new System.Drawing.Point(6, 57); + this.argscontrol.Name = "argscontrol"; + this.argscontrol.Size = new System.Drawing.Size(534, 80); + this.argscontrol.TabIndex = 15; + // + // actionhelp + // + this.actionhelp.Location = new System.Drawing.Point(512, 25); + this.actionhelp.Name = "actionhelp"; + this.actionhelp.Size = new System.Drawing.Size(28, 25); + this.actionhelp.TabIndex = 14; + // + // action + // + this.action.BackColor = System.Drawing.SystemColors.Control; + this.action.Cursor = System.Windows.Forms.Cursors.Default; + this.action.Empty = false; + this.action.GeneralizedCategories = null; + this.action.GeneralizedOptions = null; + this.action.Location = new System.Drawing.Point(62, 27); + this.action.Name = "action"; + this.action.Size = new System.Drawing.Size(414, 21); + this.action.TabIndex = 0; + this.action.Value = 402; + this.action.ValueChanges += new System.EventHandler(this.action_ValueChanges); + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.cbRandomAngle); + this.groupBox4.Controls.Add(this.anglecontrol); + this.groupBox4.Controls.Add(this.angle); + this.groupBox4.Location = new System.Drawing.Point(443, 242); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(107, 134); + this.groupBox4.TabIndex = 3; + this.groupBox4.TabStop = false; + this.groupBox4.Text = " Angle"; + // + // cbRandomAngle + // + this.cbRandomAngle.AutoSize = true; + this.cbRandomAngle.Location = new System.Drawing.Point(6, 111); + this.cbRandomAngle.Name = "cbRandomAngle"; + this.cbRandomAngle.Size = new System.Drawing.Size(95, 17); + this.cbRandomAngle.TabIndex = 17; + this.cbRandomAngle.Text = "Random value"; + this.cbRandomAngle.UseVisualStyleBackColor = true; + this.cbRandomAngle.CheckedChanged += new System.EventHandler(this.cbRandomAngle_CheckedChanged); + // + // anglecontrol + // + this.anglecontrol.Angle = 0; + this.anglecontrol.AngleOffset = 0; + this.anglecontrol.Location = new System.Drawing.Point(20, 40); + this.anglecontrol.Name = "anglecontrol"; + this.anglecontrol.Size = new System.Drawing.Size(69, 69); + this.anglecontrol.TabIndex = 20; + this.anglecontrol.AngleChanged += new System.EventHandler(this.anglecontrol_AngleChanged); + // + // angle + // + this.angle.AllowDecimal = false; + this.angle.AllowNegative = true; + this.angle.AllowRelative = true; + this.angle.ButtonStep = 5; + this.angle.ButtonStepBig = 15F; + this.angle.ButtonStepFloat = 1F; + this.angle.ButtonStepSmall = 1F; + this.angle.ButtonStepsUseModifierKeys = true; + this.angle.ButtonStepsWrapAround = false; + this.angle.Location = new System.Drawing.Point(13, 16); + this.angle.Name = "angle"; + this.angle.Size = new System.Drawing.Size(82, 24); + this.angle.StepValues = null; + this.angle.TabIndex = 10; + this.angle.WhenTextChanged += new System.EventHandler(this.angle_WhenTextChanged); + // + // idgroup + // + this.idgroup.Controls.Add(this.tagSelector); + this.idgroup.Location = new System.Drawing.Point(4, 533); + this.idgroup.Name = "idgroup"; + this.idgroup.Size = new System.Drawing.Size(546, 66); + this.idgroup.TabIndex = 0; + this.idgroup.TabStop = false; + this.idgroup.Text = " Identification "; + // + // tagSelector + // + this.tagSelector.Location = new System.Drawing.Point(6, 19); + this.tagSelector.Name = "tagSelector"; + this.tagSelector.Size = new System.Drawing.Size(430, 35); + this.tagSelector.TabIndex = 8; + // + // typegroup + // + this.typegroup.Controls.Add(this.thingtype); + this.typegroup.Location = new System.Drawing.Point(4, 3); + this.typegroup.Name = "typegroup"; + this.typegroup.Size = new System.Drawing.Size(269, 373); + this.typegroup.TabIndex = 0; + this.typegroup.TabStop = false; + this.typegroup.Text = " Thing "; + // + // thingtype + // + this.thingtype.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.thingtype.Location = new System.Drawing.Point(9, 13); + this.thingtype.Margin = new System.Windows.Forms.Padding(6); + this.thingtype.Name = "thingtype"; + this.thingtype.Size = new System.Drawing.Size(251, 357); + this.thingtype.TabIndex = 0; + this.thingtype.UseMultiSelection = true; + this.thingtype.OnTypeChanged += new CodeImp.DoomBuilder.Controls.ThingBrowserControl.TypeChangedDeletegate(this.thingtype_OnTypeChanged); + this.thingtype.OnTypeDoubleClicked += new CodeImp.DoomBuilder.Controls.ThingBrowserControl.TypeDoubleClickDeletegate(this.thingtype_OnTypeDoubleClicked); + // + // settingsgroup + // + this.settingsgroup.Controls.Add(this.label3); + this.settingsgroup.Controls.Add(this.flagsvalue); + this.settingsgroup.Controls.Add(this.missingflags); + this.settingsgroup.Controls.Add(this.flags); + this.settingsgroup.Location = new System.Drawing.Point(279, 3); + this.settingsgroup.Name = "settingsgroup"; + this.settingsgroup.Size = new System.Drawing.Size(271, 233); + this.settingsgroup.TabIndex = 1; + this.settingsgroup.TabStop = false; + this.settingsgroup.Text = " Settings "; + // + // label3 + // + this.label3.Location = new System.Drawing.Point(86, 198); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(75, 14); + this.label3.TabIndex = 16; + this.label3.Text = "Flags value:"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // flagsvalue + // + this.flagsvalue.AllowDecimal = false; + this.flagsvalue.AllowNegative = false; + this.flagsvalue.AllowRelative = false; + this.flagsvalue.ForeColor = System.Drawing.SystemColors.HotTrack; + this.flagsvalue.ImeMode = System.Windows.Forms.ImeMode.Off; + this.flagsvalue.Location = new System.Drawing.Point(177, 196); + this.flagsvalue.Name = "flagsvalue"; + this.flagsvalue.Size = new System.Drawing.Size(72, 20); + this.flagsvalue.TabIndex = 14; + this.flagsvalue.TextChanged += new System.EventHandler(this.flagsvalue_TextChanged); + // + // missingflags + // + this.missingflags.BackColor = System.Drawing.SystemColors.Window; + this.missingflags.Image = global::CodeImp.DoomBuilder.Properties.Resources.Warning; + this.missingflags.Location = new System.Drawing.Point(55, -2); + this.missingflags.Name = "missingflags"; + this.missingflags.Size = new System.Drawing.Size(16, 16); + this.missingflags.TabIndex = 5; + this.missingflags.TabStop = false; + this.missingflags.Visible = false; + // + // flags + // + this.flags.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.flags.AutoScroll = true; + this.flags.Columns = 2; + this.flags.Location = new System.Drawing.Point(14, 19); + this.flags.Name = "flags"; + this.flags.Size = new System.Drawing.Size(251, 211); + this.flags.TabIndex = 0; + this.flags.VerticalSpacing = 1; + this.flags.OnValueChanged += new System.EventHandler(this.flags_OnValueChanged); + // + // ThingEditForm + // + this.AcceptButton = this.apply; + 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(577, 670); + this.Controls.Add(this.applypanel); + this.Controls.Add(this.panel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ThingEditForm"; + this.Opacity = 1D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Edit Thing"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ThingEditForm_FormClosing); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.ThingEditForm_HelpRequested); + groupBox2.ResumeLayout(false); + groupBox2.PerformLayout(); + this.applypanel.ResumeLayout(false); + this.applypanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hint)).EndInit(); + this.panel.ResumeLayout(false); + this.actiongroup.ResumeLayout(false); + this.actiongroup.PerformLayout(); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.idgroup.ResumeLayout(false); + this.typegroup.ResumeLayout(false); + this.settingsgroup.ResumeLayout(false); + this.settingsgroup.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.missingflags)).EndInit(); + this.ResumeLayout(false); - } + } - #endregion + #endregion - private System.Windows.Forms.Button cancel; - private System.Windows.Forms.Button apply; - private System.Windows.Forms.GroupBox settingsgroup; - private CodeImp.DoomBuilder.Controls.CheckboxArrayControl flags; - private System.Windows.Forms.GroupBox idgroup; - private System.Windows.Forms.GroupBox actiongroup; - private CodeImp.DoomBuilder.Controls.ActionSelectorControl action; - private System.Windows.Forms.Button browseaction; - private System.Windows.Forms.Label zlabel; - private CodeImp.DoomBuilder.Controls.ThingBrowserControl thingtype; - private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox angle; - private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox posZ; - private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox posY; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label1; - private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox posX; - private System.Windows.Forms.CheckBox cbAbsoluteHeight; - private System.Windows.Forms.CheckBox cbRandomAngle; - private CodeImp.DoomBuilder.GZBuilder.Controls.TagSelector tagSelector; - private CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl anglecontrol; - private System.Windows.Forms.PictureBox hint; - private System.Windows.Forms.Label hintlabel; - private System.Windows.Forms.PictureBox missingflags; - private System.Windows.Forms.ToolTip tooltip; - private System.Windows.Forms.GroupBox groupBox4; - private CodeImp.DoomBuilder.Controls.ActionSpecialHelpButton actionhelp; - private System.Windows.Forms.Panel panel; - private System.Windows.Forms.GroupBox typegroup; - private System.Windows.Forms.Panel applypanel; - private CodeImp.DoomBuilder.Controls.ArgumentsControl argscontrol; - private System.Windows.Forms.Label label3; - private Controls.NumericTextbox flagsvalue; - } + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Button apply; + private System.Windows.Forms.GroupBox settingsgroup; + private CodeImp.DoomBuilder.Controls.CheckboxArrayControl flags; + private System.Windows.Forms.GroupBox idgroup; + private System.Windows.Forms.GroupBox actiongroup; + private CodeImp.DoomBuilder.Controls.ActionSelectorControl action; + private System.Windows.Forms.Button browseaction; + private System.Windows.Forms.Label zlabel; + private CodeImp.DoomBuilder.Controls.ThingBrowserControl thingtype; + private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox angle; + private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox posZ; + private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox posY; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox posX; + private System.Windows.Forms.CheckBox cbAbsoluteHeight; + private System.Windows.Forms.CheckBox cbRandomAngle; + private CodeImp.DoomBuilder.GZBuilder.Controls.TagSelector tagSelector; + private CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl anglecontrol; + private System.Windows.Forms.PictureBox hint; + private System.Windows.Forms.Label hintlabel; + private System.Windows.Forms.PictureBox missingflags; + private System.Windows.Forms.ToolTip tooltip; + private System.Windows.Forms.GroupBox groupBox4; + private CodeImp.DoomBuilder.Controls.ActionSpecialHelpButton actionhelp; + private System.Windows.Forms.Panel panel; + private System.Windows.Forms.GroupBox typegroup; + private System.Windows.Forms.Panel applypanel; + private CodeImp.DoomBuilder.Controls.ArgumentsControl argscontrol; + private System.Windows.Forms.Label label3; + private Controls.NumericTextbox flagsvalue; + } } \ No newline at end of file diff --git a/Source/Plugins/BuilderEffects/BuilderPlug.cs b/Source/Plugins/BuilderEffects/BuilderPlug.cs index 5fa8274..6b1e642 100644 --- a/Source/Plugins/BuilderEffects/BuilderPlug.cs +++ b/Source/Plugins/BuilderEffects/BuilderPlug.cs @@ -165,7 +165,7 @@ namespace CodeImp.DoomBuilder.BuilderEffects if(formLocation.X == 0 && formLocation.Y == 0) { Size displaySize = General.Interface.Display.Size; - Point displayLocation = General.Interface.Display.LocationAbs; + Point displayLocation = General.Interface.Display.GetLocationAbs(); formLocation = new Point(displayLocation.X + displaySize.Width - form.Width - 16, displayLocation.Y + 16); } diff --git a/Source/Plugins/BuilderModes/BuilderModes.csproj b/Source/Plugins/BuilderModes/BuilderModes.csproj index 5830428..d05588d 100644 --- a/Source/Plugins/BuilderModes/BuilderModes.csproj +++ b/Source/Plugins/BuilderModes/BuilderModes.csproj @@ -81,6 +81,7 @@ + @@ -91,6 +92,11 @@ + + + + + @@ -120,6 +126,12 @@ CurveLinedefsForm.cs + + UserControl + + + DrawShapeOptionsPanel.cs + UserControl @@ -150,12 +162,48 @@ MenusForm.cs + + Form + + + ParallelLinedefForm.cs + + + Form + + + PerpendicularLinedefForm.cs + + + Form + + + PerpendicularVertexForm.cs + Form PreferencesForm.cs + + Form + + + VertexIntoShapeForm.cs + + + Form + + + VertexSlopeAssistForm.cs + + + Form + + + VertexSlopeAssistTagForm.cs + True True @@ -171,10 +219,31 @@ + + DrawShapeOptionsPanel.cs + InsertThingsRadiallyOptionsPanel.cs Designer + + ParallelLinedefForm.cs + + + PerpendicularLinedefForm.cs + + + PerpendicularVertexForm.cs + + + VertexIntoShapeForm.cs + + + VertexSlopeAssistForm.cs + + + VertexSlopeAssistTagForm.cs + @@ -633,6 +702,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + 17, 17 + + + False + + + False + + + False + + + False + + + False + + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/MenusForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/MenusForm.Designer.cs index 71f4c35..ae0a976 100644 --- a/Source/Plugins/BuilderModes/Interface/MenusForm.Designer.cs +++ b/Source/Plugins/BuilderModes/Interface/MenusForm.Designer.cs @@ -41,6 +41,9 @@ namespace CodeImp.DoomBuilder.BuilderModes this.flipsidedefsitem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); this.curvelinedefsitem = new System.Windows.Forms.ToolStripMenuItem(); + this.perpendicularVertexL = new System.Windows.Forms.ToolStripMenuItem(); + this.perpendicularLinedefL = new System.Windows.Forms.ToolStripMenuItem(); + this.parallelLinedefL = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); this.splitlinedefsitem = new System.Windows.Forms.ToolStripMenuItem(); this.updatelightfogitem = new System.Windows.Forms.ToolStripMenuItem(); @@ -49,7 +52,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.alignFloorToBackItem = new System.Windows.Forms.ToolStripMenuItem(); this.alignCeilingToFrontItem = new System.Windows.Forms.ToolStripMenuItem(); this.alignCeilingToBackItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripSeparator(); this.selectSimilarLinesItem = new System.Windows.Forms.ToolStripMenuItem(); this.sectorsmenu = new System.Windows.Forms.ToolStripMenuItem(); this.placethingss = new System.Windows.Forms.ToolStripMenuItem(); @@ -62,6 +65,10 @@ namespace CodeImp.DoomBuilder.BuilderModes this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); this.makedooritem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.perpendicularVertexS = new System.Windows.Forms.ToolStripMenuItem(); + this.perpendicularLinedefS = new System.Windows.Forms.ToolStripMenuItem(); + this.parallelLinedefS = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripSeparator(); this.selectSimilarSectors = new System.Windows.Forms.ToolStripMenuItem(); this.thingsmenu = new System.Windows.Forms.ToolStripMenuItem(); this.selectInSectorsItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -69,11 +76,17 @@ namespace CodeImp.DoomBuilder.BuilderModes this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.alignToWallItem = new System.Windows.Forms.ToolStripMenuItem(); this.pointAtCursorItem = new System.Windows.Forms.ToolStripMenuItem(); + this.vertexSlopeAssistT = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); this.selectSimilarThingsItem = new System.Windows.Forms.ToolStripMenuItem(); this.vertsmenu = new System.Windows.Forms.ToolStripMenuItem(); this.placethingsv = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.vertexIntoShapeV = new System.Windows.Forms.ToolStripMenuItem(); + this.perpendicularVertexV = new System.Windows.Forms.ToolStripMenuItem(); + this.perpendicularLinedefV = new System.Windows.Forms.ToolStripMenuItem(); + this.parallelLinedefV = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripSeparator(); this.selectSimilarVertsItem = new System.Windows.Forms.ToolStripMenuItem(); this.globalstrip = new System.Windows.Forms.ToolStrip(); this.manualstrip = new System.Windows.Forms.ToolStrip(); @@ -99,6 +112,13 @@ namespace CodeImp.DoomBuilder.BuilderModes this.syncthingteditbutton = new System.Windows.Forms.ToolStripButton(); this.buttonAlignThingsToWall = new System.Windows.Forms.ToolStripButton(); this.buttonTextureOffsetLock = new System.Windows.Forms.ToolStripButton(); + this.buttonPlaceThings = new System.Windows.Forms.ToolStripButton(); + this.buttonPointAtCursor = new System.Windows.Forms.ToolStripButton(); + this.buttonPerpendicularVertex = new System.Windows.Forms.ToolStripButton(); + this.buttonPerpendicularLinedef = new System.Windows.Forms.ToolStripButton(); + this.buttonVertexIntoShape = new System.Windows.Forms.ToolStripButton(); + this.buttonParallelLinedef = new System.Windows.Forms.ToolStripButton(); + this.buttonVertexSlopeAssist = new System.Windows.Forms.ToolStripButton(); this.fileMenuStrip = new System.Windows.Forms.MenuStrip(); this.exportStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem(); @@ -138,11 +158,14 @@ namespace CodeImp.DoomBuilder.BuilderModes this.flipsidedefsitem, this.toolStripMenuItem1, this.curvelinedefsitem, + this.perpendicularVertexL, + this.perpendicularLinedefL, + this.parallelLinedefL, this.toolStripMenuItem3, this.splitlinedefsitem, this.updatelightfogitem, this.aligntexturesitem, - this.toolStripSeparator5, + this.toolStripMenuItem7, this.selectSimilarLinesItem}); this.linedefsmenu.Name = "linedefsmenu"; this.linedefsmenu.Size = new System.Drawing.Size(63, 20); @@ -168,8 +191,8 @@ namespace CodeImp.DoomBuilder.BuilderModes 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)."; + "r selection will also select things (holding Alt while selecting \r\ninverts this " + + "behaviour)."; this.syncthingeditlinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); // // toolStripSeparator2 @@ -230,6 +253,33 @@ namespace CodeImp.DoomBuilder.BuilderModes this.curvelinedefsitem.Text = "&Curve Linedefs..."; this.curvelinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); // + // perpendicularVertexL + // + this.perpendicularVertexL.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PerpendicularVertex; + this.perpendicularVertexL.Name = "perpendicularVertexL"; + this.perpendicularVertexL.Size = new System.Drawing.Size(224, 22); + this.perpendicularVertexL.Tag = "perpendicularvertex"; + this.perpendicularVertexL.Text = "Perpendicular Vertex..."; + this.perpendicularVertexL.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // perpendicularLinedefL + // + this.perpendicularLinedefL.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PerpendicularLinedef; + this.perpendicularLinedefL.Name = "perpendicularLinedefL"; + this.perpendicularLinedefL.Size = new System.Drawing.Size(224, 22); + this.perpendicularLinedefL.Tag = "perpendicularlinedef"; + this.perpendicularLinedefL.Text = "Perpendicular Linedef..."; + this.perpendicularLinedefL.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // parallelLinedefL + // + this.parallelLinedefL.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.ParallelLinedef; + this.parallelLinedefL.Name = "parallelLinedefL"; + this.parallelLinedefL.Size = new System.Drawing.Size(224, 22); + this.parallelLinedefL.Tag = "parallellinedef"; + this.parallelLinedefL.Text = "Parallel Linedef..."; + this.parallelLinedefL.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripMenuItem3 // this.toolStripMenuItem3.Name = "toolStripMenuItem3"; @@ -294,10 +344,10 @@ namespace CodeImp.DoomBuilder.BuilderModes this.alignCeilingToBackItem.Text = "Ceiling to Back Side"; this.alignCeilingToBackItem.Click += new System.EventHandler(this.InvokeTaggedAction); // - // toolStripSeparator5 + // toolStripMenuItem7 // - this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(221, 6); + this.toolStripMenuItem7.Name = "toolStripMenuItem7"; + this.toolStripMenuItem7.Size = new System.Drawing.Size(221, 6); // // selectSimilarLinesItem // @@ -321,6 +371,10 @@ namespace CodeImp.DoomBuilder.BuilderModes this.toolStripSeparator8, this.makedooritem, this.toolStripSeparator4, + this.perpendicularVertexS, + this.perpendicularLinedefS, + this.parallelLinedefS, + this.toolStripMenuItem11, this.selectSimilarSectors}); this.sectorsmenu.Name = "sectorsmenu"; this.sectorsmenu.Size = new System.Drawing.Size(57, 20); @@ -404,6 +458,38 @@ namespace CodeImp.DoomBuilder.BuilderModes this.toolStripSeparator4.Size = new System.Drawing.Size(221, 6); this.toolStripSeparator4.Visible = false; // + // perpendicularVertexS + // + this.perpendicularVertexS.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PerpendicularVertex; + this.perpendicularVertexS.Name = "perpendicularVertexS"; + this.perpendicularVertexS.Size = new System.Drawing.Size(224, 22); + this.perpendicularVertexS.Tag = "perpendicularvertex"; + this.perpendicularVertexS.Text = "Perpendicular Vertex..."; + this.perpendicularVertexS.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // perpendicularLinedefS + // + this.perpendicularLinedefS.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PerpendicularLinedef; + this.perpendicularLinedefS.Name = "perpendicularLinedefS"; + this.perpendicularLinedefS.Size = new System.Drawing.Size(224, 22); + this.perpendicularLinedefS.Tag = "perpendicularlinedef"; + this.perpendicularLinedefS.Text = "Perpendicular Linedef..."; + this.perpendicularLinedefS.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // parallelLinedefS + // + this.parallelLinedefS.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.ParallelLinedef; + this.parallelLinedefS.Name = "parallelLinedefS"; + this.parallelLinedefS.Size = new System.Drawing.Size(224, 22); + this.parallelLinedefS.Tag = "parallellinedef"; + this.parallelLinedefS.Text = "Parallel Linedef..."; + this.parallelLinedefS.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // toolStripMenuItem11 + // + this.toolStripMenuItem11.Name = "toolStripMenuItem11"; + this.toolStripMenuItem11.Size = new System.Drawing.Size(221, 6); + // // selectSimilarSectors // this.selectSimilarSectors.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar; @@ -421,6 +507,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.toolStripSeparator3, this.alignToWallItem, this.pointAtCursorItem, + this.vertexSlopeAssistT, this.toolStripSeparator6, this.selectSimilarThingsItem}); this.thingsmenu.Name = "thingsmenu"; @@ -469,6 +556,15 @@ namespace CodeImp.DoomBuilder.BuilderModes this.pointAtCursorItem.Text = "&Point to Cursor"; this.pointAtCursorItem.Click += new System.EventHandler(this.InvokeTaggedAction); // + // vertexSlopeAssistT + // + this.vertexSlopeAssistT.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.VertexSlope; + this.vertexSlopeAssistT.Name = "vertexSlopeAssistT"; + this.vertexSlopeAssistT.Size = new System.Drawing.Size(245, 22); + this.vertexSlopeAssistT.Tag = "vertexslopeassist"; + this.vertexSlopeAssistT.Text = "Vertex Slope Assistant (SRB2)..."; + this.vertexSlopeAssistT.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripSeparator6 // this.toolStripSeparator6.Name = "toolStripSeparator6"; @@ -488,6 +584,11 @@ namespace CodeImp.DoomBuilder.BuilderModes this.vertsmenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.placethingsv, this.toolStripSeparator7, + this.vertexIntoShapeV, + this.perpendicularVertexV, + this.perpendicularLinedefV, + this.parallelLinedefV, + this.toolStripMenuItem6, this.selectSimilarVertsItem}); this.vertsmenu.Name = "vertsmenu"; this.vertsmenu.Size = new System.Drawing.Size(60, 20); @@ -498,7 +599,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(198, 22); this.placethingsv.Tag = "placethings"; this.placethingsv.Text = "&Place Things..."; this.placethingsv.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -506,13 +607,54 @@ 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(195, 6); + // + // vertexIntoShapeV + // + this.vertexIntoShapeV.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.VertexIntoShape; + this.vertexIntoShapeV.Name = "vertexIntoShapeV"; + this.vertexIntoShapeV.Size = new System.Drawing.Size(198, 22); + this.vertexIntoShapeV.Tag = "vertexintoshape"; + this.vertexIntoShapeV.Text = "Vertex into Shape..."; + this.vertexIntoShapeV.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // perpendicularVertexV + // + this.perpendicularVertexV.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PerpendicularVertex; + this.perpendicularVertexV.Name = "perpendicularVertexV"; + this.perpendicularVertexV.Size = new System.Drawing.Size(198, 22); + this.perpendicularVertexV.Tag = "perpendicularvertex"; + this.perpendicularVertexV.Text = "Perpendicular Vertex..."; + this.perpendicularVertexV.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // perpendicularLinedefV + // + this.perpendicularLinedefV.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PerpendicularLinedef; + this.perpendicularLinedefV.Name = "perpendicularLinedefV"; + this.perpendicularLinedefV.Size = new System.Drawing.Size(198, 22); + this.perpendicularLinedefV.Tag = "perpendicularlinedef"; + this.perpendicularLinedefV.Text = "Perpendicular Linedef..."; + this.perpendicularLinedefV.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // parallelLinedefV + // + this.parallelLinedefV.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.ParallelLinedef; + this.parallelLinedefV.Name = "parallelLinedefV"; + this.parallelLinedefV.Size = new System.Drawing.Size(198, 22); + this.parallelLinedefV.Tag = "parallellinedef"; + this.parallelLinedefV.Text = "Parallel Linedef..."; + this.parallelLinedefV.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // toolStripMenuItem6 + // + this.toolStripMenuItem6.Name = "toolStripMenuItem6"; + this.toolStripMenuItem6.Size = new System.Drawing.Size(195, 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(198, 22); this.selectSimilarVertsItem.Tag = "selectsimilar"; this.selectSimilarVertsItem.Text = "Select Similar..."; this.selectSimilarVertsItem.Click += new System.EventHandler(this.InvokeTaggedAction); @@ -549,7 +691,14 @@ namespace CodeImp.DoomBuilder.BuilderModes this.buttonMarqueSelectTouching, this.syncthingteditbutton, this.buttonAlignThingsToWall, - this.buttonTextureOffsetLock}); + this.buttonTextureOffsetLock, + this.buttonPlaceThings, + this.buttonPointAtCursor, + this.buttonPerpendicularVertex, + this.buttonPerpendicularLinedef, + this.buttonVertexIntoShape, + this.buttonParallelLinedef, + this.buttonVertexSlopeAssist}); this.manualstrip.Location = new System.Drawing.Point(0, 73); this.manualstrip.Name = "manualstrip"; this.manualstrip.Size = new System.Drawing.Size(794, 25); @@ -739,7 +888,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.buttonMarqueSelectTouching.Size = new System.Drawing.Size(23, 22); this.buttonMarqueSelectTouching.Text = "Select Touching"; this.buttonMarqueSelectTouching.ToolTipText = "Toggle between \"select touching\" and \"select inside\"\r\nrectangular selection modes" + - ""; + ""; this.buttonMarqueSelectTouching.Click += new System.EventHandler(this.buttonMarqueSelectTouching_Click); // // syncthingteditbutton @@ -774,9 +923,91 @@ namespace CodeImp.DoomBuilder.BuilderModes this.buttonTextureOffsetLock.Name = "buttonTextureOffsetLock"; this.buttonTextureOffsetLock.Size = new System.Drawing.Size(23, 22); this.buttonTextureOffsetLock.ToolTipText = "Pin Texture Offsets.\r\nWhen enabled, keeps floor and ceiling texture offsets\r\ncons" + - "tant while sector is dragged"; + "tant while sector is dragged"; this.buttonTextureOffsetLock.Click += new System.EventHandler(this.buttonTextureOffsetLock_Click); // + // buttonPlaceThings + // + this.buttonPlaceThings.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonPlaceThings.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings; + this.buttonPlaceThings.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonPlaceThings.Name = "buttonPlaceThings"; + this.buttonPlaceThings.Size = new System.Drawing.Size(23, 22); + this.buttonPlaceThings.Tag = "placethings"; + this.buttonPlaceThings.Text = "Place Things..."; + this.buttonPlaceThings.ToolTipText = "Place Things on each vertex."; + this.buttonPlaceThings.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // buttonPointAtCursor + // + this.buttonPointAtCursor.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonPointAtCursor.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.ThingPointAtCursor; + this.buttonPointAtCursor.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonPointAtCursor.Name = "buttonPointAtCursor"; + this.buttonPointAtCursor.Size = new System.Drawing.Size(23, 22); + this.buttonPointAtCursor.Tag = "thinglookatcursor"; + this.buttonPointAtCursor.Text = "Points selected things to cursor position. Hold Ctrl to point away from cursor."; + this.buttonPointAtCursor.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // buttonPerpendicularVertex + // + this.buttonPerpendicularVertex.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonPerpendicularVertex.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PerpendicularVertex; + this.buttonPerpendicularVertex.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonPerpendicularVertex.Name = "buttonPerpendicularVertex"; + this.buttonPerpendicularVertex.Size = new System.Drawing.Size(23, 22); + this.buttonPerpendicularVertex.Tag = "perpendicularvertex"; + this.buttonPerpendicularVertex.Text = "Perpendicular Tool"; + this.buttonPerpendicularVertex.ToolTipText = "Create perpendicular from selected vertices."; + this.buttonPerpendicularVertex.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // buttonPerpendicularLinedef + // + this.buttonPerpendicularLinedef.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonPerpendicularLinedef.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PerpendicularLinedef; + this.buttonPerpendicularLinedef.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonPerpendicularLinedef.Name = "buttonPerpendicularLinedef"; + this.buttonPerpendicularLinedef.Size = new System.Drawing.Size(23, 20); + this.buttonPerpendicularLinedef.Tag = "perpendicularlinedef"; + this.buttonPerpendicularLinedef.Text = "Perpendicular Linedef"; + this.buttonPerpendicularLinedef.ToolTipText = "Create perpendicular from selected linedefs."; + this.buttonPerpendicularLinedef.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // buttonVertexIntoShape + // + this.buttonVertexIntoShape.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonVertexIntoShape.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.VertexIntoShape; + this.buttonVertexIntoShape.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonVertexIntoShape.Name = "buttonVertexIntoShape"; + this.buttonVertexIntoShape.Size = new System.Drawing.Size(23, 20); + this.buttonVertexIntoShape.Tag = "vertexintoshape"; + this.buttonVertexIntoShape.Text = "Vertex into Shape..."; + this.buttonVertexIntoShape.ToolTipText = "Create shapes for each selected vertex."; + this.buttonVertexIntoShape.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // buttonParallelLinedef + // + this.buttonParallelLinedef.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonParallelLinedef.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.ParallelLinedef; + this.buttonParallelLinedef.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonParallelLinedef.Name = "buttonParallelLinedef"; + this.buttonParallelLinedef.Size = new System.Drawing.Size(23, 20); + this.buttonParallelLinedef.Tag = "parallellinedef"; + this.buttonParallelLinedef.Text = "Parallel Linedef..."; + this.buttonParallelLinedef.ToolTipText = "Create parallel linedefs from selected linedefs."; + this.buttonParallelLinedef.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // buttonVertexSlopeAssist + // + this.buttonVertexSlopeAssist.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonVertexSlopeAssist.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.VertexSlope; + this.buttonVertexSlopeAssist.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonVertexSlopeAssist.Name = "buttonVertexSlopeAssist"; + this.buttonVertexSlopeAssist.Size = new System.Drawing.Size(23, 20); + this.buttonVertexSlopeAssist.Tag = "vertexslopeassist"; + this.buttonVertexSlopeAssist.Text = "Vertex Slope Assistant (SRB2)"; + this.buttonVertexSlopeAssist.Click += new System.EventHandler(this.InvokeTaggedAction); + // // fileMenuStrip // this.fileMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -935,8 +1166,7 @@ namespace CodeImp.DoomBuilder.BuilderModes private System.Windows.Forms.ToolStripMenuItem exportStripMenuItem; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem5; private System.Windows.Forms.ToolStripButton buttonpastepropertiesoptions; - private System.Windows.Forms.ToolStripMenuItem filterSelectionItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripMenuItem filterSelectionItem; private System.Windows.Forms.ToolStripMenuItem selectSimilarLinesItem; private System.Windows.Forms.ToolStripMenuItem selectSimilarSectors; private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; @@ -954,6 +1184,27 @@ namespace CodeImp.DoomBuilder.BuilderModes private System.Windows.Forms.ToolStripMenuItem itemcopyprops; private System.Windows.Forms.ToolStripMenuItem itempasteprops; private System.Windows.Forms.ToolStripMenuItem itempastepropsoptions; - private System.Windows.Forms.ToolStripSeparator separatorcopyprops; + private System.Windows.Forms.ToolStripSeparator separatorcopyprops; + private System.Windows.Forms.ToolStripButton buttonPerpendicularLinedef; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem7; + private System.Windows.Forms.ToolStripMenuItem perpendicularLinedefL; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem6; + private System.Windows.Forms.ToolStripButton buttonPlaceThings; + private System.Windows.Forms.ToolStripButton buttonVertexIntoShape; + private System.Windows.Forms.ToolStripMenuItem vertexIntoShapeV; + private System.Windows.Forms.ToolStripButton buttonPerpendicularVertex; + private System.Windows.Forms.ToolStripMenuItem perpendicularVertexL; + private System.Windows.Forms.ToolStripMenuItem perpendicularVertexV; + private System.Windows.Forms.ToolStripMenuItem parallelLinedefL; + private System.Windows.Forms.ToolStripButton buttonParallelLinedef; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem11; + private System.Windows.Forms.ToolStripMenuItem parallelLinedefS; + private System.Windows.Forms.ToolStripMenuItem perpendicularLinedefS; + private System.Windows.Forms.ToolStripMenuItem perpendicularVertexS; + private System.Windows.Forms.ToolStripMenuItem perpendicularLinedefV; + private System.Windows.Forms.ToolStripMenuItem parallelLinedefV; + private System.Windows.Forms.ToolStripButton buttonPointAtCursor; + private System.Windows.Forms.ToolStripButton buttonVertexSlopeAssist; + private System.Windows.Forms.ToolStripMenuItem vertexSlopeAssistT; } } \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/MenusForm.cs b/Source/Plugins/BuilderModes/Interface/MenusForm.cs index 951afd8..2b9b6fd 100644 --- a/Source/Plugins/BuilderModes/Interface/MenusForm.cs +++ b/Source/Plugins/BuilderModes/Interface/MenusForm.cs @@ -89,6 +89,14 @@ namespace CodeImp.DoomBuilder.BuilderModes public ToolStripMenuItem SyncronizeThingEditSectorsItem { get { return syncthingeditsectorsitem; } } //mxd public ToolStripMenuItem SyncronizeThingEditLinedefsItem { get { return syncthingeditlinedefsitem; } } //mxd public ToolStripButton MakeDoor { get { return buttonMakeDoor; } } //mxd + public ToolStripButton PlaceThings { get { return buttonPlaceThings; } } //JBR + public ToolStripButton PointAtCursor { get { return buttonPointAtCursor; } } //JBR + public ToolStripButton PerpendicularVertex { get { return buttonPerpendicularVertex; } } //JBR + public ToolStripButton PerpendicularLinedef { get { return buttonPerpendicularLinedef; } } //JBR + public ToolStripButton ParallelLinedef { get { return buttonParallelLinedef; } } //JBR + public ToolStripButton VertexIntoShape { get { return buttonVertexIntoShape; } } //JBR + public ToolStripButton VertexSlopeAssist { get { return buttonVertexSlopeAssist; } } //JBR + public ToolStripMenuItem VertexSlopeAssistMenu { get { return vertexSlopeAssistT; } } //JBR #endregion diff --git a/Source/Plugins/BuilderModes/Interface/MenusForm.resx b/Source/Plugins/BuilderModes/Interface/MenusForm.resx index 74249a4..f223acf 100644 --- a/Source/Plugins/BuilderModes/Interface/MenusForm.resx +++ b/Source/Plugins/BuilderModes/Interface/MenusForm.resx @@ -117,30 +117,30 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - True - 17, 17 + + True + 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. - - True - 118, 17 - + True 210, 17 + + True + 326, 17 diff --git a/Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.Designer.cs new file mode 100644 index 0000000..c301ebd --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.Designer.cs @@ -0,0 +1,222 @@ +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + partial class ParallelLinedefForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.Label label1; + System.Windows.Forms.Label label2; + this.cancel = new System.Windows.Forms.Button(); + this.apply = new System.Windows.Forms.Button(); + this.closeopenpath = new System.Windows.Forms.CheckBox(); + this.backwards = new System.Windows.Forms.CheckBox(); + this.createas = new System.Windows.Forms.ComboBox(); + this.numopentracks = new System.Windows.Forms.Label(); + this.numclosetracks = new System.Windows.Forms.Label(); + this.distance = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.tooltip = new System.Windows.Forms.ToolTip(); + label1 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(22, 54); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(52, 13); + label1.TabIndex = 2; + label1.Text = "Distance:"; + this.tooltip.SetToolTip(label1, "Set the distance between selected linedef(s) and parallel linedef(s).\r\n"); + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(22, 9); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(61, 13); + label2.TabIndex = 0; + label2.Text = "Create as..."; + this.tooltip.SetToolTip(label2, "Select which type of elements to create.\r\nCheck help (F1) for more information."); + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(89, 163); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(70, 25); + this.cancel.TabIndex = 9; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.apply.DialogResult = System.Windows.Forms.DialogResult.OK; + this.apply.Location = new System.Drawing.Point(12, 163); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(70, 25); + this.apply.TabIndex = 8; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // closeopenpath + // + this.closeopenpath.AutoSize = true; + this.closeopenpath.Checked = true; + this.closeopenpath.CheckState = System.Windows.Forms.CheckState.Checked; + this.closeopenpath.Location = new System.Drawing.Point(20, 80); + this.closeopenpath.Name = "closeopenpath"; + this.closeopenpath.Size = new System.Drawing.Size(133, 17); + this.closeopenpath.TabIndex = 4; + this.closeopenpath.Text = "Close Open-Path Ends"; + this.tooltip.SetToolTip(this.closeopenpath, "Attach linedefs between original paths and open-paths at both ends.\r\nOnly availab" + + "le for linedefs elements and doesn\'t affect close-paths."); + this.closeopenpath.UseVisualStyleBackColor = true; + this.closeopenpath.CheckedChanged += new System.EventHandler(this.ValueChanged); + // + // backwards + // + this.backwards.AutoSize = true; + this.backwards.Location = new System.Drawing.Point(20, 103); + this.backwards.Name = "backwards"; + this.backwards.Size = new System.Drawing.Size(126, 17); + this.backwards.TabIndex = 5; + this.backwards.Text = "Backwards / Outside"; + this.tooltip.SetToolTip(this.backwards, "When checked, it creates parallel path on the opposite side."); + this.backwards.UseVisualStyleBackColor = true; + this.backwards.CheckedChanged += new System.EventHandler(this.ValueChanged); + // + // createas + // + this.createas.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.createas.FormattingEnabled = true; + this.createas.Items.AddRange(new object[] { + "Linked Linedefs", + "Unlinked Linedefs", + "Vertices", + "Things"}); + this.createas.Location = new System.Drawing.Point(12, 25); + this.createas.Name = "createas"; + this.createas.Size = new System.Drawing.Size(146, 21); + this.createas.TabIndex = 1; + this.tooltip.SetToolTip(this.createas, "Select which type of element to create.\r\nCheck help (F1) for more information."); + this.createas.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // numopentracks + // + this.numopentracks.AutoSize = true; + this.numopentracks.Location = new System.Drawing.Point(12, 128); + this.numopentracks.Name = "numopentracks"; + this.numopentracks.Size = new System.Drawing.Size(78, 13); + this.numopentracks.TabIndex = 6; + this.numopentracks.Text = "0 Open-Path(s)"; + this.tooltip.SetToolTip(this.numopentracks, "Number of open-paths found."); + // + // numclosetracks + // + this.numclosetracks.AutoSize = true; + this.numclosetracks.Location = new System.Drawing.Point(12, 142); + this.numclosetracks.Name = "numclosetracks"; + this.numclosetracks.Size = new System.Drawing.Size(78, 13); + this.numclosetracks.TabIndex = 7; + this.numclosetracks.Text = "0 Close-Path(s)"; + this.tooltip.SetToolTip(this.numclosetracks, "Number of close-paths found."); + // + // distance + // + this.distance.AllowDecimal = false; + this.distance.AllowNegative = false; + this.distance.AllowRelative = false; + this.distance.ButtonStep = 8; + this.distance.ButtonStepBig = 64F; + this.distance.ButtonStepFloat = 1F; + this.distance.ButtonStepSmall = 1F; + this.distance.ButtonStepsUseModifierKeys = true; + this.distance.ButtonStepsWrapAround = false; + this.distance.Location = new System.Drawing.Point(80, 49); + this.distance.Name = "distance"; + this.distance.Size = new System.Drawing.Size(72, 24); + this.distance.StepValues = null; + this.distance.TabIndex = 3; + this.distance.WhenTextChanged += new System.EventHandler(this.ValueChanged); + // + // tooltip + // + this.tooltip.AutoPopDelay = 10000; + this.tooltip.InitialDelay = 500; + this.tooltip.ReshowDelay = 100; + // + // ParallelLinedefForm + // + this.AcceptButton = this.apply; + 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(170, 200); + this.Controls.Add(this.distance); + this.Controls.Add(this.numclosetracks); + this.Controls.Add(this.numopentracks); + this.Controls.Add(this.createas); + this.Controls.Add(label2); + this.Controls.Add(this.backwards); + this.Controls.Add(this.closeopenpath); + this.Controls.Add(label1); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ParallelLinedefForm"; + this.Opacity = 1D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "Parallel (Linedef)"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ParallelLinedefForm_FormClosing); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.ParallelLinedefForm_HelpRequested); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Button apply; + private System.Windows.Forms.CheckBox closeopenpath; + private System.Windows.Forms.CheckBox backwards; + private System.Windows.Forms.ComboBox createas; + private System.Windows.Forms.Label numopentracks; + private System.Windows.Forms.Label numclosetracks; + private Controls.ButtonsNumericTextbox distance; + private System.Windows.Forms.ToolTip tooltip; + } +} \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.cs b/Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.cs new file mode 100644 index 0000000..9219b2a --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.cs @@ -0,0 +1,124 @@ +#region ================== Namespaces + +using System; +using System.Windows.Forms; +using CodeImp.DoomBuilder.Windows; +using CodeImp.DoomBuilder.Geometry; +using System.Drawing; + +#endregion + +//JBR Parallel Linedef form +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + public partial class ParallelLinedefForm : DelayedForm + { + #region ================== Properties + + private bool blockEvents; + + public int CreateAs { get { return createas.SelectedIndex; } } + public float Distance { get { return distance.GetResultFloat(0); } } + public bool CloseOpenPath { get { return closeopenpath.Checked; } } + public bool Backwards { get { return backwards.Checked; } } + + #endregion + + #region ================== Constructor / Disposer + + public ParallelLinedefForm() + { + InitializeComponent(); + + blockEvents = true; + createas.SelectedIndex = 0; + distance.Text = "256"; + blockEvents = false; + } + + #endregion + + #region ================== Interface + + public void SetNumOpenPaths(int paths) + { + if (paths == 0) + { + numopentracks.Text = "No Open-Paths"; + numopentracks.ForeColor = SystemColors.GrayText; + closeopenpath.Enabled = false; + return; + } + numopentracks.ForeColor = SystemColors.ControlText; + closeopenpath.Enabled = true; + if (paths == 1) + numopentracks.Text = "1 Open-Path"; + else + numopentracks.Text = paths.ToString() + " Open-Paths"; + } + + public void SetNumClosePaths(int paths) + { + if (paths == 0) + { + numclosetracks.Text = "No Close-Paths"; + numclosetracks.ForeColor = SystemColors.GrayText; + return; + } + numclosetracks.ForeColor = SystemColors.ControlText; + if (paths == 1) + numclosetracks.Text = "1 Close-Path"; + else + numclosetracks.Text = paths.ToString() + " Close-Paths"; + } + + // Window closing + private void ParallelLinedefForm_FormClosing(object sender, FormClosingEventArgs e) + { + // User closing the window? + if (e.CloseReason == CloseReason.UserClosing) + { + // Just cancel + General.Editing.CancelMode(); + e.Cancel = true; + } + } + + // This shows the window + public void Show(Form owner) + { + // Position at left-top of owner + this.Location = new Point(owner.Location.X + 20, owner.Location.Y + 90); + + // Show window + base.Show(owner); + } + + // Some value got changed + private void ValueChanged(object sender, EventArgs e) + { + if (!blockEvents) General.Interface.RedrawDisplay(); + } + + // Cancel clicked + private void cancel_Click(object sender, EventArgs e) + { + // Cancel now + General.Editing.CancelMode(); + } + + // Apply clicked + private void apply_Click(object sender, EventArgs e) + { + // Apply now + General.Editing.AcceptMode(); + } + + private void ParallelLinedefForm_HelpRequested(object sender, HelpEventArgs hlpevent) + { + General.ShowHelp("e_parallellinedef.html"); + } + + #endregion + } +} diff --git a/Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.resx b/Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.resx new file mode 100644 index 0000000..00f7647 --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/ParallelLinedefForm.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + 17, 17 + + + False + + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.Designer.cs new file mode 100644 index 0000000..153297a --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.Designer.cs @@ -0,0 +1,253 @@ +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + partial class PerpendicularLinedefForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.Label label1; + System.Windows.Forms.Label label2; + System.Windows.Forms.Label label4; + System.Windows.Forms.Label label3; + this.cancel = new System.Windows.Forms.Button(); + this.apply = new System.Windows.Forms.Button(); + this.backwards = new System.Windows.Forms.CheckBox(); + this.createas = new System.Windows.Forms.ComboBox(); + this.distance = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.tooltip = new System.Windows.Forms.ToolTip(); + this.offsetperc = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.snapmp = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + label1 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + label4 = new System.Windows.Forms.Label(); + label3 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(22, 54); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(52, 13); + label1.TabIndex = 2; + label1.Text = "Distance:"; + this.tooltip.SetToolTip(label1, "Set distance between selected linedef(s) and the end of the perpendicular."); + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(25, 80); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(49, 13); + label2.TabIndex = 4; + label2.Text = "Offset %:"; + this.tooltip.SetToolTip(label2, "Sets offset along each linedef of where the perpendicular should intersect.\r\n50% " + + "means exactly in the center.\r\nUse comma ( , ) for fractional numbers, e.g.: 12,5" + + ""); + // + // label4 + // + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(17, 128); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(57, 13); + label4.TabIndex = 7; + label4.Text = "Snap dist.:"; + this.tooltip.SetToolTip(label4, "Adjust snap distance to vertices that already exist in the map so perpendiculars " + + "get connected to them.\r\nSet to zero to disable snapping.\r\nUse comma ( , ) for fr" + + "actional number, e.g.: 0,5"); + // + // label3 + // + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(22, 9); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(61, 13); + label3.TabIndex = 0; + label3.Text = "Create as..."; + this.tooltip.SetToolTip(label3, "Select which type of elements to create.\r\nCheck help (F1) for more information.\r\n" + + ""); + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(89, 155); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(70, 25); + this.cancel.TabIndex = 10; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.apply.DialogResult = System.Windows.Forms.DialogResult.OK; + this.apply.Location = new System.Drawing.Point(12, 155); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(70, 25); + this.apply.TabIndex = 9; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // backwards + // + this.backwards.AutoSize = true; + this.backwards.Location = new System.Drawing.Point(20, 103); + this.backwards.Name = "backwards"; + this.backwards.Size = new System.Drawing.Size(79, 17); + this.backwards.TabIndex = 6; + this.backwards.Text = "Backwards"; + this.tooltip.SetToolTip(this.backwards, "When checked, it creates a perpendicular on the opposite side of where the linede" + + "fs are facing."); + this.backwards.UseVisualStyleBackColor = true; + this.backwards.CheckedChanged += new System.EventHandler(this.ValueChanged); + // + // createas + // + this.createas.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.createas.FormattingEnabled = true; + this.createas.Items.AddRange(new object[] { + "Linked Linedefs", + "Unlinked Linedefs", + "Vertices", + "Vertices with Linedef Split", + "Things"}); + this.createas.Location = new System.Drawing.Point(12, 25); + this.createas.Name = "createas"; + this.createas.Size = new System.Drawing.Size(146, 21); + this.createas.TabIndex = 1; + this.tooltip.SetToolTip(this.createas, "Select which type of elements to create.\r\nCheck help (F1) for more information.\r\n" + + ""); + this.createas.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // distance + // + this.distance.AllowDecimal = false; + this.distance.AllowNegative = false; + this.distance.AllowRelative = false; + this.distance.ButtonStep = 8; + this.distance.ButtonStepBig = 64F; + this.distance.ButtonStepFloat = 1F; + this.distance.ButtonStepSmall = 1F; + this.distance.ButtonStepsUseModifierKeys = true; + this.distance.ButtonStepsWrapAround = false; + this.distance.Location = new System.Drawing.Point(80, 49); + this.distance.Name = "distance"; + this.distance.Size = new System.Drawing.Size(72, 24); + this.distance.StepValues = null; + this.distance.TabIndex = 3; + this.distance.WhenTextChanged += new System.EventHandler(this.ValueChanged); + // + // tooltip + // + this.tooltip.AutoPopDelay = 10000; + this.tooltip.InitialDelay = 500; + this.tooltip.ReshowDelay = 100; + // + // offsetperc + // + this.offsetperc.AllowDecimal = true; + this.offsetperc.AllowNegative = false; + this.offsetperc.AllowRelative = false; + this.offsetperc.ButtonStep = 5; + this.offsetperc.ButtonStepBig = 25F; + this.offsetperc.ButtonStepFloat = 1F; + this.offsetperc.ButtonStepSmall = 1F; + this.offsetperc.ButtonStepsUseModifierKeys = true; + this.offsetperc.ButtonStepsWrapAround = false; + this.offsetperc.Location = new System.Drawing.Point(80, 75); + this.offsetperc.Name = "offsetperc"; + this.offsetperc.Size = new System.Drawing.Size(72, 24); + this.offsetperc.StepValues = null; + this.offsetperc.TabIndex = 5; + this.offsetperc.WhenTextChanged += new System.EventHandler(this.offsetperc_WhenTextChanged); + // + // snapmp + // + this.snapmp.AllowDecimal = true; + this.snapmp.AllowNegative = false; + this.snapmp.AllowRelative = false; + this.snapmp.ButtonStep = 1; + this.snapmp.ButtonStepBig = 1F; + this.snapmp.ButtonStepFloat = 1F; + this.snapmp.ButtonStepSmall = 0.1F; + this.snapmp.ButtonStepsUseModifierKeys = false; + this.snapmp.ButtonStepsWrapAround = false; + this.snapmp.Location = new System.Drawing.Point(80, 123); + this.snapmp.Name = "snapmp"; + this.snapmp.Size = new System.Drawing.Size(72, 24); + this.snapmp.StepValues = null; + this.snapmp.TabIndex = 8; + // + // PerpendicularLinedefForm + // + this.AcceptButton = this.apply; + 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(170, 192); + this.Controls.Add(this.snapmp); + this.Controls.Add(this.offsetperc); + this.Controls.Add(this.distance); + this.Controls.Add(label4); + this.Controls.Add(this.createas); + this.Controls.Add(label3); + this.Controls.Add(label2); + this.Controls.Add(this.backwards); + this.Controls.Add(label1); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "PerpendicularLinedefForm"; + this.Opacity = 1D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "Perpendicular (Linedef)"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PerpendicularLinedefForm_FormClosing); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.PerpendicularLinedefForm_HelpRequested); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Button apply; + private System.Windows.Forms.CheckBox backwards; + private System.Windows.Forms.ComboBox createas; + private Controls.ButtonsNumericTextbox distance; + private System.Windows.Forms.ToolTip tooltip; + private Controls.ButtonsNumericTextbox offsetperc; + private Controls.ButtonsNumericTextbox snapmp; + } +} \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.cs b/Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.cs new file mode 100644 index 0000000..c126693 --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.cs @@ -0,0 +1,103 @@ +#region ================== Namespaces + +using System; +using System.Windows.Forms; +using CodeImp.DoomBuilder.Windows; +using CodeImp.DoomBuilder.Geometry; +using System.Drawing; + +#endregion + +//JBR Perpendicular Linedef form +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + public partial class PerpendicularLinedefForm : DelayedForm + { + #region ================== Properties + + private bool blockEvents; + + public int CreateAs { get { return createas.SelectedIndex; } } + public float Distance { get { return distance.GetResultFloat(0f); } } + public float OffsetPerc { get { return offsetperc.GetResultFloat(0f); } } + public bool Backwards { get { return backwards.Checked; } } + public float SnapMP { get { return snapmp.GetResultFloat(0f); } } + + #endregion + + #region ================== Constructor / Disposer + + public PerpendicularLinedefForm() + { + InitializeComponent(); + + blockEvents = true; + createas.SelectedIndex = 0; + distance.Text = "256"; + offsetperc.Text = "50"; + snapmp.Text = "2"; + blockEvents = false; + } + + #endregion + + #region ================== Interface + + // Window closing + private void PerpendicularLinedefForm_FormClosing(object sender, FormClosingEventArgs e) + { + // User closing the window? + if (e.CloseReason == CloseReason.UserClosing) + { + // Just cancel + General.Editing.CancelMode(); + e.Cancel = true; + } + } + + // This shows the window + public void Show(Form owner) + { + // Position at left-top of owner + this.Location = new Point(owner.Location.X + 20, owner.Location.Y + 90); + + // Show window + base.Show(owner); + } + + // Some value got changed + private void ValueChanged(object sender, EventArgs e) + { + if (!blockEvents) General.Interface.RedrawDisplay(); + } + + private void offsetperc_WhenTextChanged(object sender, EventArgs e) + { + float perc = offsetperc.GetResultFloat(0f); + if (perc > 100f) + offsetperc.Text = "100"; + ValueChanged(this, e); + } + + // Cancel clicked + private void cancel_Click(object sender, EventArgs e) + { + // Cancel now + General.Editing.CancelMode(); + } + + // Apply clicked + private void apply_Click(object sender, EventArgs e) + { + // Apply now + General.Editing.AcceptMode(); + } + + private void PerpendicularLinedefForm_HelpRequested(object sender, HelpEventArgs hlpevent) + { + General.ShowHelp("e_perpendicularlinedef.html"); + } + + #endregion + } +} diff --git a/Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.resx b/Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.resx new file mode 100644 index 0000000..7877416 --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/PerpendicularLinedefForm.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + 17, 17 + + + False + + + False + + + False + + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.Designer.cs new file mode 100644 index 0000000..5ecfc84 --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.Designer.cs @@ -0,0 +1,232 @@ +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + partial class PerpendicularVertexForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.Label label1; + System.Windows.Forms.Label label4; + System.Windows.Forms.Label label2; + this.cancel = new System.Windows.Forms.Button(); + this.apply = new System.Windows.Forms.Button(); + this.backwards = new System.Windows.Forms.CheckBox(); + this.processtips = new System.Windows.Forms.CheckBox(); + this.createas = new System.Windows.Forms.ComboBox(); + this.distance = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.snapmp = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.tooltip = new System.Windows.Forms.ToolTip(this.components); + label1 = new System.Windows.Forms.Label(); + label4 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(22, 54); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(52, 13); + label1.TabIndex = 2; + label1.Text = "Distance:"; + this.tooltip.SetToolTip(label1, "Set distance between selected linedef(s) and the end of the perpendicular."); + // + // label4 + // + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(17, 128); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(57, 13); + label4.TabIndex = 6; + label4.Text = "Snap dist.:"; + this.tooltip.SetToolTip(label4, "Adjust snap distance to vertices that already exist in the map so perpendiculars " + + "get connected to them.\r\nSet to zero to disable snapping.\r\nUse comma ( , ) for fr" + + "actional number, e.g.: 0,5"); + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(22, 9); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(61, 13); + label2.TabIndex = 0; + label2.Text = "Create as..."; + this.tooltip.SetToolTip(label2, "Select which type of elements to create.\r\nCheck help (F1) for more information."); + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(89, 155); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(70, 25); + this.cancel.TabIndex = 9; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.apply.DialogResult = System.Windows.Forms.DialogResult.OK; + this.apply.Location = new System.Drawing.Point(12, 155); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(70, 25); + this.apply.TabIndex = 8; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // backwards + // + this.backwards.AutoSize = true; + this.backwards.Location = new System.Drawing.Point(20, 103); + this.backwards.Name = "backwards"; + this.backwards.Size = new System.Drawing.Size(79, 17); + this.backwards.TabIndex = 5; + this.backwards.Text = "Backwards"; + this.tooltip.SetToolTip(this.backwards, "When checked, it creates a perpendicular on the opposite side of where the linede" + + "fs are facing."); + this.backwards.UseVisualStyleBackColor = true; + this.backwards.CheckedChanged += new System.EventHandler(this.ValueChanged); + // + // processtips + // + this.processtips.AutoSize = true; + this.processtips.Checked = true; + this.processtips.CheckState = System.Windows.Forms.CheckState.Checked; + this.processtips.Location = new System.Drawing.Point(20, 80); + this.processtips.Name = "processtips"; + this.processtips.Size = new System.Drawing.Size(83, 17); + this.processtips.TabIndex = 4; + this.processtips.Text = "Process tips"; + this.tooltip.SetToolTip(this.processtips, "When unchecked, vertices with only one linedef selected won\'t be processed."); + this.processtips.UseVisualStyleBackColor = true; + this.processtips.CheckedChanged += new System.EventHandler(this.ValueChanged); + // + // createas + // + this.createas.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.createas.FormattingEnabled = true; + this.createas.Items.AddRange(new object[] { + "Linked Linedefs", + "Unlinked Linedefs", + "Vertices", + "Things"}); + this.createas.Location = new System.Drawing.Point(12, 25); + this.createas.Name = "createas"; + this.createas.Size = new System.Drawing.Size(146, 21); + this.createas.TabIndex = 1; + this.tooltip.SetToolTip(this.createas, "Select which type of elements to create.\r\nCheck help (F1) for more information."); + this.createas.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // distance + // + this.distance.AllowDecimal = false; + this.distance.AllowNegative = false; + this.distance.AllowRelative = false; + this.distance.ButtonStep = 8; + this.distance.ButtonStepBig = 64F; + this.distance.ButtonStepFloat = 1F; + this.distance.ButtonStepSmall = 1F; + this.distance.ButtonStepsUseModifierKeys = true; + this.distance.ButtonStepsWrapAround = false; + this.distance.Location = new System.Drawing.Point(80, 49); + this.distance.Name = "distance"; + this.distance.Size = new System.Drawing.Size(72, 24); + this.distance.StepValues = null; + this.distance.TabIndex = 3; + this.distance.WhenTextChanged += new System.EventHandler(this.ValueChanged); + // + // snapmp + // + this.snapmp.AllowDecimal = true; + this.snapmp.AllowNegative = false; + this.snapmp.AllowRelative = false; + this.snapmp.ButtonStep = 1; + this.snapmp.ButtonStepBig = 1F; + this.snapmp.ButtonStepFloat = 1F; + this.snapmp.ButtonStepSmall = 1F; + this.snapmp.ButtonStepsUseModifierKeys = false; + this.snapmp.ButtonStepsWrapAround = false; + this.snapmp.Location = new System.Drawing.Point(80, 123); + this.snapmp.Name = "snapmp"; + this.snapmp.Size = new System.Drawing.Size(72, 24); + this.snapmp.StepValues = null; + this.snapmp.TabIndex = 7; + // + // tooltip + // + this.tooltip.AutoPopDelay = 10000; + this.tooltip.InitialDelay = 500; + this.tooltip.ReshowDelay = 100; + // + // PerpendicularVertexForm + // + this.AcceptButton = this.apply; + 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(170, 192); + this.Controls.Add(this.snapmp); + this.Controls.Add(this.distance); + this.Controls.Add(label4); + this.Controls.Add(this.createas); + this.Controls.Add(label2); + this.Controls.Add(this.processtips); + this.Controls.Add(this.backwards); + this.Controls.Add(label1); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "PerpendicularVertexForm"; + this.Opacity = 1D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "Perpendicular (Vertex)"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PerpendicularVertexForm_FormClosing); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.PerpendicularVertexForm_HelpRequested); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Button apply; + private System.Windows.Forms.CheckBox backwards; + private System.Windows.Forms.CheckBox processtips; + private System.Windows.Forms.ComboBox createas; + private Controls.ButtonsNumericTextbox distance; + private Controls.ButtonsNumericTextbox snapmp; + private System.Windows.Forms.ToolTip tooltip; + } +} \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.cs b/Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.cs new file mode 100644 index 0000000..ed1865f --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.cs @@ -0,0 +1,94 @@ +#region ================== Namespaces + +using System; +using System.Windows.Forms; +using CodeImp.DoomBuilder.Windows; +using CodeImp.DoomBuilder.Geometry; +using System.Drawing; + +#endregion + +//JBR Perpendicular Linedef form +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + public partial class PerpendicularVertexForm : DelayedForm + { + #region ================== Properties + + private bool blockEvents; + + public int CreateAs { get { return createas.SelectedIndex; } } + public float Distance { get { return distance.GetResultFloat(0f); } } + public bool ProcessTips { get { return processtips.Checked; } } + public bool Backwards { get { return backwards.Checked; } } + public float SnapMP { get { return snapmp.GetResultFloat(0f); } } + + #endregion + + #region ================== Constructor / Disposer + + public PerpendicularVertexForm() + { + InitializeComponent(); + + blockEvents = true; + createas.SelectedIndex = 0; + distance.Text = "256"; + snapmp.Text = "2"; + blockEvents = false; + } + + #endregion + + #region ================== Interface + + // Window closing + private void PerpendicularVertexForm_FormClosing(object sender, FormClosingEventArgs e) + { + // User closing the window? + if (e.CloseReason == CloseReason.UserClosing) + { + // Just cancel + General.Editing.CancelMode(); + e.Cancel = true; + } + } + + // This shows the window + public void Show(Form owner) + { + // Position at left-top of owner + this.Location = new Point(owner.Location.X + 20, owner.Location.Y + 90); + + // Show window + base.Show(owner); + } + + // Some value got changed + private void ValueChanged(object sender, EventArgs e) + { + if (!blockEvents) General.Interface.RedrawDisplay(); + } + + // Cancel clicked + private void cancel_Click(object sender, EventArgs e) + { + // Cancel now + General.Editing.CancelMode(); + } + + // Apply clicked + private void apply_Click(object sender, EventArgs e) + { + // Apply now + General.Editing.AcceptMode(); + } + + private void PerpendicularVertexForm_HelpRequested(object sender, HelpEventArgs hlpevent) + { + General.ShowHelp("e_perpendicularvertex.html"); + } + + #endregion + } +} diff --git a/Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.resx b/Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.resx new file mode 100644 index 0000000..37e98bb --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/PerpendicularVertexForm.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + 17, 17 + + + False + + + False + + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.Designer.cs new file mode 100644 index 0000000..4edde3a --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.Designer.cs @@ -0,0 +1,1037 @@ +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + partial class VertexIntoShapeForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.Label label5; + System.Windows.Forms.Label label4; + System.Windows.Forms.Label label3; + System.Windows.Forms.Label label6; + System.Windows.Forms.Label label2; + System.Windows.Forms.Label label1; + System.Windows.Forms.Label label7; + System.Windows.Forms.Label label9; + System.Windows.Forms.Label label10; + System.Windows.Forms.Label label8; + System.Windows.Forms.Label label11; + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VertexIntoShapeForm)); + this.cancel = new System.Windows.Forms.Button(); + this.apply = new System.Windows.Forms.Button(); + this.previewreference = new System.Windows.Forms.CheckBox(); + this.removevertices = new System.Windows.Forms.CheckBox(); + this.tooltip = new System.Windows.Forms.ToolTip(); + this.ellipse = new System.Windows.Forms.CheckBox(); + this.createas = new System.Windows.Forms.ComboBox(); + this.spikingmode = new System.Windows.Forms.ComboBox(); + this.frontoutside = new System.Windows.Forms.CheckBox(); + this.randomsizing = new System.Windows.Forms.ComboBox(); + this.randomsides = new System.Windows.Forms.ComboBox(); + this.randomspikiness = new System.Windows.Forms.ComboBox(); + this.randomstartangle = new System.Windows.Forms.ComboBox(); + this.randomsweepangle = new System.Windows.Forms.ComboBox(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.radiusY = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.radiusX = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.sweepangle = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.startangle = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.startanglewheel = new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControlF(); + this.sweepanglewheel = new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControlF(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.spikiness = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.sides = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.spike50 = new System.Windows.Forms.Button(); + this.sides24 = new System.Windows.Forms.Button(); + this.sides8 = new System.Windows.Forms.Button(); + this.sides3 = new System.Windows.Forms.Button(); + this.spike0 = new System.Windows.Forms.Button(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.Rsweepangle = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.Rstartangle = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.Rstartanglewheel = new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControlF(); + this.Rsweepanglewheel = new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControlF(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.Rspikiness = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.Rsides = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.Rspike50 = new System.Windows.Forms.Button(); + this.Rsides24 = new System.Windows.Forms.Button(); + this.Rsides8 = new System.Windows.Forms.Button(); + this.Rsides3 = new System.Windows.Forms.Button(); + this.Rspike0 = new System.Windows.Forms.Button(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.RradiusY = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.RradiusX = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.randomize = new System.Windows.Forms.Button(); + label5 = new System.Windows.Forms.Label(); + label4 = new System.Windows.Forms.Label(); + label3 = new System.Windows.Forms.Label(); + label6 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + label1 = new System.Windows.Forms.Label(); + label7 = new System.Windows.Forms.Label(); + label9 = new System.Windows.Forms.Label(); + label10 = new System.Windows.Forms.Label(); + label8 = new System.Windows.Forms.Label(); + label11 = new System.Windows.Forms.Label(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.groupBox6.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.SuspendLayout(); + // + // label5 + // + label5.AutoSize = true; + label5.Location = new System.Drawing.Point(26, 21); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(43, 13); + label5.TabIndex = 0; + label5.Text = "Radius:"; + this.tooltip.SetToolTip(label5, "Sets the radius."); + // + // label4 + // + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(125, 24); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(73, 13); + label4.TabIndex = 3; + label4.Text = "Sweep Angle:"; + this.tooltip.SetToolTip(label4, "Controls the sweep angle of the slice.\r\n360º will create a closed shape without s" + + "lices.\r\nUse comma ( , ) for fractional number, e.g.: 12,5"); + // + // label3 + // + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(34, 24); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(62, 13); + label3.TabIndex = 0; + label3.Text = "Start Angle:"; + this.tooltip.SetToolTip(label3, "Controls the starting angle of the first point.\r\nUse comma ( , ) for fractional n" + + "umber, e.g.: 12,5"); + // + // label6 + // + label6.AutoSize = true; + label6.Location = new System.Drawing.Point(20, 20); + label6.Name = "label6"; + label6.Size = new System.Drawing.Size(93, 13); + label6.TabIndex = 0; + label6.Text = "Create shape as..."; + this.tooltip.SetToolTip(label6, "Select which type of elements to create.\r\nCheck help (F1) for more information."); + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(17, 113); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(55, 13); + label2.TabIndex = 8; + label2.Text = "Spikiness:"; + this.tooltip.SetToolTip(label2, "Sets percentage of spikiness.\r\nExcept \"Draw Ellipse behaviour\" spike type, in tha" + + "t case spikiness is in mp."); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(35, 88); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(36, 13); + label1.TabIndex = 3; + label1.Text = "Sides:"; + this.tooltip.SetToolTip(label1, "Sets number of sides that the shape should have.\r\nNote that reducing sweep angle " + + "won\'t reduce the number of sides.\r\nWhole number only, 3 sides minimum."); + // + // label7 + // + label7.AutoSize = true; + label7.Location = new System.Drawing.Point(26, 21); + label7.Name = "label7"; + label7.Size = new System.Drawing.Size(43, 13); + label7.TabIndex = 0; + label7.Text = "Radius:"; + this.tooltip.SetToolTip(label7, "Sets the radius."); + // + // label9 + // + label9.AutoSize = true; + label9.Location = new System.Drawing.Point(19, 81); + label9.Name = "label9"; + label9.Size = new System.Drawing.Size(55, 13); + label9.TabIndex = 6; + label9.Text = "Spikiness:"; + this.tooltip.SetToolTip(label9, "Sets percentage of spikiness.\r\nExcept \"Draw Ellipse behaviour\" spike type, in tha" + + "t case spikiness is in mp."); + // + // label10 + // + label10.AutoSize = true; + label10.Location = new System.Drawing.Point(35, 24); + label10.Name = "label10"; + label10.Size = new System.Drawing.Size(36, 13); + label10.TabIndex = 0; + label10.Text = "Sides:"; + this.tooltip.SetToolTip(label10, "Sets number of sides that the shape should have.\r\nNote that reducing sweep angle " + + "won\'t reduce the number of sides.\r\nWhole number only, 3 sides minimum."); + // + // label8 + // + label8.AutoSize = true; + label8.Location = new System.Drawing.Point(125, 24); + label8.Name = "label8"; + label8.Size = new System.Drawing.Size(73, 13); + label8.TabIndex = 4; + label8.Text = "Sweep Angle:"; + this.tooltip.SetToolTip(label8, "Controls the sweep angle of the slice.\r\n360º will create a closed shape without s" + + "lices.\r\nUse comma ( , ) for fractional number, e.g.: 12,5"); + // + // label11 + // + label11.AutoSize = true; + label11.Location = new System.Drawing.Point(34, 24); + label11.Name = "label11"; + label11.Size = new System.Drawing.Size(62, 13); + label11.TabIndex = 0; + label11.Text = "Start Angle:"; + this.tooltip.SetToolTip(label11, "Controls the starting angle of the first point.\r\nUse comma ( , ) for fractional n" + + "umber, e.g.: 12,5"); + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(89, 527); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(70, 25); + this.cancel.TabIndex = 4; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.apply.Location = new System.Drawing.Point(12, 527); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(70, 25); + this.apply.TabIndex = 3; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // previewreference + // + this.previewreference.AutoSize = true; + this.previewreference.Checked = true; + this.previewreference.CheckState = System.Windows.Forms.CheckState.Checked; + this.previewreference.Location = new System.Drawing.Point(15, 12); + this.previewreference.Name = "previewreference"; + this.previewreference.Size = new System.Drawing.Size(112, 17); + this.previewreference.TabIndex = 0; + this.previewreference.Text = "Preview reference"; + this.tooltip.SetToolTip(this.previewreference, "Visual only. \r\nThe reference circle will be shown on screen when checked."); + this.previewreference.UseVisualStyleBackColor = true; + this.previewreference.CheckedChanged += new System.EventHandler(this.ValueChanged); + // + // removevertices + // + this.removevertices.AutoSize = true; + this.removevertices.Location = new System.Drawing.Point(111, 48); + this.removevertices.Name = "removevertices"; + this.removevertices.Size = new System.Drawing.Size(107, 17); + this.removevertices.TabIndex = 1; + this.removevertices.Text = "Remove Vertices"; + this.tooltip.SetToolTip(this.removevertices, "When checked it will remove the vertices that were used to place the shapes."); + this.removevertices.UseVisualStyleBackColor = true; + this.removevertices.CheckedChanged += new System.EventHandler(this.ValueChanged); + // + // tooltip + // + this.tooltip.AutoPopDelay = 10000; + this.tooltip.InitialDelay = 500; + this.tooltip.ReshowDelay = 100; + // + // ellipse + // + this.ellipse.AutoSize = true; + this.ellipse.Location = new System.Drawing.Point(20, 48); + this.ellipse.Name = "ellipse"; + this.ellipse.Size = new System.Drawing.Size(56, 17); + this.ellipse.TabIndex = 3; + this.ellipse.Text = "Ellipse"; + this.tooltip.SetToolTip(this.ellipse, "Shape can only be scaled in one axis when unchecked."); + this.ellipse.UseVisualStyleBackColor = true; + this.ellipse.CheckedChanged += new System.EventHandler(this.ellipse_CheckedChanged); + // + // createas + // + this.createas.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.createas.FormattingEnabled = true; + this.createas.Items.AddRange(new object[] { + "Close shape towards origin", + "Close shape, first to last vertex", + "Open or close shape", + "Shape w/o intersects or sectors", + "Vertices", + "Things"}); + this.createas.Location = new System.Drawing.Point(18, 36); + this.createas.Name = "createas"; + this.createas.Size = new System.Drawing.Size(200, 21); + this.createas.TabIndex = 1; + this.tooltip.SetToolTip(this.createas, "Select which type of elements to create.\r\nCheck help (F1) for more information."); + this.createas.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // spikingmode + // + this.spikingmode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.spikingmode.FormattingEnabled = true; + this.spikingmode.Items.AddRange(new object[] { + "Spike outside, start spiked", + "Spike outside, start normal", + "Spike inside, start spiked", + "Spike inside, start normal", + "Spike zig-zag, start spiked", + "Spike gear, start spiked", + "Spike zig-zag, start normal", + "Spike gear, start normal", + "DrawEllipse behaviour, start spiked", + "DrawEllipse behaviour, start normal"}); + this.spikingmode.Location = new System.Drawing.Point(20, 141); + this.spikingmode.Name = "spikingmode"; + this.spikingmode.Size = new System.Drawing.Size(200, 21); + this.spikingmode.TabIndex = 12; + this.tooltip.SetToolTip(this.spikingmode, "Controls how spikes behave in relation to the Spikiness level."); + this.spikingmode.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // frontoutside + // + this.frontoutside.AutoSize = true; + this.frontoutside.Location = new System.Drawing.Point(20, 63); + this.frontoutside.Name = "frontoutside"; + this.frontoutside.Size = new System.Drawing.Size(159, 17); + this.frontoutside.TabIndex = 2; + this.frontoutside.Text = "Front Outside / Flip Linedefs"; + this.tooltip.SetToolTip(this.frontoutside, "Shape linedefs will point outside when checked.\r\nIgnored if \"Create shape as..\" i" + + "s \"Vertices\" or \"Things\"."); + this.frontoutside.UseVisualStyleBackColor = true; + this.frontoutside.CheckedChanged += new System.EventHandler(this.ValueChanged); + // + // randomsizing + // + this.randomsizing.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.randomsizing.FormattingEnabled = true; + this.randomsizing.Items.AddRange(new object[] { + "Disabled: Don\'t change.", + "Bool Circle: Set both by random chance.", + "Linear Circle: Set both by random amount.", + "Bool Ellipse: Set each by random chance.", + "Linear Ellipse: Set each by random amount."}); + this.randomsizing.Location = new System.Drawing.Point(18, 46); + this.randomsizing.Name = "randomsizing"; + this.randomsizing.Size = new System.Drawing.Size(200, 21); + this.randomsizing.TabIndex = 3; + this.tooltip.SetToolTip(this.randomsizing, resources.GetString("randomsizing.ToolTip")); + this.randomsizing.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // randomsides + // + this.randomsides.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.randomsides.FormattingEnabled = true; + this.randomsides.Items.AddRange(new object[] { + "Disabled: Don\'t change sides.", + "Boolean: Set sides by random chance.", + "Linear: Set sides by random amount."}); + this.randomsides.Location = new System.Drawing.Point(18, 49); + this.randomsides.Name = "randomsides"; + this.randomsides.Size = new System.Drawing.Size(200, 21); + this.randomsides.TabIndex = 5; + this.tooltip.SetToolTip(this.randomsides, resources.GetString("randomsides.ToolTip")); + this.randomsides.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // randomspikiness + // + this.randomspikiness.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.randomspikiness.FormattingEnabled = true; + this.randomspikiness.Items.AddRange(new object[] { + "Disabled: Don\'t change spikiness.", + "Boolean: Set spikiness by random chance.", + "Linear: Set spikiness by random amount."}); + this.randomspikiness.Location = new System.Drawing.Point(18, 106); + this.randomspikiness.Name = "randomspikiness"; + this.randomspikiness.Size = new System.Drawing.Size(200, 21); + this.randomspikiness.TabIndex = 10; + this.tooltip.SetToolTip(this.randomspikiness, resources.GetString("randomspikiness.ToolTip")); + this.randomspikiness.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // randomstartangle + // + this.randomstartangle.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.randomstartangle.FormattingEnabled = true; + this.randomstartangle.Items.AddRange(new object[] { + "Disabled", + "Boolean", + "Linear"}); + this.randomstartangle.Location = new System.Drawing.Point(18, 172); + this.randomstartangle.Name = "randomstartangle"; + this.randomstartangle.Size = new System.Drawing.Size(97, 21); + this.randomstartangle.TabIndex = 3; + this.tooltip.SetToolTip(this.randomstartangle, resources.GetString("randomstartangle.ToolTip")); + this.randomstartangle.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // randomsweepangle + // + this.randomsweepangle.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.randomsweepangle.FormattingEnabled = true; + this.randomsweepangle.Items.AddRange(new object[] { + "Disabled", + "Boolean", + "Linear"}); + this.randomsweepangle.Location = new System.Drawing.Point(122, 172); + this.randomsweepangle.Name = "randomsweepangle"; + this.randomsweepangle.Size = new System.Drawing.Size(97, 21); + this.randomsweepangle.TabIndex = 7; + this.tooltip.SetToolTip(this.randomsweepangle, resources.GetString("randomsweepangle.ToolTip")); + this.randomsweepangle.SelectedIndexChanged += new System.EventHandler(this.ValueChanged); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Location = new System.Drawing.Point(12, 35); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(254, 487); + this.tabControl1.TabIndex = 2; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.groupBox3); + this.tabPage1.Controls.Add(this.groupBox2); + this.tabPage1.Controls.Add(this.groupBox1); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(246, 461); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Settings"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.radiusY); + this.groupBox3.Controls.Add(this.removevertices); + this.groupBox3.Controls.Add(this.radiusX); + this.groupBox3.Controls.Add(label5); + this.groupBox3.Controls.Add(this.ellipse); + this.groupBox3.Location = new System.Drawing.Point(6, 6); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(234, 78); + this.groupBox3.TabIndex = 0; + this.groupBox3.TabStop = false; + this.groupBox3.Text = " Sizing: "; + // + // radiusY + // + this.radiusY.AllowDecimal = true; + this.radiusY.AllowNegative = false; + this.radiusY.AllowRelative = false; + this.radiusY.ButtonStep = 8; + this.radiusY.ButtonStepBig = 32F; + this.radiusY.ButtonStepFloat = 8F; + this.radiusY.ButtonStepSmall = 1F; + this.radiusY.ButtonStepsUseModifierKeys = true; + this.radiusY.ButtonStepsWrapAround = false; + this.radiusY.Location = new System.Drawing.Point(153, 16); + this.radiusY.Name = "radiusY"; + this.radiusY.Size = new System.Drawing.Size(72, 24); + this.radiusY.StepValues = null; + this.radiusY.TabIndex = 2; + this.radiusY.WhenTextChanged += new System.EventHandler(this.radiusY_ValueChanged); + // + // radiusX + // + this.radiusX.AllowDecimal = true; + this.radiusX.AllowNegative = false; + this.radiusX.AllowRelative = false; + this.radiusX.ButtonStep = 8; + this.radiusX.ButtonStepBig = 32F; + this.radiusX.ButtonStepFloat = 8F; + this.radiusX.ButtonStepSmall = 1F; + this.radiusX.ButtonStepsUseModifierKeys = true; + this.radiusX.ButtonStepsWrapAround = false; + this.radiusX.Location = new System.Drawing.Point(75, 16); + this.radiusX.Name = "radiusX"; + this.radiusX.Size = new System.Drawing.Size(72, 24); + this.radiusX.StepValues = null; + this.radiusX.TabIndex = 1; + this.radiusX.WhenTextChanged += new System.EventHandler(this.radiusX_ValueChanged); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.sweepangle); + this.groupBox2.Controls.Add(this.startangle); + this.groupBox2.Controls.Add(this.startanglewheel); + this.groupBox2.Controls.Add(this.sweepanglewheel); + this.groupBox2.Controls.Add(label4); + this.groupBox2.Controls.Add(label3); + this.groupBox2.Location = new System.Drawing.Point(6, 276); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(234, 180); + this.groupBox2.TabIndex = 2; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Adjustment / Slicing: "; + // + // sweepangle + // + this.sweepangle.AllowDecimal = true; + this.sweepangle.AllowNegative = false; + this.sweepangle.AllowRelative = false; + this.sweepangle.ButtonStep = 1; + this.sweepangle.ButtonStepBig = 45F; + this.sweepangle.ButtonStepFloat = 1F; + this.sweepangle.ButtonStepSmall = 3F; + this.sweepangle.ButtonStepsUseModifierKeys = true; + this.sweepangle.ButtonStepsWrapAround = false; + this.sweepangle.Location = new System.Drawing.Point(122, 40); + this.sweepangle.Name = "sweepangle"; + this.sweepangle.Size = new System.Drawing.Size(96, 24); + this.sweepangle.StepValues = null; + this.sweepangle.TabIndex = 4; + this.sweepangle.WhenTextChanged += new System.EventHandler(this.sweepangle_ValueChanged); + // + // startangle + // + this.startangle.AllowDecimal = true; + this.startangle.AllowNegative = false; + this.startangle.AllowRelative = false; + this.startangle.ButtonStep = 1; + this.startangle.ButtonStepBig = 45F; + this.startangle.ButtonStepFloat = 1F; + this.startangle.ButtonStepSmall = 3F; + this.startangle.ButtonStepsUseModifierKeys = true; + this.startangle.ButtonStepsWrapAround = false; + this.startangle.Location = new System.Drawing.Point(20, 40); + this.startangle.Name = "startangle"; + this.startangle.Size = new System.Drawing.Size(96, 24); + this.startangle.StepValues = null; + this.startangle.TabIndex = 1; + this.startangle.WhenTextChanged += new System.EventHandler(this.startangle_ValueChanged); + // + // startanglewheel + // + this.startanglewheel.AllowLoops = false; + this.startanglewheel.Angle = 0F; + this.startanglewheel.AngleOffset = 0F; + this.startanglewheel.Location = new System.Drawing.Point(20, 70); + this.startanglewheel.Name = "startanglewheel"; + this.startanglewheel.Size = new System.Drawing.Size(96, 96); + this.startanglewheel.SnapAngle = 22.5F; + this.startanglewheel.TabIndex = 2; + this.startanglewheel.AngleChanged += new System.EventHandler(this.startanglewheel_AngleChanged); + // + // sweepanglewheel + // + this.sweepanglewheel.AllowLoops = false; + this.sweepanglewheel.Angle = 0F; + this.sweepanglewheel.AngleOffset = 0F; + this.sweepanglewheel.Location = new System.Drawing.Point(122, 70); + this.sweepanglewheel.Name = "sweepanglewheel"; + this.sweepanglewheel.Size = new System.Drawing.Size(96, 96); + this.sweepanglewheel.SnapAngle = 22.5F; + this.sweepanglewheel.TabIndex = 5; + this.sweepanglewheel.AngleChanged += new System.EventHandler(this.sweepanglewheel_AngleChanged); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.spikiness); + this.groupBox1.Controls.Add(this.sides); + this.groupBox1.Controls.Add(label6); + this.groupBox1.Controls.Add(this.createas); + this.groupBox1.Controls.Add(this.spike50); + this.groupBox1.Controls.Add(this.sides24); + this.groupBox1.Controls.Add(this.sides8); + this.groupBox1.Controls.Add(this.sides3); + this.groupBox1.Controls.Add(this.spikingmode); + this.groupBox1.Controls.Add(this.frontoutside); + this.groupBox1.Controls.Add(this.spike0); + this.groupBox1.Controls.Add(label2); + this.groupBox1.Controls.Add(label1); + this.groupBox1.Location = new System.Drawing.Point(6, 90); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(234, 180); + this.groupBox1.TabIndex = 1; + this.groupBox1.TabStop = false; + this.groupBox1.Text = " Shape Control: "; + // + // spikiness + // + this.spikiness.AllowDecimal = false; + this.spikiness.AllowNegative = false; + this.spikiness.AllowRelative = false; + this.spikiness.ButtonStep = 1; + this.spikiness.ButtonStepBig = 4F; + this.spikiness.ButtonStepFloat = 1F; + this.spikiness.ButtonStepSmall = 2F; + this.spikiness.ButtonStepsUseModifierKeys = true; + this.spikiness.ButtonStepsWrapAround = false; + this.spikiness.Location = new System.Drawing.Point(75, 108); + this.spikiness.Name = "spikiness"; + this.spikiness.Size = new System.Drawing.Size(60, 24); + this.spikiness.StepValues = null; + this.spikiness.TabIndex = 9; + this.spikiness.WhenTextChanged += new System.EventHandler(this.spikiness_WhenTextChanged); + // + // sides + // + this.sides.AllowDecimal = false; + this.sides.AllowNegative = false; + this.sides.AllowRelative = false; + this.sides.ButtonStep = 1; + this.sides.ButtonStepBig = 4F; + this.sides.ButtonStepFloat = 1F; + this.sides.ButtonStepSmall = 2F; + this.sides.ButtonStepsUseModifierKeys = true; + this.sides.ButtonStepsWrapAround = false; + this.sides.Location = new System.Drawing.Point(75, 83); + this.sides.Name = "sides"; + this.sides.Size = new System.Drawing.Size(60, 24); + this.sides.StepValues = null; + this.sides.TabIndex = 4; + this.sides.WhenTextChanged += new System.EventHandler(this.sides_WhenTextChanged); + // + // spike50 + // + this.spike50.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShapeSpike50; + this.spike50.Location = new System.Drawing.Point(170, 111); + this.spike50.Name = "spike50"; + this.spike50.Size = new System.Drawing.Size(24, 24); + this.spike50.TabIndex = 11; + this.spike50.UseVisualStyleBackColor = true; + this.spike50.Click += new System.EventHandler(this.spike50_Click); + // + // sides24 + // + this.sides24.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShape24Sides; + this.sides24.Location = new System.Drawing.Point(200, 83); + this.sides24.Name = "sides24"; + this.sides24.Size = new System.Drawing.Size(24, 24); + this.sides24.TabIndex = 7; + this.sides24.UseVisualStyleBackColor = true; + this.sides24.Click += new System.EventHandler(this.sides24_Click); + // + // sides8 + // + this.sides8.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShape8Sides; + this.sides8.Location = new System.Drawing.Point(170, 83); + this.sides8.Name = "sides8"; + this.sides8.Size = new System.Drawing.Size(24, 24); + this.sides8.TabIndex = 6; + this.sides8.UseVisualStyleBackColor = true; + this.sides8.Click += new System.EventHandler(this.sides8_Click); + // + // sides3 + // + this.sides3.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShape3Sides; + this.sides3.Location = new System.Drawing.Point(140, 83); + this.sides3.Name = "sides3"; + this.sides3.Size = new System.Drawing.Size(24, 24); + this.sides3.TabIndex = 5; + this.sides3.UseVisualStyleBackColor = true; + this.sides3.Click += new System.EventHandler(this.sides3_Click); + // + // spike0 + // + this.spike0.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShapeSpike0; + this.spike0.Location = new System.Drawing.Point(140, 111); + this.spike0.Name = "spike0"; + this.spike0.Size = new System.Drawing.Size(24, 24); + this.spike0.TabIndex = 10; + this.spike0.UseVisualStyleBackColor = true; + this.spike0.Click += new System.EventHandler(this.spike0_Click); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.groupBox6); + this.tabPage2.Controls.Add(this.groupBox5); + this.tabPage2.Controls.Add(this.groupBox4); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(246, 461); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Randomizer"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // groupBox6 + // + this.groupBox6.Controls.Add(this.randomsweepangle); + this.groupBox6.Controls.Add(this.randomstartangle); + this.groupBox6.Controls.Add(this.Rsweepangle); + this.groupBox6.Controls.Add(this.Rstartangle); + this.groupBox6.Controls.Add(this.Rstartanglewheel); + this.groupBox6.Controls.Add(this.Rsweepanglewheel); + this.groupBox6.Controls.Add(label8); + this.groupBox6.Controls.Add(label11); + this.groupBox6.Location = new System.Drawing.Point(6, 242); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Size = new System.Drawing.Size(234, 214); + this.groupBox6.TabIndex = 2; + this.groupBox6.TabStop = false; + this.groupBox6.Text = "Adjustment / Slicing: "; + // + // Rsweepangle + // + this.Rsweepangle.AllowDecimal = true; + this.Rsweepangle.AllowNegative = false; + this.Rsweepangle.AllowRelative = false; + this.Rsweepangle.ButtonStep = 1; + this.Rsweepangle.ButtonStepBig = 45F; + this.Rsweepangle.ButtonStepFloat = 1F; + this.Rsweepangle.ButtonStepSmall = 3F; + this.Rsweepangle.ButtonStepsUseModifierKeys = true; + this.Rsweepangle.ButtonStepsWrapAround = false; + this.Rsweepangle.Location = new System.Drawing.Point(122, 40); + this.Rsweepangle.Name = "Rsweepangle"; + this.Rsweepangle.Size = new System.Drawing.Size(96, 24); + this.Rsweepangle.StepValues = null; + this.Rsweepangle.TabIndex = 5; + this.Rsweepangle.WhenTextChanged += new System.EventHandler(this.Rsweepangle_WhenTextChanged); + // + // Rstartangle + // + this.Rstartangle.AllowDecimal = true; + this.Rstartangle.AllowNegative = false; + this.Rstartangle.AllowRelative = false; + this.Rstartangle.ButtonStep = 1; + this.Rstartangle.ButtonStepBig = 45F; + this.Rstartangle.ButtonStepFloat = 1F; + this.Rstartangle.ButtonStepSmall = 3F; + this.Rstartangle.ButtonStepsUseModifierKeys = true; + this.Rstartangle.ButtonStepsWrapAround = false; + this.Rstartangle.Location = new System.Drawing.Point(20, 40); + this.Rstartangle.Name = "Rstartangle"; + this.Rstartangle.Size = new System.Drawing.Size(96, 24); + this.Rstartangle.StepValues = null; + this.Rstartangle.TabIndex = 1; + this.Rstartangle.WhenTextChanged += new System.EventHandler(this.Rstartangle_WhenTextChanged); + // + // Rstartanglewheel + // + this.Rstartanglewheel.AllowLoops = false; + this.Rstartanglewheel.Angle = 0F; + this.Rstartanglewheel.AngleOffset = 0F; + this.Rstartanglewheel.Location = new System.Drawing.Point(20, 70); + this.Rstartanglewheel.Name = "Rstartanglewheel"; + this.Rstartanglewheel.Size = new System.Drawing.Size(96, 96); + this.Rstartanglewheel.SnapAngle = 22.5F; + this.Rstartanglewheel.TabIndex = 2; + this.Rstartanglewheel.AngleChanged += new System.EventHandler(this.Rstartanglewheel_AngleChanged); + // + // Rsweepanglewheel + // + this.Rsweepanglewheel.AllowLoops = false; + this.Rsweepanglewheel.Angle = 0F; + this.Rsweepanglewheel.AngleOffset = 0F; + this.Rsweepanglewheel.Location = new System.Drawing.Point(122, 70); + this.Rsweepanglewheel.Name = "Rsweepanglewheel"; + this.Rsweepanglewheel.Size = new System.Drawing.Size(96, 96); + this.Rsweepanglewheel.SnapAngle = 22.5F; + this.Rsweepanglewheel.TabIndex = 6; + this.Rsweepanglewheel.AngleChanged += new System.EventHandler(this.Rsweepanglewheel_AngleChanged); + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.randomspikiness); + this.groupBox5.Controls.Add(this.randomsides); + this.groupBox5.Controls.Add(this.Rspikiness); + this.groupBox5.Controls.Add(this.Rsides); + this.groupBox5.Controls.Add(this.Rspike50); + this.groupBox5.Controls.Add(this.Rsides24); + this.groupBox5.Controls.Add(this.Rsides8); + this.groupBox5.Controls.Add(this.Rsides3); + this.groupBox5.Controls.Add(this.Rspike0); + this.groupBox5.Controls.Add(label9); + this.groupBox5.Controls.Add(label10); + this.groupBox5.Location = new System.Drawing.Point(6, 90); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(234, 146); + this.groupBox5.TabIndex = 1; + this.groupBox5.TabStop = false; + this.groupBox5.Text = " Shape Control: "; + // + // Rspikiness + // + this.Rspikiness.AllowDecimal = false; + this.Rspikiness.AllowNegative = false; + this.Rspikiness.AllowRelative = false; + this.Rspikiness.ButtonStep = 1; + this.Rspikiness.ButtonStepBig = 4F; + this.Rspikiness.ButtonStepFloat = 1F; + this.Rspikiness.ButtonStepSmall = 2F; + this.Rspikiness.ButtonStepsUseModifierKeys = true; + this.Rspikiness.ButtonStepsWrapAround = false; + this.Rspikiness.Location = new System.Drawing.Point(77, 76); + this.Rspikiness.Name = "Rspikiness"; + this.Rspikiness.Size = new System.Drawing.Size(60, 24); + this.Rspikiness.StepValues = null; + this.Rspikiness.TabIndex = 7; + this.Rspikiness.WhenTextChanged += new System.EventHandler(this.Rspikiness_WhenTextChanged); + // + // Rsides + // + this.Rsides.AllowDecimal = false; + this.Rsides.AllowNegative = false; + this.Rsides.AllowRelative = false; + this.Rsides.ButtonStep = 1; + this.Rsides.ButtonStepBig = 4F; + this.Rsides.ButtonStepFloat = 1F; + this.Rsides.ButtonStepSmall = 2F; + this.Rsides.ButtonStepsUseModifierKeys = true; + this.Rsides.ButtonStepsWrapAround = false; + this.Rsides.Location = new System.Drawing.Point(75, 19); + this.Rsides.Name = "Rsides"; + this.Rsides.Size = new System.Drawing.Size(60, 24); + this.Rsides.StepValues = null; + this.Rsides.TabIndex = 1; + this.Rsides.WhenTextChanged += new System.EventHandler(this.Rsides_WhenTextChanged); + // + // Rspike50 + // + this.Rspike50.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShapeSpike50; + this.Rspike50.Location = new System.Drawing.Point(173, 75); + this.Rspike50.Name = "Rspike50"; + this.Rspike50.Size = new System.Drawing.Size(24, 24); + this.Rspike50.TabIndex = 9; + this.Rspike50.UseVisualStyleBackColor = true; + this.Rspike50.Click += new System.EventHandler(this.Rspike50_Click); + // + // Rsides24 + // + this.Rsides24.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShape24Sides; + this.Rsides24.Location = new System.Drawing.Point(200, 19); + this.Rsides24.Name = "Rsides24"; + this.Rsides24.Size = new System.Drawing.Size(24, 24); + this.Rsides24.TabIndex = 4; + this.Rsides24.UseVisualStyleBackColor = true; + this.Rsides24.Click += new System.EventHandler(this.Rsides24_Click); + // + // Rsides8 + // + this.Rsides8.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShape8Sides; + this.Rsides8.Location = new System.Drawing.Point(170, 19); + this.Rsides8.Name = "Rsides8"; + this.Rsides8.Size = new System.Drawing.Size(24, 24); + this.Rsides8.TabIndex = 3; + this.Rsides8.UseVisualStyleBackColor = true; + this.Rsides8.Click += new System.EventHandler(this.Rsides8_Click); + // + // Rsides3 + // + this.Rsides3.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShape3Sides; + this.Rsides3.Location = new System.Drawing.Point(140, 19); + this.Rsides3.Name = "Rsides3"; + this.Rsides3.Size = new System.Drawing.Size(24, 24); + this.Rsides3.TabIndex = 2; + this.Rsides3.UseVisualStyleBackColor = true; + this.Rsides3.Click += new System.EventHandler(this.Rsides3_Click); + // + // Rspike0 + // + this.Rspike0.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShapeSpike0; + this.Rspike0.Location = new System.Drawing.Point(143, 75); + this.Rspike0.Name = "Rspike0"; + this.Rspike0.Size = new System.Drawing.Size(24, 24); + this.Rspike0.TabIndex = 8; + this.Rspike0.UseVisualStyleBackColor = true; + this.Rspike0.Click += new System.EventHandler(this.Rspike0_Click); + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.randomsizing); + this.groupBox4.Controls.Add(this.RradiusY); + this.groupBox4.Controls.Add(this.RradiusX); + this.groupBox4.Controls.Add(label7); + this.groupBox4.Location = new System.Drawing.Point(6, 6); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(234, 78); + this.groupBox4.TabIndex = 0; + this.groupBox4.TabStop = false; + this.groupBox4.Text = " Sizing: "; + // + // RradiusY + // + this.RradiusY.AllowDecimal = true; + this.RradiusY.AllowNegative = false; + this.RradiusY.AllowRelative = false; + this.RradiusY.ButtonStep = 8; + this.RradiusY.ButtonStepBig = 32F; + this.RradiusY.ButtonStepFloat = 8F; + this.RradiusY.ButtonStepSmall = 1F; + this.RradiusY.ButtonStepsUseModifierKeys = true; + this.RradiusY.ButtonStepsWrapAround = false; + this.RradiusY.Location = new System.Drawing.Point(153, 16); + this.RradiusY.Name = "RradiusY"; + this.RradiusY.Size = new System.Drawing.Size(72, 24); + this.RradiusY.StepValues = null; + this.RradiusY.TabIndex = 2; + this.RradiusY.WhenTextChanged += new System.EventHandler(this.RradiusY_WhenTextChanged); + // + // RradiusX + // + this.RradiusX.AllowDecimal = true; + this.RradiusX.AllowNegative = false; + this.RradiusX.AllowRelative = false; + this.RradiusX.ButtonStep = 8; + this.RradiusX.ButtonStepBig = 32F; + this.RradiusX.ButtonStepFloat = 8F; + this.RradiusX.ButtonStepSmall = 1F; + this.RradiusX.ButtonStepsUseModifierKeys = true; + this.RradiusX.ButtonStepsWrapAround = false; + this.RradiusX.Location = new System.Drawing.Point(75, 16); + this.RradiusX.Name = "RradiusX"; + this.RradiusX.Size = new System.Drawing.Size(72, 24); + this.RradiusX.StepValues = null; + this.RradiusX.TabIndex = 1; + this.RradiusX.WhenTextChanged += new System.EventHandler(this.RradiusX_WhenTextChanged); + // + // randomize + // + this.randomize.Location = new System.Drawing.Point(191, 8); + this.randomize.Name = "randomize"; + this.randomize.Size = new System.Drawing.Size(75, 23); + this.randomize.TabIndex = 1; + this.randomize.Text = "Randomize!"; + this.randomize.UseVisualStyleBackColor = true; + this.randomize.Click += new System.EventHandler(this.randomize_Click); + // + // VertexIntoShapeForm + // + this.AcceptButton = this.apply; + 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(276, 564); + this.Controls.Add(this.randomize); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.previewreference); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "VertexIntoShapeForm"; + this.Opacity = 1D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "Vertex into Shape"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.VertexIntoShapeForm_FormClosing); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.VertexIntoShape_HelpRequested); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Button apply; + private System.Windows.Forms.CheckBox previewreference; + private System.Windows.Forms.CheckBox removevertices; + private System.Windows.Forms.ToolTip tooltip; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.GroupBox groupBox3; + private Controls.ButtonsNumericTextbox radiusY; + private Controls.ButtonsNumericTextbox radiusX; + private System.Windows.Forms.CheckBox ellipse; + private System.Windows.Forms.GroupBox groupBox2; + private Controls.ButtonsNumericTextbox sweepangle; + private Controls.ButtonsNumericTextbox startangle; + private GZBuilder.Controls.AngleControlF startanglewheel; + private GZBuilder.Controls.AngleControlF sweepanglewheel; + private System.Windows.Forms.GroupBox groupBox1; + private Controls.ButtonsNumericTextbox spikiness; + private Controls.ButtonsNumericTextbox sides; + private System.Windows.Forms.ComboBox createas; + private System.Windows.Forms.Button spike50; + private System.Windows.Forms.Button sides24; + private System.Windows.Forms.Button sides8; + private System.Windows.Forms.Button sides3; + private System.Windows.Forms.ComboBox spikingmode; + private System.Windows.Forms.CheckBox frontoutside; + private System.Windows.Forms.Button spike0; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.GroupBox groupBox6; + private System.Windows.Forms.ComboBox randomsweepangle; + private System.Windows.Forms.ComboBox randomstartangle; + private Controls.ButtonsNumericTextbox Rsweepangle; + private Controls.ButtonsNumericTextbox Rstartangle; + private GZBuilder.Controls.AngleControlF Rstartanglewheel; + private GZBuilder.Controls.AngleControlF Rsweepanglewheel; + private System.Windows.Forms.GroupBox groupBox5; + private System.Windows.Forms.ComboBox randomspikiness; + private System.Windows.Forms.ComboBox randomsides; + private Controls.ButtonsNumericTextbox Rspikiness; + private Controls.ButtonsNumericTextbox Rsides; + private System.Windows.Forms.Button Rspike50; + private System.Windows.Forms.Button Rsides24; + private System.Windows.Forms.Button Rsides8; + private System.Windows.Forms.Button Rsides3; + private System.Windows.Forms.Button Rspike0; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.ComboBox randomsizing; + private Controls.ButtonsNumericTextbox RradiusY; + private Controls.ButtonsNumericTextbox RradiusX; + private System.Windows.Forms.Button randomize; + } +} \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.cs b/Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.cs new file mode 100644 index 0000000..a5c0833 --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.cs @@ -0,0 +1,398 @@ +#region ================== Namespaces + +using System; +using System.Windows.Forms; +using CodeImp.DoomBuilder.Windows; +using CodeImp.DoomBuilder.Geometry; +using System.Drawing; +using CodeImp.DoomBuilder.Controls; + +#endregion + +//JBR Vertex into Shape form +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + public partial class VertexIntoShapeForm : DelayedForm + { + + #region ================== Properties + + private bool blockEvents; + + public float RadiusX { get { return GetValue(randomsizing.SelectedIndex, radiusX, RradiusX, rand[0], rand[0]); } } + public float RadiusY { get { return GetValue(randomsizing.SelectedIndex, radiusY, RradiusY, rand[0], rand[1]); } } + public bool Ellipse { get { return ellipse.Checked; } } + public bool RemoveVertices { get { return removevertices.Checked; } } + public bool PreviewReference { get { return previewreference.Checked; } } + public int CreateAs { get { return createas.SelectedIndex; } } + public bool FrontOutside { get { return frontoutside.Checked; } } + public int Sides { get { return GetValue(randomsides.SelectedIndex, sides, Rsides, rand[2], 3); } } + public int Spikiness { get { return GetValue(randomspikiness.SelectedIndex, spikiness, Rspikiness, rand[3], 0); } } + public int SpikingMode { get { return spikingmode.SelectedIndex; } } + public float StartAngle { get { return GetValue(randomstartangle.SelectedIndex, startangle, Rstartangle, rand[4], rand[4]); } } + public float SweepAngle { get { return GetValue(randomsweepangle.SelectedIndex, sweepangle, Rsweepangle, rand[5], rand[5]); } } + + Random randomizer; + int randseed; // Random seed + float[] rand; // To hold random values, 0.0 to 1.0 + + #endregion + + #region ================== Constructor / Disposer + + public VertexIntoShapeForm() + { + InitializeComponent(); + + blockEvents = true; + NewSeed(); + createas.SelectedIndex = 0; + spikingmode.SelectedIndex = 0; + radiusX.Text = "256"; + radiusY.Text = "256"; + sides.Text = "3"; + spikiness.Text = "0"; + startangle.Text = "0"; + sweepangle.Text = "360"; + RradiusX.Text = "256"; + RradiusY.Text = "256"; + Rsides.Text = "3"; + Rspikiness.Text = "0"; + Rstartangle.Text = "0"; + Rsweepangle.Text = "360"; + randomsizing.SelectedIndex = 0; + randomsides.SelectedIndex = 0; + randomspikiness.SelectedIndex = 0; + randomstartangle.SelectedIndex = 0; + randomsweepangle.SelectedIndex = 0; + blockEvents = false; + } + + #endregion + + #region ================== Methods + + public void NewSeed() + { + randomizer = new Random(); + randseed = randomizer.Next(); + randomizer = new Random(randseed); + rand = new float[6]; + for (int i = 0; i < rand.Length; i++) + rand[i] = (float)randomizer.NextDouble(); + } + + public void RestartSeed() + { + randomizer = new Random(randseed); + for (int i = 0; i < rand.Length; i++) + rand[i] = (float)randomizer.NextDouble(); + } + + public void NextShape() + { + for (int i = 0; i < rand.Length; i++) + rand[i] = (float)randomizer.NextDouble(); + } + + private int GetValue(int randtype, ButtonsNumericTextbox setting, ButtonsNumericTextbox rsetting, float randval, int def) + { + if (randtype == 0) + return setting.GetResult(def); + int va = setting.GetResult(def); + int vb = rsetting.GetResult(def); + if (randtype == 1) + return (randval >= 0.5f) ? vb : va; + else + return va + (int)((float)(vb - va) * randval); + } + + private float GetValue(int randtype, ButtonsNumericTextbox setting, ButtonsNumericTextbox rsetting, float randval1, float randval2) + { + if (randtype == 0) + return setting.GetResultFloat(0f); + float va = setting.GetResultFloat(0f); + float vb = rsetting.GetResultFloat(0f); + if (randtype == 1) + return (randval1 >= 0.5f) ? vb : va; + if (randtype == 2) + return va + (vb - va) * randval1; + if (randtype == 3) + return (randval2 >= 0.5f) ? vb : va; + else + return va + (vb - va) * randval2; + } + + #endregion + + #region ================== Interface + + // Window closing + private void VertexIntoShapeForm_FormClosing(object sender, FormClosingEventArgs e) + { + // User closing the window? + if (e.CloseReason == CloseReason.UserClosing) + { + // Just cancel + General.Editing.CancelMode(); + e.Cancel = true; + } + } + + // This shows the window + public void Show(Form owner) + { + // Position at left-top of owner + this.Location = new Point(owner.Location.X + 20, owner.Location.Y + 90); + + // Show window + base.Show(owner); + } + + private void ValueChanged(object sender, EventArgs e) + { + if (!blockEvents) General.Interface.RedrawDisplay(); + } + + private void radiusX_ValueChanged(object sender, EventArgs e) + { + if (!ellipse.Checked) radiusY.Text = radiusX.GetResultFloat(0f).ToString(); + ValueChanged(this, e); + } + + private void radiusY_ValueChanged(object sender, EventArgs e) + { + if (!ellipse.Checked) radiusX.Text = radiusY.GetResultFloat(0f).ToString(); + ValueChanged(this, e); + } + + private void ellipse_CheckedChanged(object sender, EventArgs e) + { + if (!ellipse.Checked) radiusY.Text = radiusX.GetResultFloat(0f).ToString(); + ValueChanged(this, e); + } + + private void sides_WhenTextChanged(object sender, EventArgs e) + { + int numsides = sides.GetResult(3); + if (numsides < 3) + sides.Text = "3"; + if (numsides > 1024) + sides.Text = "1024"; + ValueChanged(this, e); + } + + private void spikiness_WhenTextChanged(object sender, EventArgs e) + { + int spikeperc = spikiness.GetResult(0); + if (spikeperc > 32767) + spikiness.Text = "32767"; + ValueChanged(this, e); + } + + private void startangle_ValueChanged(object sender, EventArgs e) + { + float angle = startangle.GetResultFloat(0f); + if (angle > 360f) + { + angle = 360f; + startangle.Text = "360"; + } + startanglewheel.Angle = angle; + ValueChanged(this, e); + } + + private void sweepangle_ValueChanged(object sender, EventArgs e) + { + float angle = sweepangle.GetResultFloat(1f); + if (angle < 1f) + { + angle = 1f; + sweepangle.Text = "1"; + } + if (angle > 360f) + { + angle = 360f; + sweepangle.Text = "360"; + } + sweepanglewheel.Angle = angle; + ValueChanged(this, e); + } + + private void startanglewheel_AngleChanged(object sender, EventArgs e) + { + startangle.Text = startanglewheel.Angle.ToString(); + ValueChanged(this, e); + } + + private void sweepanglewheel_AngleChanged(object sender, EventArgs e) + { + float v = sweepanglewheel.Angle; + if (v < 0f) v = 0.1f; + if (v > 360f) v = 360f; + if (v == 0f) v = 360f; + sweepangle.Text = v.ToString(); + ValueChanged(this, e); + } + + private void sides3_Click(object sender, EventArgs e) + { + sides.Text = "3"; + ValueChanged(this, e); + } + + private void sides8_Click(object sender, EventArgs e) + { + sides.Text = "8"; + ValueChanged(this, e); + } + + private void sides24_Click(object sender, EventArgs e) + { + sides.Text = "24"; + ValueChanged(this, e); + } + + private void spike0_Click(object sender, EventArgs e) + { + spikiness.Text = "0"; + ValueChanged(this, e); + } + + private void spike50_Click(object sender, EventArgs e) + { + spikiness.Text = "50"; + ValueChanged(this, e); + } + + private void randomize_Click(object sender, EventArgs e) + { + NewSeed(); + ValueChanged(this, e); + } + + private void RradiusX_WhenTextChanged(object sender, EventArgs e) + { + if (!ellipse.Checked) RradiusY.Text = RradiusX.GetResultFloat(0f).ToString(); + ValueChanged(this, e); + } + + private void RradiusY_WhenTextChanged(object sender, EventArgs e) + { + if (!ellipse.Checked) RradiusX.Text = RradiusY.GetResultFloat(0f).ToString(); + ValueChanged(this, e); + } + + private void Rsides_WhenTextChanged(object sender, EventArgs e) + { + int numsides = Rsides.GetResult(3); + if (numsides < 3) + Rsides.Text = "3"; + if (numsides > 1024) + Rsides.Text = "1024"; + ValueChanged(this, e); + } + + private void Rspikiness_WhenTextChanged(object sender, EventArgs e) + { + int spikeperc = Rspikiness.GetResult(0); + if (spikeperc > 32767) + Rspikiness.Text = "32767"; + ValueChanged(this, e); + } + + private void Rstartangle_WhenTextChanged(object sender, EventArgs e) + { + float angle = Rstartangle.GetResultFloat(0f); + if (angle > 360f) + { + angle = 360f; + Rstartangle.Text = "360"; + } + Rstartanglewheel.Angle = angle; + ValueChanged(this, e); + } + + private void Rsweepangle_WhenTextChanged(object sender, EventArgs e) + { + float angle = Rsweepangle.GetResultFloat(1f); + if (angle < 1f) + { + angle = 1f; + Rsweepangle.Text = "1"; + } + if (angle > 360f) + { + angle = 360f; + Rsweepangle.Text = "360"; + } + Rsweepanglewheel.Angle = angle; + ValueChanged(this, e); + } + + private void Rstartanglewheel_AngleChanged(object sender, EventArgs e) + { + Rstartangle.Text = Rstartanglewheel.Angle.ToString(); + ValueChanged(this, e); + } + + private void Rsweepanglewheel_AngleChanged(object sender, EventArgs e) + { + float v = Rsweepanglewheel.Angle; + if (v < 0f) v = 0.1f; + if (v > 360f) v = 360f; + if (v == 0f) v = 360f; + Rsweepangle.Text = v.ToString(); + ValueChanged(this, e); + } + + private void Rsides3_Click(object sender, EventArgs e) + { + Rsides.Text = "3"; + ValueChanged(this, e); + } + + private void Rsides8_Click(object sender, EventArgs e) + { + Rsides.Text = "8"; + ValueChanged(this, e); + } + + private void Rsides24_Click(object sender, EventArgs e) + { + Rsides.Text = "24"; + ValueChanged(this, e); + } + + private void Rspike0_Click(object sender, EventArgs e) + { + Rspikiness.Text = "0"; + ValueChanged(this, e); + } + + private void Rspike50_Click(object sender, EventArgs e) + { + Rspikiness.Text = "50"; + ValueChanged(this, e); + } + + private void cancel_Click(object sender, EventArgs e) + { + // Cancel now + General.Editing.CancelMode(); + } + + private void apply_Click(object sender, EventArgs e) + { + // Apply now + General.Editing.AcceptMode(); + } + + private void VertexIntoShape_HelpRequested(object sender, HelpEventArgs hlpevent) + { + General.ShowHelp("e_vertexintoshape.html"); + } + + #endregion + } +} diff --git a/Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.resx b/Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.resx new file mode 100644 index 0000000..aceceac --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/VertexIntoShapeForm.resx @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + 17, 17 + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + Select how to randomize the values. +* Disabled - Value in randomizer is ignored. +* Boolean - Set value by random chance, either on or off. +* Linear - Set value by random amount, between value in + settings and value in randomizer. + + + Select how to randomize the values. +* Disabled - Value in randomizer is ignored. +* Boolean - Set value by random chance, either on or off. +* Linear - Set value by random amount, between value in + settings and value in randomizer. + + + Select how to randomize the values. +* Disabled - Value in randomizer is ignored. +* Boolean - Set value by random chance, either on or off. +* Linear - Set value by random amount, between value in + settings and value in randomizer. + + + Select how to randomize the values. +* Disabled - Value in randomizer is ignored. +* Boolean - Set value by random chance, either on or off. +* Linear - Set value by random amount, between value in + settings and value in randomizer. + + + Select how to randomize the values. +* Disabled - Value in randomizer is ignored. +* Boolean - Set value by random chance, either on or off. +* Linear - Set value by random amount, between value in + settings and value in randomizer. + + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.Designer.cs new file mode 100644 index 0000000..ed4bd69 --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.Designer.cs @@ -0,0 +1,1108 @@ +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + partial class VertexSlopeAssistForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.Label label1; + System.Windows.Forms.Label label4; + System.Windows.Forms.Label label3; + System.Windows.Forms.Label label2; + System.Windows.Forms.Label label5; + System.Windows.Forms.Label label6; + System.Windows.Forms.Label label7; + System.Windows.Forms.Label label11; + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(VertexSlopeAssistForm)); + this.labelVSlope3 = new System.Windows.Forms.Label(); + this.labelVSlope2 = new System.Windows.Forms.Label(); + this.labelVSlope1 = new System.Windows.Forms.Label(); + this.apply = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.toolStripGroups = new System.Windows.Forms.ToolStrip(); + this.toolNewTriangleGroup = new System.Windows.Forms.ToolStripButton(); + this.toolNewVertexGroup = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolRemakeGroup = new System.Windows.Forms.ToolStripSplitButton(); + this.toolRemakeAsTriangleGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.toolRemakeAsVertexGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.toolChangeTagGroup = new System.Windows.Forms.ToolStripButton(); + this.toolDeleteGroup = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.toolDrawNewTaggedTriangle = new System.Windows.Forms.ToolStripButton(); + this.toolDrawNewEmptyTriangle = new System.Windows.Forms.ToolStripButton(); + this.vslopegroups = new System.Windows.Forms.ListBox(); + this.contextNewGroup = new System.Windows.Forms.ContextMenuStrip(); + this.newTriangleGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.newVertexGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); + this.drawNewAs = new System.Windows.Forms.ToolStripMenuItem(); + this.drawNewTaggedTriangle = new System.Windows.Forms.ToolStripMenuItem(); + this.drawNewEmptyTriangle = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.vslopeAbsZ3 = new System.Windows.Forms.CheckBox(); + this.vslopeAbsZ2 = new System.Windows.Forms.CheckBox(); + this.vslopeAbsZ1 = new System.Windows.Forms.CheckBox(); + this.heightAdj = new System.Windows.Forms.VScrollBar(); + this.rot_height = new System.Windows.Forms.Button(); + this.rot_all = new System.Windows.Forms.Button(); + this.flip_height = new System.Windows.Forms.Button(); + this.flip_all = new System.Windows.Forms.Button(); + this.vslopeZ3 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.vslopeY3 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.vslopeX3 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.vslopeZ2 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.vslopeY2 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.vslopeX2 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.vslopeZ1 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.vslopeY1 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.vslopeX1 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.cancel = new System.Windows.Forms.Button(); + this.newtag = new System.Windows.Forms.Button(); + this.tagID = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.currentmode = new System.Windows.Forms.Label(); + this.tooltip = new System.Windows.Forms.ToolTip(); + this.affinevslopes = new System.Windows.Forms.CheckBox(); + this.contextExistingGroup = new System.Windows.Forms.ContextMenuStrip(); + this.remakeGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.remakeAsGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.remakeAsTriangleGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.remakeAsVertexGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.changeTagGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.deleteGroup = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripSeparator(); + this.drawNewEmptyTriangle2 = new System.Windows.Forms.ToolStripMenuItem(); + this.findNewUnusedTag = new System.Windows.Forms.ToolStripMenuItem(); + this.contextVSlopeLinedef = new System.Windows.Forms.ContextMenuStrip(); + this.setAction704Item = new System.Windows.Forms.ToolStripMenuItem(); + this.setAction705Item = new System.Windows.Forms.ToolStripMenuItem(); + this.setAction714Item = new System.Windows.Forms.ToolStripMenuItem(); + this.setAction715Item = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.removeActionItem = new System.Windows.Forms.ToolStripMenuItem(); + label1 = new System.Windows.Forms.Label(); + label4 = new System.Windows.Forms.Label(); + label3 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + label5 = new System.Windows.Forms.Label(); + label6 = new System.Windows.Forms.Label(); + label7 = new System.Windows.Forms.Label(); + label11 = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + this.toolStripGroups.SuspendLayout(); + this.contextNewGroup.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.contextExistingGroup.SuspendLayout(); + this.contextVSlopeLinedef.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(30, 35); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(39, 13); + label1.TabIndex = 1; + label1.Text = "Tag #:"; + this.tooltip.SetToolTip(label1, "Tag number to be used for the vertex slope, should be between 1 to 65535."); + // + // label4 + // + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(222, 21); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(23, 13); + label4.TabIndex = 12; + label4.Text = "X3:"; + this.tooltip.SetToolTip(label4, "3rd Vertex Slope X-Axis"); + // + // label3 + // + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(118, 21); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(23, 13); + label3.TabIndex = 6; + label3.Text = "X2:"; + this.tooltip.SetToolTip(label3, "2nd Vertex Slope X-Axis"); + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(12, 21); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(23, 13); + label2.TabIndex = 0; + label2.Text = "X1:"; + this.tooltip.SetToolTip(label2, "1st Vertex Slope X-Axis"); + // + // label5 + // + label5.AutoSize = true; + label5.Location = new System.Drawing.Point(222, 47); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(23, 13); + label5.TabIndex = 14; + label5.Text = "Y3:"; + this.tooltip.SetToolTip(label5, "3rd Vertex Slope Y-Axis"); + // + // label6 + // + label6.AutoSize = true; + label6.Location = new System.Drawing.Point(118, 47); + label6.Name = "label6"; + label6.Size = new System.Drawing.Size(23, 13); + label6.TabIndex = 8; + label6.Text = "Y2:"; + this.tooltip.SetToolTip(label6, "2nd Vertex Slope Y-Axis"); + // + // label7 + // + label7.AutoSize = true; + label7.Location = new System.Drawing.Point(12, 47); + label7.Name = "label7"; + label7.Size = new System.Drawing.Size(23, 13); + label7.TabIndex = 2; + label7.Text = "Y1:"; + this.tooltip.SetToolTip(label7, "1st Vertex Slope Y-Axis"); + // + // label11 + // + label11.AutoSize = true; + label11.Location = new System.Drawing.Point(234, 126); + label11.Name = "label11"; + label11.Size = new System.Drawing.Size(67, 13); + label11.TabIndex = 22; + label11.Text = "Adj. Heights:"; + this.tooltip.SetToolTip(label11, "Adjust all heights together. Any negative value will be clipped to zero."); + // + // labelVSlope3 + // + this.labelVSlope3.AutoSize = true; + this.labelVSlope3.Location = new System.Drawing.Point(222, 73); + this.labelVSlope3.Name = "labelVSlope3"; + this.labelVSlope3.Size = new System.Drawing.Size(24, 13); + this.labelVSlope3.TabIndex = 16; + this.labelVSlope3.Text = "H3:"; + this.tooltip.SetToolTip(this.labelVSlope3, "3rd Vertexa Slope Height"); + // + // labelVSlope2 + // + this.labelVSlope2.AutoSize = true; + this.labelVSlope2.Location = new System.Drawing.Point(118, 73); + this.labelVSlope2.Name = "labelVSlope2"; + this.labelVSlope2.Size = new System.Drawing.Size(24, 13); + this.labelVSlope2.TabIndex = 10; + this.labelVSlope2.Text = "H2:"; + this.tooltip.SetToolTip(this.labelVSlope2, "2nd Vertex Slope Height"); + // + // labelVSlope1 + // + this.labelVSlope1.AutoSize = true; + this.labelVSlope1.Location = new System.Drawing.Point(12, 73); + this.labelVSlope1.Name = "labelVSlope1"; + this.labelVSlope1.Size = new System.Drawing.Size(24, 13); + this.labelVSlope1.TabIndex = 4; + this.labelVSlope1.Text = "H1:"; + this.tooltip.SetToolTip(this.labelVSlope1, "1st Vertex Slope Height"); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.apply.DialogResult = System.Windows.Forms.DialogResult.OK; + this.apply.Location = new System.Drawing.Point(12, 535); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(70, 25); + this.apply.TabIndex = 8; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.toolStripGroups); + this.groupBox1.Controls.Add(this.vslopegroups); + this.groupBox1.Location = new System.Drawing.Point(12, 83); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(340, 252); + this.groupBox1.TabIndex = 6; + this.groupBox1.TabStop = false; + this.groupBox1.Text = " Vertex Slope Groups: "; + // + // toolStripGroups + // + this.toolStripGroups.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolNewTriangleGroup, + this.toolNewVertexGroup, + this.toolStripSeparator2, + this.toolRemakeGroup, + this.toolChangeTagGroup, + this.toolDeleteGroup, + this.toolStripSeparator3, + this.toolDrawNewTaggedTriangle, + this.toolDrawNewEmptyTriangle}); + this.toolStripGroups.Location = new System.Drawing.Point(3, 16); + this.toolStripGroups.Name = "toolStripGroups"; + this.toolStripGroups.Size = new System.Drawing.Size(334, 25); + this.toolStripGroups.TabIndex = 0; + this.toolStripGroups.Text = "toolStripGroups"; + // + // toolNewTriangleGroup + // + this.toolNewTriangleGroup.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolNewTriangleGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AddTriangle; + this.toolNewTriangleGroup.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolNewTriangleGroup.Name = "toolNewTriangleGroup"; + this.toolNewTriangleGroup.Size = new System.Drawing.Size(23, 22); + this.toolNewTriangleGroup.ToolTipText = "CREATE NEW TRIANGLE GROUP\r\n\r\nCreate a new Triangle Group that consist of 3 vertex" + + " slopes."; + this.toolNewTriangleGroup.Click += new System.EventHandler(this.newTriangleGroup_Click); + // + // toolNewVertexGroup + // + this.toolNewVertexGroup.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolNewVertexGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AddVertex; + this.toolNewVertexGroup.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolNewVertexGroup.Name = "toolNewVertexGroup"; + this.toolNewVertexGroup.Size = new System.Drawing.Size(23, 22); + this.toolNewVertexGroup.ToolTipText = "CREATE NEW VERTEX GROUP\r\n\r\nCreate a new Vertex Group that consist of a single ver" + + "tex slope."; + this.toolNewVertexGroup.Click += new System.EventHandler(this.newVertexGroup_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25); + // + // toolRemakeGroup + // + this.toolRemakeGroup.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolRemakeGroup.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolRemakeAsTriangleGroup, + this.toolRemakeAsVertexGroup}); + this.toolRemakeGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawGeometryMode; + this.toolRemakeGroup.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolRemakeGroup.Name = "toolRemakeGroup"; + this.toolRemakeGroup.Size = new System.Drawing.Size(32, 22); + this.toolRemakeGroup.ToolTipText = "REMAKE GROUP\r\n\r\nRemake selected tagged group by moving the vertex slope(s) positi" + + "on.\r\nInvalid group will be valid by having 3 vertex slopes only.\r\nSingle vertex " + + "group will only remake 1 vertex."; + this.toolRemakeGroup.Click += new System.EventHandler(this.remakeGroup_Click); + // + // toolRemakeAsTriangleGroup + // + this.toolRemakeAsTriangleGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShapeMode; + this.toolRemakeAsTriangleGroup.Name = "toolRemakeAsTriangleGroup"; + this.toolRemakeAsTriangleGroup.Size = new System.Drawing.Size(212, 22); + this.toolRemakeAsTriangleGroup.Text = "Remake Group as Triangle"; + this.toolRemakeAsTriangleGroup.ToolTipText = "Remake selected tagged group by moving the vertex slope(s) position.\r\nInvalid gro" + + "up will be valid by having 3 vertex slopes only.\r\n\r\nGroup will be remade with 3 " + + "vertex slopes."; + this.toolRemakeAsTriangleGroup.Click += new System.EventHandler(this.remakeAsTriangleGroup_Click); + // + // toolRemakeAsVertexGroup + // + this.toolRemakeAsVertexGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SingleVertex; + this.toolRemakeAsVertexGroup.Name = "toolRemakeAsVertexGroup"; + this.toolRemakeAsVertexGroup.Size = new System.Drawing.Size(212, 22); + this.toolRemakeAsVertexGroup.Text = "Remake Group as Vertex"; + this.toolRemakeAsVertexGroup.ToolTipText = "Remake selected tagged group by moving the vertex slope(s) position.\r\nInvalid gro" + + "up will be valid by having 1 vertex slope only.\r\n\r\nGroup will be remade with a s" + + "ingle vertex slope."; + this.toolRemakeAsVertexGroup.Click += new System.EventHandler(this.remakeAsVertexGroup_Click); + // + // toolChangeTagGroup + // + this.toolChangeTagGroup.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolChangeTagGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Text; + this.toolChangeTagGroup.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolChangeTagGroup.Name = "toolChangeTagGroup"; + this.toolChangeTagGroup.Size = new System.Drawing.Size(23, 22); + this.toolChangeTagGroup.ToolTipText = "CHANGE TAG\r\n\r\nSet a new tag to the selected tagged group.\r\nUsing a tag that belon" + + "g to another group is not allowed."; + this.toolChangeTagGroup.Click += new System.EventHandler(this.changeTagGroup_Click); + // + // toolDeleteGroup + // + this.toolDeleteGroup.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolDeleteGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Close; + this.toolDeleteGroup.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolDeleteGroup.Name = "toolDeleteGroup"; + this.toolDeleteGroup.Size = new System.Drawing.Size(23, 22); + this.toolDeleteGroup.ToolTipText = "DELETE GROUP\r\n\r\nDelete current tagged group, all vertex slopes will be erased!"; + this.toolDeleteGroup.Click += new System.EventHandler(this.deleteGroup_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25); + // + // toolDrawNewTaggedTriangle + // + this.toolDrawNewTaggedTriangle.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolDrawNewTaggedTriangle.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawTaggedTriangle; + this.toolDrawNewTaggedTriangle.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolDrawNewTaggedTriangle.Name = "toolDrawNewTaggedTriangle"; + this.toolDrawNewTaggedTriangle.Size = new System.Drawing.Size(23, 22); + this.toolDrawNewTaggedTriangle.ToolTipText = "DRAW TAGGED TRIANGLE\r\n\r\nDraw a new triangle shape with linedefs and attach 3 tagg" + + "ed vertex slopes inside it.\r\n\r\nRight-click any linedef inside the map to setup a" + + " vertex slope action."; + this.toolDrawNewTaggedTriangle.Click += new System.EventHandler(this.drawNewTaggedTriangle_Click); + // + // toolDrawNewEmptyTriangle + // + this.toolDrawNewEmptyTriangle.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolDrawNewEmptyTriangle.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawTriangle; + this.toolDrawNewEmptyTriangle.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolDrawNewEmptyTriangle.Name = "toolDrawNewEmptyTriangle"; + this.toolDrawNewEmptyTriangle.Size = new System.Drawing.Size(23, 22); + this.toolDrawNewEmptyTriangle.ToolTipText = "DRAW EMPTY TRIANGLE\r\n\r\nDraw a new triangle shape with linedefs."; + this.toolDrawNewEmptyTriangle.Click += new System.EventHandler(this.drawNewEmptyTriangle_Click); + // + // vslopegroups + // + this.vslopegroups.ContextMenuStrip = this.contextNewGroup; + this.vslopegroups.FormattingEnabled = true; + this.vslopegroups.Location = new System.Drawing.Point(8, 45); + this.vslopegroups.Name = "vslopegroups"; + this.vslopegroups.Size = new System.Drawing.Size(324, 199); + this.vslopegroups.TabIndex = 1; + this.tooltip.SetToolTip(this.vslopegroups, "Select tagged group of vertex slopes for editing.\r\n\r\nRight-click will open contex" + + "t menu."); + this.vslopegroups.SelectedIndexChanged += new System.EventHandler(this.vslopegroups_SelectedIndexChanged); + this.vslopegroups.DoubleClick += new System.EventHandler(this.vslopegroups_DoubleClick); + // + // contextNewGroup + // + this.contextNewGroup.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.newTriangleGroup, + this.newVertexGroup, + this.toolStripMenuItem3, + this.drawNewAs}); + this.contextNewGroup.Name = "contextNewGroup"; + this.contextNewGroup.Size = new System.Drawing.Size(181, 76); + // + // newTriangleGroup + // + this.newTriangleGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AddTriangle; + this.newTriangleGroup.Name = "newTriangleGroup"; + this.newTriangleGroup.Size = new System.Drawing.Size(180, 22); + this.newTriangleGroup.Text = "New Triangle Group"; + this.newTriangleGroup.ToolTipText = "Create a new Triangle Group that consist of 3 vertex slopes."; + this.newTriangleGroup.Click += new System.EventHandler(this.newTriangleGroup_Click); + // + // newVertexGroup + // + this.newVertexGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AddVertex; + this.newVertexGroup.Name = "newVertexGroup"; + this.newVertexGroup.Size = new System.Drawing.Size(180, 22); + this.newVertexGroup.Text = "New Vertex Group"; + this.newVertexGroup.ToolTipText = "Create a new Vertex Group that consist of a single vertex slope."; + this.newVertexGroup.Click += new System.EventHandler(this.newVertexGroup_Click); + // + // toolStripMenuItem3 + // + this.toolStripMenuItem3.Name = "toolStripMenuItem3"; + this.toolStripMenuItem3.Size = new System.Drawing.Size(177, 6); + // + // drawNewAs + // + this.drawNewAs.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.drawNewTaggedTriangle, + this.drawNewEmptyTriangle}); + this.drawNewAs.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawTriangle; + this.drawNewAs.Name = "drawNewAs"; + this.drawNewAs.Size = new System.Drawing.Size(180, 22); + this.drawNewAs.Text = "Draw new..."; + // + // drawNewTaggedTriangle + // + this.drawNewTaggedTriangle.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawTaggedTriangle; + this.drawNewTaggedTriangle.Name = "drawNewTaggedTriangle"; + this.drawNewTaggedTriangle.Size = new System.Drawing.Size(160, 22); + this.drawNewTaggedTriangle.Text = "Tagged Triangle"; + this.drawNewTaggedTriangle.ToolTipText = "Draw a new triangle shape with linedefs and attach 3 tagged vertex slopes inside " + + "it.\r\n\r\nRight-click any linedef inside the map to setup a vertex slope action."; + this.drawNewTaggedTriangle.Click += new System.EventHandler(this.drawNewTaggedTriangle_Click); + // + // drawNewEmptyTriangle + // + this.drawNewEmptyTriangle.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawTriangle; + this.drawNewEmptyTriangle.Name = "drawNewEmptyTriangle"; + this.drawNewEmptyTriangle.Size = new System.Drawing.Size(160, 22); + this.drawNewEmptyTriangle.Text = "Empty Triangle"; + this.drawNewEmptyTriangle.ToolTipText = "Draw a new triangle shape with linedefs."; + this.drawNewEmptyTriangle.Click += new System.EventHandler(this.drawNewEmptyTriangle_Click); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.vslopeAbsZ3); + this.groupBox2.Controls.Add(this.vslopeAbsZ2); + this.groupBox2.Controls.Add(this.vslopeAbsZ1); + this.groupBox2.Controls.Add(label11); + this.groupBox2.Controls.Add(this.heightAdj); + this.groupBox2.Controls.Add(this.rot_height); + this.groupBox2.Controls.Add(this.rot_all); + this.groupBox2.Controls.Add(this.flip_height); + this.groupBox2.Controls.Add(this.flip_all); + this.groupBox2.Controls.Add(this.vslopeZ3); + this.groupBox2.Controls.Add(this.vslopeY3); + this.groupBox2.Controls.Add(this.vslopeX3); + this.groupBox2.Controls.Add(this.vslopeZ2); + this.groupBox2.Controls.Add(this.vslopeY2); + this.groupBox2.Controls.Add(this.vslopeX2); + this.groupBox2.Controls.Add(this.vslopeZ1); + this.groupBox2.Controls.Add(this.vslopeY1); + this.groupBox2.Controls.Add(this.vslopeX1); + this.groupBox2.Controls.Add(this.labelVSlope3); + this.groupBox2.Controls.Add(this.labelVSlope2); + this.groupBox2.Controls.Add(this.labelVSlope1); + this.groupBox2.Controls.Add(label5); + this.groupBox2.Controls.Add(label6); + this.groupBox2.Controls.Add(label7); + this.groupBox2.Controls.Add(label4); + this.groupBox2.Controls.Add(label3); + this.groupBox2.Controls.Add(label2); + this.groupBox2.Location = new System.Drawing.Point(12, 341); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(340, 186); + this.groupBox2.TabIndex = 7; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Selected Vertex Slope Group "; + // + // vslopeAbsZ3 + // + this.vslopeAbsZ3.AutoSize = true; + this.vslopeAbsZ3.Location = new System.Drawing.Point(225, 98); + this.vslopeAbsZ3.Name = "vslopeAbsZ3"; + this.vslopeAbsZ3.Size = new System.Drawing.Size(77, 17); + this.vslopeAbsZ3.TabIndex = 26; + this.vslopeAbsZ3.Text = "Absolute Z"; + this.tooltip.SetToolTip(this.vslopeAbsZ3, "When checked the Z position of vertex will be absolute\r\notherwise the value is ad" + + "ded into sector height.\r\n\r\nNote: Absolute Z cannot be positioned less than zero." + + ""); + this.vslopeAbsZ3.UseVisualStyleBackColor = true; + this.vslopeAbsZ3.CheckedChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeAbsZ2 + // + this.vslopeAbsZ2.AutoSize = true; + this.vslopeAbsZ2.Location = new System.Drawing.Point(121, 98); + this.vslopeAbsZ2.Name = "vslopeAbsZ2"; + this.vslopeAbsZ2.Size = new System.Drawing.Size(77, 17); + this.vslopeAbsZ2.TabIndex = 25; + this.vslopeAbsZ2.Text = "Absolute Z"; + this.tooltip.SetToolTip(this.vslopeAbsZ2, "When checked the Z position of vertex will be absolute\r\notherwise the value is ad" + + "ded into sector height.\r\n\r\nNote: Absolute Z cannot be positioned less than zero." + + ""); + this.vslopeAbsZ2.UseVisualStyleBackColor = true; + this.vslopeAbsZ2.CheckedChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeAbsZ1 + // + this.vslopeAbsZ1.AutoSize = true; + this.vslopeAbsZ1.Location = new System.Drawing.Point(15, 98); + this.vslopeAbsZ1.Name = "vslopeAbsZ1"; + this.vslopeAbsZ1.Size = new System.Drawing.Size(77, 17); + this.vslopeAbsZ1.TabIndex = 24; + this.vslopeAbsZ1.Text = "Absolute Z"; + this.tooltip.SetToolTip(this.vslopeAbsZ1, "When checked the Z position of vertex will be absolute\r\notherwise the value is ad" + + "ded into sector height.\r\n\r\nNote: Absolute Z cannot be positioned less than zero." + + ""); + this.vslopeAbsZ1.UseVisualStyleBackColor = true; + this.vslopeAbsZ1.CheckedChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // heightAdj + // + this.heightAdj.Location = new System.Drawing.Point(304, 121); + this.heightAdj.Minimum = -100; + this.heightAdj.Name = "heightAdj"; + this.heightAdj.Size = new System.Drawing.Size(18, 24); + this.heightAdj.TabIndex = 23; + this.heightAdj.ValueChanged += new System.EventHandler(this.heightAdj_ValueChanged); + // + // rot_height + // + this.rot_height.Location = new System.Drawing.Point(12, 150); + this.rot_height.Name = "rot_height"; + this.rot_height.Size = new System.Drawing.Size(96, 23); + this.rot_height.TabIndex = 20; + this.rot_height.Text = "Rotate (Height)"; + this.tooltip.SetToolTip(this.rot_height, "Rotate the Vertex Slope order on the triangle but only affects Height.\r\nUseful if" + + " you remade the group with the wrong order."); + this.rot_height.UseVisualStyleBackColor = true; + this.rot_height.Click += new System.EventHandler(this.rot_height_Click); + // + // rot_all + // + this.rot_all.Location = new System.Drawing.Point(12, 121); + this.rot_all.Name = "rot_all"; + this.rot_all.Size = new System.Drawing.Size(96, 23); + this.rot_all.TabIndex = 18; + this.rot_all.Text = "Rotate (All)"; + this.tooltip.SetToolTip(this.rot_all, "Rotate the Vertex Slope order on the triangle.\r\nAffects position and height."); + this.rot_all.UseVisualStyleBackColor = true; + this.rot_all.Click += new System.EventHandler(this.rot_all_Click); + // + // flip_height + // + this.flip_height.Location = new System.Drawing.Point(121, 150); + this.flip_height.Name = "flip_height"; + this.flip_height.Size = new System.Drawing.Size(96, 23); + this.flip_height.TabIndex = 21; + this.flip_height.Text = "Flip ⇔ (Height)"; + this.tooltip.SetToolTip(this.flip_height, "Flip the 2nd and 3rd Vertex Slope order on the triangle.\r\nUseful if you remade th" + + "e group with the wrong order."); + this.flip_height.UseVisualStyleBackColor = true; + this.flip_height.Click += new System.EventHandler(this.flip_height_Click); + // + // flip_all + // + this.flip_all.Location = new System.Drawing.Point(121, 121); + this.flip_all.Name = "flip_all"; + this.flip_all.Size = new System.Drawing.Size(96, 23); + this.flip_all.TabIndex = 19; + this.flip_all.Text = "Flip ⇔ (All)"; + this.tooltip.SetToolTip(this.flip_all, "Flip the 2nd and 3rd Vertex Slope order on the triangle.\r\nAffects position and he" + + "ight."); + this.flip_all.UseVisualStyleBackColor = true; + this.flip_all.Click += new System.EventHandler(this.flip_all_Click); + // + // vslopeZ3 + // + this.vslopeZ3.AllowDecimal = false; + this.vslopeZ3.AllowNegative = false; + this.vslopeZ3.AllowRelative = false; + this.vslopeZ3.ButtonStep = 1; + this.vslopeZ3.ButtonStepBig = 16F; + this.vslopeZ3.ButtonStepFloat = 1F; + this.vslopeZ3.ButtonStepSmall = 4F; + this.vslopeZ3.ButtonStepsUseModifierKeys = true; + this.vslopeZ3.ButtonStepsWrapAround = false; + this.vslopeZ3.Location = new System.Drawing.Point(250, 68); + this.vslopeZ3.Name = "vslopeZ3"; + this.vslopeZ3.Size = new System.Drawing.Size(72, 24); + this.vslopeZ3.StepValues = null; + this.vslopeZ3.TabIndex = 17; + this.vslopeZ3.WhenTextChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeY3 + // + this.vslopeY3.AllowDecimal = false; + this.vslopeY3.AllowNegative = true; + this.vslopeY3.AllowRelative = false; + this.vslopeY3.ButtonStep = 1; + this.vslopeY3.ButtonStepBig = 16F; + this.vslopeY3.ButtonStepFloat = 1F; + this.vslopeY3.ButtonStepSmall = 4F; + this.vslopeY3.ButtonStepsUseModifierKeys = true; + this.vslopeY3.ButtonStepsWrapAround = false; + this.vslopeY3.Location = new System.Drawing.Point(250, 42); + this.vslopeY3.Name = "vslopeY3"; + this.vslopeY3.Size = new System.Drawing.Size(72, 24); + this.vslopeY3.StepValues = null; + this.vslopeY3.TabIndex = 15; + this.vslopeY3.WhenTextChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeX3 + // + this.vslopeX3.AllowDecimal = false; + this.vslopeX3.AllowNegative = true; + this.vslopeX3.AllowRelative = false; + this.vslopeX3.ButtonStep = 1; + this.vslopeX3.ButtonStepBig = 16F; + this.vslopeX3.ButtonStepFloat = 1F; + this.vslopeX3.ButtonStepSmall = 4F; + this.vslopeX3.ButtonStepsUseModifierKeys = true; + this.vslopeX3.ButtonStepsWrapAround = false; + this.vslopeX3.Location = new System.Drawing.Point(250, 16); + this.vslopeX3.Name = "vslopeX3"; + this.vslopeX3.Size = new System.Drawing.Size(72, 24); + this.vslopeX3.StepValues = null; + this.vslopeX3.TabIndex = 13; + this.vslopeX3.WhenTextChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeZ2 + // + this.vslopeZ2.AllowDecimal = false; + this.vslopeZ2.AllowNegative = false; + this.vslopeZ2.AllowRelative = false; + this.vslopeZ2.ButtonStep = 1; + this.vslopeZ2.ButtonStepBig = 16F; + this.vslopeZ2.ButtonStepFloat = 1F; + this.vslopeZ2.ButtonStepSmall = 4F; + this.vslopeZ2.ButtonStepsUseModifierKeys = true; + this.vslopeZ2.ButtonStepsWrapAround = false; + this.vslopeZ2.Location = new System.Drawing.Point(147, 68); + this.vslopeZ2.Name = "vslopeZ2"; + this.vslopeZ2.Size = new System.Drawing.Size(72, 24); + this.vslopeZ2.StepValues = null; + this.vslopeZ2.TabIndex = 11; + this.vslopeZ2.WhenTextChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeY2 + // + this.vslopeY2.AllowDecimal = false; + this.vslopeY2.AllowNegative = true; + this.vslopeY2.AllowRelative = false; + this.vslopeY2.ButtonStep = 1; + this.vslopeY2.ButtonStepBig = 16F; + this.vslopeY2.ButtonStepFloat = 1F; + this.vslopeY2.ButtonStepSmall = 4F; + this.vslopeY2.ButtonStepsUseModifierKeys = true; + this.vslopeY2.ButtonStepsWrapAround = false; + this.vslopeY2.Location = new System.Drawing.Point(147, 42); + this.vslopeY2.Name = "vslopeY2"; + this.vslopeY2.Size = new System.Drawing.Size(72, 24); + this.vslopeY2.StepValues = null; + this.vslopeY2.TabIndex = 9; + this.vslopeY2.WhenTextChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeX2 + // + this.vslopeX2.AllowDecimal = false; + this.vslopeX2.AllowNegative = true; + this.vslopeX2.AllowRelative = false; + this.vslopeX2.ButtonStep = 1; + this.vslopeX2.ButtonStepBig = 16F; + this.vslopeX2.ButtonStepFloat = 1F; + this.vslopeX2.ButtonStepSmall = 4F; + this.vslopeX2.ButtonStepsUseModifierKeys = true; + this.vslopeX2.ButtonStepsWrapAround = false; + this.vslopeX2.Location = new System.Drawing.Point(147, 16); + this.vslopeX2.Name = "vslopeX2"; + this.vslopeX2.Size = new System.Drawing.Size(72, 24); + this.vslopeX2.StepValues = null; + this.vslopeX2.TabIndex = 7; + this.vslopeX2.WhenTextChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeZ1 + // + this.vslopeZ1.AllowDecimal = false; + this.vslopeZ1.AllowNegative = false; + this.vslopeZ1.AllowRelative = false; + this.vslopeZ1.ButtonStep = 1; + this.vslopeZ1.ButtonStepBig = 16F; + this.vslopeZ1.ButtonStepFloat = 1F; + this.vslopeZ1.ButtonStepSmall = 4F; + this.vslopeZ1.ButtonStepsUseModifierKeys = true; + this.vslopeZ1.ButtonStepsWrapAround = false; + this.vslopeZ1.Location = new System.Drawing.Point(41, 68); + this.vslopeZ1.Name = "vslopeZ1"; + this.vslopeZ1.Size = new System.Drawing.Size(72, 24); + this.vslopeZ1.StepValues = null; + this.vslopeZ1.TabIndex = 5; + this.vslopeZ1.WhenTextChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeY1 + // + this.vslopeY1.AllowDecimal = false; + this.vslopeY1.AllowNegative = true; + this.vslopeY1.AllowRelative = false; + this.vslopeY1.ButtonStep = 1; + this.vslopeY1.ButtonStepBig = 16F; + this.vslopeY1.ButtonStepFloat = 1F; + this.vslopeY1.ButtonStepSmall = 4F; + this.vslopeY1.ButtonStepsUseModifierKeys = true; + this.vslopeY1.ButtonStepsWrapAround = false; + this.vslopeY1.Location = new System.Drawing.Point(41, 42); + this.vslopeY1.Name = "vslopeY1"; + this.vslopeY1.Size = new System.Drawing.Size(72, 24); + this.vslopeY1.StepValues = null; + this.vslopeY1.TabIndex = 3; + this.vslopeY1.WhenTextChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // vslopeX1 + // + this.vslopeX1.AllowDecimal = false; + this.vslopeX1.AllowNegative = true; + this.vslopeX1.AllowRelative = false; + this.vslopeX1.ButtonStep = 1; + this.vslopeX1.ButtonStepBig = 16F; + this.vslopeX1.ButtonStepFloat = 1F; + this.vslopeX1.ButtonStepSmall = 4F; + this.vslopeX1.ButtonStepsUseModifierKeys = true; + this.vslopeX1.ButtonStepsWrapAround = false; + this.vslopeX1.Location = new System.Drawing.Point(41, 16); + this.vslopeX1.Name = "vslopeX1"; + this.vslopeX1.Size = new System.Drawing.Size(72, 24); + this.vslopeX1.StepValues = null; + this.vslopeX1.TabIndex = 1; + this.vslopeX1.WhenTextChanged += new System.EventHandler(this.vslope_ValueChanged); + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(89, 535); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(70, 25); + this.cancel.TabIndex = 9; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // newtag + // + this.newtag.Location = new System.Drawing.Point(153, 30); + this.newtag.Name = "newtag"; + this.newtag.Size = new System.Drawing.Size(48, 23); + this.newtag.TabIndex = 3; + this.newtag.Text = "New"; + this.tooltip.SetToolTip(this.newtag, "Find a new unused tag."); + this.newtag.UseVisualStyleBackColor = true; + this.newtag.Click += new System.EventHandler(this.newtag_Click); + // + // tagID + // + this.tagID.AllowDecimal = false; + this.tagID.AllowNegative = false; + this.tagID.AllowRelative = false; + this.tagID.ButtonStep = 1; + this.tagID.ButtonStepBig = 100F; + this.tagID.ButtonStepFloat = 1F; + this.tagID.ButtonStepSmall = 10F; + this.tagID.ButtonStepsUseModifierKeys = true; + this.tagID.ButtonStepsWrapAround = false; + this.tagID.Location = new System.Drawing.Point(75, 30); + this.tagID.Name = "tagID"; + this.tagID.Size = new System.Drawing.Size(72, 24); + this.tagID.StepValues = null; + this.tagID.TabIndex = 2; + this.tagID.WhenTextChanged += new System.EventHandler(this.tagID_ValueChanged); + // + // currentmode + // + this.currentmode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.currentmode.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.currentmode.Location = new System.Drawing.Point(12, 9); + this.currentmode.Name = "currentmode"; + this.currentmode.Size = new System.Drawing.Size(340, 18); + this.currentmode.TabIndex = 0; + this.currentmode.Text = "Select Mode"; + this.currentmode.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tooltip + // + this.tooltip.AutoPopDelay = 10000; + this.tooltip.InitialDelay = 500; + this.tooltip.ReshowDelay = 100; + // + // affinevslopes + // + this.affinevslopes.AutoSize = true; + this.affinevslopes.Checked = true; + this.affinevslopes.CheckState = System.Windows.Forms.CheckState.Checked; + this.affinevslopes.Location = new System.Drawing.Point(12, 60); + this.affinevslopes.Name = "affinevslopes"; + this.affinevslopes.Size = new System.Drawing.Size(272, 17); + this.affinevslopes.TabIndex = 5; + this.affinevslopes.Text = "Move Vertex Slopes position to inside of the triangle."; + this.tooltip.SetToolTip(this.affinevslopes, resources.GetString("affinevslopes.ToolTip")); + this.affinevslopes.UseVisualStyleBackColor = true; + // + // contextExistingGroup + // + this.contextExistingGroup.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.remakeGroup, + this.remakeAsGroup, + this.toolStripMenuItem1, + this.changeTagGroup, + this.toolStripSeparator1, + this.deleteGroup, + this.toolStripMenuItem7, + this.drawNewEmptyTriangle2, + this.findNewUnusedTag}); + this.contextExistingGroup.Name = "contextExistingGroup"; + this.contextExistingGroup.Size = new System.Drawing.Size(212, 154); + // + // remakeGroup + // + this.remakeGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawGeometryMode; + this.remakeGroup.Name = "remakeGroup"; + this.remakeGroup.Size = new System.Drawing.Size(211, 22); + this.remakeGroup.Text = "Remake Group"; + this.remakeGroup.ToolTipText = "Remake selected tagged group by moving the vertex slope(s) position.\r\nInvalid gro" + + "up will be valid by having 3 vertex slopes only.\r\nSingle vertex group will only " + + "remake 1 vertex."; + this.remakeGroup.Click += new System.EventHandler(this.remakeGroup_Click); + // + // remakeAsGroup + // + this.remakeAsGroup.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.remakeAsTriangleGroup, + this.remakeAsVertexGroup}); + this.remakeAsGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawGeometryMode; + this.remakeAsGroup.Name = "remakeAsGroup"; + this.remakeAsGroup.Size = new System.Drawing.Size(211, 22); + this.remakeAsGroup.Text = "Remake as..."; + // + // remakeAsTriangleGroup + // + this.remakeAsTriangleGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawShapeMode; + this.remakeAsTriangleGroup.Name = "remakeAsTriangleGroup"; + this.remakeAsTriangleGroup.Size = new System.Drawing.Size(153, 22); + this.remakeAsTriangleGroup.Text = "Triangle Group"; + this.remakeAsTriangleGroup.ToolTipText = "Remake selected tagged group by moving the vertex slope(s) position.\r\nInvalid gro" + + "up will be valid by having 3 vertex slopes only.\r\n\r\nGroup will be remade with 3 " + + "vertex slopes."; + this.remakeAsTriangleGroup.Click += new System.EventHandler(this.remakeAsTriangleGroup_Click); + // + // remakeAsVertexGroup + // + this.remakeAsVertexGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SingleVertex; + this.remakeAsVertexGroup.Name = "remakeAsVertexGroup"; + this.remakeAsVertexGroup.Size = new System.Drawing.Size(153, 22); + this.remakeAsVertexGroup.Text = "Vertex Group"; + this.remakeAsVertexGroup.ToolTipText = "Remake selected tagged group by moving the vertex slope(s) position.\r\nInvalid gro" + + "up will be valid by having 1 vertex slope only.\r\n\r\nGroup will be remade with a s" + + "ingle vertex slope."; + this.remakeAsVertexGroup.Click += new System.EventHandler(this.remakeAsVertexGroup_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(208, 6); + // + // changeTagGroup + // + this.changeTagGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Text; + this.changeTagGroup.Name = "changeTagGroup"; + this.changeTagGroup.Size = new System.Drawing.Size(211, 22); + this.changeTagGroup.Text = "Change Group Tag..."; + this.changeTagGroup.ToolTipText = "Set a new tag to the selected tagged group.\r\nUsing a tag that belong to another g" + + "roup is not allowed."; + this.changeTagGroup.Click += new System.EventHandler(this.changeTagGroup_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(208, 6); + // + // deleteGroup + // + this.deleteGroup.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Close; + this.deleteGroup.Name = "deleteGroup"; + this.deleteGroup.Size = new System.Drawing.Size(211, 22); + this.deleteGroup.Text = "Delete Group"; + this.deleteGroup.ToolTipText = "Delete current tagged group, all vertex slopes will be erased!"; + this.deleteGroup.Click += new System.EventHandler(this.deleteGroup_Click); + // + // toolStripMenuItem7 + // + this.toolStripMenuItem7.Name = "toolStripMenuItem7"; + this.toolStripMenuItem7.Size = new System.Drawing.Size(208, 6); + // + // drawNewEmptyTriangle2 + // + this.drawNewEmptyTriangle2.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.DrawTriangle; + this.drawNewEmptyTriangle2.Name = "drawNewEmptyTriangle2"; + this.drawNewEmptyTriangle2.Size = new System.Drawing.Size(211, 22); + this.drawNewEmptyTriangle2.Text = "Draw New Empty Triangle"; + this.drawNewEmptyTriangle2.ToolTipText = "Draw a new triangle shape with linedefs."; + this.drawNewEmptyTriangle2.Click += new System.EventHandler(this.drawNewEmptyTriangle_Click); + // + // findNewUnusedTag + // + this.findNewUnusedTag.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Search; + this.findNewUnusedTag.Name = "findNewUnusedTag"; + this.findNewUnusedTag.Size = new System.Drawing.Size(211, 22); + this.findNewUnusedTag.Text = "Find New Unused Tag"; + this.findNewUnusedTag.Click += new System.EventHandler(this.newtag_Click); + // + // contextVSlopeLinedef + // + this.contextVSlopeLinedef.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.setAction704Item, + this.setAction705Item, + this.setAction714Item, + this.setAction715Item, + this.toolStripMenuItem2, + this.removeActionItem}); + this.contextVSlopeLinedef.Name = "contextVSlopeLinedef"; + this.contextVSlopeLinedef.Size = new System.Drawing.Size(286, 120); + this.contextVSlopeLinedef.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.contextVSlopeLinedef_Closed); + // + // setAction704Item + // + this.setAction704Item.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.VertexSlope; + this.setAction704Item.Name = "setAction704Item"; + this.setAction704Item.Size = new System.Drawing.Size(285, 22); + this.setAction704Item.Text = "Set Vertex Slope Frontside Floor (704)"; + this.setAction704Item.Click += new System.EventHandler(this.setAction704Item_Click); + // + // setAction705Item + // + this.setAction705Item.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.VertexSlope; + this.setAction705Item.Name = "setAction705Item"; + this.setAction705Item.Size = new System.Drawing.Size(285, 22); + this.setAction705Item.Text = "Set Vertex Slope Frontside Ceiling (705)"; + this.setAction705Item.Click += new System.EventHandler(this.setAction705Item_Click); + // + // setAction714Item + // + this.setAction714Item.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.VertexSlope; + this.setAction714Item.Name = "setAction714Item"; + this.setAction714Item.Size = new System.Drawing.Size(285, 22); + this.setAction714Item.Text = "Set Vertex Slope Backside Floor (714)"; + this.setAction714Item.Click += new System.EventHandler(this.setAction714Item_Click); + // + // setAction715Item + // + this.setAction715Item.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.VertexSlope; + this.setAction715Item.Name = "setAction715Item"; + this.setAction715Item.Size = new System.Drawing.Size(285, 22); + this.setAction715Item.Text = "Set Vertex Slope Backside Ceiling (715)"; + this.setAction715Item.Click += new System.EventHandler(this.setAction715Item_Click); + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(282, 6); + // + // removeActionItem + // + this.removeActionItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Close; + this.removeActionItem.Name = "removeActionItem"; + this.removeActionItem.Size = new System.Drawing.Size(285, 22); + this.removeActionItem.Text = "Remove Action and Tag on Vertex Slope"; + this.removeActionItem.Click += new System.EventHandler(this.removeActionItem_Click); + // + // VertexSlopeAssistForm + // + this.AcceptButton = this.apply; + 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(364, 572); + this.Controls.Add(this.affinevslopes); + this.Controls.Add(this.currentmode); + this.Controls.Add(this.tagID); + this.Controls.Add(this.newtag); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(label1); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "VertexSlopeAssistForm"; + this.Opacity = 1D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "Vertex Slope Assistant"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.VertexSlopeAssistForm_FormClosing); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.VertexSlopeAssistForm_HelpRequested); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.toolStripGroups.ResumeLayout(false); + this.toolStripGroups.PerformLayout(); + this.contextNewGroup.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.contextExistingGroup.ResumeLayout(false); + this.contextVSlopeLinedef.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button apply; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.ListBox vslopegroups; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Button newtag; + private Controls.ButtonsNumericTextbox tagID; + private Controls.ButtonsNumericTextbox vslopeX1; + private Controls.ButtonsNumericTextbox vslopeZ1; + private Controls.ButtonsNumericTextbox vslopeY1; + private Controls.ButtonsNumericTextbox vslopeZ3; + private Controls.ButtonsNumericTextbox vslopeY3; + private Controls.ButtonsNumericTextbox vslopeX3; + private Controls.ButtonsNumericTextbox vslopeZ2; + private Controls.ButtonsNumericTextbox vslopeY2; + private Controls.ButtonsNumericTextbox vslopeX2; + private System.Windows.Forms.Label currentmode; + private System.Windows.Forms.ToolTip tooltip; + private System.Windows.Forms.Button rot_height; + private System.Windows.Forms.Button rot_all; + private System.Windows.Forms.Button flip_height; + private System.Windows.Forms.Button flip_all; + private System.Windows.Forms.CheckBox affinevslopes; + private System.Windows.Forms.VScrollBar heightAdj; + private System.Windows.Forms.ContextMenuStrip contextExistingGroup; + private System.Windows.Forms.ToolStripMenuItem remakeGroup; + private System.Windows.Forms.ToolStripMenuItem remakeAsGroup; + private System.Windows.Forms.ToolStripMenuItem remakeAsTriangleGroup; + private System.Windows.Forms.ToolStripMenuItem remakeAsVertexGroup; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem changeTagGroup; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem deleteGroup; + private System.Windows.Forms.ContextMenuStrip contextNewGroup; + private System.Windows.Forms.ToolStripMenuItem newTriangleGroup; + private System.Windows.Forms.ToolStripMenuItem newVertexGroup; + private System.Windows.Forms.ContextMenuStrip contextVSlopeLinedef; + private System.Windows.Forms.ToolStripMenuItem setAction704Item; + private System.Windows.Forms.ToolStripMenuItem setAction705Item; + private System.Windows.Forms.ToolStripMenuItem setAction714Item; + private System.Windows.Forms.ToolStripMenuItem setAction715Item; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem removeActionItem; + private System.Windows.Forms.ToolStrip toolStripGroups; + private System.Windows.Forms.ToolStripButton toolNewTriangleGroup; + private System.Windows.Forms.ToolStripButton toolNewVertexGroup; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripSplitButton toolRemakeGroup; + private System.Windows.Forms.ToolStripMenuItem toolRemakeAsTriangleGroup; + private System.Windows.Forms.ToolStripMenuItem toolRemakeAsVertexGroup; + private System.Windows.Forms.ToolStripButton toolChangeTagGroup; + private System.Windows.Forms.ToolStripButton toolDeleteGroup; + private System.Windows.Forms.CheckBox vslopeAbsZ3; + private System.Windows.Forms.CheckBox vslopeAbsZ2; + private System.Windows.Forms.CheckBox vslopeAbsZ1; + private System.Windows.Forms.Label labelVSlope3; + private System.Windows.Forms.Label labelVSlope2; + private System.Windows.Forms.Label labelVSlope1; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripButton toolDrawNewTaggedTriangle; + private System.Windows.Forms.ToolStripButton toolDrawNewEmptyTriangle; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem7; + private System.Windows.Forms.ToolStripMenuItem drawNewAs; + private System.Windows.Forms.ToolStripMenuItem drawNewTaggedTriangle; + private System.Windows.Forms.ToolStripMenuItem drawNewEmptyTriangle; + private System.Windows.Forms.ToolStripMenuItem drawNewEmptyTriangle2; + private System.Windows.Forms.ToolStripMenuItem findNewUnusedTag; + } +} \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.cs b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.cs new file mode 100644 index 0000000..76ea752 --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.cs @@ -0,0 +1,603 @@ +#region ================== Namespaces + +using System; +using System.Windows.Forms; +using CodeImp.DoomBuilder.Windows; +using CodeImp.DoomBuilder.Geometry; +using System.Drawing; +using System.Collections.Generic; +using CodeImp.DoomBuilder.Map; + +#endregion + +//JBR Vertex Slope Assistant form +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + public partial class VertexSlopeAssistForm : DelayedForm + { + #region ================== Properties / Variables + + [Serializable] + public delegate void ContextEventHandler(object sender, int action); + + private bool blockEvents; + + public event EventHandler OnDrawNewTaggedTriangle; + public event EventHandler OnDrawNewEmptyTriangle; + public event EventHandler OnGroupChanged; + public event EventHandler OnGroupChoosen; + public event EventHandler OnGroupNewTriangle; + public event EventHandler OnGroupNewVertex; + public event EventHandler OnGroupModify; + public event EventHandler OnGroupModifyAsTriangle; + public event EventHandler OnGroupModifyAsVertex; + public event EventHandler OnGroupTag; + public event EventHandler OnGroupDelete; + public event EventHandler OnValueChanged; + public event EventHandler OnRotateAll; + public event EventHandler OnFlipAll; + public event EventHandler OnRotateHeight; + public event EventHandler OnFlipHeight; + public event ContextEventHandler OnContextSet; + + public bool AffineVSlopes { get { return affinevslopes.Checked; } } + public int TagID { get { return tagID.GetResult(0); } set { tagID.Text = value.ToString(); UpdateForm(); } } + public Vector3D Vertex1 { get { return GetVector3DFromUI(vslopeX1, vslopeY1, vslopeZ1); } set { SetVector3DFromUI(vslopeX1, vslopeY1, vslopeZ1, value); } } + public Vector3D Vertex2 { get { return GetVector3DFromUI(vslopeX2, vslopeY2, vslopeZ2); } set { SetVector3DFromUI(vslopeX2, vslopeY2, vslopeZ2, value); } } + public Vector3D Vertex3 { get { return GetVector3DFromUI(vslopeX3, vslopeY3, vslopeZ3); } set { SetVector3DFromUI(vslopeX3, vslopeY3, vslopeZ3, value); } } + public bool Vertex1AbsZ { get { return vslopeAbsZ1.Checked; } set { vslopeAbsZ1.Checked = value; } } + public bool Vertex2AbsZ { get { return vslopeAbsZ2.Checked; } set { vslopeAbsZ2.Checked = value; } } + public bool Vertex3AbsZ { get { return vslopeAbsZ3.Checked; } set { vslopeAbsZ3.Checked = value; } } + public string ModeText { get { return currentmode.Text; } set { currentmode.Text = value; } } + + public const int HEIGHTADJ_STEP = 1; + public const int HEIGHTADJ_SMALL = 4; + public const int HEIGHTADJ_BIG = 16; + // List[GroupIndex] = Linedef Tag + public List vslopeTags; + // SortedDictionary + public SortedDictionary> vslopeDic; + + #endregion + + #region ================== Constructor / Disposer + + public VertexSlopeAssistForm() + { + InitializeComponent(); + + blockEvents = true; + vslopeX1.Text = "0"; + vslopeY1.Text = "0"; + vslopeZ1.Text = "0"; + vslopeX2.Text = "0"; + vslopeY2.Text = "0"; + vslopeZ2.Text = "0"; + vslopeX3.Text = "0"; + vslopeY3.Text = "0"; + vslopeZ3.Text = "0"; + tooltip.SetToolTip(heightAdj, string.Format("Hold Ctrl to change value by {0}.\nHold Shift to change value by {1}.", HEIGHTADJ_SMALL, HEIGHTADJ_BIG)); + CreateList(); + tagID.Text = General.Map.Map.GetNewTag(vslopeTags).ToString(); + blockEvents = false; + } + + #endregion + + #region ================== Methods + + private Vector3D GetVector3DFromUI(Controls.ButtonsNumericTextbox X, Controls.ButtonsNumericTextbox Y, Controls.ButtonsNumericTextbox Z) + { + return new Vector3D(X.GetResult(0), Y.GetResult(0), Z.GetResult(0)); + } + + private void SetVector3DFromUI(Controls.ButtonsNumericTextbox X, Controls.ButtonsNumericTextbox Y, Controls.ButtonsNumericTextbox Z, Vector3D value) + { + blockEvents = true; + X.Text = value.x.ToString(); + Y.Text = value.y.ToString(); + Z.Text = value.z.ToString(); + blockEvents = false; + } + + // http://www.jeffreythompson.org/collision-detection/tri-point.php + private bool TriangleCollision(float p1x, float p1y, float p2x, float p2y, float p3x, float p3y, float px, float py) + { + // get the area of the triangle + float areaOrig = Math.Abs((p2x - p1x) * (p3y - p1y) - (p3x - p1x) * (p2y - p1y)); + + // get the area of 3 triangles made between the point and the corners of the triangle + float area1 = Math.Abs((p1x - px) * (p2y - py) - (p2x - px) * (p1y - py)); + float area2 = Math.Abs((p2x - px) * (p3y - py) - (p3x - px) * (p2y - py)); + float area3 = Math.Abs((p3x - px) * (p1y - py) - (p1x - px) * (p3y - py)); + + // if the sum of the three areas equals the original, we're inside the triangle! + return (area1 + area2 + area3 == areaOrig); + } + + private bool PointBoxCollision(float px, float py, float left, float bottom, float width, float height) + { + // Graphic axis direction of going up being positive + float right = left + width; + float top = bottom + height; + return px >= left && px < right && py >= bottom && py < top; + } + + public void OpenContextLinedefMenu(int mx, int my, bool tagexist) + { + setAction704Item.Enabled = tagexist; + setAction705Item.Enabled = tagexist; + setAction714Item.Enabled = tagexist; + setAction715Item.Enabled = tagexist; + contextVSlopeLinedef.Show(mx, my); + } + + public void OpenContextGroupMenu(int mx, int my, bool tagexist) + { + if (tagexist) + contextExistingGroup.Show(mx, my); + else + contextNewGroup.Show(mx, my); + } + + public void CreateList() + { + // Create dictionary + vslopeDic = new SortedDictionary>(); + vslopegroups.Items.Clear(); + foreach (Thing t in General.Map.Map.Things) + { + if (t.SRB2Type == 750) // Vertex Slope + { + if (vslopeDic.ContainsKey(t.AngleDoom)) + { + vslopeDic[t.AngleDoom].Add(t); + } + else + { + List thingsList = new List(); + thingsList.Add(t); + vslopeDic.Add(t.AngleDoom, thingsList); + } + } + } + + // Generate ListBox items + vslopeTags = new List(); + vslopegroups.Items.Clear(); + foreach (KeyValuePair> kvp in vslopeDic) + { + vslopeTags.Add(kvp.Key); + if (kvp.Value.Count == 3) + { + vslopegroups.Items.Add(string.Format("Tag {0} - Triangle", kvp.Key)); + } + else if (kvp.Value.Count == 1) + { + vslopegroups.Items.Add(string.Format("Tag {0} - Vertex", kvp.Key)); + } + else + { + vslopegroups.Items.Add(string.Format("Tag {0} - INVALID! {1} Vertices", kvp.Key, kvp.Value.Count)); + } + } + + // Select tag from list + int tagid = tagID.GetResult(0); + vslopegroups.SelectedIndex = vslopeTags.IndexOf(tagid); + } + + public void UpdateForm() + { + blockEvents = true; + int tagid = tagID.GetResult(0); + bool tagexist = vslopeTags.Contains(tagid); + toolNewTriangleGroup.Enabled = !tagexist; + toolNewVertexGroup.Enabled = !tagexist; + toolRemakeGroup.Enabled = tagexist; + toolRemakeAsTriangleGroup.Enabled = tagexist; + toolRemakeAsVertexGroup.Enabled = tagexist; + toolChangeTagGroup.Enabled = tagexist; + toolDeleteGroup.Enabled = tagexist; + toolDrawNewTaggedTriangle.Enabled = !tagexist; + if (tagexist) + vslopegroups.ContextMenuStrip = contextExistingGroup; + else + vslopegroups.ContextMenuStrip = contextNewGroup; + vslopegroups.SelectedIndex = vslopeTags.IndexOf(tagid); + if (tagexist) + { + List things = vslopeDic[tagid]; + if (things.Count >= 1) + { + Thing thing = things[0]; + Vector3D pos = thing.Position; + vslopeX1.Text = pos.x.ToString(); + vslopeY1.Text = pos.y.ToString(); + if (thing.Parameter == 0) + { + vslopeAbsZ1.Checked = false; + labelVSlope1.Text = "H1:"; + vslopeZ1.Text = pos.z.ToString(); + } + else + { + vslopeAbsZ1.Checked = true; + labelVSlope1.Text = "Z1:"; + vslopeZ1.Text = thing.GetFlagsValue().ToString(); + } + } + if (things.Count >= 2) + { + Thing thing = things[1]; + Vector3D pos = thing.Position; + vslopeX2.Text = pos.x.ToString(); + vslopeY2.Text = pos.y.ToString(); + if (thing.Parameter == 0) + { + vslopeAbsZ2.Checked = false; + labelVSlope2.Text = "H2:"; + vslopeZ2.Text = pos.z.ToString(); + } + else + { + vslopeAbsZ2.Checked = true; + labelVSlope2.Text = "Z2:"; + vslopeZ2.Text = thing.GetFlagsValue().ToString(); + } + } + if (things.Count >= 3) + { + Thing thing = things[2]; + Vector3D pos = thing.Position; + vslopeX3.Text = pos.x.ToString(); + vslopeY3.Text = pos.y.ToString(); + if (thing.Parameter == 0) + { + vslopeAbsZ3.Checked = false; + labelVSlope3.Text = "H3:"; + vslopeZ3.Text = pos.z.ToString(); + } + else + { + vslopeAbsZ3.Checked = true; + labelVSlope3.Text = "Z3:"; + vslopeZ3.Text = thing.GetFlagsValue().ToString(); + } + } + vslopeX1.Enabled = (things.Count >= 1); + vslopeY1.Enabled = (things.Count >= 1); + vslopeZ1.Enabled = (things.Count >= 1); + vslopeAbsZ1.Enabled = (things.Count >= 1); + vslopeX2.Enabled = (things.Count >= 2); + vslopeY2.Enabled = (things.Count >= 2); + vslopeZ2.Enabled = (things.Count >= 2); + vslopeAbsZ2.Enabled = (things.Count >= 2); + vslopeX3.Enabled = (things.Count >= 3); + vslopeY3.Enabled = (things.Count >= 3); + vslopeZ3.Enabled = (things.Count >= 3); + vslopeAbsZ3.Enabled = (things.Count >= 3); + } + else + { + vslopeX1.Enabled = false; + vslopeY1.Enabled = false; + vslopeZ1.Enabled = true; + vslopeAbsZ1.Enabled = true; + vslopeX2.Enabled = false; + vslopeY2.Enabled = false; + vslopeZ2.Enabled = true; + vslopeAbsZ2.Enabled = true; + vslopeX3.Enabled = false; + vslopeY3.Enabled = false; + vslopeZ3.Enabled = true; + vslopeAbsZ3.Enabled = true; + } + blockEvents = false; + } + + public int VerticesInTag() + { + int tagid = tagID.GetResult(0); + bool tagexist = vslopeTags.Contains(tagid); + if (tagexist) + { + return vslopeDic[tagid].Count; + } + return 0; + } + + public int VerticesInTag(int tagid) + { + bool tagexist = vslopeTags.Contains(tagid); + if (tagexist) + { + return vslopeDic[tagid].Count; + } + return 0; + } + + public List GetThingsList() + { + int tagid = tagID.GetResult(0); + bool tagexist = vslopeTags.Contains(tagid); + if (tagexist) + { + return vslopeDic[tagid]; + } + return null; + } + + public List GetThingsList(int tagid) + { + bool tagexist = vslopeTags.Contains(tagid); + if (tagexist) + { + return vslopeDic[tagid]; + } + return null; + } + + public int GetGroupsAt(Vector2D pos, ref List groups, bool vertexgroups, bool trianglegroups) + { + int numgroups = 0; + foreach (KeyValuePair> kvp in vslopeDic) + { + if (vertexgroups && kvp.Value.Count == 1) + { + if (PointBoxCollision(pos.x, pos.y, kvp.Value[0].Position.x - 8f, kvp.Value[0].Position.y - 8f, 16f, 16f)) + { + numgroups++; + groups.Add(kvp.Key); + } + } + else if (trianglegroups && kvp.Value.Count == 3) + { + if (TriangleCollision( + kvp.Value[0].Position.x, kvp.Value[0].Position.y, + kvp.Value[1].Position.x, kvp.Value[1].Position.y, + kvp.Value[2].Position.x, kvp.Value[2].Position.y, + pos.x, pos.y)) + { + numgroups++; + groups.Add(kvp.Key); + } + } + } + return numgroups; + } + + #endregion + + #region ================== Interface + + // Window closing + private void VertexSlopeAssistForm_FormClosing(object sender, FormClosingEventArgs e) + { + // User closing the window? + if (e.CloseReason == CloseReason.UserClosing) + { + // Just cancel + General.Editing.CancelMode(); + e.Cancel = true; + } + } + + // This shows the window + public void Show(Form owner) + { + // Position at left-top of owner + this.Location = new Point(owner.Location.X + 20, owner.Location.Y + 90); + + blockEvents = true; + CreateList(); + blockEvents = false; + tagID_ValueChanged(tagID, EventArgs.Empty); + + // Show window + base.Show(owner); + } + + // Some value got changed + private void ValueChanged(object sender, EventArgs e) + { + if (!blockEvents) General.Interface.RedrawDisplay(); + } + + // Cancel clicked + private void cancel_Click(object sender, EventArgs e) + { + // Cancel now + General.Editing.CancelMode(); + } + + // Apply clicked + private void apply_Click(object sender, EventArgs e) + { + // Apply now + General.Editing.AcceptMode(); + } + + private void VertexSlopeAssistForm_HelpRequested(object sender, HelpEventArgs hlpevent) + { + General.ShowHelp("e_vertexslopeassist.html"); + } + + private void tagID_ValueChanged(object sender, EventArgs e) + { + if (blockEvents) return; + + UpdateForm(); + if (OnGroupChanged != null) OnGroupChanged(sender, e); + ValueChanged(sender, e); + } + + private void vslopegroups_SelectedIndexChanged(object sender, EventArgs e) + { + if (blockEvents) return; + + if (vslopegroups.SelectedIndex == -1) return; + int tagid = vslopeTags[vslopegroups.SelectedIndex]; + tagID.Text = tagid.ToString(); + + if (OnGroupChanged != null) OnGroupChanged(sender, e); + ValueChanged(sender, e); + } + + private void vslopegroups_DoubleClick(object sender, EventArgs e) + { + if (OnGroupChoosen != null) OnGroupChoosen(sender, e); + ValueChanged(sender, e); + } + + private void drawNewTaggedTriangle_Click(object sender, EventArgs e) + { + if (OnDrawNewTaggedTriangle != null) OnDrawNewTaggedTriangle(sender, e); + ValueChanged(sender, e); + } + + private void drawNewEmptyTriangle_Click(object sender, EventArgs e) + { + if (OnDrawNewEmptyTriangle != null) OnDrawNewEmptyTriangle(sender, e); + ValueChanged(sender, e); + } + + private void newtag_Click(object sender, EventArgs e) + { + tagID.Text = General.Map.Map.GetNewTag(vslopeTags).ToString(); + ValueChanged(sender, e); + } + + private void newTriangleGroup_Click(object sender, EventArgs e) + { + if (OnGroupNewTriangle != null) OnGroupNewTriangle(sender, e); + ValueChanged(sender, e); + } + + private void newVertexGroup_Click(object sender, EventArgs e) + { + if (OnGroupNewVertex != null) OnGroupNewVertex(sender, e); + ValueChanged(sender, e); + } + + private void remakeGroup_Click(object sender, EventArgs e) + { + if (OnGroupModify != null) OnGroupModify(sender, e); + ValueChanged(sender, e); + } + + private void remakeAsTriangleGroup_Click(object sender, EventArgs e) + { + if (OnGroupModifyAsTriangle != null) OnGroupModifyAsTriangle(sender, e); + ValueChanged(sender, e); + } + + private void remakeAsVertexGroup_Click(object sender, EventArgs e) + { + if (OnGroupModifyAsVertex != null) OnGroupModifyAsVertex(sender, e); + ValueChanged(sender, e); + } + + private void changeTagGroup_Click(object sender, EventArgs e) + { + if (OnGroupTag != null) OnGroupTag(sender, e); + ValueChanged(sender, e); + } + + private void deleteGroup_Click(object sender, EventArgs e) + { + if (OnGroupDelete != null) OnGroupDelete(sender, e); + ValueChanged(sender, e); + } + + private void vslope_ValueChanged(object sender, EventArgs e) + { + if (blockEvents) return; + + if (OnValueChanged != null) OnValueChanged(sender, e); + ValueChanged(sender, e); + } + + private void rot_all_Click(object sender, EventArgs e) + { + if (OnRotateAll != null) OnRotateAll(sender, e); + ValueChanged(sender, e); + } + + private void flip_all_Click(object sender, EventArgs e) + { + if (OnFlipAll != null) OnFlipAll(sender, e); + ValueChanged(sender, e); + } + + private void rot_height_Click(object sender, EventArgs e) + { + if (OnRotateHeight != null) OnRotateHeight(sender, e); + ValueChanged(sender, e); + } + + private void flip_height_Click(object sender, EventArgs e) + { + if (OnFlipHeight != null) OnFlipHeight(sender, e); + ValueChanged(sender, e); + } + + private void heightAdj_ValueChanged(object sender, EventArgs e) + { + int adjust = -heightAdj.Value; + + // Modifiers + if ((ModifierKeys & Keys.Control) == Keys.Control) + adjust *= HEIGHTADJ_SMALL; + else if ((ModifierKeys & Keys.Shift) == Keys.Shift) + adjust *= HEIGHTADJ_BIG; + else + adjust *= HEIGHTADJ_STEP; + + // Adjust heights... + vslopeZ1.Text = (vslopeZ1.GetResult(0) + adjust).ToString(); + vslopeZ2.Text = (vslopeZ2.GetResult(0) + adjust).ToString(); + vslopeZ3.Text = (vslopeZ3.GetResult(0) + adjust).ToString(); + heightAdj.Value = 0; + } + + private void setAction704Item_Click(object sender, EventArgs e) + { + if (OnContextSet != null) OnContextSet(sender, 704); + ValueChanged(sender, e); + } + + private void setAction705Item_Click(object sender, EventArgs e) + { + if (OnContextSet != null) OnContextSet(sender, 705); + ValueChanged(sender, e); + } + + private void setAction714Item_Click(object sender, EventArgs e) + { + if (OnContextSet != null) OnContextSet(sender, 714); + ValueChanged(sender, e); + } + + private void setAction715Item_Click(object sender, EventArgs e) + { + if (OnContextSet != null) OnContextSet(sender, 715); + ValueChanged(sender, e); + } + + private void removeActionItem_Click(object sender, EventArgs e) + { + if (OnContextSet != null) OnContextSet(sender, 0); + ValueChanged(sender, e); + } + + private void contextVSlopeLinedef_Closed(object sender, ToolStripDropDownClosedEventArgs e) + { + if (OnContextSet != null) OnContextSet(sender, -1); + ValueChanged(sender, e); + } + + #endregion + + } +} diff --git a/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.resx b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.resx new file mode 100644 index 0000000..fa2a35e --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistForm.resx @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + 17, 17 + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + 594, 17 + + + 273, 17 + + + When checked, all Vertex Slopes will slightly move inside the +the triangle so height can be adjusted freely without any +neighbour sectors affecting it but this will also cause an +error of >= 1 pixel on the slope edges. + +This setting affects: +* Create New Triangle +* New Triangle Group +* Remake Group (On triangle groups only) + + + 105, 17 + + + 424, 17 + + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.cs b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.cs new file mode 100644 index 0000000..797bb79 --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.cs @@ -0,0 +1,88 @@ +#region ================== Namespaces + +using System; +using System.Windows.Forms; +using CodeImp.DoomBuilder.Windows; +using CodeImp.DoomBuilder.Geometry; +using System.Drawing; +using System.Collections.Generic; +using CodeImp.DoomBuilder.Map; + +#endregion + +//JBR Vertex Slope Assistant, Tag form +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + public partial class VertexSlopeAssistTagForm : DelayedForm + { + #region ================== Properties + + public int TagID { get { return tagID.GetResult(0); } set { tagID.Text = value.ToString(); } } + + #endregion + + #region ================== Constructor / Disposer + + public VertexSlopeAssistTagForm() + { + InitializeComponent(); + tagID.Text = "0"; + } + + #endregion + + #region ================== Methods + + // Returns selected tag number, -1 if cancel + public static int RunDialog(IWin32Window owner, int tag) + { + VertexSlopeAssistTagForm f = new VertexSlopeAssistTagForm(); + f.tagID.Text = tag.ToString(); + DialogResult result = f.ShowDialog(owner); + int newtag = -1; + if (result == DialogResult.OK) + { + newtag = f.tagID.GetResult(tag); + } + f.Dispose(); + return newtag; + } + + #endregion + + #region ================== Interface + + // Window closing + private void VertexSlopeAssistRetagForm_FormClosing(object sender, FormClosingEventArgs e) + { + // User closing the window? + if (e.CloseReason == CloseReason.UserClosing) + { + // Just cancel + e.Cancel = true; + } + } + + private void newtag_Click(object sender, EventArgs e) + { + tagID.Text = General.Map.Map.GetNewTag().ToString(); + } + + // This shows the window + public void Show(Form owner) + { + // Position at left-top of owner + this.Location = new Point(owner.Location.X + 20, owner.Location.Y + 90); + + // Show window + base.Show(owner); + } + + private void VertexSlopeAssistRetagForm_HelpRequested(object sender, HelpEventArgs hlpevent) + { + General.ShowHelp("e_vertexslopeassist.html"); + } + + #endregion + } +} diff --git a/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.designer.cs b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.designer.cs new file mode 100644 index 0000000..cc470be --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.designer.cs @@ -0,0 +1,143 @@ +namespace CodeImp.DoomBuilder.BuilderModes.Interface +{ + partial class VertexSlopeAssistTagForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.Label label1; + this.apply = new System.Windows.Forms.Button(); + this.cancel = new System.Windows.Forms.Button(); + this.newtag = new System.Windows.Forms.Button(); + this.tagID = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.tooltip = new System.Windows.Forms.ToolTip(this.components); + label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(15, 17); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(64, 13); + label1.TabIndex = 1; + label1.Text = "New Tag #:"; + this.tooltip.SetToolTip(label1, "Tag number to be used for the vertex slope, should be between 1 to 65535."); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.apply.DialogResult = System.Windows.Forms.DialogResult.OK; + this.apply.Location = new System.Drawing.Point(12, 48); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(70, 25); + this.apply.TabIndex = 9; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(89, 48); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(70, 25); + this.cancel.TabIndex = 10; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + // + // newtag + // + this.newtag.Location = new System.Drawing.Point(163, 12); + this.newtag.Name = "newtag"; + this.newtag.Size = new System.Drawing.Size(48, 23); + this.newtag.TabIndex = 3; + this.newtag.Text = "New"; + this.tooltip.SetToolTip(this.newtag, "Find a new unused tag."); + this.newtag.UseVisualStyleBackColor = true; + this.newtag.Click += new System.EventHandler(this.newtag_Click); + // + // tagID + // + this.tagID.AllowDecimal = false; + this.tagID.AllowNegative = false; + this.tagID.AllowRelative = false; + this.tagID.ButtonStep = 1; + this.tagID.ButtonStepBig = 100F; + this.tagID.ButtonStepFloat = 1F; + this.tagID.ButtonStepSmall = 10F; + this.tagID.ButtonStepsUseModifierKeys = true; + this.tagID.ButtonStepsWrapAround = false; + this.tagID.Location = new System.Drawing.Point(85, 12); + this.tagID.Name = "tagID"; + this.tagID.Size = new System.Drawing.Size(72, 24); + this.tagID.StepValues = null; + this.tagID.TabIndex = 2; + // + // tooltip + // + this.tooltip.AutoPopDelay = 10000; + this.tooltip.InitialDelay = 500; + this.tooltip.ReshowDelay = 100; + // + // VertexSlopeAssistTagForm + // + this.AcceptButton = this.apply; + 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(230, 85); + this.Controls.Add(this.tagID); + this.Controls.Add(this.newtag); + this.Controls.Add(label1); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "VertexSlopeAssistTagForm"; + this.Opacity = 1D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "Vertex Slope Assistant (Tag)"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.VertexSlopeAssistRetagForm_FormClosing); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.VertexSlopeAssistRetagForm_HelpRequested); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button apply; + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Button newtag; + private Controls.ButtonsNumericTextbox tagID; + private System.Windows.Forms.ToolTip tooltip; + } +} \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.resx b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.resx new file mode 100644 index 0000000..1e4f027 --- /dev/null +++ b/Source/Plugins/BuilderModes/Interface/VertexSlopeAssistTagForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + 17, 17 + + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs b/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs index aa41c51..8fe0d3e 100644 --- a/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs +++ b/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.42000 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -// der Code erneut generiert wird. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,12 +13,12 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert - // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. - // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] @@ -33,7 +33,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,27 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap AddTriangle { + get { + object obj = ResourceManager.GetObject("AddTriangle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap AddVertex { + get { + object obj = ResourceManager.GetObject("AddVertex", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap AlignThings { get { @@ -71,7 +91,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Angle { get { @@ -81,7 +101,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap BrightnessGradient { get { @@ -91,7 +111,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CeilingAlign { get { @@ -101,7 +121,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CeilsGradient { get { @@ -111,7 +131,17 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Close { + get { + object obj = ResourceManager.GetObject("Close", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ColorPick { get { @@ -121,7 +151,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Copy { get { @@ -131,7 +161,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CopyProperties { get { @@ -141,7 +171,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap CurveLines { get { @@ -151,7 +181,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Door { get { @@ -161,7 +191,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap DrawCurveMode { get { @@ -171,7 +201,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap DrawEllipseMode { get { @@ -181,7 +211,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap DrawGeometryMode { get { @@ -191,7 +221,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap DrawGridMode { get { @@ -201,7 +231,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap DrawRectangleMode { get { @@ -211,7 +241,87 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DrawShape24Sides { + get { + object obj = ResourceManager.GetObject("DrawShape24Sides", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DrawShape3Sides { + get { + object obj = ResourceManager.GetObject("DrawShape3Sides", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DrawShape8Sides { + get { + object obj = ResourceManager.GetObject("DrawShape8Sides", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DrawShapeMode { + get { + object obj = ResourceManager.GetObject("DrawShapeMode", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DrawShapeSpike0 { + get { + object obj = ResourceManager.GetObject("DrawShapeSpike0", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DrawShapeSpike50 { + get { + object obj = ResourceManager.GetObject("DrawShapeSpike50", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DrawTaggedTriangle { + get { + object obj = ResourceManager.GetObject("DrawTaggedTriangle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DrawTriangle { + get { + object obj = ResourceManager.GetObject("DrawTriangle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap FilterThings { get { @@ -221,7 +331,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Flip { get { @@ -231,7 +341,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap FlipSelectionH { get { @@ -241,7 +351,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap FlipSelectionV { get { @@ -251,7 +361,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap FloorAlign { get { @@ -261,7 +371,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap FloorsGradient { get { @@ -271,7 +381,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Folder { get { @@ -281,7 +391,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Gear { get { @@ -291,7 +401,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Hide { get { @@ -301,7 +411,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap HideAll { get { @@ -311,7 +421,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap InsertThingsRadiallyMode { get { @@ -321,7 +431,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Join { get { @@ -331,7 +441,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap List { get { @@ -341,7 +451,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap List_Images { get { @@ -351,7 +461,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Merge { get { @@ -361,7 +471,17 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ParallelLinedef { + get { + object obj = ResourceManager.GetObject("ParallelLinedef", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap PasteProperties { get { @@ -371,7 +491,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap PastePropertiesOptions { get { @@ -381,7 +501,27 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap PerpendicularLinedef { + get { + object obj = ResourceManager.GetObject("PerpendicularLinedef", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap PerpendicularVertex { + get { + object obj = ResourceManager.GetObject("PerpendicularVertex", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap PlaceThings { get { @@ -391,7 +531,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Reset { get { @@ -401,7 +541,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Save { get { @@ -411,7 +551,17 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Search { + get { + object obj = ResourceManager.GetObject("Search", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SelectThingsInSectors { get { @@ -421,7 +571,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap SelectTouching { get { @@ -431,7 +581,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Show { get { @@ -441,7 +591,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Show2 { get { @@ -451,7 +601,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Show3 { get { @@ -461,7 +611,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Similar { get { @@ -471,7 +621,17 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SingleVertex { + get { + object obj = ResourceManager.GetObject("SingleVertex", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Text { get { @@ -481,7 +641,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap TextureLock { get { @@ -491,7 +651,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ThingPointAtCursor { get { @@ -501,7 +661,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap treeview { get { @@ -511,7 +671,27 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap VertexIntoShape { + get { + object obj = ResourceManager.GetObject("VertexIntoShape", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap VertexSlope { + get { + object obj = ResourceManager.GetObject("VertexSlope", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ViewSelectionEffects { get { @@ -521,7 +701,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap ViewSelectionIndex { get { @@ -531,7 +711,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap VisualModeGZ { get { diff --git a/Source/Plugins/BuilderModes/Properties/Resources.resx b/Source/Plugins/BuilderModes/Properties/Resources.resx index 5ee3b44..f48153f 100644 --- a/Source/Plugins/BuilderModes/Properties/Resources.resx +++ b/Source/Plugins/BuilderModes/Properties/Resources.resx @@ -262,4 +262,58 @@ ..\Resources\InsertThingsRadiallyMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\AddTriangle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\AddVertex.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Close.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\DrawShape24Sides.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\DrawShape3Sides.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\DrawShape8Sides.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\DrawShapeMode.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\DrawShapeSpike0.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\DrawShapeSpike50.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\DrawTaggedTriangle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\DrawTriangle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ParallelLinedef.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\PerpendicularLinedef.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\PerpendicularVertex.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Search.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\SingleVertex.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\VertexIntoShape.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\VertexSlope.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Resources/Actions.cfg b/Source/Plugins/BuilderModes/Resources/Actions.cfg index c863886..4489a3d 100644 --- a/Source/Plugins/BuilderModes/Resources/Actions.cfg +++ b/Source/Plugins/BuilderModes/Resources/Actions.cfg @@ -30,6 +30,8 @@ categories // allowkeys and allowmouse are true by default, the others are false by default. // +//JBR Added defaults in some actions + verticesmode { title = "Vertices Mode"; @@ -38,6 +40,7 @@ verticesmode allowkeys = true; allowmouse = true; allowscroll = true; + default = 86; // V } linedefsmode @@ -48,6 +51,7 @@ linedefsmode allowkeys = true; allowmouse = true; allowscroll = true; + default = 76; // L } sectorsmode @@ -58,6 +62,7 @@ sectorsmode allowkeys = true; allowmouse = true; allowscroll = true; + default = 83; // S } thingsmode @@ -68,6 +73,7 @@ thingsmode allowkeys = true; allowmouse = true; allowscroll = true; + default = 84; // T } drawlinesmode @@ -78,6 +84,7 @@ drawlinesmode allowkeys = true; allowmouse = true; allowscroll = true; + default = 131140; // Ctrl-D } //mxd @@ -89,7 +96,7 @@ drawrectanglemode allowkeys = true; allowmouse = true; allowscroll = true; - default = 196676; + default = 196676; // Ctrl-Shift-D } //mxd @@ -101,7 +108,7 @@ drawellipsemode allowkeys = true; allowmouse = true; allowscroll = true; - default = 327748; + default = 327748; // Alt-Shift-D } //mxd @@ -125,6 +132,19 @@ drawgridmode allowkeys = true; allowmouse = true; allowscroll = true; + default = 327751; //Alt-Shift-G +} + +//JBR +drawshapemode +{ + title = "Start Shape Drawing"; + category = "drawing"; + description = "Starts drawing a shape. Increase/Decrease Subdivision Level and Increase/Decrease Corners Bevel actions are avaliable in this mode."; + allowkeys = true; + allowmouse = true; + allowscroll = true; + default = 262212; //Alt-D } insertthingsradiallymode @@ -1305,6 +1325,61 @@ floodfilltextures default = 65540; } +//JBR +perpendicularvertex +{ + title = "Perpendicular Vertex"; + category = "classic"; + description = "Create perpendicular from selected vertices."; + allowkeys = true; + allowmouse = true; + allowscroll = true; +} + +//JBR +perpendicularlinedef +{ + title = "Perpendicular Linedef"; + category = "classic"; + description = "Create perpendicular from selected linedefs."; + allowkeys = true; + allowmouse = true; + allowscroll = true; +} + +//JBR +parallellinedef +{ + title = "Parallel Linedef"; + category = "classic"; + description = "Create parallel linedefs from selected linedefs."; + allowkeys = true; + allowmouse = true; + allowscroll = true; +} + +//JBR +vertexintoshape +{ + title = "Vertex into shape"; + category = "classic"; + description = "Create shapes on each selected vertex."; + allowkeys = true; + allowmouse = true; + allowscroll = true; +} + +//JBR +vertexslopeassist +{ + title = "Vertex Slope Assistant"; + category = "classic"; + description = "Vertex slope assistant. (SRB2 only)"; + allowkeys = true; + allowmouse = true; + allowscroll = true; +} + flipselectionv { title = "Flip Selection Vertically"; diff --git a/Source/Plugins/BuilderModes/Resources/AddTriangle.png b/Source/Plugins/BuilderModes/Resources/AddTriangle.png new file mode 100644 index 0000000000000000000000000000000000000000..de4e6ad334a141cd5d007f267136f045795223a4 GIT binary patch literal 413 zcmV;O0b>4%P)6vclpqFTaQnwoN{K?Kk@7KxZdPh$v4xkcVfBB5T%_|a|B zt=pjxg6cIr8tF`%+6!OJcJiyo09@WaP%Wkaa1ulT zTp2%mXBpVqXA>y?Y~V>WPP}%7+3nmnzMKrB(A;>x%2hfoYs`B!SGkEF0Sr#BP)>#c zs6OBOHH}$)hA^)O#S+NMu)`~wUi-#^`V7%CWSLjzU()oS4fd%#GhmL)00000NkvXX Hu0mjf0eraA literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/AddVertex.png b/Source/Plugins/BuilderModes/Resources/AddVertex.png new file mode 100644 index 0000000000000000000000000000000000000000..307fed05b553340a9bc21f8e77b41320f6ee2c6d GIT binary patch literal 301 zcmV+|0n+}7P)HaghnrlU+b+k|B}pVplB(T zAPMF6%F3J?U4X~uS3YI~0F10%+6ExH>=#m8+)jS<7yZW81OQn6(0zaEbOFxt6&C$Q zG`dXUk7ZT^**7mbFZ%Hx9PI)yvUVwae|&iZ!{bysZ&RPL00000NkvXXu0mjf1U-dw literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/Close.png b/Source/Plugins/BuilderModes/Resources/Close.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc28f5f8ba6ab3fd49a10ebd7bd75b3bbfbcfb6 GIT binary patch literal 699 zcmV;s0!00ZP)3L{jVn z6D&yDt_({P7jE2`7%wpzB+#V(Eg_1UNLm`*xp8A6@wq}JN+B_=NMk@++9JK@9A}C^ zTMd)k+}tzYH{UmN<|0sh$P5Jl&4|%Z9sg9`fD__Yq9zDvhX`(1L| zivarup`nyLzFaQ;kNh^ButP3ca2o@A2B4)>R5*a6ZbUMG;3W`QS$va<-{>d5&Lk#6 z0t<{m!h1;2K}-tN`e#cUAU-I8;I;$=Tyk+KlQ=5!Dl=pUrO0!RF^p}}xzVPI3|LCV zvjI!Y`J@1HM+yXRG}M*8M&BZAiD!Q6IJdX2pk_?&(&x%79;&=d#j-(5&iPnD89<59 zBxfA{t}}L9cXaMDkvWImeZClrWkXWTdHW@_qK`ynk5F$D)&A6puVy zqzm+$$TiT@S64RXyYW_k0SCz;Q7zqTfzKR(t$uuugQufs?XV>aJO@oZ@O5z*o+KXh zUvrdw{p*k7KLzp^q7$bO^F7mUE6|#T=#f3QQ&ZZWSUo7xDX=gyXosaN_$4a?snM1Z zxdvv2oVP+!E_CObbR%`z*qf`HMSOfd5(`X zLH+$AP)cLG!!#DW(#RYTyzUM>Pf!4tc&8Dj25~HFu%s;w0Dzz9Nu2Hd zR5St&zTCj}9z_N_^f=;XWg|S48UR3d7SIUeSsCQ$N!;}{^{NcEGAKxI&>2XE|a8+QY&dEV@gsFk|P@dN$rxtjLEo##OYY9vqY&HB&uuVZN z)BO~ATaOplW}t}8anE=CZ{UOd8TP@#P@f0@A9j~w>eKp_8<)wqCkOzNqegFUf literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/DrawShapeMode.png b/Source/Plugins/BuilderModes/Resources/DrawShapeMode.png new file mode 100644 index 0000000000000000000000000000000000000000..8393f21633e9cca089b73056fd96264c96f38c4c GIT binary patch literal 321 zcmV-H0lxl;P)11q1A6(X%=e{ zAt}PK*ipy0Gl_U$in(*~5Q^7BqTB5hTta3=sZyR=I|u6?{;?#3;)%CS{n+`>F04gcfr zO|eu0gX$Fa!hE_*Li*XRxyNY>SqrusC`-gv7p|I&iz%y5kvGQr!8SHOP(Kv2$=AZH z-TC|2?}XU=065BfoZaMba>+69xL_7dn;%e4ykQ>SoWuIYJRg7!bC$(l`EGmwFj$Dr TTS-aE00000NkvXXu0mjfLH~<8 literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/DrawShapeSpike0.png b/Source/Plugins/BuilderModes/Resources/DrawShapeSpike0.png new file mode 100644 index 0000000000000000000000000000000000000000..50675bbb527352a60582b3a82eaf4d3301d30e86 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`{+=$5Ar`&KDGH2#{{Q-7ze|E! zlg$7Kbhb}w+pOGgo0_0>m0^aPgu-ct6axb`g?46TO{tAXnT|FT&a`88UA76R)*>kB gfI#oD#54wm{CxhWv3*sOfJQTTy85}Sb4q9e0G$RXY5)KL literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/DrawShapeSpike50.png b/Source/Plugins/BuilderModes/Resources/DrawShapeSpike50.png new file mode 100644 index 0000000000000000000000000000000000000000..de41d3042fe76897b1c8ab3d9f652914c697ae26 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6FprVLo9laPTDPaK!L~kZOpa= zj$b8`%{&~*7cQoAxOw<$6+cV&5Dk@BqTa{s7*Lfo=^P`&x0wfJwbuJ~oZWMlA;m;d z%s7+t0bi&|u`gq3_1cHh5xkwZs?C)a3fTE})Ri4(b4c9wbp7u5D-2eNf=Q+-PYx^G zX`LW1ewel8_eW<7=NX6ImCgE!jzJ~_WFl3VIjI$x8n(B}7v z5mJcQbT1}F=WEs#&Tos10MWJ0{y+q{XKiwNr{E5JkH%0j1jhI=J;Of(7cM(D4 z`?w-PZ)9sZX4d5NC@!+!BEW=-nKdy&ijg%7yKJ#Ol-44o*~ADb2IqFk_eZ&Zu~EU* zClUGjFx!3cUk9!05c!!D0B5-es)Z~7lkA{?x$ec}R@J)XIUSz|3O_H1nYCk=vR;*o zJro}s_dB^)uVwWZS7Wa?M@fLzfoUoidjM2RcPp-^%ZY~Sn%$8={9Zan4RQVMGd?=e iP`>uSxHJEh>wgE$RkZH$SL^x!00001u4;&zd+Il{nE`XdrFXsN}&p!~78CXG@w)gWX`Lj*$5>?6U z1}+VOcox5gE@gSo&FFSbQ&?r$F6Eyu&Z}n;Jtr)u8g3btTCFBKriB{Xs6m&r^edG-t`u4V0Q+Qf8-R4`+AB9R zy-+9!5S@CCR;-k`QD{q?mWbT^XSyfFTm+8XDH5eI8EYbu!^h9*B7(^Gb)9>(l1HSG z61fNnuw`VdiR9u2u_GHbv^id{dSYxW0&Dwl72@Gp;hXs|OQ+t8EC;|o=dP`2zkmVk zhO_13$iC;PdXNNqzjP7mm8OAk#bFD RNb~>z002ovPDHLkV1fl7r(^&C literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/Hints.cfg b/Source/Plugins/BuilderModes/Resources/Hints.cfg index 2638070..b0b2317 100644 --- a/Source/Plugins/BuilderModes/Resources/Hints.cfg +++ b/Source/Plugins/BuilderModes/Resources/Hints.cfg @@ -229,6 +229,19 @@ group general "Place second vertex to finish drawing" "Press builder_cancelmode or builder_classicedit to cancel" + +class DrawShapeMode +group general +"Press builder_classicselect to place a vertex" +"Use buildermodes_increasebevel and buildermodes_decreasebevel to change bevel by current grid size" +"Use buildermodes_increasesubdivlevel and buildermodes_decreasesubdivlevel to change the number of sides in shape" +"Hold Shift to toggle grid snapping" +"Hold Ctrl to toggle snapping to nearest vertex" +"Hold Alt - Shift to snap to 4 cardinal directions" +"Place second vertex to finish drawing" +"Press builder_cancelmode or builder_classicedit to cancel" + + group gridlockhelp "Use builder_griddec and builder_gridinc to change grid size." "Hold Alt - Shift to snap to 4 cardinal directions" diff --git a/Source/Plugins/BuilderModes/Resources/ParallelLinedef.png b/Source/Plugins/BuilderModes/Resources/ParallelLinedef.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb5278edb05e96a6dccc97c9b43951936c41622 GIT binary patch literal 462 zcmV;<0WtoGP)Z@2pKcPM8hV$EW(vQ2N@A3}s^LgGM&jW-E5eaUrF(1b`OcxG+yf7b5u-byJNhAnP zr_&bh&VchNTz4E?DgT517!Z-j=ku0Q3QMO8=)E}TyaDn3%}ynV#YMpBD>hnvkNq?8OG3ji~& zjTzS-!vN4t>Q-f01G9tavcVA|5~aDeHQ!$Jy>_u!^h`lS!n}RN(rzEa`v!*nCJ+== zqEKOPB_ftmaBK3ZRdQVND)AeBlTRIAmsu|REs zt1JFRAtGU#=J*!6uJ4DX@&~qUn*l&d$x=%3TN4d}OSKVSJjGYz?^keLcM}1f@U3#G zHexTTy}=}cU;zI0oZWd~W(ULj2AtQyj~@JczDE@{UlDig{lOoX9RL6T07*qoM6N<$ Ef|SF|@&Et; literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/PerpendicularLinedef.png b/Source/Plugins/BuilderModes/Resources/PerpendicularLinedef.png new file mode 100644 index 0000000000000000000000000000000000000000..786b03958fe21293183dc05777795a38e9505c16 GIT binary patch literal 482 zcmV<80UiE{P);t%lA9KbI#2a{6I*=kE6W|bK>Qv>rH^e zt>sz{V10TDKp2J#!K*7vw$U5$c;{d{7e8pN0VFAsbQe2YU0Jfh^9+@PjB$&_VyEBlW32_qhhYdn>d=xRTI+JDRO)oQ-54&1VR)Jf z-L);vS0ek4$i5>=DN#zfce!lxqLi9#q3Y+$0K7Qoxc3{ab!z3*l~w(G+4H>4)2|ya zz2^8l;@P|OcJC#PF|Ox%omQ*$@1D~H;%V3Gb=vLrTzDps{GJ=x2H(CMECdt7uWNtg z=Tzj$-ayuNtpJbaf;W)^X!J%@&LSq4O``F|qAUQ}!>#4o)%TO_=+}^Fe8E-oz5XA8 Yzg6qqM}tYvR{#J207*qoM6N<$f)ms2M*si- literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/PerpendicularVertex.png b/Source/Plugins/BuilderModes/Resources/PerpendicularVertex.png new file mode 100644 index 0000000000000000000000000000000000000000..7469cd6f8eac5dcace991daf8fa67a8c3a8f2583 GIT binary patch literal 407 zcmV;I0cie-P) zKTASU7{-6sB3hc73WtOUBytHqgMaYuHVKW{5KVGFfYRa+_6-8tj|3O)lu1LhB;m~@ zMXJFm5W+j?+tMv9?=5?#!#VH!p5J-SqXmPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUz{YgYYR5(wq(@$uUaTo{i(Vvreh!DEiS%ogXL5j?S7xfUl1YV}l zA$ltr#VTo8%WdrN%Db_>dndLTX;DK~Ep>a}85Kg%K{H1iYxs}V%(ta%5!J#GeEW3> zBHB#ocX|%b_rt^Q;c098pO2<#isy$f_xD~4IvkFZDwXQMKl|Zum@5_Xcvq?5MK*`T z^b{_6F3J{*B2e|s}0=Cenj6)4P7^0Vlp~~GpCrywg4HieK!6Ok26KQmbZ||ZGe9yVAHZrt5KvbpYLRW44 zP7G&nm%t_KxS!p?lH9sVe| zgxBlknr_1BbaKOkEF@_T&(g0@D3*|vWXbDfHD!>UO)2G(~=IP$(1@gTWx%Y&HmjfKVv3!Z6IimJqdCecWg?Zd$EY z1OfrDEIUVlU9BK{v|4Si$z%e#54c<|iG+8z0{raVr_pFebUNKMsSmdr{?)G}#r{9T ZKL7<-2UfM{j06Ax002ovPDHLkV1nA!80i22 literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/SingleVertex.png b/Source/Plugins/BuilderModes/Resources/SingleVertex.png new file mode 100644 index 0000000000000000000000000000000000000000..c4263033fc78d86ffa06ef7f4aa6fc856af56500 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`rJgR1Ar`&K2@sr^fB%lKrJYD@<);T3K0RUSXK?48) literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/VertexIntoShape.png b/Source/Plugins/BuilderModes/Resources/VertexIntoShape.png new file mode 100644 index 0000000000000000000000000000000000000000..40bfba9366e8888b9874f0f662da63834edbe1aa GIT binary patch literal 351 zcmV-l0igbgP)~oIM&6%UE@;d+_C6C5I3QS($1X}3LSz@4k{%=o2~W- z6lp4y{>51$>p4PUp~`U_k5+Y0oVMeWRRhd3KoXVKxVL}x(UX?@ zh&hK!Ypmf^+Pi#JvD{D=2Xbcc^4_QP_QNQACi?1|Z5I}%lssP&#d1SCM-?UaxD_|e zx8!@GScRs;=U_si%3)rg^1a72-%{Nc(}+%YLU#xUh5SM7ZrP;y7PBR}X$Np|$2kz@ xOW>sW7PEElv^pC(IADCa5Ww0vWj9=e8r7&1`Ie!2E002ovPDHLkV1lcUpt}G7 literal 0 HcmV?d00001 diff --git a/Source/Plugins/BuilderModes/Resources/VertexSlope.png b/Source/Plugins/BuilderModes/Resources/VertexSlope.png new file mode 100644 index 0000000000000000000000000000000000000000..c7cd173b535dc1c022c11af3e28f87c873b47085 GIT binary patch literal 618 zcmV-w0+s!VP)lljs}qbAYvrI3gk)J1R8+wf2xy=6wGy$O@@)TN^$ULr!e zD25OSGj&WM@Djb83}!Ot=3f53d^>DvrV`-;Uw)V8d3b)`=l4@0!eO8tO8qZ`Xf#Pj z$2*FP@0IuW2lgk4$exKrR`L5saFleqOUs^0ZT+~MIosPlFfh4?tNz?UES6$$@DqOj zm?uX+{=sHs ziqBGmQUHoy;hB!k2lc%zEmr|BIi0s@Xn55coJ|Mw3#z@ATsr_h%WHak!!%x*LcXjJ zN?ioNdaTGZIvQBBSY*O|sRYyX^hqgl+-lHu8%ky3y0joYzF{zLf@K5uxgSggiwR2+ z0J+xFH^)W;>WFFmqo!$Q6?H2@(V|4JDLU$GTdAtJjBmKH-8>1EIJ zXN}`cO_#A)a&~ImLLy;MS@|Su;zC3SF9g`wNW1U1dqO^69eH`?T@O+H{h6{!tV)^U zN>k-`@6>*8YrC;Wc%T7*VXTu#80dP=cGQEgufhM|Hym0H!2@*o%m4rY07*qoM6N<$ Ef*OAyl>h($ literal 0 HcmV?d00001 diff --git a/Source/Plugins/ColorPicker/BuilderPlug.cs b/Source/Plugins/ColorPicker/BuilderPlug.cs index f7af478..0fa187e 100644 --- a/Source/Plugins/ColorPicker/BuilderPlug.cs +++ b/Source/Plugins/ColorPicker/BuilderPlug.cs @@ -143,7 +143,7 @@ namespace CodeImp.DoomBuilder.ColorPicker if(formLocation.X == 0 && formLocation.Y == 0) { Size displaySize = General.Interface.Display.Size; - Point displayLocation = General.Interface.Display.LocationAbs; + Point displayLocation = General.Interface.Display.GetLocationAbs(); formLocation = new Point(displayLocation.X + displaySize.Width - form.Width - 16, displayLocation.Y + 16); } form.Location = formLocation; From cafa42dccddeda92b4b30ecdda35130046c99a8e Mon Sep 17 00:00:00 2001 From: sphere Date: Tue, 26 Oct 2021 02:45:09 +0200 Subject: [PATCH 2/3] fix --- Source/Core/Windows/ThingBrowser2Form.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Core/Windows/ThingBrowser2Form.cs b/Source/Core/Windows/ThingBrowser2Form.cs index a6f76c7..c6ebacf 100644 --- a/Source/Core/Windows/ThingBrowser2Form.cs +++ b/Source/Core/Windows/ThingBrowser2Form.cs @@ -128,7 +128,7 @@ namespace CodeImp.DoomBuilder.Windows // Flags ThingTypeInfo ti = General.Map.Data.GetThingInfoEx(s_thingType); IDictionary newFlags = (ti == null || ti.Flags.Count == 0) ? General.Map.Config.ThingFlags : ti.Flags; - flags.UpdateCheckboxes(newFlags); + flags.UpdateCheckboxes(newFlags, General.Map.Config.ThingFlags); anglelabel.Text = (ti == null) ? "Angle:" : ti.AngleText + ":"; flagsvallabel.Text = (ti == null) ? "Flags value:" : ti.FlagsValueText + ":"; foreach (CheckBox c in flags.Checkboxes) @@ -142,7 +142,7 @@ namespace CodeImp.DoomBuilder.Windows posZ.AllowNegative = General.Map.FormatInterface.MinThingHeight < 0; // Update... - flags.UpdateCheckboxes(newFlags); + flags.UpdateCheckboxes(newFlags, General.Map.Config.ThingFlags); if (ti != null) { flagsvallabel.Text = ti.FlagsValueText + ":"; @@ -318,7 +318,7 @@ namespace CodeImp.DoomBuilder.Windows return; IDictionary newFlags = (thinginfo == null || thinginfo.Flags.Count == 0) ? General.Map.Config.ThingFlags : thinginfo.Flags; - flags.UpdateCheckboxes(newFlags); + flags.UpdateCheckboxes(newFlags, General.Map.Config.ThingFlags); anglelabel.Text = (thinginfo == null) ? "Angle:" : thinginfo.AngleText + ":"; flagsvallabel.Text = (thinginfo == null) ? "Flags value:" : thinginfo.FlagsValueText + ":"; } From c71ff97b3e4007b7d5291fb2c2d9aaa15bbc305c Mon Sep 17 00:00:00 2001 From: spherallic Date: Fri, 25 Nov 2022 21:02:56 +0100 Subject: [PATCH 3/3] Fix resource mess --- Source/Core/Windows/MainForm.Designer.cs | 4 +++- .../BuilderModes/Properties/Resources.Designer.cs | 10 ++++++++++ Source/Plugins/BuilderModes/Properties/Resources.resx | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Source/Core/Windows/MainForm.Designer.cs b/Source/Core/Windows/MainForm.Designer.cs index 487eb41..24e50aa 100644 --- a/Source/Core/Windows/MainForm.Designer.cs +++ b/Source/Core/Windows/MainForm.Designer.cs @@ -182,9 +182,11 @@ namespace CodeImp.DoomBuilder.Windows this.buttonviewceilings = new System.Windows.Forms.ToolStripButton(); this.seperatorviews = new System.Windows.Forms.ToolStripSeparator(); this.buttontogglefixedthingsscale = new System.Windows.Forms.ToolStripButton(); - this.buttonsnaptogrid = new System.Windows.Forms.ToolStripButton(); + this.buttonsnaptogrid = new System.Windows.Forms.ToolStripButton(); + this.buttontoggledynamicgrid = new System.Windows.Forms.ToolStripButton(); this.buttonautomerge = new System.Windows.Forms.ToolStripButton(); this.buttonautoclearsidetextures = new System.Windows.Forms.ToolStripButton(); + this.buttontogglenightspath = new System.Windows.Forms.ToolStripButton(); this.seperatorgeometry = new System.Windows.Forms.ToolStripSeparator(); this.buttontogglefx = new System.Windows.Forms.ToolStripButton(); this.dynamiclightmode = new System.Windows.Forms.ToolStripSplitButton(); diff --git a/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs b/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs index 4727499..01546ab 100644 --- a/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs +++ b/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs @@ -530,6 +530,16 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Repeat { + get { + object obj = ResourceManager.GetObject("Repeat", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/Source/Plugins/BuilderModes/Properties/Resources.resx b/Source/Plugins/BuilderModes/Properties/Resources.resx index 41dac15..7f184c3 100644 --- a/Source/Plugins/BuilderModes/Properties/Resources.resx +++ b/Source/Plugins/BuilderModes/Properties/Resources.resx @@ -313,4 +313,10 @@ ..\Resources\VertexSlope.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Gear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Repeat.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file