Skip to content

Commit f7ab054

Browse files
committed
Cleanup. Working and ready to merge.
1 parent 775a428 commit f7ab054

File tree

4 files changed

+27
-125
lines changed

4 files changed

+27
-125
lines changed

Intersect.Client.Framework/Database/JsonDatabase.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ public JsonDatabase()
1919
_ = TryOpenOrCreate(_instancePath, out _instance);
2020
}
2121

22+
public JsonDatabase(string path)
23+
{
24+
_instancePath = path;
25+
_ = TryOpenOrCreate(_instancePath, out _instance);
26+
}
27+
2228
private static string GetInstancePath(ClientConfiguration instance)
2329
{
2430
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), ".intersect",

Intersect.Client.Framework/Input/BuiltinControlsProvider.cs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System.Diagnostics.CodeAnalysis;
2+
using Intersect.Client.Framework.Database;
23
using Intersect.Client.Framework.GenericClasses;
4+
using Newtonsoft.Json;
35

46
namespace Intersect.Client.Framework.Input;
57

@@ -30,18 +32,29 @@ public void ReloadFromOptions(Options? options)
3032
/// <summary>
3133
/// Loads default mappings by starting with hardcoded defaults and then merging overrides from default_settings.json if present.
3234
/// </summary>
33-
private static Dictionary<Control, ControlMapping> LoadDefaultMappings()
35+
public static Dictionary<Control, ControlMapping> LoadDefaultMappings()
3436
{
3537
// Start with all hardcoded defaults
3638
var defaults = GetHardcodedDefaults();
3739

38-
// Load file overrides
39-
var fileDefaults = DefaultSettingsLoader.LoadDefaultsFromFile(defaults.Keys);
40-
41-
// Merge: file overrides hardcoded defaults
42-
foreach (var (control, mapping) in fileDefaults)
40+
// Load default controls from default_settings.json
41+
var defaultSettingsPath = Path.Combine("resources", "default_settings.json");
42+
if (File.Exists(defaultSettingsPath))
4343
{
44-
defaults[control] = mapping;
44+
var db = new JsonDatabase(defaultSettingsPath);
45+
46+
foreach (var control in defaults.Keys)
47+
{
48+
var controlId = control.GetControlId();
49+
var bindings = new List<ControlBinding>();
50+
51+
if (db.HasPreference($"{controlId}_binding0") && db.HasPreference($"{controlId}_binding1"))
52+
{
53+
var binding1 = JsonConvert.DeserializeObject<ControlBinding>(db.LoadPreference($"{controlId}_binding0"));
54+
var binding2 = JsonConvert.DeserializeObject<ControlBinding>(db.LoadPreference($"{controlId}_binding1"));
55+
defaults[control] = new ControlMapping(binding1, binding2);
56+
}
57+
}
4558
}
4659

4760
return defaults;

Intersect.Client.Framework/Input/DefaultSettingsLoader.cs

Lines changed: 0 additions & 111 deletions
This file was deleted.

Intersect.Client.Framework/Input/HotkeyControlsProvider.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,7 @@ internal sealed class HotkeyControlsProvider : IControlsProvider
1313

1414
public bool TryGetDefaultMapping(Control control, [NotNullWhen(true)] out ControlMapping? defaultMapping)
1515
{
16-
// Lazy-load on first call
17-
if (_defaultMappings == null)
18-
{
19-
_defaultMappings = DefaultSettingsLoader.LoadDefaultsFromFile(Controls);
20-
}
21-
22-
return _defaultMappings.TryGetValue(control, out defaultMapping);
16+
return BuiltinControlsProvider.LoadDefaultMappings().TryGetValue(control, out defaultMapping);
2317
}
2418

2519
private static Control[] ControlsFromOptions(Options? options) =>

0 commit comments

Comments
 (0)