merged plugin system into trunk

This commit is contained in:
codeimp 2008-01-02 21:49:43 +00:00
parent fb31b9b8e0
commit c5e990f1b7
133 changed files with 2267 additions and 795 deletions

View file

@ -1,16 +1,34 @@
shortcuts shortcuts
{ {
closemap = 0; builder_closemap = 0;
configuration = 116; builder_configuration = 117;
newmap = 131150; builder_newmap = 131150;
openmap = 131151; builder_openmap = 131151;
scrolleast = 39; builder_scrolleast = 39;
scrollnorth = 38; builder_scrollnorth = 38;
scrollsouth = 40; builder_scrollsouth = 40;
scrollwest = 37; builder_scrollwest = 37;
zoomin = 65530; builder_zoomin = 65530;
zoomout = 65531; builder_zoomout = 65531;
builder_preferences = 116;
builder_savemap = 0;
builder_savemapas = 0;
builder_savemapinto = 0;
builder_mapoptions = 113;
builder_reloadresources = 119;
builder_testaction = 123;
builder_cancelmode = 27;
builder_gridsetup = 71;
builder_undo = 131162;
builder_redo = 131161;
builder_togglesnap = 0;
builder_clearselection = 67;
builder_toggleautomerge = 0;
buildermodes_thingsmode = 84;
buildermodes_linedefsmode = 76;
buildermodes_verticesmode = 86;
buildermodes_sectorsmode = 83;
} }

View file

@ -3,6 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005 # Visual Studio 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Builder", "Source\Builder.csproj", "{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Builder", "Source\Builder.csproj", "{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuilderModes", "Source\BuilderModes\BuilderModes.csproj", "{B42D5AA0-F9A6-4234-9C4B-A05B11A64851}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -13,6 +15,10 @@ Global
{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Debug|Any CPU.Build.0 = Debug|Any CPU {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release|Any CPU.ActiveCfg = Release|Any CPU {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release|Any CPU.Build.0 = Release|Any CPU {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release|Any CPU.Build.0 = Release|Any CPU
{B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

BIN
Resources/Icons/WAuthor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

View file

@ -69,16 +69,13 @@
<Compile Include="Data\SimpleTextureImage.cs" /> <Compile Include="Data\SimpleTextureImage.cs" />
<Compile Include="Data\SpriteImage.cs" /> <Compile Include="Data\SpriteImage.cs" />
<Compile Include="Data\TextureImage.cs" /> <Compile Include="Data\TextureImage.cs" />
<Compile Include="Editing\DragVerticesMode.cs" />
<Compile Include="Editing\EditMode.cs" /> <Compile Include="Editing\EditMode.cs" />
<Compile Include="Editing\EditModeAttribute.cs" />
<Compile Include="Editing\EditModeInfo.cs" />
<Compile Include="Editing\GridSetup.cs" /> <Compile Include="Editing\GridSetup.cs" />
<Compile Include="Editing\LinedefsMode.cs" />
<Compile Include="Editing\SectorsMode.cs" />
<Compile Include="Editing\ThingsMode.cs" />
<Compile Include="Editing\UndoGroup.cs" /> <Compile Include="Editing\UndoGroup.cs" />
<Compile Include="Editing\UndoManager.cs" /> <Compile Include="Editing\UndoManager.cs" />
<Compile Include="Editing\UndoSnapshot.cs" /> <Compile Include="Editing\UndoSnapshot.cs" />
<Compile Include="Editing\VerticesMode.cs" />
<Compile Include="Editing\ClassicMode.cs" /> <Compile Include="Editing\ClassicMode.cs" />
<Compile Include="Controls\ActionDelegate.cs" /> <Compile Include="Controls\ActionDelegate.cs" />
<Compile Include="Controls\Action.cs" /> <Compile Include="Controls\Action.cs" />
@ -169,6 +166,7 @@
<Compile Include="Interface\ImageSelectorControl.Designer.cs"> <Compile Include="Interface\ImageSelectorControl.Designer.cs">
<DependentUpon>ImageSelectorControl.cs</DependentUpon> <DependentUpon>ImageSelectorControl.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Interface\IMainForm.cs" />
<Compile Include="Interface\LinedefEditForm.cs"> <Compile Include="Interface\LinedefEditForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -278,6 +276,8 @@
<Compile Include="Map\SidedefPart.cs" /> <Compile Include="Map\SidedefPart.cs" />
<Compile Include="Map\Thing.cs" /> <Compile Include="Map\Thing.cs" />
<Compile Include="Map\Vertex.cs" /> <Compile Include="Map\Vertex.cs" />
<Compile Include="Plugins\Plugin.cs" />
<Compile Include="Plugins\PluginManager.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs"> <Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
@ -292,6 +292,8 @@
<Compile Include="Rendering\D3DShader.cs" /> <Compile Include="Rendering\D3DShader.cs" />
<Compile Include="Rendering\FlatVertex.cs" /> <Compile Include="Rendering\FlatVertex.cs" />
<Compile Include="Rendering\ID3DResource.cs" /> <Compile Include="Rendering\ID3DResource.cs" />
<Compile Include="Rendering\IRenderer2D.cs" />
<Compile Include="Rendering\IRenderer3D.cs" />
<Compile Include="Rendering\PixelColor.cs" /> <Compile Include="Rendering\PixelColor.cs" />
<Compile Include="Rendering\PixelColorBlock.cs" /> <Compile Include="Rendering\PixelColorBlock.cs" />
<Compile Include="Rendering\Plotter.cs" /> <Compile Include="Rendering\Plotter.cs" />
@ -349,13 +351,9 @@
<None Include="Resources\Grid2.png" /> <None Include="Resources\Grid2.png" />
<None Include="Resources\Hourglass.png" /> <None Include="Resources\Hourglass.png" />
<None Include="Resources\Filter.png" /> <None Include="Resources\Filter.png" />
<None Include="Resources\ThingsMode.png" />
<None Include="Resources\Status1.png" /> <None Include="Resources\Status1.png" />
<None Include="Resources\Status2.png" /> <None Include="Resources\Status2.png" />
<None Include="Resources\Status0.png" /> <None Include="Resources\Status0.png" />
<None Include="Resources\VerticesMode.png" />
<None Include="Resources\SectorsMode.png" />
<None Include="Resources\LinesMode.png" />
<None Include="Resources\ColorPick.png" /> <None Include="Resources\ColorPick.png" />
<None Include="Resources\Zoom.png" /> <None Include="Resources\Zoom.png" />
<None Include="Resources\Properties.png" /> <None Include="Resources\Properties.png" />

View file

@ -0,0 +1,80 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{B42D5AA0-F9A6-4234-9C4B-A05B11A64851}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CodeImp.DoomBuilder.BuilderModes</RootNamespace>
<AssemblyName>BuilderModes</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Build\Plugins\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\..\Build\Plugins\</OutputPath>
<DefineConstants>
</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="Editing\DragVerticesMode.cs" />
<Compile Include="Editing\LinedefsMode.cs" />
<Compile Include="Editing\WAuthorMode.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Editing\SectorsMode.cs" />
<Compile Include="Editing\ThingsMode.cs" />
<Compile Include="Editing\VerticesMode.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Builder.csproj">
<Project>{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}</Project>
<Name>Builder</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\Actions.cfg" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\ThingsMode.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\VerticesMode.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\LinesMode.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\SectorsMode.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\WAuthor.png" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -30,6 +30,7 @@ using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering; using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.Geometry; using CodeImp.DoomBuilder.Geometry;
using System.Drawing; using System.Drawing;
using CodeImp.DoomBuilder.Editing;
#endregion #endregion
@ -37,8 +38,9 @@ using System.Drawing;
// This mode if for quickly dragging vertices without a layer. // This mode if for quickly dragging vertices without a layer.
// The geometry is merged and the mode returns to VerticesMode when the mouse is released. // The geometry is merged and the mode returns to VerticesMode when the mouse is released.
namespace CodeImp.DoomBuilder.Editing namespace CodeImp.DoomBuilder.BuilderModes.Editing
{ {
[EditMode]
public class DragVerticesMode : ClassicMode public class DragVerticesMode : ClassicMode
{ {
#region ================== Constants #region ================== Constants
@ -77,6 +79,9 @@ namespace CodeImp.DoomBuilder.Editing
#region ================== Properties #region ================== Properties
// Just keep the vertices mode button checked
public override string EditModeButtonName { get { return typeof(VerticesMode).Name; } }
#endregion #endregion
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
@ -116,7 +121,7 @@ namespace CodeImp.DoomBuilder.Editing
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public override void Dispose() public override void Dispose()
{ {
// Not already disposed? // Not already disposed?
@ -219,9 +224,6 @@ namespace CodeImp.DoomBuilder.Editing
public override void Engage() public override void Engage()
{ {
base.Engage(); base.Engage();
// Check vertices button on main window
General.MainWindow.SetVerticesChecked(true);
} }
// Disenagaging // Disenagaging
@ -256,10 +258,9 @@ namespace CodeImp.DoomBuilder.Editing
} }
// Hide highlight info // Hide highlight info
General.MainWindow.HideInfo(); General.Interface.HideInfo();
// Uncheck vertices button on main window // Done
General.MainWindow.SetVerticesChecked(false);
Cursor.Current = Cursors.Default; Cursor.Current = Cursors.Default;
} }
@ -287,8 +288,8 @@ namespace CodeImp.DoomBuilder.Editing
// This updates the dragging // This updates the dragging
private void Update() private void Update()
{ {
snaptogrid = General.MainWindow.ShiftState ^ General.MainWindow.SnapToGrid; snaptogrid = General.Interface.ShiftState ^ General.Interface.SnapToGrid;
snaptonearest = General.MainWindow.CtrlState; snaptonearest = General.Interface.CtrlState;
// Move selected geometry // Move selected geometry
if(MoveGeometryRelative(mousemappos - dragstartmappos, snaptogrid, snaptonearest)) if(MoveGeometryRelative(mousemappos - dragstartmappos, snaptogrid, snaptonearest))
@ -297,7 +298,7 @@ namespace CodeImp.DoomBuilder.Editing
General.Map.Map.Update(); General.Map.Map.Update();
// Redraw // Redraw
General.MainWindow.RedrawDisplay(); General.Interface.RedrawDisplay();
} }
} }
@ -325,16 +326,16 @@ namespace CodeImp.DoomBuilder.Editing
public override void KeyUp(KeyEventArgs e) public override void KeyUp(KeyEventArgs e)
{ {
base.KeyUp(e); base.KeyUp(e);
if(snaptogrid != General.MainWindow.ShiftState ^ General.MainWindow.SnapToGrid) Update(); if(snaptogrid != General.Interface.ShiftState ^ General.Interface.SnapToGrid) Update();
if(snaptonearest != General.MainWindow.CtrlState) Update(); if(snaptonearest != General.Interface.CtrlState) Update();
} }
// When a key is pressed // When a key is pressed
public override void KeyDown(KeyEventArgs e) public override void KeyDown(KeyEventArgs e)
{ {
base.KeyDown(e); base.KeyDown(e);
if(snaptogrid != General.MainWindow.ShiftState ^ General.MainWindow.SnapToGrid) Update(); if(snaptogrid != General.Interface.ShiftState ^ General.Interface.SnapToGrid) Update();
if(snaptonearest != General.MainWindow.CtrlState) Update(); if(snaptonearest != General.Interface.CtrlState) Update();
} }
#endregion #endregion

View file

@ -29,11 +29,16 @@ using CodeImp.DoomBuilder.IO;
using CodeImp.DoomBuilder.Map; using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering; using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.Geometry; using CodeImp.DoomBuilder.Geometry;
using CodeImp.DoomBuilder.Editing;
#endregion #endregion
namespace CodeImp.DoomBuilder.Editing namespace CodeImp.DoomBuilder.BuilderModes.Editing
{ {
[EditMode(SwitchAction = "linedefsmode",
ButtonDesc = "Linedefs Mode",
ButtonImage = "LinesMode.png",
ButtonOrder = int.MinValue + 1)]
public class LinedefsMode : ClassicMode public class LinedefsMode : ClassicMode
{ {
#region ================== Constants #region ================== Constants
@ -60,7 +65,7 @@ namespace CodeImp.DoomBuilder.Editing
{ {
} }
// Diposer // Disposer
public override void Dispose() public override void Dispose()
{ {
// Not already disposed? // Not already disposed?
@ -90,9 +95,6 @@ namespace CodeImp.DoomBuilder.Editing
public override void Engage() public override void Engage()
{ {
base.Engage(); base.Engage();
// Check linedefs button on main window
General.MainWindow.SetLinedefsChecked(true);
} }
// Mode disengages // Mode disengages
@ -117,10 +119,7 @@ namespace CodeImp.DoomBuilder.Editing
} }
// Hide highlight info // Hide highlight info
General.MainWindow.HideInfo(); General.Interface.HideInfo();
// Uncheck linedefs button on main window
General.MainWindow.SetLinedefsChecked(false);
} }
// This redraws the display // This redraws the display
@ -179,9 +178,9 @@ namespace CodeImp.DoomBuilder.Editing
// Show highlight info // Show highlight info
if((highlighted != null) && !highlighted.IsDisposed) if((highlighted != null) && !highlighted.IsDisposed)
General.MainWindow.ShowLinedefInfo(highlighted); General.Interface.ShowLinedefInfo(highlighted);
else else
General.MainWindow.HideInfo(); General.Interface.HideInfo();
} }
// Mouse moves // Mouse moves
@ -242,7 +241,7 @@ namespace CodeImp.DoomBuilder.Editing
// Make this the only selection // Make this the only selection
General.Map.Map.ClearSelectedLinedefs(); General.Map.Map.ClearSelectedLinedefs();
highlighted.Selected = true; highlighted.Selected = true;
General.MainWindow.RedrawDisplay(); General.Interface.RedrawDisplay();
} }
// Update display // Update display
@ -286,13 +285,13 @@ namespace CodeImp.DoomBuilder.Editing
if(selected.Count > 0) if(selected.Count > 0)
{ {
// Show line edit dialog // Show line edit dialog
LinedefEditForm.EditLinedefs(General.MainWindow, selected); General.Interface.ShowEditLinedefs(selected);
// When a single line was selected, deselect it now // When a single line was selected, deselect it now
if(selected.Count == 1) General.Map.Map.ClearSelectedLinedefs(); if(selected.Count == 1) General.Map.Map.ClearSelectedLinedefs();
// Update entire display // Update entire display
General.MainWindow.RedrawDisplay(); General.Interface.RedrawDisplay();
} }
} }
} }

View file

@ -29,11 +29,16 @@ using CodeImp.DoomBuilder.IO;
using CodeImp.DoomBuilder.Map; using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering; using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.Geometry; using CodeImp.DoomBuilder.Geometry;
using CodeImp.DoomBuilder.Editing;
#endregion #endregion
namespace CodeImp.DoomBuilder.Editing namespace CodeImp.DoomBuilder.BuilderModes.Editing
{ {
[EditMode(SwitchAction = "sectorsmode",
ButtonDesc = "Sectors Mode",
ButtonImage = "SectorsMode.png",
ButtonOrder = int.MinValue + 2)]
public class SectorsMode : ClassicMode public class SectorsMode : ClassicMode
{ {
#region ================== Constants #region ================== Constants
@ -58,7 +63,7 @@ namespace CodeImp.DoomBuilder.Editing
{ {
} }
// Diposer // Disposer
public override void Dispose() public override void Dispose()
{ {
// Not already disposed? // Not already disposed?
@ -88,9 +93,6 @@ namespace CodeImp.DoomBuilder.Editing
public override void Engage() public override void Engage()
{ {
base.Engage(); base.Engage();
// Check sectors button on main window
General.MainWindow.SetSectorsChecked(true);
} }
// Mode disengages // Mode disengages
@ -115,10 +117,7 @@ namespace CodeImp.DoomBuilder.Editing
} }
// Hide highlight info // Hide highlight info
General.MainWindow.HideInfo(); General.Interface.HideInfo();
// Uncheck sectors button on main window
General.MainWindow.SetSectorsChecked(false);
} }
// This redraws the display // This redraws the display
@ -181,9 +180,9 @@ namespace CodeImp.DoomBuilder.Editing
// Show highlight info // Show highlight info
if((highlighted != null) && !highlighted.IsDisposed) if((highlighted != null) && !highlighted.IsDisposed)
General.MainWindow.ShowSectorInfo(highlighted); General.Interface.ShowSectorInfo(highlighted);
else else
General.MainWindow.HideInfo(); General.Interface.HideInfo();
} }
// Mouse moves // Mouse moves

View file

@ -29,11 +29,16 @@ using CodeImp.DoomBuilder.IO;
using CodeImp.DoomBuilder.Map; using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering; using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.Geometry; using CodeImp.DoomBuilder.Geometry;
using CodeImp.DoomBuilder.Editing;
#endregion #endregion
namespace CodeImp.DoomBuilder.Editing namespace CodeImp.DoomBuilder.BuilderModes.Editing
{ {
[EditMode(SwitchAction = "thingsmode",
ButtonDesc = "Things Mode",
ButtonImage = "ThingsMode.png",
ButtonOrder = int.MinValue + 3)]
public class ThingsMode : ClassicMode public class ThingsMode : ClassicMode
{ {
#region ================== Constants #region ================== Constants
@ -60,7 +65,7 @@ namespace CodeImp.DoomBuilder.Editing
{ {
} }
// Diposer // Disposer
public override void Dispose() public override void Dispose()
{ {
// Not already disposed? // Not already disposed?
@ -90,9 +95,6 @@ namespace CodeImp.DoomBuilder.Editing
public override void Engage() public override void Engage()
{ {
base.Engage(); base.Engage();
// Check things button on main window
General.MainWindow.SetThingsChecked(true);
} }
// Mode disengages // Mode disengages
@ -101,10 +103,7 @@ namespace CodeImp.DoomBuilder.Editing
base.Disengage(); base.Disengage();
// Hide highlight info // Hide highlight info
General.MainWindow.HideInfo(); General.Interface.HideInfo();
// Uncheck things button on main window
General.MainWindow.SetThingsChecked(false);
} }
// This redraws the display // This redraws the display
@ -153,9 +152,9 @@ namespace CodeImp.DoomBuilder.Editing
// Show highlight info // Show highlight info
if((highlighted != null) && !highlighted.IsDisposed) if((highlighted != null) && !highlighted.IsDisposed)
General.MainWindow.ShowThingInfo(highlighted); General.Interface.ShowThingInfo(highlighted);
else else
General.MainWindow.HideInfo(); General.Interface.HideInfo();
} }
// Mouse moves // Mouse moves
@ -214,7 +213,7 @@ namespace CodeImp.DoomBuilder.Editing
// Make this the only selection // Make this the only selection
General.Map.Map.ClearSelectedThings(); General.Map.Map.ClearSelectedThings();
highlighted.Selected = true; highlighted.Selected = true;
General.MainWindow.RedrawDisplay(); General.Interface.RedrawDisplay();
} }
// Update display // Update display
@ -259,7 +258,7 @@ namespace CodeImp.DoomBuilder.Editing
if(selected.Count == 1) General.Map.Map.ClearSelectedThings(); if(selected.Count == 1) General.Map.Map.ClearSelectedThings();
// Update entire display // Update entire display
General.MainWindow.RedrawDisplay(); General.Interface.RedrawDisplay();
} }
} }
} }

View file

@ -29,11 +29,16 @@ using CodeImp.DoomBuilder.IO;
using CodeImp.DoomBuilder.Map; using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering; using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.Geometry; using CodeImp.DoomBuilder.Geometry;
using CodeImp.DoomBuilder.Editing;
#endregion #endregion
namespace CodeImp.DoomBuilder.Editing namespace CodeImp.DoomBuilder.BuilderModes.Editing
{ {
[EditMode(SwitchAction = "verticesmode",
ButtonDesc = "Vertices Mode",
ButtonImage = "VerticesMode.png",
ButtonOrder = int.MinValue + 0)]
public class VerticesMode : ClassicMode public class VerticesMode : ClassicMode
{ {
#region ================== Constants #region ================== Constants
@ -60,7 +65,7 @@ namespace CodeImp.DoomBuilder.Editing
{ {
} }
// Diposer // Disposer
public override void Dispose() public override void Dispose()
{ {
// Not already disposed? // Not already disposed?
@ -90,9 +95,6 @@ namespace CodeImp.DoomBuilder.Editing
public override void Engage() public override void Engage()
{ {
base.Engage(); base.Engage();
// Check vertices button on main window
General.MainWindow.SetVerticesChecked(true);
} }
// Mode disengages // Mode disengages
@ -117,10 +119,7 @@ namespace CodeImp.DoomBuilder.Editing
} }
// Hide highlight info // Hide highlight info
General.MainWindow.HideInfo(); General.Interface.HideInfo();
// Uncheck vertices button on main window
General.MainWindow.SetVerticesChecked(false);
} }
// This redraws the display // This redraws the display
@ -169,9 +168,9 @@ namespace CodeImp.DoomBuilder.Editing
// Show highlight info // Show highlight info
if((highlighted != null) && !highlighted.IsDisposed) if((highlighted != null) && !highlighted.IsDisposed)
General.MainWindow.ShowVertexInfo(highlighted); General.Interface.ShowVertexInfo(highlighted);
else else
General.MainWindow.HideInfo(); General.Interface.HideInfo();
} }
// Mouse moves // Mouse moves

View file

@ -0,0 +1,353 @@
#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;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using CodeImp.DoomBuilder.Interface;
using CodeImp.DoomBuilder.IO;
using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.Geometry;
using CodeImp.DoomBuilder.Editing;
#endregion
namespace CodeImp.DoomBuilder.BuilderModes.Editing
{
[EditMode(SwitchAction = "wauthormode",
ButtonDesc = "WadAuthor Mode",
ButtonImage = "WAuthor.png",
ButtonOrder = int.MinValue + 4,
ConfigSpecific = true)]
public class WAuthorMode : ClassicMode
{
#region ================== Constants
protected const float LINEDEF_HIGHLIGHT_RANGE = 10f;
protected const float VERTEX_HIGHLIGHT_RANGE = 8f;
protected const float THING_HIGHLIGHT_RANGE = 2f;
#endregion
#region ================== Variables
// Highlighted item
protected object highlighted;
#endregion
#region ================== Properties
#endregion
#region ================== Constructor / Disposer
// Constructor
public WAuthorMode()
{
// Initialize
// We have no destructor
GC.SuppressFinalize(this);
}
// Disposer
public override void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Clean up
// Dispose base
base.Dispose();
}
}
#endregion
#region ================== Methods
// Cancel mode
public override void Cancel()
{
base.Cancel();
// Return to this mode
General.Map.ChangeMode(new WAuthorMode());
}
// Mode engages
public override void Engage()
{
base.Engage();
}
// Mode disengages
public override void Disengage()
{
base.Disengage();
// Clear selected vertices
General.Map.Map.ClearAllSelected();
// Hide highlight info
General.Interface.HideInfo();
}
// This redraws the display
public unsafe override void RedrawDisplay()
{
// Start with a clear display
if(renderer.Start(true, true))
{
// Render things
renderer.SetThingsRenderOrder(true);
renderer.RenderThingSet(General.Map.Map.Things);
// Render lines and vertices
renderer.RenderLinedefSet(General.Map.Map.Linedefs);
renderer.RenderVerticesSet(General.Map.Map.Vertices);
// Render highlighted item
if(highlighted != null) DrawHighlight(true);
// Done
renderer.Finish();
}
}
// This draws the highlighted item
protected void DrawHighlight(bool highlightcolor)
{
// With highlight color
if(highlightcolor)
{
// Vertex
if(highlighted is Vertex)
{
if((highlighted as Vertex).IsDisposed) return;
renderer.RenderVertex(highlighted as Vertex, ColorCollection.HIGHLIGHT);
}
// Linedef
else if(highlighted is Linedef)
{
if((highlighted as Linedef).IsDisposed) return;
renderer.RenderLinedef((highlighted as Linedef), General.Colors.Highlight);
renderer.RenderVertex((highlighted as Linedef).Start, renderer.DetermineVertexColor((highlighted as Linedef).Start));
renderer.RenderVertex((highlighted as Linedef).End, renderer.DetermineVertexColor((highlighted as Linedef).End));
}
// Sector
else if(highlighted is Sector)
{
if((highlighted as Sector).IsDisposed) return;
renderer.RenderSector((highlighted as Sector), General.Colors.Highlight);
}
// Thing
else if(highlighted is Thing)
{
if((highlighted as Thing).IsDisposed) return;
renderer.RenderThing((highlighted as Thing), General.Colors.Highlight);
}
}
// With original color
else
{
// Vertex
if(highlighted is Vertex)
{
if((highlighted as Vertex).IsDisposed) return;
renderer.RenderVertex(highlighted as Vertex, renderer.DetermineVertexColor(highlighted as Vertex));
}
// Linedef
else if(highlighted is Linedef)
{
if((highlighted as Linedef).IsDisposed) return;
renderer.RenderLinedef((highlighted as Linedef), renderer.DetermineLinedefColor((highlighted as Linedef)));
renderer.RenderVertex((highlighted as Linedef).Start, renderer.DetermineVertexColor((highlighted as Linedef).Start));
renderer.RenderVertex((highlighted as Linedef).End, renderer.DetermineVertexColor((highlighted as Linedef).End));
}
// Sector
else if(highlighted is Sector)
{
if((highlighted as Sector).IsDisposed) return;
renderer.RenderSector((highlighted as Sector));
}
// Thing
else if(highlighted is Thing)
{
if((highlighted as Thing).IsDisposed) return;
renderer.RenderThing((highlighted as Thing), renderer.DetermineThingColor((highlighted as Thing)));
}
}
}
// This highlights a new item
protected void Highlight(object h)
{
// Changes?
if(highlighted != h)
{
// Update display
if(renderer.Start(false, false))
{
// Undraw previous highlight
if(highlighted != null) DrawHighlight(false);
// Set new highlight
highlighted = h;
// Render highlighted item
if(highlighted != null) DrawHighlight(true);
// Done
renderer.Finish();
}
// Hide info
General.Interface.HideInfo();
// Anything highlighted?
if(highlighted != null)
{
// Show highlight info
if(highlighted is Vertex)
General.Interface.ShowVertexInfo(highlighted as Vertex);
else if(highlighted is Linedef)
General.Interface.ShowLinedefInfo(highlighted as Linedef);
else if(highlighted is Sector)
General.Interface.ShowSectorInfo(highlighted as Sector);
else if(highlighted is Thing)
General.Interface.ShowThingInfo(highlighted as Thing);
}
}
}
// Mouse moves
public override void MouseMove(MouseEventArgs e)
{
base.MouseMove(e);
// Not holding any buttons?
if(e.Button == MouseButtons.None)
{
// Find the nearest items within highlight range
Vertex v = General.Map.Map.NearestVertexSquareRange(mousemappos, VERTEX_HIGHLIGHT_RANGE / renderer.Scale);
Thing t = General.Map.Map.NearestThingSquareRange(mousemappos, THING_HIGHLIGHT_RANGE / renderer.Scale);
Linedef l = General.Map.Map.NearestLinedef(mousemappos);
Sector s;
// Check on which side of the linedef the mouse is
float side = l.SideOfLine(mousemappos);
if(side > 0)
{
// Is there a sidedef here?
if(l.Back != null) s = l.Back.Sector;
else s = null;
}
else
{
// Is there a sidedef here?
if(l.Front != null) s = l.Front.Sector;
else s = null;
}
// Both a vertex and thing in range?
if((v != null) && (t != null))
{
// Highlight closest
float vd = v.DistanceToSq(mousemappos);
float td = t.DistanceToSq(mousemappos);
if(vd < td) Highlight(v); else Highlight(t);
}
// Vertex in range?
else if(v != null)
{
// Highlight vertex
Highlight(v);
}
// Thing in range?
else if(t != null)
{
// Highlight thing
Highlight(t);
}
else
{
// Linedef within in range?
float ld = l.DistanceTo(mousemappos, true);
if(ld < (LINEDEF_HIGHLIGHT_RANGE / renderer.Scale))
{
// Highlight line
Highlight(l);
}
// Mouse inside a sector?
else if(s != null)
{
// Highlight sector
Highlight(s);
}
else
{
// Highlight nothing
Highlight(null);
}
}
}
}
// Maybe i'll finish this later, or not even include this mode at all, not sure yet.
/*
// Mouse leaves
public override void MouseLeave(EventArgs e)
{
base.MouseLeave(e);
// Highlight nothing
Highlight(null);
}
// Mouse button pressed
public override void MouseDown(MouseEventArgs e)
{
base.MouseDown(e);
}
// Mouse released
public override void MouseUp(MouseEventArgs e)
{
base.MouseUp(e);
}
// Mouse wants to drag
protected override void DragStart(MouseEventArgs e)
{
base.DragStart(e);
}
*/
#endregion
}
}

View file

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Builder Modes")]
[assembly: AssemblyDescription("Doom Builder Editing Modes")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("CodeImp")]
[assembly: AssemblyProduct("Doom Builder")]
[assembly: AssemblyCopyright("Copyright © 2007")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("30d96659-77e7-4921-a52f-a854c1a36b7d")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]

View file

@ -0,0 +1,51 @@
/******************************************\
Doom Builder Actions Configuration
\******************************************/
// This just defines which actions there are and what description they have
// The source code will bind to these actions with delegates (function pointers)
verticesmode
{
title = "Edit: Vertices Mode";
description = "Switches to vertices editing mode.";
allowkeys = true;
allowmouse = true;
allowscroll = true;
}
linedefsmode
{
title = "Edit: Linedefs Mode";
description = "Switches to linedefs editing mode.";
allowkeys = true;
allowmouse = true;
allowscroll = true;
}
sectorsmode
{
title = "Edit: Sectors Mode";
description = "Switches to sectors editing mode.";
allowkeys = true;
allowmouse = true;
allowscroll = true;
}
thingsmode
{
title = "Edit: Things Mode";
description = "Switches to things editing mode.";
allowkeys = true;
allowmouse = true;
allowscroll = true;
}
wauthormode
{
title = "Edit: WadAuthor Mode";
description = "Switches to Wad Author editing mode.";
allowkeys = true;
allowmouse = true;
allowscroll = true;
}

View file

Before

Width:  |  Height:  |  Size: 300 B

After

Width:  |  Height:  |  Size: 300 B

View file

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 B

View file

Before

Width:  |  Height:  |  Size: 212 B

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

View file

@ -30,7 +30,7 @@ using System.Diagnostics;
namespace CodeImp.DoomBuilder.Config namespace CodeImp.DoomBuilder.Config
{ {
public class CompilerInfo internal class CompilerInfo
{ {
#region ================== Constants #region ================== Constants

View file

@ -29,7 +29,7 @@ using System.IO;
namespace CodeImp.DoomBuilder.Config namespace CodeImp.DoomBuilder.Config
{ {
public class ConfigurationInfo : IComparable<ConfigurationInfo> internal class ConfigurationInfo : IComparable<ConfigurationInfo>
{ {
#region ================== Variables #region ================== Variables

View file

@ -113,7 +113,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public GameConfiguration(Configuration cfg) internal GameConfiguration(Configuration cfg)
{ {
// Initialize // Initialize
this.cfg = cfg; this.cfg = cfg;
@ -393,6 +393,12 @@ namespace CodeImp.DoomBuilder.Config
return null; return null;
} }
// This checks if a specific edit mode class is listed
public bool IsEditModeSpecified(string classname)
{
return cfg.SettingExists("additionalmodes." + classname.ToString(CultureInfo.InvariantCulture));
}
#endregion #endregion
} }
} }

View file

@ -30,7 +30,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public GeneralActionBit(int index, string title) internal GeneralActionBit(int index, string title)
{ {
// Initialize // Initialize
this.index = index; this.index = index;

View file

@ -7,7 +7,7 @@ using CodeImp.DoomBuilder.IO;
namespace CodeImp.DoomBuilder.Config namespace CodeImp.DoomBuilder.Config
{ {
public class GeneralActionCategory : IDisposable public class GeneralActionCategory
{ {
#region ================== Constants #region ================== Constants
@ -39,7 +39,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public GeneralActionCategory(string name, Configuration cfg) internal GeneralActionCategory(string name, Configuration cfg)
{ {
IDictionary opts; IDictionary opts;
@ -67,8 +67,8 @@ namespace CodeImp.DoomBuilder.Config
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public void Dispose() internal void Dispose()
{ {
// Not already disposed? // Not already disposed?
if(!isdisposed) if(!isdisposed)

View file

@ -56,7 +56,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public GeneralActionOption(string cat, string name, IDictionary bitslist) internal GeneralActionOption(string cat, string name, IDictionary bitslist)
{ {
int index; int index;

View file

@ -32,7 +32,7 @@ using CodeImp.DoomBuilder.Rendering;
namespace CodeImp.DoomBuilder.Config namespace CodeImp.DoomBuilder.Config
{ {
public class LinedefActionCategory : IDisposable, IComparable<LinedefActionCategory> public class LinedefActionCategory : IComparable<LinedefActionCategory>
{ {
#region ================== Constants #region ================== Constants
@ -62,7 +62,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public LinedefActionCategory(string name) internal LinedefActionCategory(string name)
{ {
// Initialize // Initialize
this.name = name; this.name = name;
@ -72,8 +72,8 @@ namespace CodeImp.DoomBuilder.Config
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public void Dispose() internal void Dispose()
{ {
// Not already disposed? // Not already disposed?
if(!isdisposed) if(!isdisposed)
@ -91,7 +91,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Methods #region ================== Methods
// This adds an action to this category // This adds an action to this category
public void Add(LinedefActionInfo a) internal void Add(LinedefActionInfo a)
{ {
// Make it so. // Make it so.
actions.Add(a); actions.Add(a);

View file

@ -68,7 +68,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public LinedefActionInfo(int index, string desc) internal LinedefActionInfo(int index, string desc)
{ {
string[] parts; string[] parts;
int p = 0; int p = 0;
@ -103,7 +103,7 @@ namespace CodeImp.DoomBuilder.Config
} }
// Constructor // Constructor
public LinedefActionInfo(int index, Configuration cfg) internal LinedefActionInfo(int index, Configuration cfg)
{ {
string actionsetting = "linedeftypes." + index.ToString(CultureInfo.InvariantCulture); string actionsetting = "linedeftypes." + index.ToString(CultureInfo.InvariantCulture);
string desc; string desc;

View file

@ -56,7 +56,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public LinedefActivateInfo(int index, string title) internal LinedefActivateInfo(int index, string title)
{ {
// Initialize // Initialize
this.index = index; this.index = index;

View file

@ -31,7 +31,7 @@ using System.Windows.Forms;
namespace CodeImp.DoomBuilder.Config namespace CodeImp.DoomBuilder.Config
{ {
public class NodebuilderInfo : IComparable<NodebuilderInfo> internal class NodebuilderInfo : IComparable<NodebuilderInfo>
{ {
#region ================== Constants #region ================== Constants

View file

@ -51,17 +51,17 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Properties #region ================== Properties
public Configuration Config { get { return cfg; } } internal Configuration Config { get { return cfg; } }
public int UndoLevels { get { return undolevels; } set { undolevels = value; } } public int UndoLevels { get { return undolevels; } internal set { undolevels = value; } }
public bool BlackBrowsers { get { return blackbrowsers; } set { blackbrowsers = value; } } public bool BlackBrowsers { get { return blackbrowsers; } internal set { blackbrowsers = value; } }
public float StitchDistance { get { return stitchdistance; } set { stitchdistance = value; } } public float StitchDistance { get { return stitchdistance; } internal set { stitchdistance = value; } }
#endregion #endregion
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public ProgramConfiguration() internal ProgramConfiguration()
{ {
// We have no destructor // We have no destructor
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
@ -72,7 +72,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Loading / Saving #region ================== Loading / Saving
// This loads the program configuration // This loads the program configuration
public bool Load(string cfgfilepathname, string defaultfilepathname) internal bool Load(string cfgfilepathname, string defaultfilepathname)
{ {
// First parse it // First parse it
if(Read(cfgfilepathname, defaultfilepathname)) if(Read(cfgfilepathname, defaultfilepathname))
@ -93,7 +93,7 @@ namespace CodeImp.DoomBuilder.Config
} }
// This saves the program configuration // This saves the program configuration
public void Save(string filepathname) internal void Save(string filepathname)
{ {
// Write the cache variables // Write the cache variables
cfg.WriteSetting("blackbrowsers", blackbrowsers); cfg.WriteSetting("blackbrowsers", blackbrowsers);
@ -171,8 +171,8 @@ namespace CodeImp.DoomBuilder.Config
public IDictionary ReadSetting(string setting, IDictionary defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); } public IDictionary ReadSetting(string setting, IDictionary defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); }
// WriteSetting // WriteSetting
public bool WriteSetting(string setting, object settingvalue) { return cfg.WriteSetting(setting, settingvalue); } internal bool WriteSetting(string setting, object settingvalue) { return cfg.WriteSetting(setting, settingvalue); }
public bool WriteSetting(string setting, object settingvalue, string pathseperator) { return cfg.WriteSetting(setting, settingvalue, pathseperator); } internal bool WriteSetting(string setting, object settingvalue, string pathseperator) { return cfg.WriteSetting(setting, settingvalue, pathseperator); }
#endregion #endregion
} }

View file

@ -32,7 +32,7 @@ using CodeImp.DoomBuilder.Rendering;
namespace CodeImp.DoomBuilder.Config namespace CodeImp.DoomBuilder.Config
{ {
public class ThingCategory : IDisposable public class ThingCategory
{ {
#region ================== Constants #region ================== Constants
@ -84,7 +84,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public ThingCategory(Configuration cfg, string name) internal ThingCategory(Configuration cfg, string name)
{ {
IDictionary dic; IDictionary dic;
int index; int index;
@ -136,7 +136,7 @@ namespace CodeImp.DoomBuilder.Config
} }
// Disposer // Disposer
public void Dispose() internal void Dispose()
{ {
// Not already disposed? // Not already disposed?
if(!isdisposed) if(!isdisposed)
@ -154,7 +154,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Methods #region ================== Methods
// This adds a thing to the category // This adds a thing to the category
public void AddThing(ThingTypeInfo t) internal void AddThing(ThingTypeInfo t)
{ {
// Add // Add
things.Add(t); things.Add(t);

View file

@ -75,7 +75,7 @@ namespace CodeImp.DoomBuilder.Config
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public ThingTypeInfo(int index) internal ThingTypeInfo(int index)
{ {
// Initialize // Initialize
this.index = index; this.index = index;
@ -98,7 +98,7 @@ namespace CodeImp.DoomBuilder.Config
} }
// Constructor // Constructor
public ThingTypeInfo(ThingCategory cat, int index, Configuration cfg) internal ThingTypeInfo(ThingCategory cat, int index, Configuration cfg)
{ {
string key = index.ToString(CultureInfo.InvariantCulture); string key = index.ToString(CultureInfo.InvariantCulture);

View file

@ -27,7 +27,7 @@ using System.Windows.Forms;
namespace CodeImp.DoomBuilder.Controls namespace CodeImp.DoomBuilder.Controls
{ {
public class Action internal class Action
{ {
#region ================== Variables #region ================== Variables

View file

@ -34,9 +34,16 @@ namespace CodeImp.DoomBuilder.Controls
// The action to bind to // The action to bind to
private string action; private string action;
private bool baseaction;
#endregion #endregion
#region ================== Properties
public bool BaseAction { get { return baseaction; } set { baseaction = value; } }
#endregion
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
@ -44,21 +51,52 @@ namespace CodeImp.DoomBuilder.Controls
{ {
// Initialize // Initialize
this.action = action; this.action = action;
this.baseaction = false;
} }
#endregion #endregion
#region ================== Methods
// This makes the proper name
public string GetFullActionName(Assembly asm)
{
string asmname;
if(baseaction)
asmname = General.ThisAssembly.GetName().Name.ToLowerInvariant();
else
asmname = asm.GetName().Name.ToLowerInvariant();
return asmname + "_" + action;
}
#endregion
#region ================== Static Methods #region ================== Static Methods
// This makes the proper name
public string GetFullActionName(Assembly asm, bool baseaction, string actionname)
{
string asmname;
if(baseaction)
asmname = General.ThisAssembly.GetName().Name.ToLowerInvariant();
else
asmname = asm.GetName().Name.ToLowerInvariant();
return asmname + "_" + actionname;
}
// This binds all methods marked with this attribute // This binds all methods marked with this attribute
public static void BindMethods(Type type) internal static void BindMethods(Type type)
{ {
// Bind static methods // Bind static methods
BindMethods(null, type); BindMethods(null, type);
} }
// This binds all methods marked with this attribute // This binds all methods marked with this attribute
public static void BindMethods(object obj) internal static void BindMethods(object obj)
{ {
// Bind instance methods // Bind instance methods
BindMethods(obj, obj.GetType()); BindMethods(obj, obj.GetType());
@ -70,14 +108,15 @@ namespace CodeImp.DoomBuilder.Controls
MethodInfo[] methods; MethodInfo[] methods;
ActionAttribute[] attrs; ActionAttribute[] attrs;
ActionDelegate del; ActionDelegate del;
string actionname;
if(obj == null) if(obj == null)
General.WriteLogLine("Binding static action methods for class " + type.Name + "..."); General.WriteLogLine("Binding static action methods for class " + type.Name + "...");
else else
General.WriteLogLine("Binding action methods for " + type.Name + " object..."); General.WriteLogLine("Binding action methods for " + type.Name + " object...");
// Go for all methods on obj // Go for all methods on obj
methods = type.GetMethods(); methods = type.GetMethods(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static);
foreach(MethodInfo m in methods) foreach(MethodInfo m in methods)
{ {
// Check if the method has this attribute // Check if the method has this attribute
@ -89,24 +128,42 @@ namespace CodeImp.DoomBuilder.Controls
// Create a delegate for this method // Create a delegate for this method
del = (ActionDelegate)Delegate.CreateDelegate(typeof(ActionDelegate), obj, m); del = (ActionDelegate)Delegate.CreateDelegate(typeof(ActionDelegate), obj, m);
// Make proper name
actionname = a.GetFullActionName(type.Assembly);
// Bind method to action // Bind method to action
if(General.Actions.Exists(a.action)) if(General.Actions.Exists(actionname))
General.Actions[a.action].Bind(del); General.Actions[actionname].Bind(del);
else else
throw new ArgumentException("Could not bind " + m.ReflectedType.Name + "." + m.Name + " to action \"" + a.action + "\", that action does not exist! Refer to, or edit Actions.cfg for all available application actions."); throw new ArgumentException("Could not bind " + m.ReflectedType.Name + "." + m.Name + " to action \"" + actionname + "\", that action does not exist! Refer to, or edit Actions.cfg for all available application actions.");
} }
} }
} }
// This binds a delegate manually
internal static void BindDelegate(Assembly asm, ActionDelegate d, ActionAttribute a)
{
string actionname;
// Make proper name
actionname = a.GetFullActionName(asm);
// Bind delegate to action
if(General.Actions.Exists(actionname))
General.Actions[actionname].Bind(d);
else
throw new ArgumentException("Could not bind delegate for " + d.Method.Name + " to action \"" + actionname + "\", that action does not exist! Refer to, or edit Actions.cfg for all available application actions.");
}
// This unbinds all methods marked with this attribute // This unbinds all methods marked with this attribute
public static void UnbindMethods(Type type) internal static void UnbindMethods(Type type)
{ {
// Unbind static methods // Unbind static methods
UnbindMethods(null, type); UnbindMethods(null, type);
} }
// This unbinds all methods marked with this attribute // This unbinds all methods marked with this attribute
public static void UnbindMethods(object obj) internal static void UnbindMethods(object obj)
{ {
// Unbind instance methods // Unbind instance methods
UnbindMethods(obj, obj.GetType()); UnbindMethods(obj, obj.GetType());
@ -118,6 +175,7 @@ namespace CodeImp.DoomBuilder.Controls
MethodInfo[] methods; MethodInfo[] methods;
ActionAttribute[] attrs; ActionAttribute[] attrs;
ActionDelegate del; ActionDelegate del;
string actionname;
if(obj == null) if(obj == null)
General.WriteLogLine("Unbinding static action methods for class " + type.Name + "..."); General.WriteLogLine("Unbinding static action methods for class " + type.Name + "...");
@ -137,11 +195,26 @@ namespace CodeImp.DoomBuilder.Controls
// Create a delegate for this method // Create a delegate for this method
del = (ActionDelegate)Delegate.CreateDelegate(typeof(ActionDelegate), obj, m); del = (ActionDelegate)Delegate.CreateDelegate(typeof(ActionDelegate), obj, m);
// Make proper name
actionname = a.GetFullActionName(type.Assembly);
// Unbind method from action // Unbind method from action
General.Actions[a.action].Unbind(del); General.Actions[actionname].Unbind(del);
} }
} }
} }
// This unbinds a delegate manually
internal static void UnbindDelegate(Assembly asm, ActionDelegate d, ActionAttribute a)
{
string actionname;
// Make proper name
actionname = a.GetFullActionName(asm);
// Unbind delegate to action
General.Actions[actionname].Unbind(d);
}
#endregion #endregion
} }

View file

@ -26,5 +26,5 @@ using System.Text;
namespace CodeImp.DoomBuilder.Controls namespace CodeImp.DoomBuilder.Controls
{ {
public delegate void ActionDelegate(); internal delegate void ActionDelegate();
} }

View file

@ -25,15 +25,18 @@ using CodeImp.DoomBuilder.Properties;
using System.IO; using System.IO;
using CodeImp.DoomBuilder.IO; using CodeImp.DoomBuilder.IO;
using System.Collections; using System.Collections;
using System.Reflection;
#endregion #endregion
namespace CodeImp.DoomBuilder.Controls namespace CodeImp.DoomBuilder.Controls
{ {
public class ActionManager : IDisposable internal class ActionManager
{ {
#region ================== Constants #region ================== Constants
private const string ACTIONS_RESOURCE = "Actions.cfg";
#endregion #endregion
#region ================== Variables #region ================== Variables
@ -62,14 +65,14 @@ namespace CodeImp.DoomBuilder.Controls
General.WriteLogLine("Starting action manager..."); General.WriteLogLine("Starting action manager...");
actions = new Dictionary<string, Action>(); actions = new Dictionary<string, Action>();
// Load all actions // Load all actions in this assembly
LoadActions(); LoadActions(General.ThisAssembly);
// We have no destructor // We have no destructor
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public void Dispose() public void Dispose()
{ {
// Not already disposed? // Not already disposed?
@ -86,45 +89,73 @@ namespace CodeImp.DoomBuilder.Controls
#region ================== Actions #region ================== Actions
// This loads all actions // This loads all actions from an assembly
private void LoadActions() public void LoadActions(Assembly asm)
{ {
Stream actionsdata; Stream actionsdata;
StreamReader actionsreader; StreamReader actionsreader;
Configuration cfg; Configuration cfg;
string name, title, desc; string name, title, desc;
bool amouse, akeys, ascroll; bool amouse, akeys, ascroll;
int key; string[] resnames;
AssemblyName asmname = asm.GetName();
// Get a stream from the resource
actionsdata = General.ThisAssembly.GetManifestResourceStream("CodeImp.DoomBuilder.Resources.Actions.cfg");
actionsreader = new StreamReader(actionsdata, Encoding.ASCII);
// Load configuration from stream
cfg = new Configuration();
cfg.InputConfiguration(actionsreader.ReadToEnd());
// Done with the resource // Find a resource named Actions.cfg
actionsreader.Dispose(); resnames = asm.GetManifestResourceNames();
actionsdata.Dispose(); foreach(string rn in resnames)
// Go for all objects in the configuration
foreach(DictionaryEntry a in cfg.Root)
{ {
// Get action properties // Found one?
name = a.Key.ToString(); if(rn.EndsWith(ACTIONS_RESOURCE, StringComparison.InvariantCultureIgnoreCase))
title = cfg.ReadSetting(name + ".title", "[" + name + "]"); {
desc = cfg.ReadSetting(name + ".description", ""); // Get a stream from the resource
key = General.Settings.ReadSetting("shortcuts." + name, 0); actionsdata = asm.GetManifestResourceStream(rn);
akeys = cfg.ReadSetting(name + ".allowkeys", false); actionsreader = new StreamReader(actionsdata, Encoding.ASCII);
amouse = cfg.ReadSetting(name + ".allowmouse", false);
ascroll = cfg.ReadSetting(name + ".allowscroll", false); // Load configuration from stream
cfg = new Configuration();
// Create an action cfg.InputConfiguration(actionsreader.ReadToEnd());
actions.Add(name, new Action(name, title, desc, key, akeys, amouse, ascroll));
// Done with the resource
actionsreader.Dispose();
actionsdata.Dispose();
// Go for all objects in the configuration
foreach(DictionaryEntry a in cfg.Root)
{
// Get action properties
name = asmname.Name.ToLowerInvariant() + "_" + a.Key.ToString();
title = cfg.ReadSetting(a.Key + ".title", "[" + name + "]");
desc = cfg.ReadSetting(a.Key + ".description", "");
akeys = cfg.ReadSetting(a.Key + ".allowkeys", false);
amouse = cfg.ReadSetting(a.Key + ".allowmouse", false);
ascroll = cfg.ReadSetting(a.Key + ".allowscroll", false);
// Create an action
CreateAction(name, title, desc, akeys, amouse, ascroll);
}
}
} }
} }
// This manually creates an action
private void CreateAction(string name, string title, string desc, bool allowkeys, bool allowmouse, bool allowscroll)
{
// Action does not exist yet?
if(!actions.ContainsKey(name))
{
// Read the key from configuration
int key = General.Settings.ReadSetting("shortcuts." + name, 0);
// Create an action
actions.Add(name, new Action(name, title, desc, key, allowkeys, allowmouse, allowscroll));
}
else
{
// Action already exists!
General.WriteLogLine("WARNING: Action '" + name + "' already exists. Action names must be unique!");
}
}
// This checks if a given action exists // This checks if a given action exists
public bool Exists(string action) public bool Exists(string action)
{ {

View file

@ -1,13 +1,37 @@
#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;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.ComponentModel;
using System.Drawing;
using System.Text; using System.Text;
using CodeImp.DoomBuilder.Properties;
using System.IO;
using CodeImp.DoomBuilder.IO;
using System.Collections;
using System.Windows.Forms; using System.Windows.Forms;
#endregion
namespace CodeImp.DoomBuilder.Controls namespace CodeImp.DoomBuilder.Controls
{ {
public struct KeyControl internal struct KeyControl
{ {
#region ================== Variables #region ================== Variables

View file

@ -26,7 +26,7 @@ using System.Text;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public struct DataLocation : IComparable<DataLocation>, IComparable, IEquatable<DataLocation> internal struct DataLocation : IComparable<DataLocation>, IComparable, IEquatable<DataLocation>
{ {
// Constants // Constants
public const int RESOURCE_WAD = 0; public const int RESOURCE_WAD = 0;

View file

@ -1,3 +1,21 @@
#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;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
@ -6,9 +24,11 @@ using System.Text;
using CodeImp.DoomBuilder.IO; using CodeImp.DoomBuilder.IO;
using System.Collections.Specialized; using System.Collections.Specialized;
#endregion
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public sealed class DataLocationList : List<DataLocation> internal sealed class DataLocationList : List<DataLocation>
{ {
#region ================== Constructors #region ================== Constructors

View file

@ -34,7 +34,7 @@ using System.Threading;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public sealed class DataManager : IDisposable public sealed class DataManager
{ {
#region ================== Constants #region ================== Constants
@ -82,14 +82,14 @@ namespace CodeImp.DoomBuilder.Data
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public DataManager() internal DataManager()
{ {
// We have no destructor // We have no destructor
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Disposer // Disposer
public void Dispose() internal void Dispose()
{ {
// Not already disposed? // Not already disposed?
if(!isdisposed) if(!isdisposed)
@ -107,7 +107,7 @@ namespace CodeImp.DoomBuilder.Data
#region ================== Loading / Unloading #region ================== Loading / Unloading
// This loads all data resources // This loads all data resources
public void Load(DataLocationList configlist, DataLocationList maplist, DataLocation maplocation) internal void Load(DataLocationList configlist, DataLocationList maplist, DataLocation maplocation)
{ {
DataLocationList all = DataLocationList.Combined(configlist, maplist); DataLocationList all = DataLocationList.Combined(configlist, maplist);
all.Add(maplocation); all.Add(maplocation);
@ -115,14 +115,14 @@ namespace CodeImp.DoomBuilder.Data
} }
// This loads all data resources // This loads all data resources
public void Load(DataLocationList configlist, DataLocationList maplist) internal void Load(DataLocationList configlist, DataLocationList maplist)
{ {
DataLocationList all = DataLocationList.Combined(configlist, maplist); DataLocationList all = DataLocationList.Combined(configlist, maplist);
Load(all); Load(all);
} }
// This loads all data resources // This loads all data resources
public void Load(DataLocationList locations) internal void Load(DataLocationList locations)
{ {
DataReader c; DataReader c;
@ -191,7 +191,7 @@ namespace CodeImp.DoomBuilder.Data
} }
// This unloads all data // This unloads all data
public void Unload() internal void Unload()
{ {
// Stop background loader // Stop background loader
StopBackgroundLoader(); StopBackgroundLoader();
@ -212,7 +212,7 @@ namespace CodeImp.DoomBuilder.Data
#region ================== Suspend / Resume #region ================== Suspend / Resume
// This suspends data resources // This suspends data resources
public void Suspend() internal void Suspend()
{ {
// Stop background loader // Stop background loader
StopBackgroundLoader(); StopBackgroundLoader();
@ -227,7 +227,7 @@ namespace CodeImp.DoomBuilder.Data
} }
// This resumes data resources // This resumes data resources
public void Resume() internal void Resume()
{ {
// Go for all containers // Go for all containers
foreach(DataReader d in containers) foreach(DataReader d in containers)
@ -425,7 +425,7 @@ namespace CodeImp.DoomBuilder.Data
} }
// This returns a specific patch stream // This returns a specific patch stream
public Stream GetPatchData(string pname) internal Stream GetPatchData(string pname)
{ {
Stream patch; Stream patch;
@ -539,7 +539,7 @@ namespace CodeImp.DoomBuilder.Data
} }
// This returns a specific flat stream // This returns a specific flat stream
public Stream GetFlatData(string pname) internal Stream GetFlatData(string pname)
{ {
Stream flat; Stream flat;

View file

@ -31,7 +31,7 @@ using CodeImp.DoomBuilder.Rendering;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public abstract class DataReader : IDisposable internal abstract class DataReader
{ {
#region ================== Variables #region ================== Variables

View file

@ -30,7 +30,7 @@ using CodeImp.DoomBuilder.IO;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public sealed class DirectoryReader : DataReader internal sealed class DirectoryReader : DataReader
{ {
#region ================== Constants #region ================== Constants

View file

@ -1,14 +1,36 @@
#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;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Text; using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO; using System.IO;
using CodeImp.DoomBuilder.IO; using CodeImp.DoomBuilder.IO;
#endregion
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public sealed class FlatImage : ImageData internal sealed class FlatImage : ImageData
{ {
#region ================== Constructor / Disposer #region ================== Constructor / Disposer

View file

@ -33,7 +33,7 @@ using System.Windows.Forms;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public abstract unsafe class ImageData : IDisposable public abstract unsafe class ImageData
{ {
#region ================== Constants #region ================== Constants
@ -124,7 +124,7 @@ namespace CodeImp.DoomBuilder.Data
} }
// This creates the 2D pixel data // This creates the 2D pixel data
public virtual void CreatePixelData() internal virtual void CreatePixelData()
{ {
BitmapData bmpdata; BitmapData bmpdata;
@ -143,7 +143,7 @@ namespace CodeImp.DoomBuilder.Data
} }
// This creates the Direct3D texture // This creates the Direct3D texture
public virtual void CreateTexture() internal virtual void CreateTexture()
{ {
MemoryStream memstream; MemoryStream memstream;
@ -164,7 +164,7 @@ namespace CodeImp.DoomBuilder.Data
} }
// This destroys the Direct3D texture // This destroys the Direct3D texture
public void ReleaseTexture() internal void ReleaseTexture()
{ {
lock(this) lock(this)
{ {

View file

@ -29,7 +29,7 @@ using CodeImp.DoomBuilder.IO;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public static class ImageDataFormat internal static class ImageDataFormat
{ {
// Input guess formats // Input guess formats
public const int UNKNOWN = 0; // No clue. public const int UNKNOWN = 0; // No clue.

View file

@ -53,8 +53,8 @@ namespace CodeImp.DoomBuilder.Data
// Dont do anything // Dont do anything
public override void LoadImage() { bitmap = CodeImp.DoomBuilder.Properties.Resources.UnknownImage; } public override void LoadImage() { bitmap = CodeImp.DoomBuilder.Properties.Resources.UnknownImage; }
public override void CreatePixelData() { } internal override void CreatePixelData() { }
public override void CreateTexture() { } internal override void CreateTexture() { }
#endregion #endregion
} }

View file

@ -31,7 +31,7 @@ using ICSharpCode.SharpZipLib.Zip;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public sealed class PK3Reader : DataReader internal sealed class PK3Reader : DataReader
{ {
#region ================== Constants #region ================== Constants

View file

@ -28,7 +28,7 @@ using CodeImp.DoomBuilder.IO;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public sealed class PatchNames internal sealed class PatchNames
{ {
#region ================== Constants #region ================== Constants

View file

@ -1,14 +1,37 @@
#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;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Text; using System.Text;
using System.IO; using System.Drawing;
using System.Drawing.Imaging;
using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.IO; using CodeImp.DoomBuilder.IO;
using System.IO;
#endregion
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public sealed class SpriteImage : ImageData internal sealed class SpriteImage : ImageData
{ {
#region ================== Constructor / Disposer #region ================== Constructor / Disposer

View file

@ -31,7 +31,7 @@ using System.IO;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public sealed unsafe class TextureImage : ImageData internal sealed unsafe class TextureImage : ImageData
{ {
#region ================== Variables #region ================== Variables

View file

@ -30,7 +30,7 @@ using CodeImp.DoomBuilder.IO;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public struct TexturePatch internal struct TexturePatch
{ {
public string lumpname; public string lumpname;
public int x; public int x;

View file

@ -30,7 +30,7 @@ using CodeImp.DoomBuilder.IO;
namespace CodeImp.DoomBuilder.Data namespace CodeImp.DoomBuilder.Data
{ {
public sealed class WADReader : DataReader internal sealed class WADReader : DataReader
{ {
#region ================== Constants #region ================== Constants
@ -61,7 +61,7 @@ namespace CodeImp.DoomBuilder.Data
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public override void Dispose() public override void Dispose()
{ {
// Not already disposed? // Not already disposed?

View file

@ -51,7 +51,8 @@ namespace CodeImp.DoomBuilder.Editing
protected bool cancelled; protected bool cancelled;
// Graphics // Graphics
protected Renderer2D renderer; protected IRenderer2D renderer;
private Renderer2D renderer2d;
// Mouse status // Mouse status
protected Vector2D mousepos; protected Vector2D mousepos;
@ -75,9 +76,10 @@ namespace CodeImp.DoomBuilder.Editing
{ {
// Initialize // Initialize
this.renderer = General.Map.Renderer2D; this.renderer = General.Map.Renderer2D;
this.renderer2d = (Renderer2D)General.Map.Renderer2D;
} }
// Diposer // Disposer
public override void Dispose() public override void Dispose()
{ {
// Not already disposed? // Not already disposed?
@ -95,39 +97,39 @@ namespace CodeImp.DoomBuilder.Editing
#region ================== Scroll / Zoom #region ================== Scroll / Zoom
// This scrolls the view north // This scrolls the view north
[Action("scrollnorth")] [Action("scrollnorth", BaseAction = true)]
public virtual void ScrollNorth() public virtual void ScrollNorth()
{ {
// Scroll // Scroll
ScrollBy(0f, 100f / renderer.Scale); ScrollBy(0f, 100f / renderer2d.Scale);
} }
// This scrolls the view south // This scrolls the view south
[Action("scrollsouth")] [Action("scrollsouth", BaseAction = true)]
public virtual void ScrollSouth() public virtual void ScrollSouth()
{ {
// Scroll // Scroll
ScrollBy(0f, -100f / renderer.Scale); ScrollBy(0f, -100f / renderer2d.Scale);
} }
// This scrolls the view west // This scrolls the view west
[Action("scrollwest")] [Action("scrollwest", BaseAction = true)]
public virtual void ScrollWest() public virtual void ScrollWest()
{ {
// Scroll // Scroll
ScrollBy(-100f / renderer.Scale, 0f); ScrollBy(-100f / renderer2d.Scale, 0f);
} }
// This scrolls the view east // This scrolls the view east
[Action("scrolleast")] [Action("scrolleast", BaseAction = true)]
public virtual void ScrollEast() public virtual void ScrollEast()
{ {
// Scroll // Scroll
ScrollBy(100f / renderer.Scale, 0f); ScrollBy(100f / renderer2d.Scale, 0f);
} }
// This zooms in // This zooms in
[Action("zoomin")] [Action("zoomin", BaseAction = true)]
public virtual void ZoomIn() public virtual void ZoomIn()
{ {
// Zoom // Zoom
@ -135,7 +137,7 @@ namespace CodeImp.DoomBuilder.Editing
} }
// This zooms out // This zooms out
[Action("zoomout")] [Action("zoomout", BaseAction = true)]
public virtual void ZoomOut() public virtual void ZoomOut()
{ {
// Zoom // Zoom
@ -146,14 +148,14 @@ namespace CodeImp.DoomBuilder.Editing
private void ScrollBy(float deltax, float deltay) private void ScrollBy(float deltax, float deltay)
{ {
// Scroll now // Scroll now
renderer.PositionView(renderer.OffsetX + deltax, renderer.OffsetY + deltay); renderer2d.PositionView(renderer2d.OffsetX + deltax, renderer2d.OffsetY + deltay);
this.ViewChanged(); this.ViewChanged();
// Redraw // Redraw
General.MainWindow.RedrawDisplay(); General.MainWindow.RedrawDisplay();
// Determine new unprojected mouse coordinates // Determine new unprojected mouse coordinates
mousemappos = renderer.GetMapCoordinates(mousepos); mousemappos = renderer2d.GetMapCoordinates(mousepos);
General.MainWindow.UpdateCoordinates(mousemappos); General.MainWindow.UpdateCoordinates(mousemappos);
} }
@ -164,7 +166,7 @@ namespace CodeImp.DoomBuilder.Editing
float newscale; float newscale;
// This will be the new zoom scale // This will be the new zoom scale
newscale = renderer.Scale * deltaz; newscale = renderer2d.Scale * deltaz;
// Limit scale // Limit scale
if(newscale > SCALE_MAX) newscale = SCALE_MAX; if(newscale > SCALE_MAX) newscale = SCALE_MAX;
@ -187,11 +189,11 @@ namespace CodeImp.DoomBuilder.Editing
} }
// Calculate view position difference // Calculate view position difference
diff = ((clientsize / newscale) - (clientsize / renderer.Scale)) * zoompos; diff = ((clientsize / newscale) - (clientsize / renderer2d.Scale)) * zoompos;
// Zoom now // Zoom now
renderer.PositionView(renderer.OffsetX - diff.x, renderer.OffsetY + diff.y); renderer2d.PositionView(renderer2d.OffsetX - diff.x, renderer2d.OffsetY + diff.y);
renderer.ScaleView(newscale); renderer2d.ScaleView(newscale);
this.ViewChanged(); this.ViewChanged();
// Redraw // Redraw
@ -206,7 +208,7 @@ namespace CodeImp.DoomBuilder.Editing
public void SetZoom(float newscale) public void SetZoom(float newscale)
{ {
// Zoom now // Zoom now
renderer.ScaleView(newscale); renderer2d.ScaleView(newscale);
this.ViewChanged(); this.ViewChanged();
// Redraw // Redraw
@ -251,8 +253,8 @@ namespace CodeImp.DoomBuilder.Editing
if(scalew < scaleh) scale = scalew; else scale = scaleh; if(scalew < scaleh) scale = scalew; else scale = scaleh;
// Change the view to see the whole map // Change the view to see the whole map
renderer.ScaleView(scale); renderer2d.ScaleView(scale);
renderer.PositionView(left + (right - left) * 0.5f, top + (bottom - top) * 0.5f); renderer2d.PositionView(left + (right - left) * 0.5f, top + (bottom - top) * 0.5f);
this.ViewChanged(); this.ViewChanged();
// Redraw // Redraw
@ -296,7 +298,7 @@ namespace CodeImp.DoomBuilder.Editing
// Record last position // Record last position
mouseinside = true; mouseinside = true;
mousepos = new Vector2D(e.X, e.Y); mousepos = new Vector2D(e.X, e.Y);
mousemappos = renderer.GetMapCoordinates(mousepos); mousemappos = renderer2d.GetMapCoordinates(mousepos);
mousebuttons = e.Button; mousebuttons = e.Button;
// Update labels in main window // Update labels in main window
@ -370,7 +372,7 @@ namespace CodeImp.DoomBuilder.Editing
// This just refreshes the display // This just refreshes the display
public override void RefreshDisplay() public override void RefreshDisplay()
{ {
renderer.Present(); renderer2d.Present();
} }
#endregion #endregion
@ -378,7 +380,7 @@ namespace CodeImp.DoomBuilder.Editing
#region ================== Methods #region ================== Methods
// Override cancel method to bind it with its action // Override cancel method to bind it with its action
[Action("cancelmode")] [Action("cancelmode", BaseAction = true)]
public override void Cancel() public override void Cancel()
{ {
cancelled = true; cancelled = true;

View file

@ -35,7 +35,7 @@ using CodeImp.DoomBuilder.Controls;
namespace CodeImp.DoomBuilder.Editing namespace CodeImp.DoomBuilder.Editing
{ {
public abstract class EditMode : IDisposable public abstract class EditMode
{ {
#region ================== Constants #region ================== Constants
@ -56,6 +56,10 @@ namespace CodeImp.DoomBuilder.Editing
public bool IsDisposed { get { return isdisposed; } } public bool IsDisposed { get { return isdisposed; } }
// Unless overriden, this returns the name of this mode
// for checking the appropriate button on the toolbar.
public virtual string EditModeButtonName { get { return GetType().Name; } }
#endregion #endregion
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
@ -67,7 +71,7 @@ namespace CodeImp.DoomBuilder.Editing
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public virtual void Dispose() public virtual void Dispose()
{ {
// Not already disposed? // Not already disposed?

View file

@ -0,0 +1,68 @@
#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.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
#endregion
namespace CodeImp.DoomBuilder.Editing
{
[AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class EditModeAttribute : Attribute
{
#region ================== Variables
// Properties
private string switchaction;
private string buttonimage;
private string buttondesc;
private int buttonorder;
private bool configspecific;
#endregion
#region ================== Properties
public string SwitchAction { get { return switchaction; } set { switchaction = value; } }
public string ButtonImage { get { return buttonimage; } set { buttonimage = value; } }
public string ButtonDesc { get { return buttondesc; } set { buttondesc = value; } }
public int ButtonOrder { get { return buttonorder; } set { buttonorder = value; } }
public bool ConfigSpecific { get { return configspecific; } set { configspecific = value; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public EditModeAttribute()
{
// Initialize
}
#endregion
#region ================== Methods
#endregion
}
}

View file

@ -0,0 +1,171 @@
#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;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using CodeImp.DoomBuilder.Controls;
using CodeImp.DoomBuilder.Plugins;
using System.Drawing;
#endregion
namespace CodeImp.DoomBuilder.Editing
{
internal class EditModeInfo : IComparable<EditModeInfo>
{
#region ================== Constants
#endregion
#region ================== Variables
// Mode type
private Plugin plugin;
private Type type;
private bool configspecific;
// Mode switching
private ActionAttribute switchactionattr = null;
private ActionDelegate switchactiondel = null;
// Mode button
private Stream buttonimagestream = null;
private Image buttonimage = null;
private string buttondesc = null;
private int buttonorder = int.MaxValue;
#endregion
#region ================== Properties
public Plugin Plugin { get { return plugin; } }
public Type Type { get { return type; } }
public ActionAttribute SwitchAction { get { return switchactionattr; } }
public Image ButtonImage { get { return buttonimage; } }
public string ButtonDesc { get { return buttondesc; } }
public bool ConfigSpecific { get { return configspecific; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public EditModeInfo(Plugin plugin, Type type, EditModeAttribute attr)
{
// Initialize
this.plugin = plugin;
this.type = type;
this.configspecific = attr.ConfigSpecific;
// Make switch action info
if((attr.SwitchAction != null) && (attr.SwitchAction.Length > 0))
{
switchactionattr = new ActionAttribute(attr.SwitchAction);
switchactiondel = new ActionDelegate(SwitchToMode);
// Bind switch action
ActionAttribute.BindDelegate(plugin.Assembly, switchactiondel, switchactionattr);
}
// Make button info
if((attr.ButtonImage != null) && (attr.ButtonDesc != null))
{
buttonimagestream = plugin.FindResource(attr.ButtonImage);
if(buttonimagestream != null)
{
buttonimage = Image.FromStream(buttonimagestream);
buttondesc = attr.ButtonDesc;
buttonorder = attr.ButtonOrder;
}
}
// We have no destructor
GC.SuppressFinalize(this);
}
// Disposer
public void Dispose()
{
// Unbind switch action
if(switchactiondel != null) ActionAttribute.UnbindDelegate(plugin.Assembly, switchactiondel, switchactionattr);
buttonimage.Dispose();
buttonimagestream.Dispose();
// Clean up
plugin = null;
}
#endregion
#region ================== Methods
// This switches to the mode
public void SwitchToMode()
{
EditMode newmode;
// Only when a map is opened
if(General.Map != null)
{
// Create instance
newmode = plugin.CreateObject<EditMode>(type);
// Switch mode
General.Map.ChangeMode(newmode);
}
}
// This switches to the mode with arguments
public void SwitchToMode(object[] args)
{
EditMode newmode;
// Only when a map is opened
if(General.Map != null)
{
// Create instance
newmode = plugin.CreateObjectA<EditMode>(type, args);
// Switch mode
General.Map.ChangeMode(newmode);
}
}
// String representation
public override string ToString()
{
return type.Name;
}
// Compare by button order
public int CompareTo(EditModeInfo other)
{
if(this.buttonorder > other.buttonorder) return 1;
else if(this.buttonorder < other.buttonorder) return -1;
else return 0;
}
#endregion
}
}

View file

@ -1,12 +1,40 @@
#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;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Text; using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using CodeImp.DoomBuilder.Interface;
using CodeImp.DoomBuilder.IO;
using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Rendering;
using System.Diagnostics;
using CodeImp.DoomBuilder.Controls;
using CodeImp.DoomBuilder.Data; using CodeImp.DoomBuilder.Data;
using SlimDX.Direct3D9;
using CodeImp.DoomBuilder.Geometry; using CodeImp.DoomBuilder.Geometry;
#endregion
namespace CodeImp.DoomBuilder.Editing namespace CodeImp.DoomBuilder.Editing
{ {
public class GridSetup public class GridSetup
@ -39,18 +67,18 @@ namespace CodeImp.DoomBuilder.Editing
public int GridSize { get { return gridsize; } } public int GridSize { get { return gridsize; } }
public float GridSizeF { get { return gridsizef; } } public float GridSizeF { get { return gridsizef; } }
public string BackgroundName { get { return background; } } internal string BackgroundName { get { return background; } }
public int BackgroundSource { get { return backsource; } } internal int BackgroundSource { get { return backsource; } }
public ImageData Background { get { return backimage; } } internal ImageData Background { get { return backimage; } }
public int BackgroundX { get { return backoffsetx; } } internal int BackgroundX { get { return backoffsetx; } }
public int BackgroundY { get { return backoffsety; } } internal int BackgroundY { get { return backoffsety; } }
#endregion #endregion
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public GridSetup() internal GridSetup()
{ {
// Initialize // Initialize
SetGridSize(DEFAULT_GRID_SIZE); SetGridSize(DEFAULT_GRID_SIZE);
@ -64,7 +92,7 @@ namespace CodeImp.DoomBuilder.Editing
#region ================== Methods #region ================== Methods
// This sets the grid size // This sets the grid size
public void SetGridSize(int size) internal void SetGridSize(int size)
{ {
// Change grid // Change grid
this.gridsize = size; this.gridsize = size;
@ -76,7 +104,7 @@ namespace CodeImp.DoomBuilder.Editing
} }
// This sets the background // This sets the background
public void SetBackground(string name, int source) internal void SetBackground(string name, int source)
{ {
// Set background // Set background
if(name == null) name = ""; if(name == null) name = "";
@ -88,7 +116,7 @@ namespace CodeImp.DoomBuilder.Editing
} }
// This sets the background offset // This sets the background offset
public void SetBackgroundOffset(int offsetx, int offsety) internal void SetBackgroundOffset(int offsetx, int offsety)
{ {
// Set background offset // Set background offset
this.backoffsetx = offsetx; this.backoffsetx = offsetx;
@ -96,7 +124,7 @@ namespace CodeImp.DoomBuilder.Editing
} }
// This finds and links the background image // This finds and links the background image
public void LinkBackground() internal void LinkBackground()
{ {
// From textures? // From textures?
if(backsource == SOURCE_TEXTURES) if(backsource == SOURCE_TEXTURES)

View file

@ -35,7 +35,7 @@ using CodeImp.DoomBuilder.Controls;
namespace CodeImp.DoomBuilder.Editing namespace CodeImp.DoomBuilder.Editing
{ {
public class UndoManager : IDisposable public class UndoManager
{ {
#region ================== Constants #region ================== Constants
@ -61,8 +61,8 @@ namespace CodeImp.DoomBuilder.Editing
#region ================== Properties #region ================== Properties
public UndoSnapshot NextUndo { get { if(undos.Count > 0) return undos[0]; else return null; } } internal UndoSnapshot NextUndo { get { if(undos.Count > 0) return undos[0]; else return null; } }
public UndoSnapshot NextRedo { get { if(redos.Count > 0) return redos[0]; else return null; } } internal UndoSnapshot NextRedo { get { if(redos.Count > 0) return redos[0]; else return null; } }
public bool IsDisposed { get { return isdisposed; } } public bool IsDisposed { get { return isdisposed; } }
#endregion #endregion
@ -70,7 +70,7 @@ namespace CodeImp.DoomBuilder.Editing
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public UndoManager() internal UndoManager()
{ {
// Initialize // Initialize
ticketid = 1; ticketid = 1;
@ -84,8 +84,8 @@ namespace CodeImp.DoomBuilder.Editing
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public void Dispose() internal void Dispose()
{ {
// Not already disposed? // Not already disposed?
if(!isdisposed) if(!isdisposed)

View file

@ -35,7 +35,7 @@ using CodeImp.DoomBuilder.Controls;
namespace CodeImp.DoomBuilder.Editing namespace CodeImp.DoomBuilder.Editing
{ {
public class UndoSnapshot internal class UndoSnapshot
{ {
public MapSet map; public MapSet map;
public string description; public string description;

View file

@ -28,7 +28,7 @@ using System.Diagnostics;
namespace CodeImp.DoomBuilder namespace CodeImp.DoomBuilder
{ {
public class Clock : IDisposable public class Clock
{ {
#region ================== Declarations #region ================== Declarations
@ -104,7 +104,7 @@ namespace CodeImp.DoomBuilder
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public void Dispose() public void Dispose()
{ {
// Not already disposed? // Not already disposed?

View file

@ -35,6 +35,7 @@ using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Config;
using SlimDX.Direct3D9; using SlimDX.Direct3D9;
using System.Drawing; using System.Drawing;
using CodeImp.DoomBuilder.Plugins;
#endregion #endregion
@ -45,37 +46,37 @@ namespace CodeImp.DoomBuilder
#region ================== API Declarations #region ================== API Declarations
//[DllImport("user32.dll")] //[DllImport("user32.dll")]
//public static extern bool LockWindowUpdate(IntPtr hwnd); //internal static extern bool LockWindowUpdate(IntPtr hwnd);
[DllImport("kernel32.dll", EntryPoint="RtlZeroMemory", SetLastError=false)] [DllImport("kernel32.dll", EntryPoint="RtlZeroMemory", SetLastError=false)]
public static extern void ZeroMemory(IntPtr dest, int size); internal static extern void ZeroMemory(IntPtr dest, int size);
[DllImport("kernel32.dll", EntryPoint = "RtlMoveMemory", SetLastError = false)] [DllImport("kernel32.dll", EntryPoint = "RtlMoveMemory", SetLastError = false)]
public static extern unsafe void CopyMemory(void* dst, void* src, UIntPtr length); internal static extern unsafe void CopyMemory(void* dst, void* src, UIntPtr length);
#endregion #endregion
#region ================== Constants #region ================== Constants
// Memory APIs // Memory APIs
public const uint MEM_COMMIT = 0x1000; internal const uint MEM_COMMIT = 0x1000;
public const uint MEM_RESERVE = 0x2000; internal const uint MEM_RESERVE = 0x2000;
public const uint MEM_DECOMMIT = 0x4000; internal const uint MEM_DECOMMIT = 0x4000;
public const uint MEM_RELEASE = 0x8000; internal const uint MEM_RELEASE = 0x8000;
public const uint MEM_RESET = 0x80000; internal const uint MEM_RESET = 0x80000;
public const uint MEM_TOP_DOWN = 0x100000; internal const uint MEM_TOP_DOWN = 0x100000;
public const uint MEM_PHYSICAL = 0x400000; internal const uint MEM_PHYSICAL = 0x400000;
public const uint PAGE_NOACCESS = 0x01; internal const uint PAGE_NOACCESS = 0x01;
public const uint PAGE_READONLY = 0x02; internal const uint PAGE_READONLY = 0x02;
public const uint PAGE_READWRITE = 0x04; internal const uint PAGE_READWRITE = 0x04;
public const uint PAGE_WRITECOPY = 0x08; internal const uint PAGE_WRITECOPY = 0x08;
public const uint PAGE_EXECUTE = 0x10; internal const uint PAGE_EXECUTE = 0x10;
public const uint PAGE_EXECUTE_READ = 0x20; internal const uint PAGE_EXECUTE_READ = 0x20;
public const uint PAGE_EXECUTE_READWRITE = 0x40; internal const uint PAGE_EXECUTE_READWRITE = 0x40;
public const uint PAGE_EXECUTE_WRITECOPY = 0x80; internal const uint PAGE_EXECUTE_WRITECOPY = 0x80;
public const uint PAGE_GUARD = 0x100; internal const uint PAGE_GUARD = 0x100;
public const uint PAGE_NOCACHE = 0x200; internal const uint PAGE_NOCACHE = 0x200;
public const uint PAGE_WRITECOMBINE = 0x400; internal const uint PAGE_WRITECOMBINE = 0x400;
// Files and Folders // Files and Folders
private const string SETTINGS_FILE = "Builder.cfg"; private const string SETTINGS_FILE = "Builder.cfg";
@ -83,6 +84,7 @@ namespace CodeImp.DoomBuilder
private const string LOG_FILE = "Builder.log"; private const string LOG_FILE = "Builder.log";
private const string GAME_CONFIGS_DIR = "Configurations"; private const string GAME_CONFIGS_DIR = "Configurations";
private const string COMPILERS_DIR = "Compilers"; private const string COMPILERS_DIR = "Compilers";
private const string PLUGINS_DIR = "Plugins";
#endregion #endregion
@ -95,6 +97,7 @@ namespace CodeImp.DoomBuilder
private static string temppath; private static string temppath;
private static string configspath; private static string configspath;
private static string compilerspath; private static string compilerspath;
private static string pluginspath;
// Main objects // Main objects
private static Assembly thisasm; private static Assembly thisasm;
@ -102,6 +105,7 @@ namespace CodeImp.DoomBuilder
private static ProgramConfiguration settings; private static ProgramConfiguration settings;
private static MapManager map; private static MapManager map;
private static ActionManager actions; private static ActionManager actions;
private static PluginManager plugins;
private static ColorCollection colors; private static ColorCollection colors;
private static Clock clock; private static Clock clock;
@ -114,19 +118,22 @@ namespace CodeImp.DoomBuilder
#region ================== Properties #region ================== Properties
public static Assembly ThisAssembly { get { return thisasm; } } internal static Assembly ThisAssembly { get { return thisasm; } }
public static string AppPath { get { return apppath; } } public static string AppPath { get { return apppath; } }
public static string TempPath { get { return temppath; } } public static string TempPath { get { return temppath; } }
public static string ConfigsPath { get { return configspath; } } public static string ConfigsPath { get { return configspath; } }
public static string CompilersPath { get { return compilerspath; } } public static string CompilersPath { get { return compilerspath; } }
public static MainForm MainWindow { get { return mainwindow; } } public static string PluginsPath { get { return pluginspath; } }
internal static MainForm MainWindow { get { return mainwindow; } }
public static IMainForm Interface { get { return mainwindow; } }
public static ProgramConfiguration Settings { get { return settings; } } public static ProgramConfiguration Settings { get { return settings; } }
public static ColorCollection Colors { get { return colors; } } public static ColorCollection Colors { get { return colors; } }
public static List<ConfigurationInfo> Configs { get { return configs; } } internal static List<ConfigurationInfo> Configs { get { return configs; } }
public static List<NodebuilderInfo> Nodebuilders { get { return nodebuilders; } } internal static List<NodebuilderInfo> Nodebuilders { get { return nodebuilders; } }
public static List<CompilerInfo> Compilers { get { return compilers; } } internal static List<CompilerInfo> Compilers { get { return compilers; } }
public static MapManager Map { get { return map; } } public static MapManager Map { get { return map; } }
public static ActionManager Actions { get { return actions; } } internal static ActionManager Actions { get { return actions; } }
internal static PluginManager Plugins { get { return plugins; } }
public static Clock Clock { get { return clock; } } public static Clock Clock { get { return clock; } }
#endregion #endregion
@ -134,7 +141,7 @@ namespace CodeImp.DoomBuilder
#region ================== Configurations #region ================== Configurations
// This returns the game configuration info by filename // This returns the game configuration info by filename
public static ConfigurationInfo GetConfigurationInfo(string filename) internal static ConfigurationInfo GetConfigurationInfo(string filename)
{ {
// Go for all config infos // Go for all config infos
foreach(ConfigurationInfo ci in configs) foreach(ConfigurationInfo ci in configs)
@ -153,7 +160,7 @@ namespace CodeImp.DoomBuilder
} }
// This loads and returns a game configuration // This loads and returns a game configuration
public static Configuration LoadGameConfiguration(string filename) internal static Configuration LoadGameConfiguration(string filename)
{ {
Configuration cfg; Configuration cfg;
@ -347,7 +354,7 @@ namespace CodeImp.DoomBuilder
} }
// This returns a nodebuilder by name // This returns a nodebuilder by name
public static NodebuilderInfo GetNodebuilderByName(string name) internal static NodebuilderInfo GetNodebuilderByName(string name)
{ {
// Go for all nodebuilders // Go for all nodebuilders
foreach(NodebuilderInfo n in nodebuilders) foreach(NodebuilderInfo n in nodebuilders)
@ -366,7 +373,7 @@ namespace CodeImp.DoomBuilder
// Main program entry // Main program entry
[STAThread] [STAThread]
public static void Main(string[] args) internal static void Main(string[] args)
{ {
Uri localpath; Uri localpath;
Version thisversion; Version thisversion;
@ -388,6 +395,7 @@ namespace CodeImp.DoomBuilder
settingspath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), SETTINGS_DIR); settingspath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), SETTINGS_DIR);
configspath = Path.Combine(apppath, GAME_CONFIGS_DIR); configspath = Path.Combine(apppath, GAME_CONFIGS_DIR);
compilerspath = Path.Combine(apppath, COMPILERS_DIR); compilerspath = Path.Combine(apppath, COMPILERS_DIR);
pluginspath = Path.Combine(apppath, PLUGINS_DIR);
logfile = Path.Combine(settingspath, LOG_FILE); logfile = Path.Combine(settingspath, LOG_FILE);
// Make program settings directory if missing // Make program settings directory if missing
@ -401,6 +409,7 @@ namespace CodeImp.DoomBuilder
General.WriteLogLine("Local settings path: " + settingspath); General.WriteLogLine("Local settings path: " + settingspath);
General.WriteLogLine("Configurations path: " + configspath); General.WriteLogLine("Configurations path: " + configspath);
General.WriteLogLine("Compilers path: " + compilerspath); General.WriteLogLine("Compilers path: " + compilerspath);
General.WriteLogLine("Plugins path: " + pluginspath);
// Load configuration // Load configuration
General.WriteLogLine("Loading program configuration..."); General.WriteLogLine("Loading program configuration...");
@ -428,6 +437,10 @@ namespace CodeImp.DoomBuilder
General.WriteLogLine("Starting Direct3D graphics driver..."); General.WriteLogLine("Starting Direct3D graphics driver...");
Direct3D.Initialize(); Direct3D.Initialize();
// Load plugin manager
General.WriteLogLine("Loading plugins...");
plugins = new PluginManager();
// Load game configurations // Load game configurations
General.WriteLogLine("Loading game configurations..."); General.WriteLogLine("Loading game configurations...");
LoadAllGameConfigurations(); LoadAllGameConfigurations();
@ -465,7 +478,7 @@ namespace CodeImp.DoomBuilder
#region ================== Terminate #region ================== Terminate
// This terminates the program // This terminates the program
public static void Terminate(bool properexit) internal static void Terminate(bool properexit)
{ {
// Terminate properly? // Terminate properly?
if(properexit) if(properexit)
@ -481,6 +494,7 @@ namespace CodeImp.DoomBuilder
mainwindow.Dispose(); mainwindow.Dispose();
actions.Dispose(); actions.Dispose();
clock.Dispose(); clock.Dispose();
plugins.Dispose();
Direct3D.Terminate(); Direct3D.Terminate();
// Save colors // Save colors
@ -514,7 +528,7 @@ namespace CodeImp.DoomBuilder
// This creates a new map // This creates a new map
[Action("newmap")] [Action("newmap")]
public static void NewMap() internal static void NewMap()
{ {
MapOptions newoptions = new MapOptions(); MapOptions newoptions = new MapOptions();
MapOptionsForm optionswindow; MapOptionsForm optionswindow;
@ -562,7 +576,7 @@ namespace CodeImp.DoomBuilder
// This closes the current map // This closes the current map
[Action("closemap")] [Action("closemap")]
public static void CloseMap() internal static void CloseMap()
{ {
// Ask the user to save changes (if any) // Ask the user to save changes (if any)
if(General.AskSaveMap()) if(General.AskSaveMap())
@ -589,7 +603,7 @@ namespace CodeImp.DoomBuilder
// This loads a map from file // This loads a map from file
[Action("openmap")] [Action("openmap")]
public static void OpenMap() internal static void OpenMap()
{ {
OpenFileDialog openfile; OpenFileDialog openfile;
@ -612,7 +626,7 @@ namespace CodeImp.DoomBuilder
} }
// This opens the specified file // This opens the specified file
public static void OpenMapFile(string filename) internal static void OpenMapFile(string filename)
{ {
OpenMapOptionsForm openmapwindow; OpenMapOptionsForm openmapwindow;
@ -660,7 +674,7 @@ namespace CodeImp.DoomBuilder
// This saves the current map // This saves the current map
[Action("savemap")] [Action("savemap")]
public static void SaveMap() internal static void SaveMap()
{ {
// Check if a wad file is known // Check if a wad file is known
if(map.FilePathName == "") if(map.FilePathName == "")
@ -690,7 +704,7 @@ namespace CodeImp.DoomBuilder
// This saves the current map as a different file // This saves the current map as a different file
[Action("savemapas")] [Action("savemapas")]
public static void SaveMapAs() internal static void SaveMapAs()
{ {
SaveFileDialog savefile; SaveFileDialog savefile;
@ -724,7 +738,7 @@ namespace CodeImp.DoomBuilder
// This asks to save the map if needed // This asks to save the map if needed
// Returns false when action was cancelled // Returns false when action was cancelled
public static bool AskSaveMap() internal static bool AskSaveMap()
{ {
DialogResult result; DialogResult result;
@ -800,13 +814,13 @@ namespace CodeImp.DoomBuilder
} }
// Convert bool to integer // Convert bool to integer
public static int Bool2Int(bool v) internal static int Bool2Int(bool v)
{ {
if(v) return 1; else return 0; if(v) return 1; else return 0;
} }
// Convert integer to bool // Convert integer to bool
public static bool Int2Bool(int v) internal static bool Int2Bool(int v)
{ {
return (v != 0); return (v != 0);
} }
@ -864,7 +878,7 @@ namespace CodeImp.DoomBuilder
} }
// This returns a unique temp filename // This returns a unique temp filename
public static string MakeTempFilename(string tempdir) internal static string MakeTempFilename(string tempdir)
{ {
string filename; string filename;
string chars = "abcdefghijklmnopqrstuvwxyz1234567890"; string chars = "abcdefghijklmnopqrstuvwxyz1234567890";
@ -886,7 +900,7 @@ namespace CodeImp.DoomBuilder
} }
// This returns a unique temp directory name // This returns a unique temp directory name
public static string MakeTempDirname() internal static string MakeTempDirname()
{ {
string dirname; string dirname;
string chars = "abcdefghijklmnopqrstuvwxyz1234567890"; string chars = "abcdefghijklmnopqrstuvwxyz1234567890";
@ -977,7 +991,7 @@ namespace CodeImp.DoomBuilder
#endregion #endregion
[Action("testaction")] [Action("testaction")]
public static void TestAction() internal static void TestAction()
{ {
TextureBrowserForm t = new TextureBrowserForm(); TextureBrowserForm t = new TextureBrowserForm();
t.ShowDialog(mainwindow); t.ShowDialog(mainwindow);

View file

@ -24,21 +24,22 @@ using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using System.Diagnostics;
using CodeImp.DoomBuilder.Interface; using CodeImp.DoomBuilder.Interface;
using CodeImp.DoomBuilder.IO; using CodeImp.DoomBuilder.IO;
using CodeImp.DoomBuilder.Map; using CodeImp.DoomBuilder.Map;
using CodeImp.DoomBuilder.Editing; using CodeImp.DoomBuilder.Editing;
using System.Diagnostics;
using CodeImp.DoomBuilder.Rendering; using CodeImp.DoomBuilder.Rendering;
using CodeImp.DoomBuilder.Data; using CodeImp.DoomBuilder.Data;
using CodeImp.DoomBuilder.Controls; using CodeImp.DoomBuilder.Controls;
using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Config;
using CodeImp.DoomBuilder.Plugins;
#endregion #endregion
namespace CodeImp.DoomBuilder namespace CodeImp.DoomBuilder
{ {
public class MapManager : IDisposable public class MapManager
{ {
#region ================== Constants #region ================== Constants
@ -89,16 +90,16 @@ namespace CodeImp.DoomBuilder
public string FilePathName { get { return filepathname; } } public string FilePathName { get { return filepathname; } }
public string FileTitle { get { return filetitle; } } public string FileTitle { get { return filetitle; } }
public string TempPath { get { return temppath; } } public string TempPath { get { return temppath; } }
public MapOptions Options { get { return options; } } internal MapOptions Options { get { return options; } }
public MapSet Map { get { return map; } } public MapSet Map { get { return map; } }
public EditMode Mode { get { return mode; } } public EditMode Mode { get { return mode; } }
public EditMode NewMode { get { return newmode; } } public EditMode NewMode { get { return newmode; } }
public DataManager Data { get { return data; } } public DataManager Data { get { return data; } }
public bool IsChanged { get { return changed; } set { changed |= value; } } public bool IsChanged { get { return changed; } set { changed |= value; } }
public bool IsDisposed { get { return isdisposed; } } public bool IsDisposed { get { return isdisposed; } }
public D3DDevice Graphics { get { return graphics; } } internal D3DDevice Graphics { get { return graphics; } }
public Renderer2D Renderer2D { get { return renderer2d; } } public IRenderer2D Renderer2D { get { return renderer2d; } }
public Renderer3D Renderer3D { get { return renderer3d; } } public IRenderer3D Renderer3D { get { return renderer3d; } }
public GameConfiguration Config { get { return config; } } public GameConfiguration Config { get { return config; } }
public GridSetup Grid { get { return grid; } } public GridSetup Grid { get { return grid; } }
public UndoManager UndoRedo { get { return undoredo; } } public UndoManager UndoRedo { get { return undoredo; } }
@ -109,7 +110,7 @@ namespace CodeImp.DoomBuilder
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public MapManager() internal MapManager()
{ {
// We have no destructor // We have no destructor
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
@ -117,17 +118,16 @@ namespace CodeImp.DoomBuilder
// Basic objects // Basic objects
grid = new GridSetup(); grid = new GridSetup();
undoredo = new UndoManager(); undoredo = new UndoManager();
} }
// Diposer // Disposer
public void Dispose() internal void Dispose()
{ {
// Not already disposed? // Not already disposed?
if(!isdisposed) if(!isdisposed)
{ {
// Change to no mode // Change to no mode
ChangeMode(null); ChangeMode((EditMode)null);
// Unbind any methods // Unbind any methods
ActionAttribute.UnbindMethods(this); ActionAttribute.UnbindMethods(this);
@ -168,7 +168,7 @@ namespace CodeImp.DoomBuilder
#region ================== New / Open #region ================== New / Open
// Initializes for a new map // Initializes for a new map
public bool InitializeNewMap(MapOptions options) internal bool InitializeNewMap(MapOptions options)
{ {
string tempfile; string tempfile;
@ -198,6 +198,7 @@ namespace CodeImp.DoomBuilder
General.WriteLogLine("Loading game configuration..."); General.WriteLogLine("Loading game configuration...");
configinfo = General.GetConfigurationInfo(options.ConfigFile); configinfo = General.GetConfigurationInfo(options.ConfigFile);
config = new GameConfiguration(General.LoadGameConfiguration(options.ConfigFile)); config = new GameConfiguration(General.LoadGameConfiguration(options.ConfigFile));
General.Plugins.GameConfigurationChanged();
// Create map data // Create map data
map = new MapSet(); map = new MapSet();
@ -226,7 +227,7 @@ namespace CodeImp.DoomBuilder
ActionAttribute.BindMethods(this); ActionAttribute.BindMethods(this);
// Set default mode // Set default mode
ChangeMode(new VerticesMode()); ChangeMode("VerticesMode");
// Success // Success
General.WriteLogLine("Map creation done"); General.WriteLogLine("Map creation done");
@ -234,7 +235,7 @@ namespace CodeImp.DoomBuilder
} }
// Initializes for an existing map // Initializes for an existing map
public bool InitializeOpenMap(string filepathname, MapOptions options) internal bool InitializeOpenMap(string filepathname, MapOptions options)
{ {
WAD mapwad; WAD mapwad;
string tempfile; string tempfile;
@ -261,12 +262,13 @@ namespace CodeImp.DoomBuilder
// Create renderers // Create renderers
renderer2d = new Renderer2D(graphics); renderer2d = new Renderer2D(graphics);
renderer3d = new Renderer3D(graphics); renderer3d = new Renderer3D(graphics);
// Load game configuration // Load game configuration
General.WriteLogLine("Loading game configuration..."); General.WriteLogLine("Loading game configuration...");
configinfo = General.GetConfigurationInfo(options.ConfigFile); configinfo = General.GetConfigurationInfo(options.ConfigFile);
config = new GameConfiguration(General.LoadGameConfiguration(options.ConfigFile)); config = new GameConfiguration(General.LoadGameConfiguration(options.ConfigFile));
General.Plugins.GameConfigurationChanged();
// Create map data // Create map data
map = new MapSet(); map = new MapSet();
@ -312,7 +314,7 @@ namespace CodeImp.DoomBuilder
ActionAttribute.BindMethods(this); ActionAttribute.BindMethods(this);
// Set default mode // Set default mode
ChangeMode(new VerticesMode()); ChangeMode("VerticesMode");
// Center map in screen // Center map in screen
(General.Map.Mode as ClassicMode).CenterInScreen(); (General.Map.Mode as ClassicMode).CenterInScreen();
@ -327,7 +329,7 @@ namespace CodeImp.DoomBuilder
#region ================== Save #region ================== Save
// Initializes for an existing map // Initializes for an existing map
public bool SaveMap(string newfilepathname, int savemode) internal bool SaveMap(string newfilepathname, int savemode)
{ {
MapSet outputset; MapSet outputset;
string nodebuildername, oldstatus, settingsfile; string nodebuildername, oldstatus, settingsfile;
@ -757,7 +759,7 @@ namespace CodeImp.DoomBuilder
// This finds a lump within the range of known lump names // This finds a lump within the range of known lump names
// Returns -1 when the lump cannot be found // Returns -1 when the lump cannot be found
public static int FindSpecificLump(WAD source, string lumpname, int mapheaderindex, string mapheadername, IDictionary maplumps) internal static int FindSpecificLump(WAD source, string lumpname, int mapheaderindex, string mapheadername, IDictionary maplumps)
{ {
// Use the configured map lump names to find the specific lump within range, // Use the configured map lump names to find the specific lump within range,
// because when an unknown lump is met, this search must stop. // because when an unknown lump is met, this search must stop.
@ -793,7 +795,7 @@ namespace CodeImp.DoomBuilder
// This removes a specific lump and returns the position where the lump was removed // This removes a specific lump and returns the position where the lump was removed
// Returns -1 when the lump could not be found // Returns -1 when the lump could not be found
public static int RemoveSpecificLump(WAD source, string lumpname, int mapheaderindex, string mapheadername, IDictionary maplumps) internal static int RemoveSpecificLump(WAD source, string lumpname, int mapheaderindex, string mapheadername, IDictionary maplumps)
{ {
int lumpindex; int lumpindex;
@ -846,6 +848,12 @@ namespace CodeImp.DoomBuilder
// Apply new mode // Apply new mode
mode = newmode; mode = newmode;
// Check appropriate button on interface
if(newmode != null)
General.MainWindow.CheckEditModeButton(newmode.EditModeButtonName);
else
General.MainWindow.CheckEditModeButton("");
// Engage new mode // Engage new mode
if(newmode != null) newmode.Engage(); if(newmode != null) newmode.Engage();
@ -858,37 +866,12 @@ namespace CodeImp.DoomBuilder
// Redraw the display // Redraw the display
General.MainWindow.RedrawDisplay(); General.MainWindow.RedrawDisplay();
} }
// This switches to vertices mode // This changes mode by class name and optionally with arguments
[Action("verticesmode")] public void ChangeMode(string classname, params object[] args)
public void SwitchVerticesMode()
{ {
// Change to vertices mode EditModeInfo emi = General.Plugins.GetEditModeInfo(classname);
ChangeMode(new VerticesMode()); if(emi != null) emi.SwitchToMode(args);
}
// This switches to linedefs mode
[Action("linedefsmode")]
public void SwitchLinedefsMode()
{
// Change to linedefs mode
ChangeMode(new LinedefsMode());
}
// This switches to sectors mode
[Action("sectorsmode")]
public void SwitchSectorsMode()
{
// Change to sectors mode
ChangeMode(new SectorsMode());
}
// This switches to things mode
[Action("thingsmode")]
public void SwitchThingsMode()
{
// Change to things mode
ChangeMode(new ThingsMode());
} }
#endregion #endregion
@ -907,7 +890,7 @@ namespace CodeImp.DoomBuilder
} }
// This sets a new mapset for editing // This sets a new mapset for editing
public void ChangeMapSet(MapSet newmap) internal void ChangeMapSet(MapSet newmap)
{ {
// Can't have a selection in an old map set // Can't have a selection in an old map set
map.ClearAllSelected(); map.ClearAllSelected();
@ -920,7 +903,7 @@ namespace CodeImp.DoomBuilder
// This reloads resources // This reloads resources
[Action("reloadresources")] [Action("reloadresources")]
public void ReloadResources() internal void ReloadResources()
{ {
DataLocation maplocation; DataLocation maplocation;
string oldstatus; string oldstatus;
@ -945,6 +928,7 @@ namespace CodeImp.DoomBuilder
General.WriteLogLine("Reloading game configuration..."); General.WriteLogLine("Reloading game configuration...");
configinfo = General.GetConfigurationInfo(options.ConfigFile); configinfo = General.GetConfigurationInfo(options.ConfigFile);
config = new GameConfiguration(General.LoadGameConfiguration(options.ConfigFile)); config = new GameConfiguration(General.LoadGameConfiguration(options.ConfigFile));
General.Plugins.GameConfigurationChanged();
// Reload data resources // Reload data resources
General.WriteLogLine("Reloading data resources..."); General.WriteLogLine("Reloading data resources...");
@ -965,7 +949,7 @@ namespace CodeImp.DoomBuilder
// Game Configuration action // Game Configuration action
[Action("mapoptions")] [Action("mapoptions")]
public void ShowMapOptions() internal void ShowMapOptions()
{ {
// Show map options dialog // Show map options dialog
MapOptionsForm optionsform = new MapOptionsForm(options); MapOptionsForm optionsform = new MapOptionsForm(options);

View file

@ -27,7 +27,7 @@ using System.IO;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public class ClippedStream : Stream internal class ClippedStream : Stream
{ {
#region ================== Variables #region ================== Variables
@ -73,7 +73,7 @@ namespace CodeImp.DoomBuilder.IO
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public new void Dispose() public new void Dispose()
{ {
// Not already disposed? // Not already disposed?

View file

@ -33,7 +33,7 @@ using System.Drawing.Imaging;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public unsafe class DoomFlatReader : IImageReader internal unsafe class DoomFlatReader : IImageReader
{ {
#region ================== Variables #region ================== Variables

View file

@ -29,7 +29,7 @@ using CodeImp.DoomBuilder.Geometry;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public class DoomMapSetIO : MapSetIO internal class DoomMapSetIO : MapSetIO
{ {
#region ================== Constants #region ================== Constants

View file

@ -33,7 +33,7 @@ using System.Drawing.Imaging;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public unsafe class DoomPictureReader : IImageReader internal unsafe class DoomPictureReader : IImageReader
{ {
#region ================== Variables #region ================== Variables

View file

@ -33,7 +33,7 @@ using System.Drawing.Imaging;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public unsafe class FileImageReader : IImageReader internal unsafe class FileImageReader : IImageReader
{ {
#region ================== Constructor / Disposer #region ================== Constructor / Disposer

View file

@ -29,7 +29,7 @@ using CodeImp.DoomBuilder.Geometry;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public class HexenMapSetIO : MapSetIO internal class HexenMapSetIO : MapSetIO
{ {
#region ================== Constants #region ================== Constants

View file

@ -33,7 +33,7 @@ using System.Drawing.Imaging;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public unsafe interface IImageReader internal unsafe interface IImageReader
{ {
// Methods // Methods
Bitmap ReadAsBitmap(Stream stream); Bitmap ReadAsBitmap(Stream stream);

View file

@ -27,7 +27,7 @@ using System.IO;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public class Lump : IDisposable internal class Lump
{ {
#region ================== Variables #region ================== Variables
@ -83,7 +83,7 @@ namespace CodeImp.DoomBuilder.IO
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
// Diposer // Disposer
public void Dispose() public void Dispose()
{ {
// Not already disposed? // Not already disposed?

View file

@ -30,7 +30,7 @@ using System.Diagnostics;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public abstract class MapSetIO internal abstract class MapSetIO
{ {
#region ================== Constants #region ================== Constants

View file

@ -33,7 +33,7 @@ using System.Drawing.Imaging;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public unsafe class UnknownImageReader : IImageReader internal unsafe class UnknownImageReader : IImageReader
{ {
#region ================== Constructor / Disposer #region ================== Constructor / Disposer

View file

@ -27,7 +27,7 @@ using System.IO;
namespace CodeImp.DoomBuilder.IO namespace CodeImp.DoomBuilder.IO
{ {
public class WAD : IDisposable internal class WAD
{ {
#region ================== Constants #region ================== Constants
@ -98,7 +98,7 @@ namespace CodeImp.DoomBuilder.IO
this.Dispose(); this.Dispose();
} }
// Diposer // Disposer
public void Dispose() public void Dispose()
{ {
// Not already disposed? // Not already disposed?

View file

@ -29,7 +29,7 @@ using System.Diagnostics;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class AboutForm : DelayedForm internal partial class AboutForm : DelayedForm
{ {
// Constructor // Constructor
public AboutForm() public AboutForm()

View file

@ -34,7 +34,7 @@ using CodeImp.DoomBuilder.IO;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class ActionBrowserForm : DelayedForm internal partial class ActionBrowserForm : DelayedForm
{ {
// Constants // Constants
private const int MAX_OPTIONS = 8; private const int MAX_OPTIONS = 8;

View file

@ -30,7 +30,7 @@ using CodeImp.DoomBuilder.Config;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class ActionSelectorControl : UserControl internal partial class ActionSelectorControl : UserControl
{ {
// Events // Events
public event EventHandler ValueChanges; public event EventHandler ValueChanges;

View file

@ -32,7 +32,7 @@ using CodeImp.DoomBuilder.Editing;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public class AutoSelectTextbox : TextBox internal class AutoSelectTextbox : TextBox
{ {
#region ================== Constants #region ================== Constants

View file

@ -29,7 +29,7 @@ using System.Drawing.Drawing2D;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class CheckboxArrayControl : UserControl internal partial class CheckboxArrayControl : UserControl
{ {
// Constants // Constants
private const int SPACING_Y = 1; private const int SPACING_Y = 1;

View file

@ -30,7 +30,7 @@ using CodeImp.DoomBuilder.Rendering;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class ColorControl : UserControl internal partial class ColorControl : UserControl
{ {
// Constructor // Constructor
public ColorControl() public ColorControl()

View file

@ -32,7 +32,7 @@ using CodeImp.DoomBuilder.Config;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class ConfigForm : DelayedForm internal partial class ConfigForm : DelayedForm
{ {
// Constructor // Constructor
public ConfigForm() public ConfigForm()

View file

@ -33,7 +33,7 @@ using CodeImp.DoomBuilder.Map;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class FlatBrowserForm : DelayedForm internal partial class FlatBrowserForm : DelayedForm
{ {
// Variables // Variables
private string selectedname; private string selectedname;

View file

@ -37,7 +37,7 @@ using CodeImp.DoomBuilder.Map;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public class FlatSelectorControl : ImageSelectorControl internal class FlatSelectorControl : ImageSelectorControl
{ {
// Setup // Setup
public void Initialize() public void Initialize()

View file

@ -33,7 +33,7 @@ using CodeImp.DoomBuilder.Editing;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class GridSetupForm : DelayedForm internal partial class GridSetupForm : DelayedForm
{ {
// Variables // Variables
private string backgroundname; private string backgroundname;

View file

@ -0,0 +1,63 @@

#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;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using System.Drawing;
using System.ComponentModel;
using CodeImp.DoomBuilder.Map;
using SlimDX.Direct3D;
using SlimDX.Direct3D9;
using SlimDX;
using CodeImp.DoomBuilder.Geometry;
using System.Drawing.Imaging;
using CodeImp.DoomBuilder.Data;
using CodeImp.DoomBuilder.Editing;
#endregion
namespace CodeImp.DoomBuilder.Interface
{
public interface IMainForm
{
// Properties
bool AltState { get; }
bool CtrlState { get; }
bool ShiftState { get; }
bool MouseInDisplay { get; }
bool AutoMerge { get; }
bool SnapToGrid { get; }
// Methods
void DisplayReady();
void DisplayStatus(string status);
void RedrawDisplay();
void ShowEditLinedefs(ICollection<Linedef> lines);
void ShowLinedefInfo(Linedef l);
void ShowSectorInfo(Sector s);
void ShowThingInfo(Thing t);
void ShowVertexInfo(Vertex v);
void HideInfo();
}
}

View file

@ -36,7 +36,7 @@ using System.Drawing.Drawing2D;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class ImageBrowserControl : UserControl internal partial class ImageBrowserControl : UserControl
{ {
#region ================== Delegates / Events #region ================== Delegates / Events

View file

@ -36,7 +36,7 @@ using System.Drawing.Drawing2D;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public abstract partial class ImageSelectorControl : UserControl internal abstract partial class ImageSelectorControl : UserControl
{ {
// Properties // Properties
public string TextureName { get { return name.Text; } set { name.Text = value; } } public string TextureName { get { return name.Text; } set { name.Text = value; } }

View file

@ -33,7 +33,7 @@ using CodeImp.DoomBuilder.Editing;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class LinedefEditForm : DelayedForm internal partial class LinedefEditForm : DelayedForm
{ {
// Variables // Variables
private ICollection<Linedef> lines; private ICollection<Linedef> lines;
@ -200,16 +200,6 @@ namespace CodeImp.DoomBuilder.Interface
} }
} }
} }
// This shows the dialog to edit lines
public static void EditLinedefs(IWin32Window owner, ICollection<Linedef> lines)
{
// Show line edit dialog
LinedefEditForm f = new LinedefEditForm();
f.Setup(lines);
f.ShowDialog(owner);
f.Dispose();
}
// Front side (un)checked // Front side (un)checked
private void frontside_CheckStateChanged(object sender, EventArgs e) private void frontside_CheckStateChanged(object sender, EventArgs e)

View file

@ -31,7 +31,7 @@ using CodeImp.DoomBuilder.Map;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class LinedefInfoPanel : UserControl internal partial class LinedefInfoPanel : UserControl
{ {
// Constructor // Constructor
public LinedefInfoPanel() public LinedefInfoPanel()

View file

@ -35,16 +35,16 @@ namespace CodeImp.DoomBuilder.Interface
System.Windows.Forms.ToolStripSeparator toolStripSeparator1; System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
System.Windows.Forms.ToolStripSeparator toolStripSeparator4; System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
System.Windows.Forms.ToolStripSeparator toolStripSeparator9; System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
System.Windows.Forms.ToolStripSeparator toolStripSeparator3; System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
System.Windows.Forms.ToolStripSeparator toolStripMenuItem5;
System.Windows.Forms.ToolStripSeparator toolStripSeparator10; System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
System.Windows.Forms.ToolStripSeparator toolStripMenuItem4; System.Windows.Forms.ToolStripSeparator toolStripMenuItem4;
System.Windows.Forms.ToolStripSeparator toolStripSeparator2; System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
System.Windows.Forms.ToolStripSeparator toolStripSeparator11; System.Windows.Forms.ToolStripSeparator toolStripSeparator11;
System.Windows.Forms.ToolStripSeparator toolstripSeperator1;
System.Windows.Forms.ToolStripSeparator toolstripSeperator6;
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.itemeditmodesseperator = new System.Windows.Forms.ToolStripSeparator();
this.buttoneditmodesseperator = new System.Windows.Forms.ToolStripSeparator();
this.poscommalabel = new System.Windows.Forms.ToolStripStatusLabel(); this.poscommalabel = new System.Windows.Forms.ToolStripStatusLabel();
this.menumain = new System.Windows.Forms.MenuStrip(); this.menumain = new System.Windows.Forms.MenuStrip();
this.menufile = new System.Windows.Forms.ToolStripMenuItem(); this.menufile = new System.Windows.Forms.ToolStripMenuItem();
@ -59,11 +59,8 @@ namespace CodeImp.DoomBuilder.Interface
this.menuedit = new System.Windows.Forms.ToolStripMenuItem(); this.menuedit = new System.Windows.Forms.ToolStripMenuItem();
this.itemundo = new System.Windows.Forms.ToolStripMenuItem(); this.itemundo = new System.Windows.Forms.ToolStripMenuItem();
this.itemredo = new System.Windows.Forms.ToolStripMenuItem(); this.itemredo = new System.Windows.Forms.ToolStripMenuItem();
this.itemverticesmode = new System.Windows.Forms.ToolStripMenuItem();
this.itemlinedefsmode = new System.Windows.Forms.ToolStripMenuItem();
this.itemsectorsmode = new System.Windows.Forms.ToolStripMenuItem();
this.itemthingsmode = new System.Windows.Forms.ToolStripMenuItem();
this.itemsnaptogrid = new System.Windows.Forms.ToolStripMenuItem(); this.itemsnaptogrid = new System.Windows.Forms.ToolStripMenuItem();
this.itemautomerge = new System.Windows.Forms.ToolStripMenuItem();
this.itemmapoptions = new System.Windows.Forms.ToolStripMenuItem(); this.itemmapoptions = new System.Windows.Forms.ToolStripMenuItem();
this.menutools = new System.Windows.Forms.ToolStripMenuItem(); this.menutools = new System.Windows.Forms.ToolStripMenuItem();
this.itemreloadresources = new System.Windows.Forms.ToolStripMenuItem(); this.itemreloadresources = new System.Windows.Forms.ToolStripMenuItem();
@ -78,10 +75,6 @@ namespace CodeImp.DoomBuilder.Interface
this.buttonmapoptions = new System.Windows.Forms.ToolStripButton(); this.buttonmapoptions = new System.Windows.Forms.ToolStripButton();
this.buttonundo = new System.Windows.Forms.ToolStripButton(); this.buttonundo = new System.Windows.Forms.ToolStripButton();
this.buttonredo = new System.Windows.Forms.ToolStripButton(); this.buttonredo = new System.Windows.Forms.ToolStripButton();
this.buttonverticesmode = new System.Windows.Forms.ToolStripButton();
this.buttonlinedefsmode = new System.Windows.Forms.ToolStripButton();
this.buttonsectorsmode = new System.Windows.Forms.ToolStripButton();
this.buttonthingsmode = new System.Windows.Forms.ToolStripButton();
this.buttonthingsfilter = new System.Windows.Forms.ToolStripButton(); this.buttonthingsfilter = new System.Windows.Forms.ToolStripButton();
this.thingfilters = new System.Windows.Forms.ToolStripComboBox(); this.thingfilters = new System.Windows.Forms.ToolStripComboBox();
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
@ -119,22 +112,19 @@ namespace CodeImp.DoomBuilder.Interface
this.linedefinfo = new CodeImp.DoomBuilder.Interface.LinedefInfoPanel(); this.linedefinfo = new CodeImp.DoomBuilder.Interface.LinedefInfoPanel();
this.redrawtimer = new System.Windows.Forms.Timer(this.components); this.redrawtimer = new System.Windows.Forms.Timer(this.components);
this.display = new CodeImp.DoomBuilder.Interface.RenderTargetControl(); this.display = new CodeImp.DoomBuilder.Interface.RenderTargetControl();
this.itemautomerge = new System.Windows.Forms.ToolStripMenuItem();
toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
toolStripMenuItem5 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
toolstripSeperator1 = new System.Windows.Forms.ToolStripSeparator();
toolstripSeperator6 = new System.Windows.Forms.ToolStripSeparator();
this.menumain.SuspendLayout(); this.menumain.SuspendLayout();
this.toolbar.SuspendLayout(); this.toolbar.SuspendLayout();
this.statusbar.SuspendLayout(); this.statusbar.SuspendLayout();
@ -173,10 +163,10 @@ namespace CodeImp.DoomBuilder.Interface
toolStripSeparator9.Name = "toolStripSeparator9"; toolStripSeparator9.Name = "toolStripSeparator9";
toolStripSeparator9.Size = new System.Drawing.Size(6, 23); toolStripSeparator9.Size = new System.Drawing.Size(6, 23);
// //
// toolStripSeparator6 // itemeditmodesseperator
// //
toolStripSeparator6.Name = "toolStripSeparator6"; this.itemeditmodesseperator.Name = "itemeditmodesseperator";
toolStripSeparator6.Size = new System.Drawing.Size(162, 6); this.itemeditmodesseperator.Size = new System.Drawing.Size(162, 6);
// //
// toolStripSeparator3 // toolStripSeparator3
// //
@ -184,22 +174,11 @@ namespace CodeImp.DoomBuilder.Interface
toolStripSeparator3.Name = "toolStripSeparator3"; toolStripSeparator3.Name = "toolStripSeparator3";
toolStripSeparator3.Size = new System.Drawing.Size(6, 25); toolStripSeparator3.Size = new System.Drawing.Size(6, 25);
// //
// toolStripSeparator5 // buttoneditmodesseperator
// //
toolStripSeparator5.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); this.buttoneditmodesseperator.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
toolStripSeparator5.Name = "toolStripSeparator5"; this.buttoneditmodesseperator.Name = "buttoneditmodesseperator";
toolStripSeparator5.Size = new System.Drawing.Size(6, 25); this.buttoneditmodesseperator.Size = new System.Drawing.Size(6, 25);
//
// toolStripSeparator7
//
toolStripSeparator7.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
toolStripSeparator7.Name = "toolStripSeparator7";
toolStripSeparator7.Size = new System.Drawing.Size(6, 25);
//
// toolStripMenuItem5
//
toolStripMenuItem5.Name = "toolStripMenuItem5";
toolStripMenuItem5.Size = new System.Drawing.Size(162, 6);
// //
// toolStripSeparator10 // toolStripSeparator10
// //
@ -222,6 +201,17 @@ namespace CodeImp.DoomBuilder.Interface
toolStripSeparator11.Name = "toolStripSeparator11"; toolStripSeparator11.Name = "toolStripSeparator11";
toolStripSeparator11.Size = new System.Drawing.Size(162, 6); toolStripSeparator11.Size = new System.Drawing.Size(162, 6);
// //
// toolstripSeperator1
//
toolstripSeperator1.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
toolstripSeperator1.Name = "toolstripSeperator1";
toolstripSeperator1.Size = new System.Drawing.Size(6, 25);
//
// toolstripSeperator6
//
toolstripSeperator6.Name = "toolstripSeperator6";
toolstripSeperator6.Size = new System.Drawing.Size(162, 6);
//
// poscommalabel // poscommalabel
// //
this.poscommalabel.Name = "poscommalabel"; this.poscommalabel.Name = "poscommalabel";
@ -329,12 +319,8 @@ namespace CodeImp.DoomBuilder.Interface
this.menuedit.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuedit.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.itemundo, this.itemundo,
this.itemredo, this.itemredo,
toolStripMenuItem5, toolstripSeperator6,
this.itemverticesmode, this.itemeditmodesseperator,
this.itemlinedefsmode,
this.itemsectorsmode,
this.itemthingsmode,
toolStripSeparator6,
this.itemsnaptogrid, this.itemsnaptogrid,
this.itemautomerge, this.itemautomerge,
toolStripSeparator11, toolStripSeparator11,
@ -361,42 +347,6 @@ namespace CodeImp.DoomBuilder.Interface
this.itemredo.Text = "Redo"; this.itemredo.Text = "Redo";
this.itemredo.Click += new System.EventHandler(this.InvokeTaggedAction); this.itemredo.Click += new System.EventHandler(this.InvokeTaggedAction);
// //
// itemverticesmode
//
this.itemverticesmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.VerticesMode;
this.itemverticesmode.Name = "itemverticesmode";
this.itemverticesmode.Size = new System.Drawing.Size(165, 22);
this.itemverticesmode.Tag = "verticesmode";
this.itemverticesmode.Text = "Vertices Mode";
this.itemverticesmode.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// itemlinedefsmode
//
this.itemlinedefsmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.LinesMode;
this.itemlinedefsmode.Name = "itemlinedefsmode";
this.itemlinedefsmode.Size = new System.Drawing.Size(165, 22);
this.itemlinedefsmode.Tag = "linedefsmode";
this.itemlinedefsmode.Text = "Linedefs Mode";
this.itemlinedefsmode.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// itemsectorsmode
//
this.itemsectorsmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.SectorsMode;
this.itemsectorsmode.Name = "itemsectorsmode";
this.itemsectorsmode.Size = new System.Drawing.Size(165, 22);
this.itemsectorsmode.Tag = "sectorsmode";
this.itemsectorsmode.Text = "Sectors Mode";
this.itemsectorsmode.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// itemthingsmode
//
this.itemthingsmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.ThingsMode;
this.itemthingsmode.Name = "itemthingsmode";
this.itemthingsmode.Size = new System.Drawing.Size(165, 22);
this.itemthingsmode.Tag = "thingsmode";
this.itemthingsmode.Text = "Things Mode";
this.itemthingsmode.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// itemsnaptogrid // itemsnaptogrid
// //
this.itemsnaptogrid.Checked = true; this.itemsnaptogrid.Checked = true;
@ -408,6 +358,17 @@ namespace CodeImp.DoomBuilder.Interface
this.itemsnaptogrid.Text = "Snap to Grid"; this.itemsnaptogrid.Text = "Snap to Grid";
this.itemsnaptogrid.Click += new System.EventHandler(this.InvokeTaggedAction); this.itemsnaptogrid.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(165, 22);
this.itemautomerge.Tag = "toggleautomerge";
this.itemautomerge.Text = "Merge Geometry";
this.itemautomerge.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// itemmapoptions // itemmapoptions
// //
this.itemmapoptions.Image = global::CodeImp.DoomBuilder.Properties.Resources.Properties; this.itemmapoptions.Image = global::CodeImp.DoomBuilder.Properties.Resources.Properties;
@ -479,12 +440,8 @@ namespace CodeImp.DoomBuilder.Interface
toolStripSeparator10, toolStripSeparator10,
this.buttonundo, this.buttonundo,
this.buttonredo, this.buttonredo,
toolStripSeparator5, toolstripSeperator1,
this.buttonverticesmode, this.buttoneditmodesseperator,
this.buttonlinedefsmode,
this.buttonsectorsmode,
this.buttonthingsmode,
toolStripSeparator7,
this.buttonthingsfilter, this.buttonthingsfilter,
this.thingfilters, this.thingfilters,
this.toolStripSeparator8, this.toolStripSeparator8,
@ -561,50 +518,6 @@ namespace CodeImp.DoomBuilder.Interface
this.buttonredo.Text = "Redo"; this.buttonredo.Text = "Redo";
this.buttonredo.Click += new System.EventHandler(this.InvokeTaggedAction); this.buttonredo.Click += new System.EventHandler(this.InvokeTaggedAction);
// //
// buttonverticesmode
//
this.buttonverticesmode.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonverticesmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.VerticesMode;
this.buttonverticesmode.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonverticesmode.Name = "buttonverticesmode";
this.buttonverticesmode.Size = new System.Drawing.Size(23, 22);
this.buttonverticesmode.Tag = "verticesmode";
this.buttonverticesmode.Text = "Vertices Mode";
this.buttonverticesmode.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonlinedefsmode
//
this.buttonlinedefsmode.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonlinedefsmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.LinesMode;
this.buttonlinedefsmode.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonlinedefsmode.Name = "buttonlinedefsmode";
this.buttonlinedefsmode.Size = new System.Drawing.Size(23, 22);
this.buttonlinedefsmode.Tag = "linedefsmode";
this.buttonlinedefsmode.Text = "Linedefs Mode";
this.buttonlinedefsmode.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonsectorsmode
//
this.buttonsectorsmode.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonsectorsmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.SectorsMode;
this.buttonsectorsmode.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonsectorsmode.Name = "buttonsectorsmode";
this.buttonsectorsmode.Size = new System.Drawing.Size(23, 22);
this.buttonsectorsmode.Tag = "sectorsmode";
this.buttonsectorsmode.Text = "Sectors Mode";
this.buttonsectorsmode.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonthingsmode
//
this.buttonthingsmode.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.buttonthingsmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.ThingsMode;
this.buttonthingsmode.ImageTransparentColor = System.Drawing.Color.Magenta;
this.buttonthingsmode.Name = "buttonthingsmode";
this.buttonthingsmode.Size = new System.Drawing.Size(23, 22);
this.buttonthingsmode.Tag = "thingsmode";
this.buttonthingsmode.Text = "Things Mode";
this.buttonthingsmode.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// buttonthingsfilter // buttonthingsfilter
// //
this.buttonthingsfilter.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttonthingsfilter.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@ -987,17 +900,6 @@ namespace CodeImp.DoomBuilder.Interface
this.display.Paint += new System.Windows.Forms.PaintEventHandler(this.display_Paint); this.display.Paint += new System.Windows.Forms.PaintEventHandler(this.display_Paint);
this.display.MouseUp += new System.Windows.Forms.MouseEventHandler(this.display_MouseUp); this.display.MouseUp += new System.Windows.Forms.MouseEventHandler(this.display_MouseUp);
// //
// 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(165, 22);
this.itemautomerge.Tag = "toggleautomerge";
this.itemautomerge.Text = "Merge Geometry";
this.itemautomerge.Click += new System.EventHandler(this.InvokeTaggedAction);
//
// MainForm // MainForm
// //
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@ -1074,14 +976,6 @@ namespace CodeImp.DoomBuilder.Interface
private System.Windows.Forms.ToolStripMenuItem itemmapoptions; private System.Windows.Forms.ToolStripMenuItem itemmapoptions;
private System.Windows.Forms.ToolStripButton buttonmapoptions; private System.Windows.Forms.ToolStripButton buttonmapoptions;
private System.Windows.Forms.ToolStripMenuItem itemreloadresources; private System.Windows.Forms.ToolStripMenuItem itemreloadresources;
private System.Windows.Forms.ToolStripButton buttonverticesmode;
private System.Windows.Forms.ToolStripButton buttonlinedefsmode;
private System.Windows.Forms.ToolStripButton buttonsectorsmode;
private System.Windows.Forms.ToolStripMenuItem itemverticesmode;
private System.Windows.Forms.ToolStripMenuItem itemlinedefsmode;
private System.Windows.Forms.ToolStripMenuItem itemsectorsmode;
private System.Windows.Forms.ToolStripButton buttonthingsmode;
private System.Windows.Forms.ToolStripMenuItem itemthingsmode;
private LinedefInfoPanel linedefinfo; private LinedefInfoPanel linedefinfo;
private VertexInfoPanel vertexinfo; private VertexInfoPanel vertexinfo;
private SectorInfoPanel sectorinfo; private SectorInfoPanel sectorinfo;
@ -1110,5 +1004,7 @@ namespace CodeImp.DoomBuilder.Interface
private System.Windows.Forms.ToolStripMenuItem itemsnaptogrid; private System.Windows.Forms.ToolStripMenuItem itemsnaptogrid;
private System.Windows.Forms.ToolStripButton buttonautomerge; private System.Windows.Forms.ToolStripButton buttonautomerge;
private System.Windows.Forms.ToolStripMenuItem itemautomerge; private System.Windows.Forms.ToolStripMenuItem itemautomerge;
private System.Windows.Forms.ToolStripSeparator buttoneditmodesseperator;
private System.Windows.Forms.ToolStripSeparator itemeditmodesseperator;
} }
} }

View file

@ -35,7 +35,7 @@ using CodeImp.DoomBuilder.Map;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class MainForm : DelayedForm public partial class MainForm : DelayedForm, IMainForm
{ {
#region ================== Constants #region ================== Constants
@ -67,6 +67,9 @@ namespace CodeImp.DoomBuilder.Interface
// Recent files // Recent files
private ToolStripMenuItem[] recentitems; private ToolStripMenuItem[] recentitems;
// Edit modes
private List<ToolStripItem> editmodeitems;
#endregion #endregion
#region ================== Properties #region ================== Properties
@ -75,7 +78,7 @@ namespace CodeImp.DoomBuilder.Interface
public bool CtrlState { get { return ctrl; } } public bool CtrlState { get { return ctrl; } }
public bool AltState { get { return alt; } } public bool AltState { get { return alt; } }
public bool MouseInDisplay { get { return mouseinside; } } public bool MouseInDisplay { get { return mouseinside; } }
public RenderTargetControl Display { get { return display; } } internal RenderTargetControl Display { get { return display; } }
public bool SnapToGrid { get { return buttonsnaptogrid.Checked; } } public bool SnapToGrid { get { return buttonsnaptogrid.Checked; } }
public bool AutoMerge { get { return buttonautomerge.Checked; } } public bool AutoMerge { get { return buttonautomerge.Checked; } }
@ -84,11 +87,12 @@ namespace CodeImp.DoomBuilder.Interface
#region ================== Constructor / Disposer #region ================== Constructor / Disposer
// Constructor // Constructor
public MainForm() internal MainForm()
{ {
// Setup controls // Setup controls
InitializeComponent(); InitializeComponent();
editmodeitems = new List<ToolStripItem>();
// Visual Studio IDE doesn't let me set these in the designer :( // Visual Studio IDE doesn't let me set these in the designer :(
buttonzoom.Font = menufile.Font; buttonzoom.Font = menufile.Font;
buttonzoom.DropDownDirection = ToolStripDropDownDirection.AboveLeft; buttonzoom.DropDownDirection = ToolStripDropDownDirection.AboveLeft;
@ -117,7 +121,7 @@ namespace CodeImp.DoomBuilder.Interface
#region ================== General #region ================== General
// This updates all menus for the current status // This updates all menus for the current status
public void UpdateInterface() internal void UpdateInterface()
{ {
// Map opened? // Map opened?
if(General.Map != null) if(General.Map != null)
@ -138,13 +142,17 @@ namespace CodeImp.DoomBuilder.Interface
UpdateFileMenu(); UpdateFileMenu();
UpdateEditMenu(); UpdateEditMenu();
UpdateToolsMenu(); UpdateToolsMenu();
UpdateEditModeItems();
} }
// Generic event that invokes the tagged action // Generic event that invokes the tagged action
private void InvokeTaggedAction(object sender, EventArgs e) private void InvokeTaggedAction(object sender, EventArgs e)
{ {
string asmname;
this.Update(); this.Update();
General.Actions[(sender as ToolStripItem).Tag.ToString()].Invoke(); asmname = General.ThisAssembly.GetName().Name.ToLowerInvariant();
General.Actions[asmname + "_" + (sender as ToolStripItem).Tag.ToString()].Invoke();
this.Update(); this.Update();
} }
@ -270,7 +278,7 @@ namespace CodeImp.DoomBuilder.Interface
} }
// This returns the current status text // This returns the current status text
public string GetCurrentSatus() internal string GetCurrentSatus()
{ {
return statuslabel.Text; return statuslabel.Text;
} }
@ -298,7 +306,7 @@ namespace CodeImp.DoomBuilder.Interface
} }
// This updates the status icon // This updates the status icon
public void UpdateStatusIcon() internal void UpdateStatusIcon()
{ {
// From another thread? // From another thread?
if(statusbar.InvokeRequired) if(statusbar.InvokeRequired)
@ -342,7 +350,7 @@ namespace CodeImp.DoomBuilder.Interface
} }
// This changes coordinates display // This changes coordinates display
public void UpdateCoordinates(Vector2D coords) internal void UpdateCoordinates(Vector2D coords)
{ {
// X position // X position
if(float.IsNaN(coords.x)) if(float.IsNaN(coords.x))
@ -361,7 +369,7 @@ namespace CodeImp.DoomBuilder.Interface
} }
// This changes zoom display // This changes zoom display
public void UpdateZoom(float scale) internal void UpdateZoom(float scale)
{ {
// Update scale label // Update scale label
if(float.IsNaN(scale)) if(float.IsNaN(scale))
@ -409,7 +417,7 @@ namespace CodeImp.DoomBuilder.Interface
} }
// This changes grid display // This changes grid display
public void UpdateGrid(int gridsize) internal void UpdateGrid(int gridsize)
{ {
// Update grid label // Update grid label
if(gridsize == 0) if(gridsize == 0)
@ -454,7 +462,7 @@ namespace CodeImp.DoomBuilder.Interface
// This shows the grid setup dialog // This shows the grid setup dialog
[Action("gridsetup")] [Action("gridsetup")]
public void ShowGridSetup() internal void ShowGridSetup()
{ {
// Only when a map is open // Only when a map is open
if(General.Map == null) return; if(General.Map == null) return;
@ -473,10 +481,102 @@ namespace CodeImp.DoomBuilder.Interface
#endregion #endregion
#region ================== Toolbar
// This enables or disables all editing mode items
private void UpdateEditModeItems()
{
// Enable/disable all items
foreach(ToolStripItem i in editmodeitems) i.Enabled = (General.Map != null);
}
// This checks one of the edit mode items (and unchecks all others)
internal void CheckEditModeButton(string modeclassname)
{
// Go for all items
foreach(ToolStripItem i in editmodeitems)
{
// Check what type it is
if(i is ToolStripMenuItem)
{
// Check if mode type matches with given name
(i as ToolStripMenuItem).Checked = ((i.Tag as EditModeInfo).Type.Name == modeclassname);
}
else if(i is ToolStripButton)
{
// Check if mode type matches with given name
(i as ToolStripButton).Checked = ((i.Tag as EditModeInfo).Type.Name == modeclassname);
}
}
}
// This removes the config-specific editing mode buttons
internal void RemoveSpecificEditModeButtons()
{
bool removed;
do
{
// Go for all items
removed = false;
foreach(ToolStripItem i in editmodeitems)
{
// Only remove the button if it is for a config-specific editing mode
if((i.Tag as EditModeInfo).ConfigSpecific)
{
// Remove it and restart
editmodeitems.Remove(i);
toolbar.Items.Remove(i);
menuedit.DropDownItems.Remove(i);
removed = true;
break;
}
}
}
while(removed);
}
// This adds an editing mode button to the toolbar and edit menu
internal void AddEditModeButton(EditModeInfo modeinfo)
{
ToolStripItem item;
int index;
// Create a button
index = toolbar.Items.IndexOf(buttoneditmodesseperator);
item = new ToolStripButton(modeinfo.ButtonDesc, modeinfo.ButtonImage, new EventHandler(EditModeButtonHandler));
item.DisplayStyle = ToolStripItemDisplayStyle.Image;
item.Tag = modeinfo;
item.Enabled = (General.Map != null);
toolbar.Items.Insert(index, item);
editmodeitems.Add(item);
// Create menu item
index = menuedit.DropDownItems.IndexOf(itemeditmodesseperator);
item = new ToolStripMenuItem(modeinfo.ButtonDesc, modeinfo.ButtonImage, new EventHandler(EditModeButtonHandler));
item.Tag = modeinfo;
item.Enabled = (General.Map != null);
menuedit.DropDownItems.Insert(index, item);
editmodeitems.Add(item);
}
// This handles edit mode button clicks
private void EditModeButtonHandler(object sender, EventArgs e)
{
EditModeInfo modeinfo;
this.Update();
modeinfo = (EditModeInfo)((sender as ToolStripItem).Tag);
General.Actions[modeinfo.SwitchAction.GetFullActionName(modeinfo.Plugin.Assembly)].Invoke();
this.Update();
}
#endregion
#region ================== Display #region ================== Display
// This shows the splash screen on display // This shows the splash screen on display
public void ShowSplashDisplay() internal void ShowSplashDisplay()
{ {
// Change display to show splash logo // Change display to show splash logo
display.SetSplashLogoDisplay(); display.SetSplashLogoDisplay();
@ -484,7 +584,7 @@ namespace CodeImp.DoomBuilder.Interface
} }
// This clears the display // This clears the display
public void ClearDisplay() internal void ClearDisplay()
{ {
// Clear the display // Clear the display
display.SetManualRendering(); display.SetManualRendering();
@ -636,7 +736,7 @@ namespace CodeImp.DoomBuilder.Interface
#region ================== Menus #region ================== Menus
// Public method to apply shortcut keys // Public method to apply shortcut keys
public void ApplyShortcutKeys() internal void ApplyShortcutKeys()
{ {
// Apply shortcut keys to menus // Apply shortcut keys to menus
ApplyShortcutKeys(menumain.Items); ApplyShortcutKeys(menumain.Items);
@ -753,7 +853,7 @@ namespace CodeImp.DoomBuilder.Interface
} }
// This adds a recent file to the list // This adds a recent file to the list
public void AddRecentFile(string filename) internal void AddRecentFile(string filename)
{ {
int movedownto = MAX_RECENT_FILES - 1; int movedownto = MAX_RECENT_FILES - 1;
@ -838,34 +938,6 @@ namespace CodeImp.DoomBuilder.Interface
#region ================== Edit Menu #region ================== Edit Menu
// This sets the status of the vertices button
public void SetVerticesChecked(bool value)
{
itemverticesmode.Checked = value;
buttonverticesmode.Checked = value;
}
// This sets the status of the linedefs button
public void SetLinedefsChecked(bool value)
{
itemlinedefsmode.Checked = value;
buttonlinedefsmode.Checked = value;
}
// This sets the status of the sectors button
public void SetSectorsChecked(bool value)
{
itemsectorsmode.Checked = value;
buttonsectorsmode.Checked = value;
}
// This sets the status of the things button
public void SetThingsChecked(bool value)
{
itemthingsmode.Checked = value;
buttonthingsmode.Checked = value;
}
// This sets up the edit menu // This sets up the edit menu
private void UpdateEditMenu() private void UpdateEditMenu()
{ {
@ -876,10 +948,6 @@ namespace CodeImp.DoomBuilder.Interface
itemundo.Enabled = (General.Map != null) && (General.Map.UndoRedo.NextUndo != null); itemundo.Enabled = (General.Map != null) && (General.Map.UndoRedo.NextUndo != null);
itemredo.Enabled = (General.Map != null) && (General.Map.UndoRedo.NextRedo != null); itemredo.Enabled = (General.Map != null) && (General.Map.UndoRedo.NextRedo != null);
itemmapoptions.Enabled = (General.Map != null); itemmapoptions.Enabled = (General.Map != null);
itemverticesmode.Enabled = (General.Map != null);
itemlinedefsmode.Enabled = (General.Map != null);
itemsectorsmode.Enabled = (General.Map != null);
itemthingsmode.Enabled = (General.Map != null);
itemsnaptogrid.Enabled = (General.Map != null); itemsnaptogrid.Enabled = (General.Map != null);
itemautomerge.Enabled = (General.Map != null); itemautomerge.Enabled = (General.Map != null);
@ -897,10 +965,6 @@ namespace CodeImp.DoomBuilder.Interface
// Toolbar icons // Toolbar icons
buttonmapoptions.Enabled = (General.Map != null); buttonmapoptions.Enabled = (General.Map != null);
buttonverticesmode.Enabled = (General.Map != null);
buttonlinedefsmode.Enabled = (General.Map != null);
buttonsectorsmode.Enabled = (General.Map != null);
buttonthingsmode.Enabled = (General.Map != null);
buttonundo.Enabled = itemundo.Enabled; buttonundo.Enabled = itemundo.Enabled;
buttonredo.Enabled = itemredo.Enabled; buttonredo.Enabled = itemredo.Enabled;
buttonundo.ToolTipText = itemundo.Text; buttonundo.ToolTipText = itemundo.Text;
@ -911,7 +975,7 @@ namespace CodeImp.DoomBuilder.Interface
// Action to toggle snap to grid // Action to toggle snap to grid
[Action("togglesnap")] [Action("togglesnap")]
public void ToggleSnapToGrid() internal void ToggleSnapToGrid()
{ {
buttonsnaptogrid.Checked = !buttonsnaptogrid.Checked; buttonsnaptogrid.Checked = !buttonsnaptogrid.Checked;
itemsnaptogrid.Checked = buttonsnaptogrid.Checked; itemsnaptogrid.Checked = buttonsnaptogrid.Checked;
@ -919,7 +983,7 @@ namespace CodeImp.DoomBuilder.Interface
// Action to toggle auto merge // Action to toggle auto merge
[Action("toggleautomerge")] [Action("toggleautomerge")]
public void ToggleAutoMerge() internal void ToggleAutoMerge()
{ {
buttonautomerge.Checked = !buttonautomerge.Checked; buttonautomerge.Checked = !buttonautomerge.Checked;
itemautomerge.Checked = buttonautomerge.Checked; itemautomerge.Checked = buttonautomerge.Checked;
@ -954,7 +1018,7 @@ namespace CodeImp.DoomBuilder.Interface
// Game Configuration action // Game Configuration action
[Action("configuration")] [Action("configuration")]
public void ShowConfiguration() internal void ShowConfiguration()
{ {
// Show configuration dialog // Show configuration dialog
ConfigForm cfgform = new ConfigForm(); ConfigForm cfgform = new ConfigForm();
@ -976,7 +1040,7 @@ namespace CodeImp.DoomBuilder.Interface
// Preferences action // Preferences action
[Action("preferences")] [Action("preferences")]
public void ShowPreferences() internal void ShowPreferences()
{ {
// Show preferences dialog // Show preferences dialog
PreferencesForm prefform = new PreferencesForm(); PreferencesForm prefform = new PreferencesForm();
@ -1023,5 +1087,19 @@ namespace CodeImp.DoomBuilder.Interface
public void ShowThingInfo(Thing t) { thinginfo.ShowInfo(t); } public void ShowThingInfo(Thing t) { thinginfo.ShowInfo(t); }
#endregion #endregion
#region ================== Dialogs
// This shows the dialog to edit lines
public void ShowEditLinedefs(ICollection<Linedef> lines)
{
// Show line edit dialog
LinedefEditForm f = new LinedefEditForm();
f.Setup(lines);
f.ShowDialog(this);
f.Dispose();
}
#endregion
} }
} }

View file

@ -135,21 +135,9 @@
<metadata name="toolStripSeparator9.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="toolStripSeparator9.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value> <value>False</value>
</metadata> </metadata>
<metadata name="toolStripSeparator6.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStripSeparator3.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="toolStripSeparator3.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value> <value>False</value>
</metadata> </metadata>
<metadata name="toolStripSeparator5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStripSeparator7.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStripMenuItem5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStripSeparator10.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="toolStripSeparator10.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value> <value>False</value>
</metadata> </metadata>
@ -162,6 +150,12 @@
<metadata name="toolStripSeparator11.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="toolStripSeparator11.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value> <value>False</value>
</metadata> </metadata>
<metadata name="toolstripSeperator1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolstripSeperator6.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="menumain.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="menumain.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>

View file

@ -32,7 +32,7 @@ using CodeImp.DoomBuilder.Config;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class MapOptionsForm : DelayedForm internal partial class MapOptionsForm : DelayedForm
{ {
// Variables // Variables
private MapOptions options; private MapOptions options;

View file

@ -34,7 +34,7 @@ using CodeImp.DoomBuilder.Config;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class OpenMapOptionsForm : DelayedForm internal partial class OpenMapOptionsForm : DelayedForm
{ {
// Variables // Variables
private Configuration mapsettings; private Configuration mapsettings;

View file

@ -30,7 +30,7 @@ using CodeImp.DoomBuilder.Controls;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class PreferencesForm : DelayedForm internal partial class PreferencesForm : DelayedForm
{ {
#region ================== Variables #region ================== Variables

View file

@ -32,7 +32,7 @@ using CodeImp.DoomBuilder.Editing;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public class RenderTargetControl : Panel internal class RenderTargetControl : Panel
{ {
#region ================== Constants #region ================== Constants
@ -59,7 +59,7 @@ namespace CodeImp.DoomBuilder.Interface
this.SetStyle(ControlStyles.FixedHeight, true); this.SetStyle(ControlStyles.FixedHeight, true);
} }
// Diposer // Disposer
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
// Clean up // Clean up

View file

@ -1,6 +1,6 @@
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class ResourceListEditor partial class ResourceListEditor
{ {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.

View file

@ -29,7 +29,7 @@ using CodeImp.DoomBuilder.Data;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class ResourceListEditor : UserControl internal partial class ResourceListEditor : UserControl
{ {
#region ================== Delegates / Events #region ================== Delegates / Events

View file

@ -32,7 +32,7 @@ using CodeImp.DoomBuilder.Editing;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public class ResourceListView : ListView internal class ResourceListView : ListView
{ {
#region ================== Constants #region ================== Constants

View file

@ -30,7 +30,7 @@ using CodeImp.DoomBuilder.Data;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class ResourceOptionsForm : DelayedForm internal partial class ResourceOptionsForm : DelayedForm
{ {
// Variables // Variables
private DataLocation res; private DataLocation res;

View file

@ -31,7 +31,7 @@ using CodeImp.DoomBuilder.Map;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class SectorInfoPanel : UserControl internal partial class SectorInfoPanel : UserControl
{ {
// Constructor // Constructor
public SectorInfoPanel() public SectorInfoPanel()

View file

@ -33,7 +33,7 @@ using CodeImp.DoomBuilder.Map;
namespace CodeImp.DoomBuilder.Interface namespace CodeImp.DoomBuilder.Interface
{ {
public partial class TextureBrowserForm : DelayedForm internal partial class TextureBrowserForm : DelayedForm
{ {
// Variables // Variables
private string selectedname; private string selectedname;

Some files were not shown because too many files have changed in this diff Show more