mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 03:03:58 +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();
|
//LoadHotfixData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void SaveConfig()
|
||||||
|
{
|
||||||
|
SaveData(Config, ConfigFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
private static void LoadConfigData()
|
private static void LoadConfigData()
|
||||||
{
|
{
|
||||||
var file = new FileInfo(ConfigFilePath);
|
var file = new FileInfo(ConfigFilePath);
|
||||||
@@ -43,9 +48,26 @@ public static class ConfigManager
|
|||||||
Config = JsonConvert.DeserializeObject<ConfigContainer>(json)!;
|
Config = JsonConvert.DeserializeObject<ConfigContainer>(json)!;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Config.Loader.Arguments = NormalizeLoaderArguments(Config.Loader.Arguments);
|
||||||
SaveData(Config, ConfigFilePath);
|
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()
|
private static void LoadHotfixData()
|
||||||
{
|
{
|
||||||
var file = new FileInfo(HotfixFilePath);
|
var file = new FileInfo(HotfixFilePath);
|
||||||
|
|||||||
@@ -293,11 +293,14 @@ public sealed class LaunchOptions
|
|||||||
public static LaunchOptions FromConfig(IEnumerable<string>? extraGameArguments = null)
|
public static LaunchOptions FromConfig(IEnumerable<string>? extraGameArguments = null)
|
||||||
{
|
{
|
||||||
var config = ConfigManager.Config;
|
var config = ConfigManager.Config;
|
||||||
|
var serverBaseDirectory = AppContext.BaseDirectory;
|
||||||
var gamePath = ResolvePath(config.Loader.GamePath, 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 ?? []);
|
var gameArgs = new List<string>(config.Loader.Arguments ?? []);
|
||||||
if (extraGameArguments is not null)
|
if (extraGameArguments is not null)
|
||||||
gameArgs.AddRange(extraGameArguments.Where(x => !string.IsNullOrWhiteSpace(x)));
|
gameArgs.AddRange(extraGameArguments.Where(x => !string.IsNullOrWhiteSpace(x)));
|
||||||
|
gameArgs = EnsureUserDirArgument(gameArgs, serverBaseDirectory);
|
||||||
|
PersistResolvedArgumentsIfChanged(config, gameArgs);
|
||||||
|
|
||||||
var env = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
var env = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||||
if (config.Loader.SetAllProxy && config.Proxy.Enabled)
|
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)
|
private static string? ResolvePath(string? value, string baseDirectory)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(value))
|
if (string.IsNullOrWhiteSpace(value))
|
||||||
|
|||||||
Reference in New Issue
Block a user