This repository was archived by the owner on Feb 2, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathConfiguration.cs
89 lines (76 loc) · 2.51 KB
/
Configuration.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System.Xml;
using System.Xml.Linq;
namespace HybrasylEditor
{
[Serializable]
public class Configuration
{
public static Configuration Current { get; set; }
private string darkagesInstallDirectory;
public string DarkagesInstallDirectory
{
get { return darkagesInstallDirectory ?? ""; }
set { darkagesInstallDirectory = value; }
}
private string hybrasylWorldDirectory;
public string HybrasylWorldDirectory
{
get { return hybrasylWorldDirectory ?? ""; }
set { hybrasylWorldDirectory = value; }
}
public string HybrasylMapsDirectory
{
get
{
if (hybrasylWorldDirectory.Length > 0)
return Path.Combine(Configuration.Current.HybrasylWorldDirectory, "maps");
else
return "";
}
}
static Configuration()
{
Configuration.Current = Configuration.Load();
}
public Configuration Clone()
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, this);
ms.Position = 0;
return (Configuration)formatter.Deserialize(ms);
}
}
public static Configuration Load()
{
var config = new Configuration();
if (File.Exists("HybrasylEditorConfig.xml"))
{
var xDoc = XDocument.Load("HybrasylEditorConfig.xml");
var xConfig = xDoc.Element("Config");
config.DarkagesInstallDirectory = xConfig.Element("DarkagesInstallDirectory").Value;
config.HybrasylWorldDirectory = xConfig.Element("HybrasylWorldDirectory").Value;
}
return config;
}
public void Save()
{
var xConfig = new XElement("Config",
new XElement("DarkagesInstallDirectory", DarkagesInstallDirectory),
new XElement("HybrasylWorldDirectory", HybrasylWorldDirectory)
);
using (var fileStream = File.Create("HybrasylEditorConfig.xml"))
{
xConfig.Save(fileStream);
}
}
}
}