diff options
Diffstat (limited to 'V3/Data/Internal/PathManager.cs')
-rw-r--r-- | V3/Data/Internal/PathManager.cs | 51 |
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); + } + } + } +} |