aboutsummaryrefslogtreecommitdiff
path: root/V3/Data/Internal/PathManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'V3/Data/Internal/PathManager.cs')
-rw-r--r--V3/Data/Internal/PathManager.cs51
1 files changed, 51 insertions, 0 deletions
diff --git a/V3/Data/Internal/PathManager.cs b/V3/Data/Internal/PathManager.cs
new file mode 100644
index 0000000..3f4ad9d
--- /dev/null
+++ b/V3/Data/Internal/PathManager.cs
@@ -0,0 +1,51 @@
+using System;
+using System.IO;
+
+namespace V3.Data.Internal {
+ /// <summary>
+ /// Default implementation of IPathManager.
+ /// </summary>
+ // ReSharper disable once ClassNeverInstantiated.Global
+ internal sealed class PathManager : IPathManager
+ {
+ /// <summary>
+ /// The base directory for persistent application data.
+ /// </summary>
+ public string AppDirectory { get; }
+
+ /// <summary>
+ /// The file to store the options in.
+ /// </summary>
+ public string OptionsFile { get; }
+
+ /// <summary>
+ /// The directory for save games.
+ /// </summary>
+ public string SaveGameDirectory { get; }
+
+ /// <summary>
+ /// Creates a new path manager and initializes the paths, but does not
+ /// create the directories if they don’t already exist.
+ /// </summary>
+ public PathManager()
+ {
+ var localAppDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
+ AppDirectory = $"{localAppDir}/V3";
+ SaveGameDirectory = $"{AppDirectory}/SaveGames";
+ OptionsFile = $"{AppDirectory}/Options.xml";
+ }
+
+ /// <summary>
+ /// Creates the application directories that do not already exist.
+ /// </summary>
+ public void CreateMissingDirectories()
+ {
+ string[] directories = { AppDirectory, SaveGameDirectory };
+ foreach (var directory in directories)
+ {
+ if (!Directory.Exists(directory))
+ Directory.CreateDirectory(directory);
+ }
+ }
+ }
+}