added basic setting persistence system
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using RhythmBullet.Zer01HD.Utilities.Persistence;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@@ -6,11 +7,12 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace RhythmBullet.Zer01HD.Game.Preferences
|
||||
{
|
||||
class Controls
|
||||
public class Controls : IPreferences
|
||||
{
|
||||
public int Forward;
|
||||
public int Backward;
|
||||
public int Left;
|
||||
public int Right;
|
||||
public int Shoot;
|
||||
}
|
||||
}
|
||||
|
@@ -3,14 +3,18 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using RhythmBullet.Zer01HD.Utilities;
|
||||
using RhythmBullet.Zer01HD.Utilities.Persistence;
|
||||
|
||||
namespace RhythmBullet.Zer01HD.Game.Preferences
|
||||
{
|
||||
class General
|
||||
public class General : IPreferences
|
||||
{
|
||||
public Resolution Resolution;
|
||||
public bool Fullscreen;
|
||||
public float MusicVolume;
|
||||
public float FXVolume;
|
||||
public string MusicDirectory;
|
||||
public string GameDirectory;
|
||||
}
|
||||
}
|
||||
|
@@ -4,9 +4,9 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RhythmBullet.Zer01HD.Utilities
|
||||
namespace RhythmBullet.Zer01HD.Utilities.Persistence
|
||||
{
|
||||
class Preferences
|
||||
public interface IPreferences
|
||||
{
|
||||
}
|
||||
}
|
@@ -0,0 +1,53 @@
|
||||
using RhythmBullet.Zer01HD.Utilities.Persistence;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace RhythmBullet.Zer01HD.Utilities
|
||||
{
|
||||
public class PreferencesManager
|
||||
{
|
||||
private readonly Dictionary<Type, IPreferences> preferenceList;
|
||||
public string SavePath;
|
||||
XmlSerializer xmlSerializer;
|
||||
|
||||
public PreferencesManager(string savePath, params IPreferences[] preferences)
|
||||
{
|
||||
this.SavePath = savePath;
|
||||
preferenceList = new Dictionary<Type, IPreferences>();
|
||||
foreach (IPreferences prefs in preferences)
|
||||
{
|
||||
preferenceList.Add(prefs.GetType(), prefs);
|
||||
}
|
||||
}
|
||||
|
||||
public T GetPreferences<T>() where T : IPreferences
|
||||
{
|
||||
return (T) preferenceList[typeof(T)];
|
||||
}
|
||||
|
||||
public void Load()
|
||||
{
|
||||
foreach (KeyValuePair<Type, IPreferences> prefs in preferenceList)
|
||||
{
|
||||
Stream stream = new FileStream(SavePath + nameof(prefs.Key), FileMode.Open);
|
||||
preferenceList[prefs.Key] = (IPreferences) xmlSerializer.Deserialize(stream);
|
||||
stream.Close();
|
||||
}
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
foreach (KeyValuePair<Type, IPreferences> prefs in preferenceList)
|
||||
{
|
||||
Stream stream = new FileStream(SavePath + nameof(prefs.Key), FileMode.Create);
|
||||
xmlSerializer.Serialize(stream, prefs.Value);
|
||||
stream.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user