mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 01:43:57 +00:00
Changed the location where client save data is stored to the MikuSB directory.
This commit is contained in:
@@ -19,6 +19,11 @@ public static class ConfigManager
|
||||
//LoadHotfixData();
|
||||
}
|
||||
|
||||
public static void SaveConfig()
|
||||
{
|
||||
SaveData(Config, ConfigFilePath);
|
||||
}
|
||||
|
||||
private static void LoadConfigData()
|
||||
{
|
||||
var file = new FileInfo(ConfigFilePath);
|
||||
@@ -43,9 +48,26 @@ public static class ConfigManager
|
||||
Config = JsonConvert.DeserializeObject<ConfigContainer>(json)!;
|
||||
}
|
||||
|
||||
Config.Loader.Arguments = NormalizeLoaderArguments(Config.Loader.Arguments);
|
||||
SaveData(Config, ConfigFilePath);
|
||||
}
|
||||
|
||||
private static string[] NormalizeLoaderArguments(string[]? arguments)
|
||||
{
|
||||
var result = new List<string>(arguments ?? []);
|
||||
var userDataDirectory = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "Client_User_Data"));
|
||||
Directory.CreateDirectory(userDataDirectory);
|
||||
|
||||
var userDirArgument = $"-userdir={userDataDirectory}";
|
||||
var existingIndex = result.FindIndex(x => x.StartsWith("-userdir=", StringComparison.OrdinalIgnoreCase));
|
||||
if (existingIndex >= 0)
|
||||
result[existingIndex] = userDirArgument;
|
||||
else
|
||||
result.Add(userDirArgument);
|
||||
|
||||
return result.ToArray();
|
||||
}
|
||||
|
||||
private static void LoadHotfixData()
|
||||
{
|
||||
var file = new FileInfo(HotfixFilePath);
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user