Added: angle selector button used in arguments custom fields controls now shows angle value.

Fixed a crash when trying to store a custom field with "Byte Angle" type.
Fixed: in some cases custom field types stored in the map's .dbs file were not applied when loading a map.
This commit is contained in:
MaxED 2016-05-16 13:04:31 +00:00 committed by spherallic
parent cb882a4340
commit 6c8a59815f
19 changed files with 127 additions and 16 deletions

View file

@ -1141,6 +1141,13 @@
<None Include="Resources\About.png" />
<None Include="Resources\Configuration.png" />
<EmbeddedResource Include="Resources\Black.png" />
<None Include="Resources\Angle1.png" />
<None Include="Resources\Angle2.png" />
<None Include="Resources\Angle3.png" />
<None Include="Resources\Angle4.png" />
<None Include="Resources\Angle5.png" />
<None Include="Resources\Angle6.png" />
<None Include="Resources\Angle7.png" />
<Content Include="Resources\DB2.ico" />
<None Include="Resources\GZDB2.ico" />
<None Include="Resources\fog.png" />

View file

@ -132,6 +132,13 @@ namespace CodeImp.DoomBuilder.Controls
private void combobox_TextChanged(object sender, EventArgs e)
{
scrollbuttons.Enabled = !CheckIsRelative();
//mxd. Update button image?
if(typehandler.DynamicImage)
{
combobox_Validating(sender, new CancelEventArgs());
button.Image = typehandler.BrowseImage;
}
}
// Mouse wheel used

View file

@ -802,7 +802,9 @@ namespace CodeImp.DoomBuilder.Controls
if(row is FieldsEditorRow)
{
// Browse
(row as FieldsEditorRow).Browse(this.ParentForm);
FieldsEditorRow frow = (FieldsEditorRow)row;
frow.Browse(this.ParentForm);
if(frow.TypeHandler.DynamicImage) browsebutton.Image = frow.TypeHandler.BrowseImage; //mxd
fieldslist.Focus();
}
}

View file

@ -225,7 +225,7 @@ namespace CodeImp.DoomBuilder.IO
// Go for all lines
map.SetCapacity(0, map.Linedefs.Count + linescolls.Count, map.Sidedefs.Count + sidescolls.Count, 0, 0);
char[] splitter = new[] { ' ' }; //mxd
char[] splitter = { ' ' }; //mxd
for(int i = 0; i < linescolls.Count; i++)
{
// Read fields
@ -235,7 +235,8 @@ namespace CodeImp.DoomBuilder.IO
int v1 = GetCollectionEntry(lc, "v1", true, 0, where);
int v2 = GetCollectionEntry(lc, "v2", true, 0, where);
if(!vertexlink.ContainsKey(v1) || !vertexlink.ContainsKey(v2)) { //mxd
if(!vertexlink.ContainsKey(v1) || !vertexlink.ContainsKey(v2))
{ //mxd
General.ErrorLogger.Add(ErrorType.Warning, "Linedef " + i + " references one or more invalid vertices. Linedef has been removed.");
continue;
}
@ -508,7 +509,7 @@ namespace CodeImp.DoomBuilder.IO
//mxd. Try to find the type from configuration
if(setknowncustomtypes)
{
type = General.Map.Config.ReadSetting("universalfields." + elementname + "." + e.Key + ".type", -1);
type = General.Map.Options.GetUniversalFieldType(elementname, e.Key, -1);
if(type != -1)
{

View file

@ -126,6 +126,7 @@ namespace CodeImp.DoomBuilder.Map
}
case UniversalType.AngleDegrees:
case UniversalType.AngleByte: //mxd
case UniversalType.Color:
case UniversalType.EnumBits:
case UniversalType.EnumOption:

View file

@ -90,9 +90,55 @@ namespace CodeImp.DoomBuilder.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Angle1 {
get {
object obj = ResourceManager.GetObject("Angle1", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Angle2 {
get {
object obj = ResourceManager.GetObject("Angle2", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Angle3 {
get {
object obj = ResourceManager.GetObject("Angle3", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Angle4 {
get {
object obj = ResourceManager.GetObject("Angle4", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Angle5 {
get {
object obj = ResourceManager.GetObject("Angle5", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Angle6 {
get {
object obj = ResourceManager.GetObject("Angle6", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Angle7 {
get {
object obj = ResourceManager.GetObject("Angle7", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap ArrowDown {
get {
object obj = ResourceManager.GetObject("ArrowDown", resourceCulture);

View file

@ -577,6 +577,27 @@
<data name="FixedThingsScale" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\FixedThingsScale.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Angle1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle1.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Angle2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Angle3" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Angle4" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle4.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Angle5" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle5.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Angle6" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle6.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Angle7" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Angle7.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Snap1mp" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Snap1mp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,6 +1,7 @@
#region ================== Namespaces
using System;
using System.Drawing;
using System.Windows.Forms;
using CodeImp.DoomBuilder.Windows;
@ -11,6 +12,12 @@ namespace CodeImp.DoomBuilder.Types
[TypeHandler(UniversalType.AngleByte, "Byte Angle", true)]
internal class AngleByteHandler : AngleDegreesHandler
{
#region ================== Properties
public override Image BrowseImage { get { return angleicons[General.ClampAngle((int)Math.Round((float)value / 256 * 360) + 22) / 45]; } }
#endregion
#region ================== Methods
public override void Browse(IWin32Window parent)

View file

@ -27,7 +27,7 @@ using CodeImp.DoomBuilder.Windows;
namespace CodeImp.DoomBuilder.Types
{
[TypeHandler(UniversalType.AngleDegreesFloat, "Degrees (Decimal)", true)]
internal class AngleDegreesFloatHandler : TypeHandler
internal class AngleDegreesFloatHandler : AngleDegreesHandler
{
#region ================== Constants
@ -35,7 +35,7 @@ namespace CodeImp.DoomBuilder.Types
#region ================== Variables
private float value;
private new float value;
#endregion
@ -43,7 +43,7 @@ namespace CodeImp.DoomBuilder.Types
public override bool IsBrowseable { get { return true; } }
public override Image BrowseImage { get { return Properties.Resources.Angle; } }
public override Image BrowseImage { get { return angleicons[General.ClampAngle((int)Math.Round(value) + 22) / 45]; } }
#endregion
@ -73,7 +73,8 @@ namespace CodeImp.DoomBuilder.Types
// Set directly
this.value = Convert.ToSingle(value);
}
else {
else
{
// Try parsing as string
float result;
if(float.TryParse(value.ToString(), NumberStyles.Float, CultureInfo.CurrentCulture, out result))

View file

@ -36,6 +36,7 @@ namespace CodeImp.DoomBuilder.Types
#region ================== Variables
protected int value;
protected Image[] angleicons;
#endregion
@ -43,12 +44,28 @@ namespace CodeImp.DoomBuilder.Types
public override bool IsBrowseable { get { return true; } }
public override Image BrowseImage { get { return Properties.Resources.Angle; } }
public override Image BrowseImage { get { return angleicons[General.ClampAngle(value + 22) / 45]; } }
public override bool DynamicImage { get { return true; } }
#endregion
#region ================== Constructor
public AngleDegreesHandler()
{
angleicons = new[]
{
Properties.Resources.Angle,
Properties.Resources.Angle7,
Properties.Resources.Angle6,
Properties.Resources.Angle5,
Properties.Resources.Angle4,
Properties.Resources.Angle3,
Properties.Resources.Angle2,
Properties.Resources.Angle1
};
}
#endregion
#region ================== Methods

View file

@ -28,7 +28,7 @@ using CodeImp.DoomBuilder.Geometry;
namespace CodeImp.DoomBuilder.Types
{
[TypeHandler(UniversalType.AngleRadians, "Radians", true)]
internal class AngleRadiansHandler : TypeHandler
internal class AngleRadiansHandler : AngleDegreesHandler
{
#region ================== Constants
@ -36,7 +36,7 @@ namespace CodeImp.DoomBuilder.Types
#region ================== Variables
private float value;
private new float value;
#endregion
@ -44,7 +44,7 @@ namespace CodeImp.DoomBuilder.Types
public override bool IsBrowseable { get { return true; } }
public override Image BrowseImage { get { return Properties.Resources.Angle; } }
public override Image BrowseImage { get { return angleicons[General.ClampAngle(Angle2D.RealToDoom(value) + 22) / 45]; } }
#endregion

View file

@ -59,6 +59,7 @@ namespace CodeImp.DoomBuilder.Types
public virtual bool IsLimitedToEnums { get { return false; } }
public virtual Image BrowseImage { get { return null; } }
public virtual bool DynamicImage { get { return false; } } //mxd. When set to true, the button image will be re-applied after value changes
#endregion