#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 CodeImp.DoomBuilder.Config; using System.Windows.Forms; using CodeImp.DoomBuilder.Windows; #endregion namespace CodeImp.DoomBuilder.Types { [TypeHandler(UniversalType.AngleDegreesFloat, "Degrees (Decimal)", true)] internal class AngleDegreesFloatHandler : TypeHandler { #region ================== Constants #endregion #region ================== Variables private float value; #endregion #region ================== Properties public override bool IsBrowseable { get { return true; } } #endregion #region ================== Constructor #endregion #region ================== Methods public override void Browse(IWin32Window parent) { int oldvalue = (int)Math.Round(value); int newvalue = AngleForm.ShowDialog(parent, oldvalue); if(newvalue != oldvalue) value = (float)newvalue; } public override void SetValue(object value) { float result; // Null? if(value == null) { this.value = 0.0f; } // Compatible type? else if((value is int) || (value is float) || (value is bool)) { // Set directly this.value = Convert.ToSingle(value); } else { // Try parsing as string if(float.TryParse(value.ToString(), NumberStyles.Float, CultureInfo.CurrentCulture, out result)) { this.value = result; } else { this.value = 0.0f; } } } public override object GetValue() { return this.value; } public override int GetIntValue() { return (int)this.value; } public override string GetStringValue() { return this.value.ToString(); } #endregion } }