refactor: removed dash from project name and underscore from namespaces. Began working on pipeline project.
This commit is contained in:
13
RecrownedAthenaeum/Persistence/Preferences.cs
Normal file
13
RecrownedAthenaeum/Persistence/Preferences.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace RecrownedAthenaeum.Persistence
|
||||
{
|
||||
public interface Preferences
|
||||
{
|
||||
}
|
||||
}
|
78
RecrownedAthenaeum/Persistence/PreferencesManager.cs
Normal file
78
RecrownedAthenaeum/Persistence/PreferencesManager.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace RecrownedAthenaeum.Persistence
|
||||
{
|
||||
public class PreferencesManager
|
||||
{
|
||||
private readonly Dictionary<Type, Preferences> preferenceList;
|
||||
string savePath;
|
||||
XmlSerializer xmlSerializer;
|
||||
|
||||
public PreferencesManager(string savePath, params Preferences[] preferences)
|
||||
{
|
||||
this.savePath = savePath;
|
||||
Directory.CreateDirectory(savePath);
|
||||
preferenceList = new Dictionary<Type, Preferences>();
|
||||
Debug.WriteLine("Preference manager setting up...");
|
||||
Type[] preferenceTypes = new Type[preferences.Length];
|
||||
for (int prefID = 0; prefID < preferences.Length; prefID++)
|
||||
{
|
||||
preferenceList.Add(preferences[prefID].GetType(), preferences[prefID]);
|
||||
preferenceTypes[prefID] = preferences[prefID].GetType();
|
||||
Debug.WriteLine(preferences[prefID] + " added to list of preferences");
|
||||
}
|
||||
|
||||
xmlSerializer = new XmlSerializer(typeof(Preferences), preferenceTypes);
|
||||
}
|
||||
|
||||
public T GetPreferences<T>() where T : Preferences
|
||||
{
|
||||
return (T)preferenceList[typeof(T)];
|
||||
}
|
||||
|
||||
public void Load()
|
||||
{
|
||||
List<Type> keys = new List<Type>(preferenceList.Keys);
|
||||
|
||||
foreach (Type key in keys)
|
||||
{
|
||||
if (!LoadSpecific(key))
|
||||
{
|
||||
SaveSpecific(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
foreach (KeyValuePair<Type, Preferences> prefs in preferenceList)
|
||||
{
|
||||
SaveSpecific(prefs.Key);
|
||||
}
|
||||
}
|
||||
|
||||
private bool LoadSpecific(Type preference)
|
||||
{
|
||||
string path = savePath + "/" + preference.Name + ".xml";
|
||||
if (File.Exists(path))
|
||||
{
|
||||
Stream stream = new FileStream(path, FileMode.Open);
|
||||
preferenceList[preference] = (Preferences)xmlSerializer.Deserialize(stream);
|
||||
stream.Close();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void SaveSpecific(Type preference)
|
||||
{
|
||||
Stream stream = new FileStream(savePath + "/" + preference.Name + ".xml", FileMode.Create);
|
||||
xmlSerializer.Serialize(stream, preferenceList[preference]);
|
||||
stream.Close();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user