From 6bc02bfb135ff0297d9ecd8fde9cd704b3728977 Mon Sep 17 00:00:00 2001 From: TSG <49595354+AyeTSG@users.noreply.github.com> Date: Fri, 17 Jun 2022 12:21:31 -0400 Subject: [PATCH] Allow game forcing (#289) * Allow game forcing Allow users to over-write the auto-detected game set by FModel. * Fix game forcing for net7 Fix the game forcing feature for the net7 update * update to match latest fmodel source tree * Revert "update to match latest fmodel source tree" This reverts commit f7dfe654fa39453e7427f202df4d410cdc8eb6a1. --- FModel/Settings/UserSettings.cs | 16 ++++++++++ FModel/ViewModels/CUE4ParseViewModel.cs | 10 ++++++- FModel/ViewModels/SettingsViewModel.cs | 14 ++++++++- FModel/Views/SettingsView.xaml | 40 +++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 2 deletions(-) diff --git a/FModel/Settings/UserSettings.cs b/FModel/Settings/UserSettings.cs index 545699a7..c9b29d9b 100644 --- a/FModel/Settings/UserSettings.cs +++ b/FModel/Settings/UserSettings.cs @@ -102,6 +102,22 @@ namespace FModel.Settings set => SetProperty(ref _overwriteMapping, value); } + private bool _forceGame; + + public bool ForceGame + { + get => _forceGame; + set => SetProperty(ref _forceGame, value); + } + + private FGame _gameToForce; + + public FGame GameToForce + { + get => _gameToForce; + set => SetProperty(ref _gameToForce, value); + } + private string _mappingFilePath; public string MappingFilePath { diff --git a/FModel/ViewModels/CUE4ParseViewModel.cs b/FModel/ViewModels/CUE4ParseViewModel.cs index 5034a60e..a34b884d 100644 --- a/FModel/ViewModels/CUE4ParseViewModel.cs +++ b/FModel/ViewModels/CUE4ParseViewModel.cs @@ -103,7 +103,15 @@ public class CUE4ParseViewModel : ViewModel } default: { - Game = gameDirectory.SubstringBeforeLast("\\Content").SubstringAfterLast("\\").ToEnum(FGame.Unknown); + if (UserSettings.Default.ForceGame == true) + { + Game = UserSettings.Default.GameToForce; + } + else + { + Game = gameDirectory.SubstringBeforeLast("\\Content").SubstringAfterLast("\\").ToEnum(FGame.Unknown); + } + var versions = new VersionContainer(UserSettings.Default.OverridedGame[Game], UserSettings.Default.OverridedPlatform, customVersions: UserSettings.Default.OverridedCustomVersions[Game], optionOverrides: UserSettings.Default.OverridedOptions[Game]); diff --git a/FModel/ViewModels/SettingsViewModel.cs b/FModel/ViewModels/SettingsViewModel.cs index 50a55c1a..b90e1d85 100644 --- a/FModel/ViewModels/SettingsViewModel.cs +++ b/FModel/ViewModels/SettingsViewModel.cs @@ -83,12 +83,20 @@ public class SettingsViewModel : ViewModel } private EDiscordRpc _selectedDiscordRpc; + public EDiscordRpc SelectedDiscordRpc { get => _selectedDiscordRpc; set => SetProperty(ref _selectedDiscordRpc, value); } + private FGame _selectedForceGame; + public FGame SelectedForceGame + { + get => _selectedForceGame; + set => SetProperty(ref _selectedForceGame, value); + } + private ECompressedAudio _selectedCompressedAudio; public ECompressedAudio SelectedCompressedAudio { @@ -126,6 +134,7 @@ public class SettingsViewModel : ViewModel public ReadOnlyObservableCollection UpdateModes { get; private set; } public ObservableCollection Presets { get; private set; } + public ReadOnlyObservableCollection GameTypes { get; private set; } public ReadOnlyObservableCollection UeGames { get; private set; } public ReadOnlyObservableCollection AssetLanguages { get; private set; } public ReadOnlyObservableCollection AesReloads { get; private set; } @@ -212,10 +221,12 @@ public class SettingsViewModel : ViewModel SelectedTextureExportFormat = _textureExportFormatSnapshot; SelectedAesReload = UserSettings.Default.AesReload; SelectedDiscordRpc = UserSettings.Default.DiscordRpc; + SelectedForceGame = UserSettings.Default.GameToForce; UpdateModes = new ReadOnlyObservableCollection(new ObservableCollection(EnumerateUpdateModes())); Presets = new ObservableCollection(EnumeratePresets()); UeGames = new ReadOnlyObservableCollection(new ObservableCollection(EnumerateUeGames())); + GameTypes = new ReadOnlyObservableCollection(new ObservableCollection(EnumerateGameTypes())); AssetLanguages = new ReadOnlyObservableCollection(new ObservableCollection(EnumerateAssetLanguages())); AesReloads = new ReadOnlyObservableCollection(new ObservableCollection(EnumerateAesReloads())); DiscordRpcs = new ReadOnlyObservableCollection(new ObservableCollection(EnumerateDiscordRpcs())); @@ -325,6 +336,7 @@ public class SettingsViewModel : ViewModel yield return Constants._NO_PRESET_TRIGGER; } private IEnumerable EnumerateUeGames() => Enum.GetValues(); + private IEnumerable EnumerateGameTypes() => Enum.GetValues(); private IEnumerable EnumerateAssetLanguages() => Enum.GetValues(); private IEnumerable EnumerateAesReloads() => Enum.GetValues(); private IEnumerable EnumerateDiscordRpcs() => Enum.GetValues(); @@ -334,4 +346,4 @@ public class SettingsViewModel : ViewModel private IEnumerable EnumerateLodExportFormat() => Enum.GetValues(); private IEnumerable EnumerateTextureExportFormat() => Enum.GetValues(); private IEnumerable EnumerateUePlatforms() => Enum.GetValues(); -} \ No newline at end of file +} diff --git a/FModel/Views/SettingsView.xaml b/FModel/Views/SettingsView.xaml index 8071bb8a..0e8ce0e2 100644 --- a/FModel/Views/SettingsView.xaml +++ b/FModel/Views/SettingsView.xaml @@ -41,6 +41,8 @@ + + @@ -244,6 +246,44 @@ Visibility="{Binding OverwriteMapping, Source={x:Static local:Settings.UserSettings.Default}, Converter={StaticResource BoolToVisibilityConverter}}"/>