Skip to content

Commit

Permalink
save config (exclusive, autostart) to config file
Browse files Browse the repository at this point in the history
removed leftover serializer references
  • Loading branch information
Pxtl committed Mar 7, 2017
1 parent afd87f3 commit 5336535
Show file tree
Hide file tree
Showing 7 changed files with 2,483 additions and 2,417 deletions.
14 changes: 14 additions & 0 deletions XOutput/Config.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XOutput
{
public class Config
{
public bool IsExclusive { get; set; }
public bool IsAutostart { get; set; }
}
}
4 changes: 2 additions & 2 deletions XOutput/ControllerDevice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public ControllerDevice(Joystick joy, int num)
// controlMappings[i] = 255; //Changed default mapping to blank
//}

var saveData = SaveManager.Load(joy.Information.ProductName.ToString());
var saveData = SaveManager.LoadDeviceControls(joy.Information.ProductName.ToString());
if (saveData != null)
{
controlMappings = saveData;
Expand All @@ -58,7 +58,7 @@ public ControllerDevice(Joystick joy, int num)

public void Save()
{
SaveManager.Save(joystick.Information.ProductName, controlMappings);
SaveManager.SaveDeviceControls(joystick.Information.ProductName, controlMappings);
}

private int[] GetAxes(JoystickState jstate)
Expand Down
64 changes: 39 additions & 25 deletions XOutput/SaveManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,56 +3,70 @@
using System;
using System.IO;
using System.Linq;
using System.Xml.Serialization;

namespace XOutput
{
static class SaveManager
public static class SaveManager
{
static private string dirName = @"configs";
static private string _dirName = @"configs";

public static string FixDevName(string devName)
public static InputControl[] LoadDeviceControls(string devName)
{
return new string(devName
.Where(x => !Path.GetInvalidFileNameChars().Contains(x))
.ToArray());
return Load<InputControl[]>(devName) ?? new InputControl[21];
}

public static void SaveDeviceControls(string devName, InputControl[] mappings)
{
Save(devName, mappings);
}

public static InputControl[] Load(string devName)
public static void SaveConfig(Config config)
{
if (!Directory.Exists(dirName))
Save("Config", config);
}

public static Config LoadConfig()
{
return Load<Config>("Config") ?? new Config();
}

#region helper methods
private static T Load<T>(string name)
{
if (!Directory.Exists(_dirName))
{
Directory.CreateDirectory(dirName);
return null;
Directory.CreateDirectory(_dirName);
return default(T);
}
string path = $@"{ dirName }\{FixDevName(devName)}.json";
string path = $@"{ _dirName }\{CleanFileName(name)}.json";

var serializer = new XmlSerializer(typeof(DeviceMapping));
if (File.Exists(path))
{
string jsonString = File.ReadAllText(path);
return JsonConvert.DeserializeObject<InputControl[]>(jsonString, new StringEnumConverter());
return JsonConvert.DeserializeObject<T>(jsonString, new StringEnumConverter());
}
else
{
return new InputControl[21];
return default(T);
}
}

public static void Save(string devName, InputControl[] mappings)
private static void Save<T>(string name, T obj)
{
if (!Directory.Exists(dirName))
if (!Directory.Exists(_dirName))
{
Directory.CreateDirectory(dirName);
Directory.CreateDirectory(_dirName);
}
string path = $@"{ dirName }\{FixDevName(devName)}.json";
File.WriteAllText(path, JsonConvert.SerializeObject(mappings, Formatting.Indented, new StringEnumConverter()));
string path = $@"{ _dirName }\{CleanFileName(name)}.json";
File.WriteAllText(path, JsonConvert.SerializeObject(obj, Formatting.Indented, new StringEnumConverter()));
}
}

public class DeviceMapping
{
public string DeviceName { get; set; }
public InputControl[] Controls { get; set; }
public static string CleanFileName(string devName)
{
return new string(devName
.Where(x => !Path.GetInvalidFileNameChars().Contains(x))
.ToArray());
}
#endregion
}
}
Loading

0 comments on commit 5336535

Please sign in to comment.