From d891c3e8da1462144125f7d1143b977238d0f62f Mon Sep 17 00:00:00 2001 From: 4sval Date: Sun, 18 Jun 2023 04:51:36 +0200 Subject: [PATCH] migrate main key + fix custom dirs dup + fix manual games add by ref --- FModel/App.xaml.cs | 2 +- FModel/MainWindow.xaml.cs | 1 - FModel/Settings/DirectorySettings.cs | 11 ++++++++--- FModel/ViewModels/ApplicationViewModel.cs | 3 ++- FModel/ViewModels/CustomDirectoriesViewModel.cs | 3 +++ FModel/ViewModels/GameSelectorViewModel.cs | 2 +- FModel/ViewModels/SettingsViewModel.cs | 5 ++--- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/FModel/App.xaml.cs b/FModel/App.xaml.cs index 9a07838b..8491c467 100644 --- a/FModel/App.xaml.cs +++ b/FModel/App.xaml.cs @@ -149,7 +149,7 @@ private void MigrateV1Games() { if (!Directory.Exists(gameDir)) continue; UserSettings.Default.PerDirectory[gameDir] = - DirectorySettings.Default(setting.GameName, setting.GameDirectory, true, setting.OverridedGame); + DirectorySettings.Default(setting.GameName, setting.GameDirectory, true, setting.OverridedGame, setting.AesKeys?.MainKey); } UserSettings.Default.ManualGames.Clear(); } diff --git a/FModel/MainWindow.xaml.cs b/FModel/MainWindow.xaml.cs index 5adbab52..9f3c84d1 100644 --- a/FModel/MainWindow.xaml.cs +++ b/FModel/MainWindow.xaml.cs @@ -40,7 +40,6 @@ public MainWindow() private void OnClosing(object sender, CancelEventArgs e) { - _applicationView.CustomDirectories.Save(); _discordHandler.Dispose(); } diff --git a/FModel/Settings/DirectorySettings.cs b/FModel/Settings/DirectorySettings.cs index 2a9c0657..d96a735b 100644 --- a/FModel/Settings/DirectorySettings.cs +++ b/FModel/Settings/DirectorySettings.cs @@ -7,10 +7,10 @@ namespace FModel.Settings; -public class DirectorySettings : ViewModel +public class DirectorySettings : ViewModel, ICloneable { public static DirectorySettings Default( - string gameName, string gameDir, bool manual = false, EGame ue = EGame.GAME_UE4_LATEST) + string gameName, string gameDir, bool manual = false, EGame ue = EGame.GAME_UE4_LATEST, string aes = "") { UserSettings.Default.PerDirectory.TryGetValue(gameDir, out var old); return new DirectorySettings @@ -23,7 +23,7 @@ public class DirectorySettings : ViewModel Versioning = old?.Versioning ?? new VersioningSettings(), Endpoints = old?.Endpoints ?? EndpointSettings.Default(gameName), Directories = old?.Directories ?? CustomDirectory.Default(gameName), - AesKeys = old?.AesKeys ?? new AesResponse { MainKey = string.Empty, DynamicKeys = null }, + AesKeys = old?.AesKeys ?? new AesResponse { MainKey = aes, DynamicKeys = null }, LastAesReload = old?.LastAesReload ?? DateTime.Today.AddDays(-1) }; } @@ -112,4 +112,9 @@ public override int GetHashCode() { return HashCode.Combine(GameDirectory, (int) UeVersion); } + + public object Clone() + { + return this.MemberwiseClone(); + } } diff --git a/FModel/ViewModels/ApplicationViewModel.cs b/FModel/ViewModels/ApplicationViewModel.cs index caa8e697..729324fb 100644 --- a/FModel/ViewModels/ApplicationViewModel.cs +++ b/FModel/ViewModels/ApplicationViewModel.cs @@ -81,7 +81,7 @@ public ApplicationViewModel() CUE4Parse = new CUE4ParseViewModel(); CustomDirectories = new CustomDirectoriesViewModel(); - SettingsView = new SettingsViewModel(CUE4Parse.Game); + SettingsView = new SettingsViewModel(); AesManager = new AesManagerViewModel(CUE4Parse); MapViewer = new MapViewerViewModel(CUE4Parse); AudioPlayer = new AudioPlayerViewModel(); @@ -103,6 +103,7 @@ public DirectorySettings AvoidEmptyGameDirectory(bool bAlreadyLaunched) if (!bAlreadyLaunched || UserSettings.Default.CurrentDir.Equals(gameLauncherViewModel.SelectedDirectory)) return gameLauncherViewModel.SelectedDirectory; + // UserSettings.Save(); // ??? change key then change game, key saved correctly what? UserSettings.Default.CurrentDir = gameLauncherViewModel.SelectedDirectory; RestartWithWarning(); return null; diff --git a/FModel/ViewModels/CustomDirectoriesViewModel.cs b/FModel/ViewModels/CustomDirectoriesViewModel.cs index 08a9ebd1..d5394edf 100644 --- a/FModel/ViewModels/CustomDirectoriesViewModel.cs +++ b/FModel/ViewModels/CustomDirectoriesViewModel.cs @@ -38,6 +38,7 @@ public int GetIndex(CustomDirectory dir) public void Add(CustomDirectory dir) { _directories.Add(new MenuItem { Header = dir.Header, Tag = dir.DirectoryPath, ItemsSource = EnumerateCommands(dir) }); + Save(); } public void Edit(int index, CustomDirectory newDir) @@ -46,11 +47,13 @@ public void Edit(int index, CustomDirectory newDir) dir.Header = newDir.Header; dir.Tag = newDir.DirectoryPath; + Save(); } public void Delete(int index) { _directories.RemoveAt(index); + Save(); } public void Save() diff --git a/FModel/ViewModels/GameSelectorViewModel.cs b/FModel/ViewModels/GameSelectorViewModel.cs index 108abf8a..7169a545 100644 --- a/FModel/ViewModels/GameSelectorViewModel.cs +++ b/FModel/ViewModels/GameSelectorViewModel.cs @@ -49,7 +49,7 @@ public GameSelectorViewModel(string gameDirectory) _detectedDirectories = new ObservableCollection(EnumerateDetectedGames().Where(x => x != null)); foreach (var dir in UserSettings.Default.PerDirectory.Values.Where(x => x.IsManual)) { - _detectedDirectories.Add(dir); + _detectedDirectories.Add((DirectorySettings) dir.Clone()); } DetectedDirectories = new ReadOnlyObservableCollection(_detectedDirectories); diff --git a/FModel/ViewModels/SettingsViewModel.cs b/FModel/ViewModels/SettingsViewModel.cs index 9d3e4f16..8d783e79 100644 --- a/FModel/ViewModels/SettingsViewModel.cs +++ b/FModel/ViewModels/SettingsViewModel.cs @@ -164,7 +164,6 @@ public ETextureFormat SelectedTextureExportFormat public ReadOnlyObservableCollection TextureExportFormats { get; private set; } public ReadOnlyObservableCollection Platforms { get; private set; } - private readonly FGame _game; private string _outputSnapshot; private string _rawDataSnapshot; private string _propertiesSnapshot; @@ -189,9 +188,9 @@ public ETextureFormat SelectedTextureExportFormat private bool _mappingsUpdate = false; - public SettingsViewModel(FGame game) + public SettingsViewModel() { - _game = game; + } public void Initialize()