From f30dcf5ef41d54c588d7b42c48be8d941abba72e Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 8 Jan 2017 09:57:10 -0500 Subject: Initial upload --- ShiftOS_TheReturn/Paths.cs | 139 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 ShiftOS_TheReturn/Paths.cs (limited to 'ShiftOS_TheReturn/Paths.cs') diff --git a/ShiftOS_TheReturn/Paths.cs b/ShiftOS_TheReturn/Paths.cs new file mode 100644 index 0000000..00a4edf --- /dev/null +++ b/ShiftOS_TheReturn/Paths.cs @@ -0,0 +1,139 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using static ShiftOS.Objects.ShiftFS.Utils; +using ShiftOS.Objects.ShiftFS; +using Newtonsoft.Json; +using System.Threading; + +namespace ShiftOS.Engine +{ + public static class Paths + { + public static void Init() + { + Locations = new Dictionary(); + Locations.Add("classic", "C:\\ShiftOS"); + Locations.Add("root", "0:"); + + AddPath("root", "system"); + + AddPath("root", "home"); + AddPath("home", "documents"); + AddPath("home", "desktop"); + AddPath("home", "pictures"); + + + AddPath("system", "local"); + AddPath("local", "english.local"); + AddPath("local", "deutsch.local"); + AddPath("local", "verbose.local"); + AddPath("system", "data"); + AddPath("data", "save.json"); + AddPath("data", "user.dat"); + AddPath("data", "skin"); + AddPath("skin", "current"); + AddPath("current", "skin.json"); + AddPath("current", "images"); + + CheckPathExistence(); + + CreateAndMountSharedFolder(); + } + + /// + /// Returns all paths in an array of strings. + /// + /// The array + public static string[] GetAll() + { + List strings = new List(); + foreach(var str in Locations) + { + strings.Add(str.Key + " = " + str.Value); + } + return strings.ToArray(); + + } + + public static string[] GetAllWithoutKey() + { + List strings = new List(); + foreach (var str in Locations) + { + strings.Add(str.Value); + } + return strings.ToArray(); + + } + + public static string GetPath(string id) + { + return Locations[id]; + } + + private static void CheckPathExistence() + { + foreach(var path in Locations) + { + if (!path.Value.Contains(".") && path.Key != "classic") + { + if (!DirectoryExists(path.Value)) + { + Console.WriteLine($"Writing directory: {path.Value.Replace(Locations["root"], "\\")}"); + CreateDirectory(path.Value); + } + } + } + } + + private static Dictionary Locations { get; set; } + + public static void CreateAndMountSharedFolder() + { + if (!System.IO.Directory.Exists(SharedFolder)) + { + System.IO.Directory.CreateDirectory(SharedFolder); + } + + var mount = new Directory(); + mount.Name = "Shared"; + Utils.Mount(JsonConvert.SerializeObject(mount)); + ScanForDirectories(SharedFolder, 1); + } + + + + public static void ScanForDirectories(string folder, int mount) + { + foreach (var file in System.IO.Directory.GetFiles(folder)) + { + string mfsDir = file.Replace(SharedFolder, $"{mount}:").Replace("\\", "/"); + WriteAllBytes(mfsDir, System.IO.File.ReadAllBytes(file)); + } + foreach (var directory in System.IO.Directory.GetDirectories(folder)) + { + string mfsDir = directory.Replace(SharedFolder, $"{mount}:").Replace("\\", "/"); + CreateDirectory(mfsDir); + ScanForDirectories(directory, mount); + } + } + + public static string SharedFolder { get { return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ShiftOS_Shared"; } } + public static string SaveFile { get { return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ShiftOS.mfs"; } } + public static string SaveFileInner { get { return Locations["save.json"]; } } + + public static void AddPath(string parent, string path) + { + Locations.Add(path, Locations[parent] + "/" + path); + } + + public static string Translate(string path) + { + return Locations["root"] + path.Replace("\\", "/"); + } + } +} -- cgit v1.2.3