Changed the location where client save data is stored to the MikuSB directory.

This commit is contained in:
Kei-Luna
2026-05-15 09:19:00 +09:00
parent 5aa5ef92d0
commit 42b1ad1024
2 changed files with 51 additions and 1 deletions

View File

@@ -293,11 +293,14 @@ public sealed class LaunchOptions
public static LaunchOptions FromConfig(IEnumerable<string>? extraGameArguments = null)
{
var config = ConfigManager.Config;
var serverBaseDirectory = AppContext.BaseDirectory;
var gamePath = ResolvePath(config.Loader.GamePath, AppContext.BaseDirectory);
var patchPaths = ResolvePatchPaths(config.Loader.PatchPaths, AppContext.BaseDirectory);
var patchPaths = ResolvePatchPaths(config.Loader.PatchPaths, serverBaseDirectory);
var gameArgs = new List<string>(config.Loader.Arguments ?? []);
if (extraGameArguments is not null)
gameArgs.AddRange(extraGameArguments.Where(x => !string.IsNullOrWhiteSpace(x)));
gameArgs = EnsureUserDirArgument(gameArgs, serverBaseDirectory);
PersistResolvedArgumentsIfChanged(config, gameArgs);
var env = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
if (config.Loader.SetAllProxy && config.Proxy.Enabled)
@@ -330,6 +333,31 @@ public sealed class LaunchOptions
};
}
private static List<string> EnsureUserDirArgument(List<string> gameArgs, string baseDirectory)
{
var userDataDirectory = Path.GetFullPath(Path.Combine(baseDirectory, "Client_User_Data"));
Directory.CreateDirectory(userDataDirectory);
var userDirArgument = $"-userdir={userDataDirectory}";
var existingIndex = gameArgs.FindIndex(x => x.StartsWith("-userdir=", StringComparison.OrdinalIgnoreCase));
if (existingIndex >= 0)
gameArgs[existingIndex] = userDirArgument;
else
gameArgs.Add(userDirArgument);
return gameArgs;
}
private static void PersistResolvedArgumentsIfChanged(Configuration.ConfigContainer config, List<string> gameArgs)
{
var currentArgs = config.Loader.Arguments ?? [];
if (currentArgs.SequenceEqual(gameArgs, StringComparer.Ordinal))
return;
config.Loader.Arguments = gameArgs.ToArray();
ConfigManager.SaveConfig();
}
private static string? ResolvePath(string? value, string baseDirectory)
{
if (string.IsNullOrWhiteSpace(value))