From 2471874027121e8644e631982ff213159cbd95e9 Mon Sep 17 00:00:00 2001 From: iAmAsval Date: Tue, 7 Dec 2021 13:32:54 +0100 Subject: [PATCH] overwrite mapping file --- CUE4Parse | 2 +- FModel/Extensions/EnumExtensions.cs | 1 - FModel/Settings/UserSettings.cs | 14 +++++ FModel/ViewModels/CUE4ParseViewModel.cs | 57 +++++++++++--------- FModel/ViewModels/LoadingModesViewModel.cs | 3 +- FModel/ViewModels/SettingsViewModel.cs | 27 +++++----- FModel/Views/SettingsView.xaml | 62 +++++++++++++++++----- FModel/Views/SettingsView.xaml.cs | 24 +++++++-- 8 files changed, 131 insertions(+), 59 deletions(-) diff --git a/CUE4Parse b/CUE4Parse index 92a42455..b8d74d54 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit 92a42455893c21059bda79953d78f6f14b2956db +Subproject commit b8d74d541e711481a569d712db9d38b17d130ff1 diff --git a/FModel/Extensions/EnumExtensions.cs b/FModel/Extensions/EnumExtensions.cs index eed96e2b..400d91b1 100644 --- a/FModel/Extensions/EnumExtensions.cs +++ b/FModel/Extensions/EnumExtensions.cs @@ -2,7 +2,6 @@ using System; using System.ComponentModel; using System.Resources; using System.Runtime.CompilerServices; - using FModel.Properties; namespace FModel.Extensions diff --git a/FModel/Settings/UserSettings.cs b/FModel/Settings/UserSettings.cs index c7e53294..0887e725 100644 --- a/FModel/Settings/UserSettings.cs +++ b/FModel/Settings/UserSettings.cs @@ -65,6 +65,20 @@ namespace FModel.Settings set => SetProperty(ref _gameDirectory, value); } + private bool _overwriteMapping; + public bool OverwriteMapping + { + get => _overwriteMapping; + set => SetProperty(ref _overwriteMapping, value); + } + + private string _mappingFilePath; + public string MappingFilePath + { + get => _mappingFilePath; + set => SetProperty(ref _mappingFilePath, value); + } + private int _lastOpenedSettingTab; public int LastOpenedSettingTab { diff --git a/FModel/ViewModels/CUE4ParseViewModel.cs b/FModel/ViewModels/CUE4ParseViewModel.cs index 2e4f564d..8a93db9f 100644 --- a/FModel/ViewModels/CUE4ParseViewModel.cs +++ b/FModel/ViewModels/CUE4ParseViewModel.cs @@ -297,35 +297,44 @@ namespace FModel.ViewModels { await _threadWorkerView.Begin(cancellationToken => { - var mappingsFolder = Path.Combine(UserSettings.Default.OutputDirectory, ".data"); - var mappings = _apiEndpointView.BenbotApi.GetMappings(cancellationToken); - if (mappings is {Length: > 0}) + if (UserSettings.Default.OverwriteMapping && File.Exists(UserSettings.Default.MappingFilePath)) { - foreach (var mapping in mappings) - { - if (mapping.Meta.CompressionMethod != "Oodle") continue; - - var mappingPath = Path.Combine(mappingsFolder, mapping.FileName); - if (!File.Exists(mappingPath)) - { - _apiEndpointView.BenbotApi.DownloadFile(mapping.Url, mappingPath); - } - - Provider.MappingsContainer = new FileUsmapTypeMappingsProvider(mappingPath); - FLogger.AppendInformation(); - FLogger.AppendText($"Mappings pulled from '{mapping.FileName}'", Constants.WHITE, true); - break; - } + Provider.MappingsContainer = new FileUsmapTypeMappingsProvider(UserSettings.Default.MappingFilePath); + FLogger.AppendInformation(); + FLogger.AppendText($"Mappings pulled from '{UserSettings.Default.MappingFilePath.SubstringAfterLast("\\")}'", Constants.WHITE, true); } else { - var latestUsmaps = new DirectoryInfo(mappingsFolder).GetFiles("*_oo.usmap"); - if (Provider.MappingsContainer != null || latestUsmaps.Length <= 0) return; + var mappingsFolder = Path.Combine(UserSettings.Default.OutputDirectory, ".data"); + var mappings = _apiEndpointView.BenbotApi.GetMappings(cancellationToken); + if (mappings is {Length: > 0}) + { + foreach (var mapping in mappings) + { + if (mapping.Meta.CompressionMethod != "Oodle") continue; - var latestUsmapInfo = latestUsmaps.OrderBy(f => f.LastWriteTime).Last(); - Provider.MappingsContainer = new FileUsmapTypeMappingsProvider(latestUsmapInfo.FullName); - FLogger.AppendWarning(); - FLogger.AppendText($"Mappings pulled from '{latestUsmapInfo.Name}'", Constants.WHITE, true); + var mappingPath = Path.Combine(mappingsFolder, mapping.FileName); + if (!File.Exists(mappingPath)) + { + _apiEndpointView.BenbotApi.DownloadFile(mapping.Url, mappingPath); + } + + Provider.MappingsContainer = new FileUsmapTypeMappingsProvider(mappingPath); + FLogger.AppendInformation(); + FLogger.AppendText($"Mappings pulled from '{mapping.FileName}'", Constants.WHITE, true); + break; + } + } + else + { + var latestUsmaps = new DirectoryInfo(mappingsFolder).GetFiles("*_oo.usmap"); + if (Provider.MappingsContainer != null || latestUsmaps.Length <= 0) return; + + var latestUsmapInfo = latestUsmaps.OrderBy(f => f.LastWriteTime).Last(); + Provider.MappingsContainer = new FileUsmapTypeMappingsProvider(latestUsmapInfo.FullName); + FLogger.AppendWarning(); + FLogger.AppendText($"Mappings pulled from '{latestUsmapInfo.Name}'", Constants.WHITE, true); + } } }); } diff --git a/FModel/ViewModels/LoadingModesViewModel.cs b/FModel/ViewModels/LoadingModesViewModel.cs index dbb0a7c4..b31cf110 100644 --- a/FModel/ViewModels/LoadingModesViewModel.cs +++ b/FModel/ViewModels/LoadingModesViewModel.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; - using FModel.Framework; using FModel.ViewModels.Commands; @@ -19,6 +18,6 @@ namespace FModel.ViewModels Modes = new ReadOnlyObservableCollection(new ObservableCollection(EnumerateLoadingModes())); } - private static IEnumerable EnumerateLoadingModes() => Enum.GetValues(); + private IEnumerable EnumerateLoadingModes() => Enum.GetValues(); } } diff --git a/FModel/ViewModels/SettingsViewModel.cs b/FModel/ViewModels/SettingsViewModel.cs index 345a5416..860bf4d9 100644 --- a/FModel/ViewModels/SettingsViewModel.cs +++ b/FModel/ViewModels/SettingsViewModel.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; using System.Threading.Tasks; using CUE4Parse.UE4.Objects.Core.Misc; using CUE4Parse.UE4.Objects.Core.Serialization; @@ -18,8 +17,8 @@ namespace FModel.ViewModels { public class SettingsViewModel : ViewModel { - private static ThreadWorkerViewModel _threadWorkerView => ApplicationService.ThreadWorkerView; - private static ApiEndpointViewModel _apiEndpointView => ApplicationService.ApiEndpointView; + private ThreadWorkerViewModel _threadWorkerView => ApplicationService.ThreadWorkerView; + private ApiEndpointViewModel _apiEndpointView => ApplicationService.ApiEndpointView; private readonly DiscordHandler _discordHandler = DiscordService.DiscordHandler; private EUpdateMode _selectedUpdateMode; @@ -271,19 +270,19 @@ namespace FModel.ViewModels return ret; } - private static IEnumerable EnumerateUpdateModes() => Enum.GetValues(); - private static IEnumerable EnumeratePresets() + private IEnumerable EnumerateUpdateModes() => Enum.GetValues(); + private IEnumerable EnumeratePresets() { yield return Constants._NO_PRESET_TRIGGER; } - private static IEnumerable EnumerateUeGames() => Enum.GetValues().SkipLast(1); - private static IEnumerable EnumerateAssetLanguages() => Enum.GetValues(); - private static IEnumerable EnumerateAesReloads() => Enum.GetValues(); - private static IEnumerable EnumerateDiscordRpcs() => Enum.GetValues(); - private static IEnumerable EnumerateCompressedAudios() => Enum.GetValues(); - private static IEnumerable EnumerateCosmeticStyles() => Enum.GetValues(); - private static IEnumerable EnumerateMeshExportFormat() => Enum.GetValues(); - private static IEnumerable EnumerateLodExportFormat() => Enum.GetValues(); - private static IEnumerable EnumerateTextureExportFormat() => Enum.GetValues(); + private IEnumerable EnumerateUeGames() => Enum.GetValues(); + private IEnumerable EnumerateAssetLanguages() => Enum.GetValues(); + private IEnumerable EnumerateAesReloads() => Enum.GetValues(); + private IEnumerable EnumerateDiscordRpcs() => Enum.GetValues(); + private IEnumerable EnumerateCompressedAudios() => Enum.GetValues(); + private IEnumerable EnumerateCosmeticStyles() => Enum.GetValues(); + private IEnumerable EnumerateMeshExportFormat() => Enum.GetValues(); + private IEnumerable EnumerateLodExportFormat() => Enum.GetValues(); + private IEnumerable EnumerateTextureExportFormat() => Enum.GetValues(); } } diff --git a/FModel/Views/SettingsView.xaml b/FModel/Views/SettingsView.xaml index dedeac34..20f2f7f6 100644 --- a/FModel/Views/SettingsView.xaml +++ b/FModel/Views/SettingsView.xaml @@ -37,6 +37,8 @@ + + @@ -74,9 +76,9 @@ - + + DataContext="{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:Views.SettingsView}}}"> @@ -114,13 +116,8 @@