internal static void SaveCurrentFileSystemConfiguration()
{
string file = OpenBveApi.Path.CombineFile(Program.FileSystem.SettingsFolder, "FileSystem.cfg");
StringBuilder newLines = new StringBuilder();
try
{
if (File.Exists(file))
{
string[] lines = File.ReadAllLines(file, Encoding.UTF8);
for (int i = 0; i < lines.Length; i++)
{
string line = ReplacePath(lines[i]);
int equals = line.IndexOf('=');
if (equals >= 0)
{
string key = line.Substring(0, equals).Trim().ToLowerInvariant();
switch (key)
{
case "data":
case "settings":
case "initialroute":
case "initialtrain":
case "restartprocess":
case "restartarguments":
newLines.AppendLine(line);
break;
}
}
}
}
else
{
//Create a new filesystem.cfg file using the current filesystem setup as a base
//Where does the Debian package point it's filesystem.cfg to??
newLines.AppendLine("Data=" + Program.FileSystem.DataFolder);
newLines.AppendLine("Settings=" + Program.FileSystem.SettingsFolder);
newLines.AppendLine("InitialRoute=" + Program.FileSystem.InitialRouteFolder);
newLines.AppendLine("InitialTrain=" + Program.FileSystem.InitialTrainFolder);
newLines.AppendLine("RestartProcess=" + Program.FileSystem.RestartProcess);
newLines.AppendLine("RestartArguments=" + Program.FileSystem.RestartArguments);
}
if (Program.FileSystem.RouteInstallationDirectory != null &&
Directory.Exists(Program.FileSystem.RouteInstallationDirectory))
{
newLines.AppendLine("RoutePackageInstall=" + ReplacePath(Program.FileSystem.RouteInstallationDirectory));
}
if (Program.FileSystem.TrainInstallationDirectory != null &&
Directory.Exists(Program.FileSystem.TrainInstallationDirectory))
{
newLines.AppendLine("TrainPackageInstall=" + ReplacePath(Program.FileSystem.TrainInstallationDirectory));
}
if (Program.FileSystem.OtherInstallationDirectory != null &&
Directory.Exists(Program.FileSystem.OtherInstallationDirectory))
{
newLines.AppendLine("OtherPackageInstall=" + ReplacePath(Program.FileSystem.OtherInstallationDirectory));
}
System.IO.File.WriteAllText(file, newLines.ToString(), new System.Text.UTF8Encoding(true));
}
catch
{
}
}