diff --git a/CUE4Parse b/CUE4Parse index f17ea8bb..b4b18abd 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit f17ea8bbf946a8319758759118c1e46b863eab33 +Subproject commit b4b18abd31a049b2c408a1867520ca06e5c8b144 diff --git a/FModel/Creator/Bases/SOD2/BaseDecayIcon.cs b/FModel/Creator/Bases/SOD2/BaseDecayIcon.cs index b5518efb..3dbe6ced 100644 --- a/FModel/Creator/Bases/SOD2/BaseDecayIcon.cs +++ b/FModel/Creator/Bases/SOD2/BaseDecayIcon.cs @@ -23,7 +23,6 @@ namespace FModel.Creator.Bases.SOD2 if (Object.TryGetValue(out FStructFallback stackingInfo, "StackingInfo") && stackingInfo.TryGetValue(out int maxStackCount, "MaxStackCount")) _maxStackCount = maxStackCount; - if (Object.Class.SuperStruct != null && Utils.TryGetPackageIndexExport(Object.Class.SuperStruct, out UObject t)) { @@ -61,6 +60,14 @@ namespace FModel.Creator.Bases.SOD2 return SKImage.FromBitmap(ret); } + private new void DrawPreview(SKCanvas c) + { + c.DrawBitmap(Preview ?? DefaultPreview, new SKRect(Margin, Margin, Width - Margin, Height - Margin), new SKPaint + { + // BlendMode = SKBlendMode.SrcATop -- Need Asval's assistance. + }); + } + private new void DrawBackground(SKCanvas c) { c.DrawRect(new SKRect(Margin, Margin, Width - Margin, Height - Margin), diff --git a/FModel/Enums.cs b/FModel/Enums.cs index 802d5839..58dca396 100644 --- a/FModel/Enums.cs +++ b/FModel/Enums.cs @@ -88,7 +88,9 @@ namespace FModel [Description("Star Wars: Jedi Fallen Order")] SwGame, [Description("Core")] - Platform + Platform, + [Description("Days Gone")] + BendGame } public enum ELoadingMode diff --git a/FModel/ViewModels/CUE4ParseViewModel.cs b/FModel/ViewModels/CUE4ParseViewModel.cs index 7526f6a8..0a40e82f 100644 --- a/FModel/ViewModels/CUE4ParseViewModel.cs +++ b/FModel/ViewModels/CUE4ParseViewModel.cs @@ -83,17 +83,15 @@ namespace FModel.ViewModels { Game = gameDirectory.SubstringBeforeLast("\\Content\\Paks").SubstringAfterLast("\\").ToEnum(FGame.Unknown); - if (Game == FGame.WorldExplorers) + Provider = Game switch { - Provider = new DefaultFileProvider(new DirectoryInfo(gameDirectory), new List {new(gameDirectory.SubstringBeforeLast('\\') + "\\EmbeddedPaks\\")}, - SearchOption.TopDirectoryOnly, true, UserSettings.Default.OverridedGame[Game], UserSettings.Default.OverridedUEVersion[Game]); - } - else - { - Provider = new DefaultFileProvider(gameDirectory, SearchOption.TopDirectoryOnly, true, - UserSettings.Default.OverridedGame[Game], UserSettings.Default.OverridedUEVersion[Game]); - } - + FGame.WorldExplorers => new DefaultFileProvider(new DirectoryInfo(gameDirectory), new List {new(gameDirectory.SubstringBeforeLast('\\') + "\\EmbeddedPaks\\")}, SearchOption.TopDirectoryOnly, + true, UserSettings.Default.OverridedGame[Game], UserSettings.Default.OverridedUEVersion[Game]), + FGame.BendGame => new DefaultFileProvider(new DirectoryInfo(gameDirectory), new List {new(gameDirectory.SubstringBeforeLast('\\') + "\\sfpaks\\")}, SearchOption.AllDirectories, + true, UserSettings.Default.OverridedGame[Game], UserSettings.Default.OverridedUEVersion[Game]), + _ => new DefaultFileProvider(gameDirectory, SearchOption.TopDirectoryOnly, true, UserSettings.Default.OverridedGame[Game], UserSettings.Default.OverridedUEVersion[Game]) + }; + break; } } @@ -480,7 +478,7 @@ namespace FModel.ViewModels var header = new FDictionaryHeader(archive); TabControl.SelectedTab.SetDocumentText(JsonConvert.SerializeObject(header, Formatting.Indented), bulkSave); } - + break; } case "png": @@ -644,7 +642,7 @@ namespace FModel.ViewModels Directory.CreateDirectory(path.SubstringBeforeLast('/')); File.WriteAllBytes(path, kvp.Value); } - + Log.Information("{FileName} successfully exported", fileName); FLogger.AppendInformation(); FLogger.AppendText($"Successfully exported '{fileName}'", Constants.WHITE, true); diff --git a/FModel/ViewModels/GameSelectorViewModel.cs b/FModel/ViewModels/GameSelectorViewModel.cs index 5385276b..90569632 100644 --- a/FModel/ViewModels/GameSelectorViewModel.cs +++ b/FModel/ViewModels/GameSelectorViewModel.cs @@ -60,6 +60,7 @@ namespace FModel.ViewModels yield return GetUnrealEngineGame("shoebill", "\\SwGame\\Content\\Paks"); yield return GetUnrealEngineGame("Snoek", "\\StateOfDecay2\\Content\\Paks"); yield return GetUnrealEngineGame("a99769d95d8f400baad1f67ab5dfe508", "\\Core\\Platform\\Content\\Paks"); + yield return GetUnrealEngineGame("Nebula", "\\BendGame\\Content\\Paks"); yield return GetRiotGame("VALORANT", "ShooterGame\\Content\\Paks"); yield return new DetectedGame {GameName = "Valorant [LIVE]", GameDirectory = Constants._VAL_LIVE_TRIGGER}; yield return GetMojangGame("MinecraftDungeons", "\\dungeons\\dungeons\\Dungeons\\Content\\Paks"); diff --git a/FModel/Views/Resources/Converters/StringToGameConverter.cs b/FModel/Views/Resources/Converters/StringToGameConverter.cs index c05033c9..60322668 100644 --- a/FModel/Views/Resources/Converters/StringToGameConverter.cs +++ b/FModel/Views/Resources/Converters/StringToGameConverter.cs @@ -13,6 +13,7 @@ namespace FModel.Views.Resources.Converters return value switch { "Newt" => "Spellbreak", + "Nebula" => "Days Gone", "Fortnite" => "Fortnite", "VALORANT" => "Valorant", "Pewee" => "Rogue Company",