internal static void SaveOptions()
{
CultureInfo Culture = CultureInfo.InvariantCulture;
System.Text.StringBuilder Builder = new System.Text.StringBuilder();
Builder.AppendLine("; Options");
Builder.AppendLine("; =======");
Builder.AppendLine("; This file was automatically generated. Please modify only if you know what you're doing.");
Builder.AppendLine();
Builder.AppendLine("[language]");
Builder.AppendLine("code = " + CurrentOptions.LanguageCode);
Builder.AppendLine();
Builder.AppendLine("[interface]");
Builder.AppendLine("folder = " + CurrentOptions.UserInterfaceFolder);
{
string t; switch (CurrentOptions.TimeTableStyle)
{
case TimeTableMode.None: t = "none"; break;
case TimeTableMode.Default: t = "default"; break;
case TimeTableMode.AutoGenerated: t = "autogenerated"; break;
case TimeTableMode.PreferCustom: t = "prefercustom"; break;
default: t = "default"; break;
}
Builder.AppendLine("timetablemode = " + t);
}
Builder.AppendLine();
Builder.AppendLine("[display]");
Builder.AppendLine("preferNativeBackend = " + (CurrentOptions.PreferNativeBackend ? "true" : "false"));
Builder.AppendLine("mode = " + (CurrentOptions.FullscreenMode ? "fullscreen" : "window"));
Builder.AppendLine("vsync = " + (CurrentOptions.VerticalSynchronization ? "true" : "false"));
Builder.AppendLine("windowWidth = " + CurrentOptions.WindowWidth.ToString(Culture));
Builder.AppendLine("windowHeight = " + CurrentOptions.WindowHeight.ToString(Culture));
Builder.AppendLine("fullscreenWidth = " + CurrentOptions.FullscreenWidth.ToString(Culture));
Builder.AppendLine("fullscreenHeight = " + CurrentOptions.FullscreenHeight.ToString(Culture));
Builder.AppendLine("fullscreenBits = " + CurrentOptions.FullscreenBits.ToString(Culture));
Builder.AppendLine("mainmenuWidth = " + CurrentOptions.MainMenuWidth.ToString(Culture));
Builder.AppendLine("mainmenuHeight = " + CurrentOptions.MainMenuHeight.ToString(Culture));
Builder.AppendLine("disableDisplayLists = " + (CurrentOptions.DisableDisplayLists ? "true" : "false"));
Builder.AppendLine("loadInAdvance = " + (CurrentOptions.LoadInAdvance ? "true" : "false"));
Builder.AppendLine("unloadtextures = " + (CurrentOptions.UnloadUnusedTextures ? "true" : "false"));
Builder.AppendLine("noTextureResize = " + (CurrentOptions.NoTextureResize ? "true" : "false"));
Builder.AppendLine();
Builder.AppendLine("[quality]");
{
string t; switch (CurrentOptions.Interpolation)
{
case Interface.InterpolationMode.NearestNeighbor: t = "nearestNeighbor"; break;
case Interface.InterpolationMode.Bilinear: t = "bilinear"; break;
case Interface.InterpolationMode.NearestNeighborMipmapped: t = "nearestNeighborMipmapped"; break;
case Interface.InterpolationMode.BilinearMipmapped: t = "bilinearMipmapped"; break;
case Interface.InterpolationMode.TrilinearMipmapped: t = "trilinearMipmapped"; break;
case Interface.InterpolationMode.AnisotropicFiltering: t = "anisotropicFiltering"; break;
default: t = "bilinearMipmapped"; break;
}
Builder.AppendLine("interpolation = " + t);
}
Builder.AppendLine("anisotropicFilteringLevel = " + CurrentOptions.AnisotropicFilteringLevel.ToString(Culture));
Builder.AppendLine("anisotropicFilteringMaximum = " + CurrentOptions.AnisotropicFilteringMaximum.ToString(Culture));
Builder.AppendLine("antiAliasingLevel = " + CurrentOptions.AntiAliasingLevel.ToString(Culture));
Builder.AppendLine("transparencyMode = " + ((int)CurrentOptions.TransparencyMode).ToString(Culture));
Builder.AppendLine("viewingDistance = " + CurrentOptions.ViewingDistance.ToString(Culture));
{
string t; switch (CurrentOptions.MotionBlur)
{
case MotionBlurMode.Low: t = "low"; break;
case MotionBlurMode.Medium: t = "medium"; break;
case MotionBlurMode.High: t = "high"; break;
default: t = "none"; break;
}
Builder.AppendLine("motionBlur = " + t);
}
Builder.AppendLine();
Builder.AppendLine("[objectOptimization]");
Builder.AppendLine("basicThreshold = " + CurrentOptions.ObjectOptimizationBasicThreshold.ToString(Culture));
Builder.AppendLine("fullThreshold = " + CurrentOptions.ObjectOptimizationFullThreshold.ToString(Culture));
Builder.AppendLine();
Builder.AppendLine("[simulation]");
Builder.AppendLine("toppling = " + (CurrentOptions.Toppling ? "true" : "false"));
Builder.AppendLine("collisions = " + (CurrentOptions.Collisions ? "true" : "false"));
Builder.AppendLine("derailments = " + (CurrentOptions.Derailments ? "true" : "false"));
Builder.AppendLine("blackbox = " + (CurrentOptions.BlackBox ? "true" : "false"));
Builder.Append("mode = ");
switch (CurrentOptions.GameMode)
{
case Interface.GameMode.Arcade: Builder.AppendLine("arcade"); break;
case Interface.GameMode.Normal: Builder.AppendLine("normal"); break;
case Interface.GameMode.Expert: Builder.AppendLine("expert"); break;
default: Builder.AppendLine("normal"); break;
}
Builder.Append("acceleratedtimefactor = " + CurrentOptions.TimeAccelerationFactor);
Builder.AppendLine();
Builder.AppendLine("[verbosity]");
Builder.AppendLine("showWarningMessages = " + (CurrentOptions.ShowWarningMessages ? "true" : "false"));
Builder.AppendLine("showErrorMessages = " + (CurrentOptions.ShowErrorMessages ? "true" : "false"));
Builder.AppendLine("debugLog = " + (Program.GenerateDebugLogging ? "true" : "false"));
Builder.AppendLine();
Builder.AppendLine("[controls]");
Builder.AppendLine("useJoysticks = " + (CurrentOptions.UseJoysticks ? "true" : "false"));
Builder.AppendLine("joystickAxisEB = " + (CurrentOptions.AllowAxisEB ? "true" : "false"));
Builder.AppendLine("joystickAxisthreshold = " + CurrentOptions.JoystickAxisThreshold.ToString(Culture));
Builder.AppendLine("keyRepeatDelay = " + (1000.0 * CurrentOptions.KeyRepeatDelay).ToString("0", Culture));
Builder.AppendLine("keyRepeatInterval = " + (1000.0 * CurrentOptions.KeyRepeatInterval).ToString("0", Culture));
Builder.AppendLine();
Builder.AppendLine("[sound]");
Builder.Append("model = ");
switch (CurrentOptions.SoundModel)
{
case Sounds.SoundModels.Linear: Builder.AppendLine("linear"); break;
default: Builder.AppendLine("inverse"); break;
}
Builder.Append("range = ");
switch (CurrentOptions.SoundRange)
{
case SoundRange.Low: Builder.AppendLine("low"); break;
case SoundRange.Medium: Builder.AppendLine("medium"); break;
case SoundRange.High: Builder.AppendLine("high"); break;
default: Builder.AppendLine("low"); break;
}
Builder.AppendLine("number = " + CurrentOptions.SoundNumber.ToString(Culture));
Builder.AppendLine();
Builder.AppendLine("[proxy]");
Builder.AppendLine("url = " + CurrentOptions.ProxyUrl);
Builder.AppendLine("username = " + CurrentOptions.ProxyUserName);
Builder.AppendLine("password = " + CurrentOptions.ProxyPassword);
Builder.AppendLine();
Builder.AppendLine("[packages]");
Builder.Append("compression = ");
switch (CurrentOptions.packageCompressionType)
{
case CompressionType.Zip: Builder.AppendLine("zip"); break;
case CompressionType.TarGZ: Builder.AppendLine("gzip"); break;
case CompressionType.BZ2: Builder.AppendLine("bzip"); break;
default: Builder.AppendLine("zip"); break;
}
Builder.AppendLine();
Builder.AppendLine("[folders]");
Builder.AppendLine("route = " + CurrentOptions.RouteFolder);
Builder.AppendLine("train = " + CurrentOptions.TrainFolder);
Builder.AppendLine();
Builder.AppendLine("[recentlyUsedRoutes]");
for (int i = 0; i < CurrentOptions.RecentlyUsedRoutes.Length; i++)
{
Builder.AppendLine(CurrentOptions.RecentlyUsedRoutes[i]);
}
Builder.AppendLine();
Builder.AppendLine("[recentlyUsedTrains]");
for (int i = 0; i < CurrentOptions.RecentlyUsedTrains.Length; i++)
{
Builder.AppendLine(CurrentOptions.RecentlyUsedTrains[i]);
}
Builder.AppendLine();
Builder.AppendLine("[routeEncodings]");
for (int i = 0; i < CurrentOptions.RouteEncodings.Length; i++)
{
Builder.AppendLine(CurrentOptions.RouteEncodings[i].Codepage.ToString(Culture) + " = " + CurrentOptions.RouteEncodings[i].Value);
}
Builder.AppendLine();
Builder.AppendLine("[trainEncodings]");
for (int i = 0; i < CurrentOptions.TrainEncodings.Length; i++)
{
Builder.AppendLine(CurrentOptions.TrainEncodings[i].Codepage.ToString(Culture) + " = " + CurrentOptions.TrainEncodings[i].Value);
}
string File = OpenBveApi.Path.CombineFile(Program.FileSystem.SettingsFolder, "options.cfg");
System.IO.File.WriteAllText(File, Builder.ToString(), new System.Text.UTF8Encoding(true));
}
}