icons updated, moved configuration classes and create GameConfiguration class
Before Width: | Height: | Size: 291 B After Width: | Height: | Size: 300 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 337 B |
Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 212 B |
|
@ -44,6 +44,9 @@
|
||||||
</Target>
|
</Target>
|
||||||
-->
|
-->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="Config\GameConfiguration.cs" />
|
||||||
|
<Compile Include="Config\ThingCategory.cs" />
|
||||||
|
<Compile Include="Config\ThingTypeInfo.cs" />
|
||||||
<Compile Include="Controls\ActionAttribute.cs" />
|
<Compile Include="Controls\ActionAttribute.cs" />
|
||||||
<Compile Include="Controls\KeyControl.cs" />
|
<Compile Include="Controls\KeyControl.cs" />
|
||||||
<Compile Include="Data\DirectoryReader.cs" />
|
<Compile Include="Data\DirectoryReader.cs" />
|
||||||
|
@ -62,12 +65,11 @@
|
||||||
<Compile Include="Controls\ActionDelegate.cs" />
|
<Compile Include="Controls\ActionDelegate.cs" />
|
||||||
<Compile Include="Controls\Action.cs" />
|
<Compile Include="Controls\Action.cs" />
|
||||||
<Compile Include="Controls\ActionManager.cs" />
|
<Compile Include="Controls\ActionManager.cs" />
|
||||||
<Compile Include="General\CompilerInfo.cs" />
|
<Compile Include="Config\CompilerInfo.cs" />
|
||||||
<Compile Include="General\ConfigurationInfo.cs" />
|
<Compile Include="Config\ConfigurationInfo.cs" />
|
||||||
<Compile Include="General\GameConfigurationCache.cs" />
|
|
||||||
<Compile Include="General\MapManager.cs" />
|
<Compile Include="General\MapManager.cs" />
|
||||||
<Compile Include="Controls\SpecialKeys.cs" />
|
<Compile Include="Controls\SpecialKeys.cs" />
|
||||||
<Compile Include="General\NodebuilderInfo.cs" />
|
<Compile Include="Config\NodebuilderInfo.cs" />
|
||||||
<Compile Include="Geometry\Angle2D.cs" />
|
<Compile Include="Geometry\Angle2D.cs" />
|
||||||
<Compile Include="Geometry\Line2D.cs" />
|
<Compile Include="Geometry\Line2D.cs" />
|
||||||
<Compile Include="Geometry\Vector2D.cs" />
|
<Compile Include="Geometry\Vector2D.cs" />
|
||||||
|
@ -215,9 +217,9 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Resources\Builder.ico" />
|
<Content Include="Resources\Builder.ico" />
|
||||||
|
<None Include="Resources\VerticesMode.png" />
|
||||||
<None Include="Resources\SectorsMode.png" />
|
<None Include="Resources\SectorsMode.png" />
|
||||||
<None Include="Resources\LinesMode.png" />
|
<None Include="Resources\LinesMode.png" />
|
||||||
<None Include="Resources\VerticesMode.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" />
|
||||||
|
|
|
@ -28,7 +28,7 @@ using System.Diagnostics;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder
|
namespace CodeImp.DoomBuilder.Config
|
||||||
{
|
{
|
||||||
internal class CompilerInfo
|
internal class CompilerInfo
|
||||||
{
|
{
|
|
@ -27,7 +27,7 @@ using System.IO;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder
|
namespace CodeImp.DoomBuilder.Config
|
||||||
{
|
{
|
||||||
internal class ConfigurationInfo : IComparable<ConfigurationInfo>
|
internal class ConfigurationInfo : IComparable<ConfigurationInfo>
|
||||||
{
|
{
|
100
Source/Config/GameConfiguration.cs
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
|
||||||
|
#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 CodeImp.DoomBuilder.IO;
|
||||||
|
using CodeImp.DoomBuilder.Data;
|
||||||
|
using System.IO;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace CodeImp.DoomBuilder.Config
|
||||||
|
{
|
||||||
|
internal class GameConfiguration
|
||||||
|
{
|
||||||
|
#region ================== Constants
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Variables
|
||||||
|
|
||||||
|
// Original configuration
|
||||||
|
private Configuration cfg;
|
||||||
|
|
||||||
|
// General settings
|
||||||
|
private float defaulttexturescale;
|
||||||
|
private float defaultflatscale;
|
||||||
|
private string formatinterface;
|
||||||
|
private IDictionary maplumpnames;
|
||||||
|
private int soundlinedefflags;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Properties
|
||||||
|
|
||||||
|
// General settings
|
||||||
|
public float DefaultTextureScale { get { return defaulttexturescale; } }
|
||||||
|
public float DefaultFlatScale { get { return defaultflatscale; } }
|
||||||
|
public string FormatInterface { get { return formatinterface; } }
|
||||||
|
public IDictionary MapLumpNames { get { return maplumpnames; } }
|
||||||
|
public int SoundLinedefFlags { get { return soundlinedefflags; } }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Constructor / Disposer
|
||||||
|
|
||||||
|
// Constructor
|
||||||
|
public GameConfiguration(Configuration cfg)
|
||||||
|
{
|
||||||
|
// Keep reference
|
||||||
|
this.cfg = cfg;
|
||||||
|
|
||||||
|
// Read general settings
|
||||||
|
defaulttexturescale = cfg.ReadSetting("defaulttexturescale", 1f);
|
||||||
|
defaultflatscale = cfg.ReadSetting("defaultflatscale", 1f);
|
||||||
|
formatinterface = cfg.ReadSetting("formatinterface", "");
|
||||||
|
maplumpnames = cfg.ReadSetting("maplumpnames", new Hashtable());
|
||||||
|
soundlinedefflags = cfg.ReadSetting("soundlinedefflags", 0);
|
||||||
|
|
||||||
|
// We have no destructor
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Methods
|
||||||
|
|
||||||
|
// ReadSetting
|
||||||
|
public string ReadSetting(string setting, string defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); }
|
||||||
|
public int ReadSetting(string setting, int defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); }
|
||||||
|
public float ReadSetting(string setting, float defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); }
|
||||||
|
public short ReadSetting(string setting, short defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); }
|
||||||
|
public long ReadSetting(string setting, long defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); }
|
||||||
|
public bool ReadSetting(string setting, bool defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); }
|
||||||
|
public byte ReadSetting(string setting, byte defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); }
|
||||||
|
public IDictionary ReadSetting(string setting, IDictionary defaultsetting) { return cfg.ReadSetting(setting, defaultsetting); }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -29,7 +29,7 @@ using System.Windows.Forms;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder
|
namespace CodeImp.DoomBuilder.Config
|
||||||
{
|
{
|
||||||
internal class NodebuilderInfo : IComparable<NodebuilderInfo>
|
internal class NodebuilderInfo : IComparable<NodebuilderInfo>
|
||||||
{
|
{
|
|
@ -21,16 +21,17 @@ 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.IO;
|
using CodeImp.DoomBuilder.IO;
|
||||||
|
using CodeImp.DoomBuilder.Data;
|
||||||
|
using System.IO;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder
|
namespace CodeImp.DoomBuilder.Config
|
||||||
{
|
{
|
||||||
internal class GameConfigurationCache
|
internal class ThingCategory
|
||||||
{
|
{
|
||||||
#region ================== Constants
|
#region ================== Constants
|
||||||
|
|
||||||
|
@ -38,23 +39,18 @@ namespace CodeImp.DoomBuilder
|
||||||
|
|
||||||
#region ================== Variables
|
#region ================== Variables
|
||||||
|
|
||||||
private int soundlinedefflags;
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== Properties
|
#region ================== Properties
|
||||||
|
|
||||||
public int SoundLinedefFlags { get { return soundlinedefflags; } }
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== Constructor / Disposer
|
#region ================== Constructor / Disposer
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
public GameConfigurationCache(Configuration cfg)
|
public ThingCategory()
|
||||||
{
|
{
|
||||||
// Initialize
|
// Initialize
|
||||||
soundlinedefflags = cfg.ReadSetting("soundlinedefflags", 0);
|
|
||||||
|
|
||||||
// We have no destructor
|
// We have no destructor
|
||||||
GC.SuppressFinalize(this);
|
GC.SuppressFinalize(this);
|
65
Source/Config/ThingTypeInfo.cs
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
|
||||||
|
#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 CodeImp.DoomBuilder.IO;
|
||||||
|
using CodeImp.DoomBuilder.Data;
|
||||||
|
using System.IO;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace CodeImp.DoomBuilder.Config
|
||||||
|
{
|
||||||
|
internal class ThingTypeInfo
|
||||||
|
{
|
||||||
|
#region ================== Constants
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Variables
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Properties
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Constructor / Disposer
|
||||||
|
|
||||||
|
// Constructor
|
||||||
|
public ThingTypeInfo()
|
||||||
|
{
|
||||||
|
// Initialize
|
||||||
|
|
||||||
|
// We have no destructor
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Methods
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -154,7 +154,7 @@ namespace CodeImp.DoomBuilder.Data
|
||||||
bool strifedata;
|
bool strifedata;
|
||||||
|
|
||||||
// Determine default scale
|
// Determine default scale
|
||||||
defaultscale = General.Map.Configuration.ReadSetting("defaulttexturescale", 1.0f);
|
defaultscale = General.Map.Configuration.DefaultTextureScale;
|
||||||
|
|
||||||
// Get number of textures
|
// Get number of textures
|
||||||
texturedata.Seek(0, SeekOrigin.Begin);
|
texturedata.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
|
@ -32,6 +32,7 @@ using System.Runtime.InteropServices;
|
||||||
using CodeImp.DoomBuilder.Controls;
|
using CodeImp.DoomBuilder.Controls;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using CodeImp.DoomBuilder.Rendering;
|
using CodeImp.DoomBuilder.Rendering;
|
||||||
|
using CodeImp.DoomBuilder.Config;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ 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;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -67,8 +68,7 @@ namespace CodeImp.DoomBuilder
|
||||||
private MapSetIO io;
|
private MapSetIO io;
|
||||||
private MapOptions options;
|
private MapOptions options;
|
||||||
private ConfigurationInfo configinfo;
|
private ConfigurationInfo configinfo;
|
||||||
private Configuration config;
|
private GameConfiguration config;
|
||||||
private GameConfigurationCache configsettings;
|
|
||||||
private DataManager data;
|
private DataManager data;
|
||||||
private EditMode mode;
|
private EditMode mode;
|
||||||
private D3DGraphics graphics;
|
private D3DGraphics graphics;
|
||||||
|
@ -92,8 +92,7 @@ namespace CodeImp.DoomBuilder
|
||||||
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 D3DGraphics Graphics { get { return graphics; } }
|
public D3DGraphics Graphics { get { return graphics; } }
|
||||||
public Configuration Configuration { get { return config; } }
|
public GameConfiguration Configuration { get { return config; } }
|
||||||
public GameConfigurationCache Settings { get { return configsettings; } }
|
|
||||||
public MapSelection Selection { get { return selection; } }
|
public MapSelection Selection { get { return selection; } }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -159,7 +158,6 @@ namespace CodeImp.DoomBuilder
|
||||||
public bool InitializeNewMap(MapOptions options)
|
public bool InitializeNewMap(MapOptions options)
|
||||||
{
|
{
|
||||||
string tempfile;
|
string tempfile;
|
||||||
string iointerface;
|
|
||||||
|
|
||||||
// Apply settings
|
// Apply settings
|
||||||
this.filetitle = "unnamed.wad";
|
this.filetitle = "unnamed.wad";
|
||||||
|
@ -182,8 +180,7 @@ namespace CodeImp.DoomBuilder
|
||||||
// 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 = General.LoadGameConfiguration(options.ConfigFile);
|
config = new GameConfiguration(General.LoadGameConfiguration(options.ConfigFile));
|
||||||
configsettings = new GameConfigurationCache(config);
|
|
||||||
|
|
||||||
// Create map data
|
// Create map data
|
||||||
map = new MapSet();
|
map = new MapSet();
|
||||||
|
@ -194,9 +191,8 @@ namespace CodeImp.DoomBuilder
|
||||||
tempwad = new WAD(tempfile);
|
tempwad = new WAD(tempfile);
|
||||||
|
|
||||||
// Read the map from temp file
|
// Read the map from temp file
|
||||||
iointerface = config.ReadSetting("formatinterface", "");
|
General.WriteLogLine("Initializing map format interface " + config.FormatInterface + "...");
|
||||||
General.WriteLogLine("Initializing map format interface " + iointerface + "...");
|
io = MapSetIO.Create(config.FormatInterface, tempwad, this);
|
||||||
io = MapSetIO.Create(iointerface, tempwad, this);
|
|
||||||
|
|
||||||
// Create required lumps
|
// Create required lumps
|
||||||
General.WriteLogLine("Creating map data structures...");
|
General.WriteLogLine("Creating map data structures...");
|
||||||
|
@ -225,7 +221,6 @@ namespace CodeImp.DoomBuilder
|
||||||
{
|
{
|
||||||
WAD mapwad;
|
WAD mapwad;
|
||||||
string tempfile;
|
string tempfile;
|
||||||
string iointerface;
|
|
||||||
DataLocation maplocation;
|
DataLocation maplocation;
|
||||||
|
|
||||||
// Apply settings
|
// Apply settings
|
||||||
|
@ -249,8 +244,7 @@ namespace CodeImp.DoomBuilder
|
||||||
// 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 = General.LoadGameConfiguration(options.ConfigFile);
|
config = new GameConfiguration(General.LoadGameConfiguration(options.ConfigFile));
|
||||||
configsettings = new GameConfigurationCache(config);
|
|
||||||
|
|
||||||
// Create map data
|
// Create map data
|
||||||
map = new MapSet();
|
map = new MapSet();
|
||||||
|
@ -273,9 +267,8 @@ namespace CodeImp.DoomBuilder
|
||||||
mapwad.Dispose();
|
mapwad.Dispose();
|
||||||
|
|
||||||
// Read the map from temp file
|
// Read the map from temp file
|
||||||
iointerface = config.ReadSetting("formatinterface", "");
|
General.WriteLogLine("Initializing map format interface " + config.FormatInterface + "...");
|
||||||
General.WriteLogLine("Initializing map format interface " + iointerface + "...");
|
io = MapSetIO.Create(config.FormatInterface, tempwad, this);
|
||||||
io = MapSetIO.Create(iointerface, tempwad, this);
|
|
||||||
General.WriteLogLine("Reading map data structures from file...");
|
General.WriteLogLine("Reading map data structures from file...");
|
||||||
map = io.Read(map, TEMP_MAP_HEADER);
|
map = io.Read(map, TEMP_MAP_HEADER);
|
||||||
|
|
||||||
|
@ -489,7 +482,6 @@ namespace CodeImp.DoomBuilder
|
||||||
NodebuilderInfo nodebuilder;
|
NodebuilderInfo nodebuilder;
|
||||||
string tempfile1, tempfile2;
|
string tempfile1, tempfile2;
|
||||||
bool lumpnodebuild, lumpallowempty, lumpscomplete;
|
bool lumpnodebuild, lumpallowempty, lumpscomplete;
|
||||||
IDictionary maplumps;
|
|
||||||
WAD buildwad;
|
WAD buildwad;
|
||||||
int srcindex;
|
int srcindex;
|
||||||
|
|
||||||
|
@ -540,8 +532,7 @@ namespace CodeImp.DoomBuilder
|
||||||
{
|
{
|
||||||
// Go for all the map lump names
|
// Go for all the map lump names
|
||||||
lumpscomplete = true;
|
lumpscomplete = true;
|
||||||
maplumps = config.ReadSetting("maplumpnames", new Hashtable());
|
foreach(DictionaryEntry ml in config.MapLumpNames)
|
||||||
foreach(DictionaryEntry ml in maplumps)
|
|
||||||
{
|
{
|
||||||
// Read lump settings from map config
|
// Read lump settings from map config
|
||||||
lumpnodebuild = config.ReadSetting("maplumpnames." + ml.Key + ".nodebuild", false);
|
lumpnodebuild = config.ReadSetting("maplumpnames." + ml.Key + ".nodebuild", false);
|
||||||
|
@ -551,7 +542,7 @@ namespace CodeImp.DoomBuilder
|
||||||
if(lumpnodebuild && !lumpallowempty)
|
if(lumpnodebuild && !lumpallowempty)
|
||||||
{
|
{
|
||||||
// Find the lump in the source
|
// Find the lump in the source
|
||||||
if(buildwad.FindLump(ml.Key.ToString(), srcindex, srcindex + maplumps.Count + 2) == null)
|
if(buildwad.FindLump(ml.Key.ToString(), srcindex, srcindex + config.MapLumpNames.Count + 2) == null)
|
||||||
{
|
{
|
||||||
// Missing a lump!
|
// Missing a lump!
|
||||||
lumpscomplete = false;
|
lumpscomplete = false;
|
||||||
|
@ -612,7 +603,6 @@ namespace CodeImp.DoomBuilder
|
||||||
int headerindex, insertindex, targetindex;
|
int headerindex, insertindex, targetindex;
|
||||||
string lumpname;
|
string lumpname;
|
||||||
bool lumprequired;
|
bool lumprequired;
|
||||||
IDictionary maplumps;
|
|
||||||
|
|
||||||
// Find the map header in target
|
// Find the map header in target
|
||||||
headerindex = target.FindLumpIndex(mapname);
|
headerindex = target.FindLumpIndex(mapname);
|
||||||
|
@ -627,8 +617,7 @@ namespace CodeImp.DoomBuilder
|
||||||
insertindex = headerindex;
|
insertindex = headerindex;
|
||||||
|
|
||||||
// Go for all the map lump names
|
// Go for all the map lump names
|
||||||
maplumps = config.ReadSetting("maplumpnames", new Hashtable());
|
foreach(DictionaryEntry ml in config.MapLumpNames)
|
||||||
foreach(DictionaryEntry ml in maplumps)
|
|
||||||
{
|
{
|
||||||
// Read lump settings from map config
|
// Read lump settings from map config
|
||||||
lumprequired = config.ReadSetting("maplumpnames." + ml.Key + ".required", false);
|
lumprequired = config.ReadSetting("maplumpnames." + ml.Key + ".required", false);
|
||||||
|
@ -641,7 +630,7 @@ namespace CodeImp.DoomBuilder
|
||||||
if(lumpname == CONFIG_MAP_HEADER) lumpname = mapname;
|
if(lumpname == CONFIG_MAP_HEADER) lumpname = mapname;
|
||||||
|
|
||||||
// Check if the lump is missing at the target
|
// Check if the lump is missing at the target
|
||||||
targetindex = FindSpecificLump(target, lumpname, headerindex, mapname, maplumps);
|
targetindex = FindSpecificLump(target, lumpname, headerindex, mapname, config.MapLumpNames);
|
||||||
if(targetindex == -1)
|
if(targetindex == -1)
|
||||||
{
|
{
|
||||||
// Determine target index
|
// Determine target index
|
||||||
|
@ -670,7 +659,6 @@ namespace CodeImp.DoomBuilder
|
||||||
bool lumprequired, lumpblindcopy, lumpnodebuild;
|
bool lumprequired, lumpblindcopy, lumpnodebuild;
|
||||||
string lumpscript, srclumpname, tgtlumpname;
|
string lumpscript, srclumpname, tgtlumpname;
|
||||||
int srcheaderindex, tgtheaderindex, targetindex, sourceindex, lumpindex;
|
int srcheaderindex, tgtheaderindex, targetindex, sourceindex, lumpindex;
|
||||||
IDictionary maplumps;
|
|
||||||
Lump lump, newlump;
|
Lump lump, newlump;
|
||||||
|
|
||||||
// Find the map header in target
|
// Find the map header in target
|
||||||
|
@ -694,8 +682,7 @@ namespace CodeImp.DoomBuilder
|
||||||
//source.Lumps[srcindex].CopyTo(newlump);
|
//source.Lumps[srcindex].CopyTo(newlump);
|
||||||
|
|
||||||
// Go for all the map lump names
|
// Go for all the map lump names
|
||||||
maplumps = config.ReadSetting("maplumpnames", new Hashtable());
|
foreach(DictionaryEntry ml in config.MapLumpNames)
|
||||||
foreach(DictionaryEntry ml in maplumps)
|
|
||||||
{
|
{
|
||||||
// Read lump settings from map config
|
// Read lump settings from map config
|
||||||
lumprequired = config.ReadSetting("maplumpnames." + ml.Key + ".required", false);
|
lumprequired = config.ReadSetting("maplumpnames." + ml.Key + ".required", false);
|
||||||
|
@ -714,11 +701,11 @@ namespace CodeImp.DoomBuilder
|
||||||
if(tgtlumpname == CONFIG_MAP_HEADER) tgtlumpname = targetmapname;
|
if(tgtlumpname == CONFIG_MAP_HEADER) tgtlumpname = targetmapname;
|
||||||
|
|
||||||
// Find the lump in the source
|
// Find the lump in the source
|
||||||
sourceindex = FindSpecificLump(source, srclumpname, srcheaderindex, sourcemapname, maplumps);
|
sourceindex = FindSpecificLump(source, srclumpname, srcheaderindex, sourcemapname, config.MapLumpNames);
|
||||||
if(sourceindex > -1)
|
if(sourceindex > -1)
|
||||||
{
|
{
|
||||||
// Remove lump at target
|
// Remove lump at target
|
||||||
lumpindex = RemoveSpecificLump(target, tgtlumpname, tgtheaderindex, targetmapname, maplumps);
|
lumpindex = RemoveSpecificLump(target, tgtlumpname, tgtheaderindex, targetmapname, config.MapLumpNames);
|
||||||
|
|
||||||
// Determine target index
|
// Determine target index
|
||||||
// When original lump was found and removed then insert at that position
|
// When original lump was found and removed then insert at that position
|
||||||
|
@ -887,8 +874,7 @@ namespace CodeImp.DoomBuilder
|
||||||
// Reload game configuration
|
// Reload game configuration
|
||||||
General.WriteLogLine("Reloading game configuration...");
|
General.WriteLogLine("Reloading game configuration...");
|
||||||
configinfo = General.GetConfigurationInfo(options.ConfigFile);
|
configinfo = General.GetConfigurationInfo(options.ConfigFile);
|
||||||
config = General.LoadGameConfiguration(options.ConfigFile);
|
config = new GameConfiguration(General.LoadGameConfiguration(options.ConfigFile));
|
||||||
configsettings = new GameConfigurationCache(config);
|
|
||||||
|
|
||||||
// Reload data resources
|
// Reload data resources
|
||||||
General.WriteLogLine("Reloading data resources...");
|
General.WriteLogLine("Reloading data resources...");
|
||||||
|
|
|
@ -32,6 +32,7 @@ namespace CodeImp.DoomBuilder.Geometry
|
||||||
|
|
||||||
public const float PI = (float)Math.PI;
|
public const float PI = (float)Math.PI;
|
||||||
public const float PI2 = (float)Math.PI * 2f;
|
public const float PI2 = (float)Math.PI * 2f;
|
||||||
|
public const float PIDEG = 57.295779513082320876798154814105f;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
// Read properties from stream
|
// Read properties from stream
|
||||||
x = reader.ReadInt16();
|
x = reader.ReadInt16();
|
||||||
y = reader.ReadInt16();
|
y = reader.ReadInt16();
|
||||||
angle = reader.ReadInt16(); // TODO: Fix this!
|
angle = (float)(reader.ReadInt16() + 90) / Angle2D.PIDEG;
|
||||||
type = reader.ReadUInt16();
|
type = reader.ReadUInt16();
|
||||||
flags = reader.ReadUInt16();
|
flags = reader.ReadUInt16();
|
||||||
|
|
||||||
|
@ -306,23 +306,19 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
Dictionary<Vertex, int> vertexids = new Dictionary<Vertex,int>();
|
Dictionary<Vertex, int> vertexids = new Dictionary<Vertex,int>();
|
||||||
Dictionary<Sidedef, int> sidedefids = new Dictionary<Sidedef,int>();
|
Dictionary<Sidedef, int> sidedefids = new Dictionary<Sidedef,int>();
|
||||||
Dictionary<Sector, int> sectorids = new Dictionary<Sector,int>();
|
Dictionary<Sector, int> sectorids = new Dictionary<Sector,int>();
|
||||||
IDictionary maplumps;
|
|
||||||
|
|
||||||
// First index everything
|
// First index everything
|
||||||
foreach(Vertex v in map.Vertices) vertexids.Add(v, vertexids.Count);
|
foreach(Vertex v in map.Vertices) vertexids.Add(v, vertexids.Count);
|
||||||
foreach(Sidedef sd in map.Sidedefs) sidedefids.Add(sd, sidedefids.Count);
|
foreach(Sidedef sd in map.Sidedefs) sidedefids.Add(sd, sidedefids.Count);
|
||||||
foreach(Sector s in map.Sectors) sectorids.Add(s, sectorids.Count);
|
foreach(Sector s in map.Sectors) sectorids.Add(s, sectorids.Count);
|
||||||
|
|
||||||
// Read map lumps
|
|
||||||
maplumps = manager.Configuration.ReadSetting("maplumpnames", new Hashtable());
|
|
||||||
|
|
||||||
// Write lumps to wad (note the backwards order because they
|
// Write lumps to wad (note the backwards order because they
|
||||||
// are all inserted at position+1 when not found)
|
// are all inserted at position+1 when not found)
|
||||||
WriteSectors(map, position, maplumps);
|
WriteSectors(map, position, manager.Configuration.MapLumpNames);
|
||||||
WriteVertices(map, position, maplumps);
|
WriteVertices(map, position, manager.Configuration.MapLumpNames);
|
||||||
WriteSidedefs(map, position, maplumps, sectorids);
|
WriteSidedefs(map, position, manager.Configuration.MapLumpNames, sectorids);
|
||||||
WriteLinedefs(map, position, maplumps, sidedefids, vertexids);
|
WriteLinedefs(map, position, manager.Configuration.MapLumpNames, sidedefids, vertexids);
|
||||||
WriteThings(map, position, maplumps);
|
WriteThings(map, position, manager.Configuration.MapLumpNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This writes the THINGS to WAD file
|
// This writes the THINGS to WAD file
|
||||||
|
@ -343,7 +339,7 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
// Write properties to stream
|
// Write properties to stream
|
||||||
writer.Write((Int16)t.Position.x);
|
writer.Write((Int16)t.Position.x);
|
||||||
writer.Write((Int16)t.Position.y);
|
writer.Write((Int16)t.Position.y);
|
||||||
writer.Write((Int16)t.Angle); // TODO: Fix this!
|
writer.Write((Int16)((t.Angle * Angle2D.PIDEG) - 90));
|
||||||
writer.Write((UInt16)t.Type);
|
writer.Write((UInt16)t.Type);
|
||||||
writer.Write((UInt16)t.Flags);
|
writer.Write((UInt16)t.Flags);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ using Microsoft.Win32;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using CodeImp.DoomBuilder.Controls;
|
using CodeImp.DoomBuilder.Controls;
|
||||||
using CodeImp.DoomBuilder.Data;
|
using CodeImp.DoomBuilder.Data;
|
||||||
|
using CodeImp.DoomBuilder.Config;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ using CodeImp.DoomBuilder.Map;
|
||||||
using CodeImp.DoomBuilder.Data;
|
using CodeImp.DoomBuilder.Data;
|
||||||
using CodeImp.DoomBuilder.IO;
|
using CodeImp.DoomBuilder.IO;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using CodeImp.DoomBuilder.Config;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -75,7 +76,6 @@ namespace CodeImp.DoomBuilder.Interface
|
||||||
private void apply_Click(object sender, EventArgs e)
|
private void apply_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Configuration newcfg;
|
Configuration newcfg;
|
||||||
string oldio, newio;
|
|
||||||
WAD sourcewad;
|
WAD sourcewad;
|
||||||
bool conflictingname;
|
bool conflictingname;
|
||||||
|
|
||||||
|
@ -125,9 +125,7 @@ namespace CodeImp.DoomBuilder.Interface
|
||||||
if(newcfg == null) return;
|
if(newcfg == null) return;
|
||||||
|
|
||||||
// Check if the config uses a different IO interface
|
// Check if the config uses a different IO interface
|
||||||
oldio = General.Map.Configuration.ReadSetting("formatinterface", "");
|
if(newcfg.ReadSetting("formatinterface", "") != General.Map.Configuration.FormatInterface)
|
||||||
newio = newcfg.ReadSetting("formatinterface", "");
|
|
||||||
if(oldio != newio)
|
|
||||||
{
|
{
|
||||||
// Warn the user about IO interface change
|
// Warn the user about IO interface change
|
||||||
if(General.ShowWarningMessage("The game configuration you selected uses a different file format than your current map. Because your map was not designed for this format it may cause the map to work incorrectly in the game. Do you want to continue?", MessageBoxButtons.YesNo, MessageBoxDefaultButton.Button2) == DialogResult.No)
|
if(General.ShowWarningMessage("The game configuration you selected uses a different file format than your current map. Because your map was not designed for this format it may cause the map to work incorrectly in the game. Do you want to continue?", MessageBoxButtons.YesNo, MessageBoxDefaultButton.Button2) == DialogResult.No)
|
||||||
|
|
|
@ -28,6 +28,7 @@ using System.IO;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using CodeImp.DoomBuilder.Data;
|
using CodeImp.DoomBuilder.Data;
|
||||||
|
using CodeImp.DoomBuilder.Config;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using CodeImp.DoomBuilder.Geometry;
|
using CodeImp.DoomBuilder.Geometry;
|
||||||
|
using CodeImp.DoomBuilder.Rendering;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -56,6 +57,10 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
private int action;
|
private int action;
|
||||||
private byte[] args;
|
private byte[] args;
|
||||||
|
|
||||||
|
// Configuration
|
||||||
|
private float size;
|
||||||
|
private PixelColor color;
|
||||||
|
|
||||||
// Selections
|
// Selections
|
||||||
private int selected;
|
private int selected;
|
||||||
|
|
||||||
|
@ -211,6 +216,12 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
this.args = args;
|
this.args = args;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This updates the settings from configuration
|
||||||
|
public void UpdateConfiguration()
|
||||||
|
{
|
||||||
|
// Lookup settings
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -505,7 +505,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
// Determine color
|
// Determine color
|
||||||
if(l.Selected > 0) return General.Colors.Selection;
|
if(l.Selected > 0) return General.Colors.Selection;
|
||||||
else if(l.Action != 0) return General.Colors.Actions.WithAlpha(DOUBLESIDED_LINE_ALPHA);
|
else if(l.Action != 0) return General.Colors.Actions.WithAlpha(DOUBLESIDED_LINE_ALPHA);
|
||||||
else if((l.Flags & General.Map.Settings.SoundLinedefFlags) != 0) return General.Colors.Sounds.WithAlpha(DOUBLESIDED_LINE_ALPHA);
|
else if((l.Flags & General.Map.Configuration.SoundLinedefFlags) != 0) return General.Colors.Sounds.WithAlpha(DOUBLESIDED_LINE_ALPHA);
|
||||||
else return General.Colors.Linedefs.WithAlpha(DOUBLESIDED_LINE_ALPHA);
|
else return General.Colors.Linedefs.WithAlpha(DOUBLESIDED_LINE_ALPHA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Before Width: | Height: | Size: 291 B After Width: | Height: | Size: 300 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 337 B |
Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 212 B |
|
@ -58,7 +58,8 @@ float4 ps_main(PixelData pd) : COLOR
|
||||||
n = addcolor(n, tex2D(texture1samp, float2(pd.uv.x, pd.uv.y - settings.y)));
|
n = addcolor(n, tex2D(texture1samp, float2(pd.uv.x, pd.uv.y - settings.y)));
|
||||||
|
|
||||||
// If any pixels nearby where found, return a blend, otherwise return nothing
|
// If any pixels nearby where found, return a blend, otherwise return nothing
|
||||||
if(n.a > 0.1f) return float4(n.rgb, n.a * settings.z); else return (float4)0;
|
//if(n.a > 0.1f) return float4(n.rgb, n.a * settings.z); else return (float4)0;
|
||||||
|
return float4(n.rgb, n.a * settings.z);
|
||||||
}
|
}
|
||||||
else return c;
|
else return c;
|
||||||
}
|
}
|
||||||
|
|