mirror of
https://github.com/sp-tarkov/launcher.git
synced 2025-02-12 17:10:44 -05:00
Merge pull request 'master' (#3) from SPT-AKI/Launcher:master into master
Reviewed-on: waffle.lord/Launcher#3
This commit is contained in:
commit
8f8e5ed6e7
@ -29,7 +29,6 @@ namespace Aki.Launcher
|
||||
private readonly IGameStarterFrontend _frontend;
|
||||
private readonly bool _showOnly;
|
||||
private readonly string _originalGamePath;
|
||||
private readonly string _gamePath;
|
||||
private readonly string[] _excludeFromCleanup;
|
||||
private const string registryInstall = @"Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\EscapeFromTarkov";
|
||||
|
||||
@ -40,7 +39,6 @@ namespace Aki.Launcher
|
||||
{
|
||||
_frontend = frontend;
|
||||
_showOnly = showOnly;
|
||||
_gamePath = gamePath ?? LauncherSettingsProvider.Instance.GamePath ?? Environment.CurrentDirectory;
|
||||
_originalGamePath = originalGamePath ??= DetectOriginalGamePath();
|
||||
_excludeFromCleanup = excludeFromCleanup ?? LauncherSettingsProvider.Instance.ExcludeFromCleanup;
|
||||
}
|
||||
@ -57,7 +55,7 @@ namespace Aki.Launcher
|
||||
return info?.DirectoryName;
|
||||
}
|
||||
|
||||
public async Task<GameStarterResult> LaunchGame(ServerInfo server, AccountInfo account)
|
||||
public async Task<GameStarterResult> LaunchGame(ServerInfo server, AccountInfo account, string gamePath)
|
||||
{
|
||||
// setup directories
|
||||
if (IsInstalledInLive())
|
||||
@ -66,7 +64,7 @@ namespace Aki.Launcher
|
||||
return GameStarterResult.FromError(-1);
|
||||
}
|
||||
|
||||
SetupGameFiles();
|
||||
SetupGameFiles(gamePath);
|
||||
|
||||
if (!ValidationUtil.Validate())
|
||||
{
|
||||
@ -81,7 +79,7 @@ namespace Aki.Launcher
|
||||
}
|
||||
|
||||
// check game path
|
||||
var clientExecutable = Path.Join(_gamePath, "EscapeFromTarkov.exe");
|
||||
var clientExecutable = Path.Join(gamePath, "EscapeFromTarkov.exe");
|
||||
|
||||
if (!File.Exists(clientExecutable))
|
||||
{
|
||||
@ -90,7 +88,7 @@ namespace Aki.Launcher
|
||||
}
|
||||
|
||||
// apply patches
|
||||
ProgressReportingPatchRunner patchRunner = new ProgressReportingPatchRunner(_gamePath);
|
||||
ProgressReportingPatchRunner patchRunner = new ProgressReportingPatchRunner(gamePath);
|
||||
|
||||
try
|
||||
{
|
||||
@ -116,7 +114,7 @@ namespace Aki.Launcher
|
||||
{
|
||||
Arguments = args,
|
||||
UseShellExecute = false,
|
||||
WorkingDirectory = _gamePath,
|
||||
WorkingDirectory = gamePath,
|
||||
};
|
||||
|
||||
Process.Start(clientProcess);
|
||||
@ -183,17 +181,17 @@ namespace Aki.Launcher
|
||||
return isInstalledInLive;
|
||||
}
|
||||
|
||||
void SetupGameFiles()
|
||||
void SetupGameFiles(string gamePath)
|
||||
{
|
||||
var files = new []
|
||||
{
|
||||
GetFileForCleanup("BattlEye"),
|
||||
GetFileForCleanup("Logs"),
|
||||
GetFileForCleanup("ConsistencyInfo"),
|
||||
GetFileForCleanup("EscapeFromTarkov_BE.exe"),
|
||||
GetFileForCleanup("Uninstall.exe"),
|
||||
GetFileForCleanup("UnityCrashHandler64.exe"),
|
||||
GetFileForCleanup("WinPixEventRuntime.dll")
|
||||
GetFileForCleanup("BattlEye", gamePath),
|
||||
GetFileForCleanup("Logs", gamePath),
|
||||
GetFileForCleanup("ConsistencyInfo", gamePath),
|
||||
GetFileForCleanup("EscapeFromTarkov_BE.exe", gamePath),
|
||||
GetFileForCleanup("Uninstall.exe", gamePath),
|
||||
GetFileForCleanup("UnityCrashHandler64.exe", gamePath),
|
||||
GetFileForCleanup("WinPixEventRuntime.dll", gamePath)
|
||||
};
|
||||
|
||||
foreach (var file in files)
|
||||
@ -215,7 +213,7 @@ namespace Aki.Launcher
|
||||
}
|
||||
}
|
||||
|
||||
private string GetFileForCleanup(string fileName)
|
||||
private string GetFileForCleanup(string fileName, string gamePath)
|
||||
{
|
||||
if (_excludeFromCleanup.Contains(fileName))
|
||||
{
|
||||
@ -223,7 +221,7 @@ namespace Aki.Launcher
|
||||
return null;
|
||||
}
|
||||
|
||||
return Path.Combine(_gamePath, fileName);
|
||||
return Path.Combine(gamePath, fileName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -123,9 +123,11 @@ namespace Aki.Launcher.Helpers
|
||||
englishLocale.default_language = "Default Language";
|
||||
englishLocale.game_path = "Game Path";
|
||||
englishLocale.clear_game_settings = "Clear Game Settings";
|
||||
englishLocale.clear_game_settings_warning = "You are about to remove your old game settings files. They will be backed up to:\n{0}\n\nAre you sure?";
|
||||
englishLocale.clear_game_settings_succeeded = "Game settings cleared.";
|
||||
englishLocale.clear_game_settings_failed = "An issue occurred while clearing game settings.";
|
||||
englishLocale.reset_game_settings = "Reset Game Settings";
|
||||
englishLocale.reset_game_settings_succeeded = "Game settings reset";
|
||||
englishLocale.reset_game_settings_failed = "Failed to reset game settings";
|
||||
englishLocale.remove_registry_keys = "Remove Registry Keys";
|
||||
englishLocale.remove_registry_keys_succeeded = "Registry keys removed.";
|
||||
englishLocale.remove_registry_keys_failed = "An issue occurred while removing registry keys.";
|
||||
@ -738,22 +740,6 @@ namespace Aki.Launcher.Helpers
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region clear_game_settings_warning
|
||||
private string _clear_game_settings_warning;
|
||||
public string clear_game_settings_warning
|
||||
{
|
||||
get => _clear_game_settings_warning;
|
||||
set
|
||||
{
|
||||
if (_clear_game_settings_warning != value)
|
||||
{
|
||||
_clear_game_settings_warning = value;
|
||||
RaisePropertyChanged(nameof(clear_game_settings_warning));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region clear_game_settings_succeeded
|
||||
private string _clear_game_settings_succeeded;
|
||||
public string clear_game_settings_succeeded
|
||||
@ -786,6 +772,54 @@ namespace Aki.Launcher.Helpers
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region reset_game_settings
|
||||
private string _reset_game_settings;
|
||||
public string reset_game_settings
|
||||
{
|
||||
get => _reset_game_settings;
|
||||
set
|
||||
{
|
||||
if (_reset_game_settings != value)
|
||||
{
|
||||
_reset_game_settings = value;
|
||||
RaisePropertyChanged(nameof(reset_game_settings));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region reset_game_settings_failed
|
||||
private string _reset_game_settings_failed;
|
||||
public string reset_game_settings_failed
|
||||
{
|
||||
get => _reset_game_settings_failed;
|
||||
set
|
||||
{
|
||||
if (_reset_game_settings_failed != value)
|
||||
{
|
||||
_reset_game_settings_failed = value;
|
||||
RaisePropertyChanged(nameof(reset_game_settings_failed));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region reset_game_settings_succeeded
|
||||
private string _reset_game_settings_succeeded;
|
||||
public string reset_game_settings_succeeded
|
||||
{
|
||||
get => _reset_game_settings_succeeded;
|
||||
set
|
||||
{
|
||||
if (_reset_game_settings_succeeded != value)
|
||||
{
|
||||
_reset_game_settings_succeeded = value;
|
||||
RaisePropertyChanged(nameof(reset_game_settings_succeeded));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region remove_registry_keys
|
||||
private string _remove_registry_keys;
|
||||
public string remove_registry_keys
|
||||
|
@ -32,7 +32,6 @@
|
||||
"default_language": "默认语言",
|
||||
"game_path": "游戏路径",
|
||||
"clear_game_settings": "恢复默认游戏设置",
|
||||
"clear_game_settings_warning": "您将要删除旧的游戏设置文件。它们将备份到:\n{0}\n\n您确定吗?",
|
||||
"clear_game_settings_succeeded": "游戏设置已恢复默认",
|
||||
"clear_game_settings_failed": "游戏设置恢复失败",
|
||||
"remove_registry_keys": "移除注册表",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "描述",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
||||
|
@ -32,7 +32,6 @@
|
||||
"default_language": "預設語言",
|
||||
"game_path": "遊戲路徑",
|
||||
"clear_game_settings": "重置遊戲設定",
|
||||
"clear_game_settings_warning": "You are about to remove your old game settings files. They will be backed up to:\n{0}\n\nAre you sure?",
|
||||
"clear_game_settings_succeeded": "遊戲設定已重置",
|
||||
"clear_game_settings_failed": "遊戲設定重置過程中發生錯誤",
|
||||
"remove_registry_keys": "移除登錄檔機碼",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "Description",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
@ -32,7 +32,6 @@
|
||||
"default_language": "Default Language",
|
||||
"game_path": "SPT Game Path",
|
||||
"clear_game_settings": "Clear Game Settings",
|
||||
"clear_game_settings_warning": "You are about to remove your old game settings files. They will be backed up to:\n{0}\n\nAre you sure?",
|
||||
"clear_game_settings_succeeded": "Game settings cleared.",
|
||||
"clear_game_settings_failed": "An issue occurred while clearing game settings.",
|
||||
"remove_registry_keys": "Remove Registry Keys",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "Description",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
@ -32,7 +32,6 @@
|
||||
"default_language": "Langue par défaut",
|
||||
"game_path": "Répertoire du jeu",
|
||||
"clear_game_settings": "Réinitialiser les paramètres du jeu",
|
||||
"clear_game_settings_warning": "You are about to remove your old game settings files. They will be backed up to:\n{0}\n\nAre you sure?",
|
||||
"clear_game_settings_succeeded": "Paramètres du jeu réinitialisés.",
|
||||
"clear_game_settings_failed": "Un problème est survenu pendant la réinitialisation des paramètres de jeu.",
|
||||
"remove_registry_keys": "Réinitialiser les clés du registre",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "Description",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
@ -32,7 +32,6 @@
|
||||
"default_language": "Standardsprache",
|
||||
"game_path": "Spielpfad",
|
||||
"clear_game_settings": "Spieleinstellungen zurücksetzen",
|
||||
"clear_game_settings_warning": "You are about to remove your old game settings files. They will be backed up to:\n{0}\n\nAre you sure?",
|
||||
"clear_game_settings_succeeded": "Spieleinstellungen zurückgesetzt",
|
||||
"clear_game_settings_failed": "Die Spieleinstellungen konnten aufgrund eines Fehlers nicht zurückgesetzt werden.",
|
||||
"remove_registry_keys": "Registry-Schlüssel entfernen?",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "Description",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
@ -32,7 +32,6 @@
|
||||
"default_language": "Linguaggio predefinito",
|
||||
"game_path": "Cartella di installazione di SPT",
|
||||
"clear_game_settings": "Resetta impostazioni di gioco",
|
||||
"clear_game_settings_warning": "Stai per cancellare i file delle impostazioni di gioco. Saranno backuppate in:\n{0}\n\nConfermi?",
|
||||
"clear_game_settings_succeeded": "Impostazioni di gioco resettate.",
|
||||
"clear_game_settings_failed": "E' sorto un problema nel resettare le impostazioni di gioco.",
|
||||
"remove_registry_keys": "Rimuovi chiavi di registro",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "Descrizione",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
@ -32,7 +32,6 @@
|
||||
"default_language": "デフォルト言語",
|
||||
"game_path": "SPTゲームパス",
|
||||
"clear_game_settings": "ゲーム設定をクリア",
|
||||
"clear_game_settings_warning": "古いゲーム設定ファイルを削除しようとしています。 次の場所にバックアップされます:\n{0}\n\nよろしいですか?",
|
||||
"clear_game_settings_succeeded": "ゲーム設定をクリアしました。",
|
||||
"clear_game_settings_failed": "ゲーム設定のクリア中に問題が発生しました。",
|
||||
"remove_registry_keys": "レジストリキーを削除する",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "Description",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
@ -32,7 +32,6 @@
|
||||
"default_language": "기본 언어",
|
||||
"game_path": "SPT 게임 경로",
|
||||
"clear_game_settings": "게임 설정 초기화",
|
||||
"clear_game_settings_warning": "기존 게임의 설정 파일을 초기화 합니다. 기존 파일들은\n{0}\n\n위치에 백업됩니다. 초기화하시겠습니까?",
|
||||
"clear_game_settings_succeeded": "게임 설정이 초기화되었습니다.",
|
||||
"clear_game_settings_failed": "게임 설정을 초기화하는 도중에 문제가 발생하였습니다.",
|
||||
"remove_registry_keys": "레지스트리 키 삭제",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "Description",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
@ -32,7 +32,6 @@
|
||||
"default_language": "Язык по-уолчанию",
|
||||
"game_path": "Путь к игре",
|
||||
"clear_game_settings": "Очистить настройки игры",
|
||||
"clear_game_settings_warning": "Вы собираетесь удалить старые файлы настроек игры. Их копия будет расположена здесь:\n{0}\n\n Продолжить?",
|
||||
"clear_game_settings_succeeded": "Настройки игры очищены",
|
||||
"clear_game_settings_failed": "Неизвестная проблема при очистке настроек игры",
|
||||
"remove_registry_keys": "Очистить реестр",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "Description",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
@ -32,7 +32,6 @@
|
||||
"default_language": "Idioma",
|
||||
"game_path": "Ruta para SPT",
|
||||
"clear_game_settings": "Limpiar ajustes del juego",
|
||||
"clear_game_settings_warning": "Estás a punto de borrar tus antiguos ajustes del juego. Ellos estarán respaldados en:\n{0}\n\n¿Estás seguro?",
|
||||
"clear_game_settings_succeeded": "Ajustes limpiados.",
|
||||
"clear_game_settings_failed": "Ha habido un problema mientras se limpiaban los ajustes del juego.",
|
||||
"remove_registry_keys": "Eliminar claves de registro",
|
||||
@ -83,5 +82,8 @@
|
||||
"description": "Descripción",
|
||||
"server_mods": "Server Mods",
|
||||
"profile_mods": "Profile Mods",
|
||||
"author": "Author"
|
||||
"author": "Author",
|
||||
"reset_game_settings": "Reset Game Settings",
|
||||
"reset_game_settings_failed": "Failed to reset game settings",
|
||||
"reset_game_settings_succeeded": "Game settings reset"
|
||||
}
|
@ -144,7 +144,7 @@ namespace Aki.Launcher.ViewModels
|
||||
|
||||
LauncherSettingsProvider.Instance.GameRunning = true;
|
||||
|
||||
GameStarterResult gameStartResult = await gameStarter.LaunchGame(ServerManager.SelectedServer, AccountManager.SelectedAccount);
|
||||
GameStarterResult gameStartResult = await gameStarter.LaunchGame(ServerManager.SelectedServer, AccountManager.SelectedAccount, LauncherSettingsProvider.Instance.GamePath);
|
||||
|
||||
if (gameStartResult.Succeeded)
|
||||
{
|
||||
|
@ -74,79 +74,59 @@ namespace Aki.Launcher.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
public async Task ClearGameSettingsCommand()
|
||||
public async Task ResetGameSettingsCommand()
|
||||
{
|
||||
string EFTSettingsFolder = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Battlestate Games", "Escape from Tarkov", "Settings");
|
||||
string SPTSettingsFolder = Path.Join(LauncherSettingsProvider.Instance.GamePath, "user", "sptsettings");
|
||||
|
||||
bool BackupAndRemove(string backupFolderPath, FileInfo file)
|
||||
if (!Directory.Exists(EFTSettingsFolder))
|
||||
{
|
||||
try
|
||||
{
|
||||
file.Refresh();
|
||||
|
||||
//if for some reason the file no longer exists /shrug
|
||||
if (!file.Exists)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//create backup dir and copy file
|
||||
Directory.CreateDirectory(backupFolderPath);
|
||||
|
||||
string newFilePath = Path.Combine(backupFolderPath, $"{file.Name}_{DateTime.Now.ToString("MM-dd-yyyy_hh-mm-ss-tt")}.bak");
|
||||
|
||||
File.Copy(file.FullName, newFilePath);
|
||||
|
||||
//copy check
|
||||
if (!File.Exists(newFilePath))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//delete old file
|
||||
file.Delete();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.Instance.Exception(ex);
|
||||
}
|
||||
|
||||
//delete check
|
||||
if (file.Exists)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
LogManager.Instance.Warning($"EFT settings folder not found, can't reset :: Path: {EFTSettingsFolder}");
|
||||
SendNotification("", LocalizationProvider.Instance.reset_game_settings_failed, Avalonia.Controls.Notifications.NotificationType.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
string EFTSettingsFolder = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Escape from Tarkov");
|
||||
string backupFolderPath = Path.Combine(EFTSettingsFolder, "Backups");
|
||||
|
||||
if (Directory.Exists(EFTSettingsFolder))
|
||||
try
|
||||
{
|
||||
FileInfo local_ini = new FileInfo(Path.Combine(EFTSettingsFolder, "local.ini"));
|
||||
FileInfo shared_ini = new FileInfo(Path.Combine(EFTSettingsFolder, "shared.ini"));
|
||||
Directory.CreateDirectory(SPTSettingsFolder);
|
||||
|
||||
string Message = string.Format(LocalizationProvider.Instance.clear_game_settings_warning, backupFolderPath);
|
||||
ConfirmationDialogViewModel confirmDelete = new ConfirmationDialogViewModel(null, Message, LocalizationProvider.Instance.clear_game_settings, LocalizationProvider.Instance.cancel);
|
||||
|
||||
var confirmation = await ShowDialog(confirmDelete);
|
||||
|
||||
if (confirmation is bool proceed && !proceed)
|
||||
foreach (string dirPath in Directory.GetDirectories(EFTSettingsFolder, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
return;
|
||||
Directory.CreateDirectory(dirPath.Replace(EFTSettingsFolder, SPTSettingsFolder));
|
||||
}
|
||||
|
||||
bool localSucceeded = BackupAndRemove(backupFolderPath, local_ini);
|
||||
bool sharedSucceeded = BackupAndRemove(backupFolderPath, shared_ini);
|
||||
|
||||
//if one fails, I'm considering it bad. Send failed notification.
|
||||
if (!localSucceeded || !sharedSucceeded)
|
||||
//Copy all the files & Replaces any files with the same name
|
||||
foreach (string newPath in Directory.GetFiles(EFTSettingsFolder, "*.*", SearchOption.AllDirectories))
|
||||
{
|
||||
SendNotification("", LocalizationProvider.Instance.clear_game_settings_failed, Avalonia.Controls.Notifications.NotificationType.Error);
|
||||
return;
|
||||
File.Copy(newPath, newPath.Replace(EFTSettingsFolder, SPTSettingsFolder), true);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.Instance.Exception(ex);
|
||||
SendNotification("", LocalizationProvider.Instance.reset_game_settings_failed, Avalonia.Controls.Notifications.NotificationType.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
SendNotification("", LocalizationProvider.Instance.reset_game_settings_succeeded, Avalonia.Controls.Notifications.NotificationType.Success);
|
||||
}
|
||||
|
||||
public async Task ClearGameSettingsCommand()
|
||||
{
|
||||
var SPTSettingsDir = new DirectoryInfo(Path.Join(LauncherSettingsProvider.Instance.GamePath, "user", "sptsettings"));
|
||||
|
||||
try
|
||||
{
|
||||
SPTSettingsDir.Delete(true);
|
||||
|
||||
Directory.CreateDirectory(SPTSettingsDir.FullName);
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
LogManager.Instance.Exception(ex);
|
||||
SendNotification("", LocalizationProvider.Instance.clear_game_settings_failed, Avalonia.Controls.Notifications.NotificationType.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
SendNotification("", LocalizationProvider.Instance.clear_game_settings_succeeded, Avalonia.Controls.Notifications.NotificationType.Success);
|
||||
}
|
||||
|
@ -8,33 +8,39 @@
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Aki.Launcher.Views.SettingsView">
|
||||
|
||||
<Grid RowDefinitions="10,AUTO,AUTO,AUTO,*,10" ColumnDefinitions="10,2*,2*,10">
|
||||
<Grid RowDefinitions="10,AUTO,AUTO,AUTO,*,10" ColumnDefinitions="10,2*,2*,AUTO,10">
|
||||
|
||||
<!-- Backdrop -->
|
||||
<Rectangle Fill="{StaticResource AKI_Background_Dark}"
|
||||
Grid.RowSpan="6" Grid.ColumnSpan="4"
|
||||
Grid.RowSpan="6" Grid.ColumnSpan="5"
|
||||
Opacity=".7"
|
||||
/>
|
||||
<StackPanel Spacing="10" Grid.Row="1" Grid.Column="1" Orientation="Horizontal">
|
||||
<WrapPanel Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal">
|
||||
<Button Content="{Binding Source={x:Static helpers:LocalizationProvider.Instance}, Path=remove_registry_keys}"
|
||||
Command="{Binding RemoveRegistryKeysCommand}"
|
||||
Classes="borderedlink"
|
||||
Margin="0 0 10 5"
|
||||
/>
|
||||
<Button Content="{Binding Source={x:Static helpers:LocalizationProvider.Instance}, Path=clear_game_settings}"
|
||||
Command="{Binding ClearGameSettingsCommand}"
|
||||
Classes="borderedlink"
|
||||
Margin="0 0 10 5"
|
||||
/>
|
||||
<Button Content="{Binding Source={x:Static helpers:LocalizationProvider.Instance}, Path=clean_temp_files}"
|
||||
Command="{Binding CleanTempFilesCommand}"
|
||||
Classes="borderedlink"
|
||||
Margin="0 0 10 5"
|
||||
/>
|
||||
</StackPanel>
|
||||
<Button Content="{Binding Source={x:Static helpers:LocalizationProvider.Instance}, Path=reset_game_settings}"
|
||||
Command="{Binding ResetGameSettingsCommand}"
|
||||
Classes="borderedlink"
|
||||
Margin="0 0 10 5"
|
||||
/>
|
||||
</WrapPanel>
|
||||
|
||||
<!-- Go Back -->
|
||||
<Button Content="➜" FontSize="25"
|
||||
Grid.Row="1" Grid.ColumnSpan="3"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
Grid.Row="1" Grid.Column="3"
|
||||
Command="{Binding GoBackCommand}"
|
||||
Classes="link"
|
||||
/>
|
||||
@ -64,9 +70,9 @@
|
||||
/>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Spacing="3" Grid.Row="3" Grid.Column="2" Margin="0 20 0 0">
|
||||
<WrapPanel Orientation="Horizontal" Grid.Row="3" Grid.Column="2" Grid.ColumnSpan="2" Margin="0 30 0 0">
|
||||
<!-- Select Folder -->
|
||||
<Button x:Name="sfb" Command="{Binding SelectGameFolderCommand}">
|
||||
<Button x:Name="sfb" Command="{Binding SelectGameFolderCommand}" Margin="0 0 10 5">
|
||||
<StackPanel Orientation="Horizontal" Spacing="5">
|
||||
<Path Data="{StaticResource FolderWithPlus}" Fill="{Binding ElementName=sfb, Path=Foreground}"
|
||||
/>
|
||||
@ -75,7 +81,7 @@
|
||||
</Button>
|
||||
|
||||
<!-- Open Folder -->
|
||||
<Button x:Name="ofb" Command="{Binding OpenGameFolderCommand}">
|
||||
<Button x:Name="ofb" Command="{Binding OpenGameFolderCommand}" Margin="0 0 10 5">
|
||||
<StackPanel Orientation="Horizontal" Spacing="5">
|
||||
<!-- This geometry data isn't centered and I'm far too lazy to fix it, so I'm just adding a margin (waffle.lazy) -->
|
||||
<Path Data="{StaticResource OpenFolder}" Fill="{Binding ElementName=ofb, Path=Foreground}"
|
||||
@ -84,7 +90,7 @@
|
||||
<Label Content="{Binding Source={x:Static helpers:LocalizationProvider.Instance}, Path=open_folder}"/>
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
|
||||
<!-- Server URL -->
|
||||
<StackPanel Grid.Row="4" Grid.Column="1">
|
||||
|
Loading…
x
Reference in New Issue
Block a user