migrate main key + fix custom dirs dup + fix manual games add by ref

This commit is contained in:
4sval 2023-06-18 04:51:36 +02:00
parent 2a265eae60
commit d891c3e8da
7 changed files with 17 additions and 10 deletions

View File

@ -149,7 +149,7 @@ public partial class App
{
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();
}

View File

@ -40,7 +40,6 @@ public partial class MainWindow
private void OnClosing(object sender, CancelEventArgs e)
{
_applicationView.CustomDirectories.Save();
_discordHandler.Dispose();
}

View File

@ -7,10 +7,10 @@ using FModel.ViewModels.ApiEndpoints.Models;
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 class DirectorySettings : ViewModel
{
return HashCode.Combine(GameDirectory, (int) UeVersion);
}
public object Clone()
{
return this.MemberwiseClone();
}
}

View File

@ -81,7 +81,7 @@ public class ApplicationViewModel : ViewModel
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 class ApplicationViewModel : ViewModel
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;

View File

@ -38,6 +38,7 @@ public class CustomDirectoriesViewModel : ViewModel
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 class CustomDirectoriesViewModel : ViewModel
dir.Header = newDir.Header;
dir.Tag = newDir.DirectoryPath;
Save();
}
public void Delete(int index)
{
_directories.RemoveAt(index);
Save();
}
public void Save()

View File

@ -49,7 +49,7 @@ public class GameSelectorViewModel : ViewModel
_detectedDirectories = new ObservableCollection<DirectorySettings>(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<DirectorySettings>(_detectedDirectories);

View File

@ -164,7 +164,6 @@ public class SettingsViewModel : ViewModel
public ReadOnlyObservableCollection<ETextureFormat> TextureExportFormats { get; private set; }
public ReadOnlyObservableCollection<ETexturePlatform> Platforms { get; private set; }
private readonly FGame _game;
private string _outputSnapshot;
private string _rawDataSnapshot;
private string _propertiesSnapshot;
@ -189,9 +188,9 @@ public class SettingsViewModel : ViewModel
private bool _mappingsUpdate = false;
public SettingsViewModel(FGame game)
public SettingsViewModel()
{
_game = game;
}
public void Initialize()