namespace Bloxstrap { static class Paths { // note that these are directories that aren't tethered to the basedirectory // so these can safely be called before initialization public static string UserProfile => Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); public static string LocalAppData => Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); public static string Desktop => Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); public static string StartMenu => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu), "Programs", App.ProjectName); public static string System => Environment.GetFolderPath(Environment.SpecialFolder.System); public static string Process => Environment.ProcessPath!; public static string Base { get; private set; } = ""; public static string Downloads { get; private set; } = ""; public static string Logs { get; private set; } = ""; public static string Integrations { get; private set; } = ""; public static string Versions { get; private set; } = ""; public static string Modifications { get; private set; } = ""; public static string Application { get; private set; } = ""; public static string CustomFont => Path.Combine(Modifications, "content\\fonts\\CustomFont.ttf"); public static bool Initialized => !String.IsNullOrEmpty(Base); public static void Initialize(string baseDirectory) { Base = baseDirectory; Downloads = Path.Combine(Base, "Downloads"); Logs = Path.Combine(Base, "Logs"); Integrations = Path.Combine(Base, "Integrations"); Versions = Path.Combine(Base, "Versions"); Modifications = Path.Combine(Base, "Modifications"); Application = Path.Combine(Base, $"{App.ProjectName}.exe"); } } }