This repository has been archived on 2022-08-05. You can view files and clone it, but cannot push or open issues or pull requests.
testexetrisathlon/testexetrisathlon/SettingsMan.cs

65 lines
2.0 KiB
C#

using System;
using System.IO;
using System.Reflection;
using System.Xml.Linq;
namespace testexetrisathlon
{
internal static class SettingsMan
{
private static readonly string XmlFile =
Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Save.xml");
public static int Volume
{
get => ToRange(int.Parse(Load().Element("Volume").Value), 0, 10);
set
{
XElement doc = Load();
doc.Element("Volume").Value = ToRange(value, 0, 10).ToString();
doc.Save();
}
}
public static int HighScore
{
get => int.Parse(Load().Element("HighScore").Value);
set
{
XElement doc = Load();
doc.Element("HighScore").Value = value.ToString();
doc.Save();
}
}
public static bool UsingAltTrack
{
get => bool.Parse(Load().Element("AltTrack").Value);
set
{
XElement doc = Load();
doc.Element("AltTrack").Value = value.ToString();
doc.Save();
}
}
private static void Save(this XElement doc) => doc.Save(XmlFile);
private static XElement Load()
{
if (!File.Exists(XmlFile))
new XElement("Save").Save(XmlFile);
XElement doc = XDocument.Load(XmlFile).Root;
if (doc.Element("Volume") == null)
doc.Add(new XElement("Volume", 10));
if (doc.Element("HighScore") == null)
doc.Add(new XElement("HighScore", 10));
if (doc.Element("AltTrack") == null)
doc.Add(new XElement("AltTrack", false));
return doc;
}
private static int ToRange(int value, int rangeStart, int rangeEnd) =>
Math.Min(Math.Max(value, rangeStart), rangeEnd);
}
}