diff --git a/FModel/ViewModels/GameSelectorViewModel.cs b/FModel/ViewModels/GameSelectorViewModel.cs index 45f6c35a..1b18776f 100644 --- a/FModel/ViewModels/GameSelectorViewModel.cs +++ b/FModel/ViewModels/GameSelectorViewModel.cs @@ -33,16 +33,28 @@ public class GameSelectorViewModel : ViewModel public IList CustomDirectories { get; set; } } + private bool _useCustomEGames; + public bool UseCustomEGames + { + get => _useCustomEGames; + set => SetProperty(ref _useCustomEGames, value); + } + private DirectorySettings _selectedDirectory; public DirectorySettings SelectedDirectory { get => _selectedDirectory; - set => SetProperty(ref _selectedDirectory, value); + set + { + SetProperty(ref _selectedDirectory, value); + UseCustomEGames = EnumerateUeGames().ElementAt(1).Contains(_selectedDirectory.UeVersion); + } } private readonly ObservableCollection _detectedDirectories; public ReadOnlyObservableCollection DetectedDirectories { get; } - public ReadOnlyObservableCollection UeVersions { get; } + public ReadOnlyObservableCollection UeGames { get; } + public ReadOnlyObservableCollection CustomUeGames { get; } public GameSelectorViewModel(string gameDirectory) { @@ -61,7 +73,9 @@ public class GameSelectorViewModel : ViewModel else SelectedDirectory = DetectedDirectories.FirstOrDefault(); - UeVersions = new ReadOnlyObservableCollection(new ObservableCollection(EnumerateUeGames())); + var ueGames = EnumerateUeGames().ToArray(); + UeGames = new ReadOnlyObservableCollection(new ObservableCollection(ueGames[0])); + CustomUeGames = new ReadOnlyObservableCollection(new ObservableCollection(ueGames[1])); } public void AddUndetectedDir(string gameDirectory) => AddUndetectedDir(gameDirectory.SubstringAfterLast('\\'), gameDirectory); @@ -80,11 +94,11 @@ public class GameSelectorViewModel : ViewModel SelectedDirectory = DetectedDirectories.Last(); } - private IEnumerable EnumerateUeGames() + private IEnumerable> EnumerateUeGames() => Enum.GetValues() .GroupBy(value => (int)value) .Select(group => group.First()) - .OrderBy(value => (int)value == ((int)value & ~0xF)); + .GroupBy(value => (int)value == ((int)value & ~0xF)); private IEnumerable EnumerateDetectedGames() { yield return GetUnrealEngineGame("Fortnite", "\\FortniteGame\\Content\\Paks", EGame.GAME_UE5_4); diff --git a/FModel/Views/DirectorySelector.xaml b/FModel/Views/DirectorySelector.xaml index cf3d3c1a..a4fa8eff 100644 --- a/FModel/Views/DirectorySelector.xaml +++ b/FModel/Views/DirectorySelector.xaml @@ -61,14 +61,26 @@ - + + + + @@ -83,7 +95,9 @@ + + diff --git a/FModel/Views/DirectorySelector.xaml.cs b/FModel/Views/DirectorySelector.xaml.cs index 8b51717f..9605352f 100644 --- a/FModel/Views/DirectorySelector.xaml.cs +++ b/FModel/Views/DirectorySelector.xaml.cs @@ -1,6 +1,7 @@ using FModel.ViewModels; using Ookii.Dialogs.Wpf; using System.Windows; +using CUE4Parse.Utils; namespace FModel.Views; @@ -38,6 +39,7 @@ public partial class DirectorySelector var folderBrowser = new VistaFolderBrowserDialog {ShowNewFolderButton = false}; if (folderBrowser.ShowDialog() == true) { + HelloMyNameIsGame.Text = folderBrowser.SelectedPath.SubstringAfterLast('\\'); HelloGameMyNameIsDirectory.Text = folderBrowser.SelectedPath; } }