diff options
| author | a1xd <[email protected]> | 2020-10-08 23:12:08 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-10-08 23:12:08 -0400 |
| commit | f4c04b4eb03fdbf1f3402dfb26e891ce8d968c9f (patch) | |
| tree | 2da2e0e956c8b92c24260ec9ed4fa3f0681c0a1a /grapher/Models/Serialized/RawAccelSettings.cs | |
| parent | Fixed anisotropy not loading correctly on save (diff) | |
| parent | add magic number to constants (diff) | |
| download | rawaccel-1.1.0.tar.xz rawaccel-1.1.0.zip | |
Merge pull request #33 from a1xd/1.1v1.1.0
1.1
Diffstat (limited to 'grapher/Models/Serialized/RawAccelSettings.cs')
| -rw-r--r-- | grapher/Models/Serialized/RawAccelSettings.cs | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/grapher/Models/Serialized/RawAccelSettings.cs b/grapher/Models/Serialized/RawAccelSettings.cs index 570a6c8..818bfb6 100644 --- a/grapher/Models/Serialized/RawAccelSettings.cs +++ b/grapher/Models/Serialized/RawAccelSettings.cs @@ -44,17 +44,36 @@ namespace grapher.Models.Serialized #region Methods - public static RawAccelSettings Load() + public static RawAccelSettings Load(Func<GUISettings> DefaultGUISettingsSupplier) { - return Load(DefaultSettingsFile); + return Load(DefaultSettingsFile, DefaultGUISettingsSupplier); } - public static RawAccelSettings Load(string file) + public static RawAccelSettings Load(string file, Func<GUISettings> DefaultGUISettingsSupplier) { try { - var settings = JsonConvert.DeserializeObject<RawAccelSettings>(File.ReadAllText(file), SerializerSettings); - if (settings is null) throw new JsonException($"{file} contains invalid JSON"); + RawAccelSettings settings = null; + + JObject settingsJObject = JObject.Parse(File.ReadAllText(file)); + if (settingsJObject.ContainsKey(DriverSettings.Key)) + { + settings = settingsJObject.ToObject<RawAccelSettings>(JsonSerializer.Create(SerializerSettings)); + } + else + { + settings = new RawAccelSettings + { + AccelerationSettings = settingsJObject.ToObject<DriverSettings>(), + GUISettings = DefaultGUISettingsSupplier() + }; + } + + if (settings is null || settings.AccelerationSettings is null) + { + throw new JsonException($"{file} contains invalid JSON"); + } + return settings; } catch (FileNotFoundException e) @@ -96,6 +115,18 @@ namespace grapher.Models.Serialized .AddFirst(new JProperty("### Mode Types ###", modes)); } + public bool IsDefaultEquivalent() + { + bool wholeOrNoY = AccelerationSettings.combineMagnitudes || + AccelerationSettings.modes.y == AccelMode.noaccel; + + return AccelerationSettings.sensitivity.x == 1 && + AccelerationSettings.sensitivity.y == 1 && + AccelerationSettings.rotation == 0 && + AccelerationSettings.modes.x == AccelMode.noaccel && + wholeOrNoY; + } + #endregion Methods } } |