FFXIVZoomHack.Settings.Load C# (CSharp) Method

Load() public static method

public static Load ( string location = null ) : Settings
location string
return Settings
        public static Settings Load(string location = null)
        {
            var settings = new Settings();
            try
            {
                var doc = XDocument.Load(location ?? SettingsFile);
                var root = doc.Element("Root");
                foreach (var element in root.Elements())
                {
                    switch (element.Name.LocalName)
                    {
                        case "AutoApply":
                            settings.AutoApply = bool.Parse(element.Value);
                            break;
                        case "DX9":
                            settings.DX9_StructureAddress = element.Element("StructureAddress")
                                .Value
                                .Split(',')
                                .Where(x => !string.IsNullOrEmpty(x))
                                .Select(x => int.Parse(x, NumberStyles.HexNumber, CultureInfo.InvariantCulture))
                                .ToArray();
                            settings.DX9_ZoomCurrent = int.Parse(element.Element("ZoomCurrent").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                            settings.DX9_ZoomMax = int.Parse(element.Element("ZoomMax").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                            settings.DX9_FovCurrent = int.Parse(element.Element("FovCurrent").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                            settings.DX9_FovMax = int.Parse(element.Element("FovMax").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                            break;
                        case "DX11":
                            settings.DX11_StructureAddress = element.Element("StructureAddress")
                                .Value
                                .Split(',')
                                .Where(x => !string.IsNullOrEmpty(x))
                                .Select(x => int.Parse(x, NumberStyles.HexNumber, CultureInfo.InvariantCulture))
                                .ToArray();
                            settings.DX11_ZoomCurrent = int.Parse(element.Element("ZoomCurrent").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                            settings.DX11_ZoomMax = int.Parse(element.Element("ZoomMax").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                            settings.DX11_FovCurrent = int.Parse(element.Element("FovCurrent").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                            settings.DX11_FovMax = int.Parse(element.Element("FovMax").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                            break;
                        case "DesiredZoom":
                            settings.DesiredZoom = float.Parse(element.Value, CultureInfo.InvariantCulture);
                            if (settings.DesiredZoom < 1f || settings.DesiredZoom > 1000f)
                            {
                                settings.DesiredZoom = 20f;
                            }
                            break;
                        case "DesiredFov":
                            settings.DesiredFov = float.Parse(element.Value, CultureInfo.InvariantCulture);
                            if (settings.DesiredFov < 0.01f || settings.DesiredFov > 3f)
                            {
                                settings.DesiredFov = 0.78f;
                            }
                            break;
                        case "LastUpdate":
                            settings.LastUpdate = element.Value;
                            break;
                    }
                }
            }
            catch
            {
                /* xml failed to load, lose settings */
            }
            return settings;
        }