From 06acf267774742fbc28ba647a093e119165c4b2d Mon Sep 17 00:00:00 2001 From: GMatrixGames Date: Mon, 6 Jul 2020 15:07:20 -0400 Subject: [PATCH] Since people want to skid, here's official Spellbreak support since I have the beta --- FModel/Enums.cs | 3 ++- FModel/FModel.csproj | 2 ++ FModel/Globals.cs | 1 + FModel/Resources/spellbreak.ico | Bin 0 -> 59582 bytes FModel/Utils/Folders.cs | 2 ++ FModel/Utils/Localizations.cs | 16 ++++++++++++++++ FModel/Utils/Paks.cs | 9 +++++++++ FModel/Windows/Launcher/FLauncher.xaml.cs | 7 +++++++ 8 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 FModel/Resources/spellbreak.ico diff --git a/FModel/Enums.cs b/FModel/Enums.cs index 1de81d57..6e2099aa 100644 --- a/FModel/Enums.cs +++ b/FModel/Enums.cs @@ -8,7 +8,8 @@ DeadByDaylight, Borderlands3, MinecraftDungeons, - BattleBreakers + BattleBreakers, + Spellbreak } public enum EFModel diff --git a/FModel/FModel.csproj b/FModel/FModel.csproj index 49c73731..85bdb8db 100644 --- a/FModel/FModel.csproj +++ b/FModel/FModel.csproj @@ -95,6 +95,7 @@ + @@ -200,6 +201,7 @@ + diff --git a/FModel/Globals.cs b/FModel/Globals.cs index d14034e7..f463900d 100644 --- a/FModel/Globals.cs +++ b/FModel/Globals.cs @@ -56,6 +56,7 @@ namespace FModel EGame.Borderlands3 => "Borderlands 3", EGame.MinecraftDungeons => "Minecraft Dungeons", EGame.BattleBreakers => "Battle Breakers", + EGame.Spellbreak => "Spellbreak", EGame.Unknown => "Unknown", _ => "Unknown", }; diff --git a/FModel/Resources/spellbreak.ico b/FModel/Resources/spellbreak.ico new file mode 100644 index 0000000000000000000000000000000000000000..fddc27e5509e52ec7b150541740628350dfddb84 GIT binary patch literal 59582 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 literal 0 HcmV?d00001 diff --git a/FModel/Utils/Folders.cs b/FModel/Utils/Folders.cs index 2713a554..e5af374f 100644 --- a/FModel/Utils/Folders.cs +++ b/FModel/Utils/Folders.cs @@ -30,6 +30,7 @@ namespace FModel.Utils "OakGame" => EGame.Borderlands3, "Dungeons" => EGame.MinecraftDungeons, "WorldExplorers" => EGame.BattleBreakers, + "g3" => EGame.Spellbreak, _ => EGame.Unknown, }; } @@ -46,6 +47,7 @@ namespace FModel.Utils EGame.Borderlands3 => "OakGame", EGame.MinecraftDungeons => "Dungeons", EGame.BattleBreakers => "WorldExplorers", + EGame.Spellbreak => "g3", _ => string.Empty, }; diff --git a/FModel/Utils/Localizations.cs b/FModel/Utils/Localizations.cs index dbba7a51..50c58b48 100644 --- a/FModel/Utils/Localizations.cs +++ b/FModel/Utils/Localizations.cs @@ -55,6 +55,8 @@ namespace FModel.Utils m = Regex.Match(mount + KvP.Value.Name, $"{gameName}/Content/Localization/Game/{langCode}/Game.locres", RegexOptions.IgnoreCase); else if (Globals.Game.ActualGame == EGame.BattleBreakers) m = Regex.Match(mount + KvP.Value.Name, $"{gameName}/Content/Localization/Game/{langCode}/Game.locres", RegexOptions.IgnoreCase); + else if (Globals.Game.ActualGame == EGame.Spellbreak) + m = Regex.Match(mount + KvP.Value.Name, $"{gameName}/Content/Localization/Game/{langCode}/Game.locres", RegexOptions.IgnoreCase); if (m != null && m.Success) { @@ -215,6 +217,20 @@ namespace FModel.Utils ELanguage.Chinese => "zh-Hans", _ => "en" }; + else if (Globals.Game.ActualGame == EGame.Spellbreak) + return lang switch + { + ELanguage.English => "en", + ELanguage.Russian => "ru", + ELanguage.French => "fr", + ELanguage.German => "de", + ELanguage.Spanish => "es", + ELanguage.Italian => "it", + ELanguage.Japanese => "ja", + ELanguage.PortugueseBrazil => "pt-BR", + ELanguage.Chinese => "zh-Hans", + _ => "en" + }; else return "en"; } diff --git a/FModel/Utils/Paks.cs b/FModel/Utils/Paks.cs index 0d98b2b6..a732d1fd 100644 --- a/FModel/Utils/Paks.cs +++ b/FModel/Utils/Paks.cs @@ -111,6 +111,15 @@ namespace FModel.Utils return string.Empty; } + public static string GetSpellbreakPakFilesPath() + { + (_, string _, string spellbreakFilesPath) = GetUEGameFilesPath("Newt"); + if (!string.IsNullOrEmpty(spellbreakFilesPath)) + return $"{spellbreakFilesPath}\\g3\\Content\\Paks"; + else + return string.Empty; + } + public static void Merge(Dictionary tempFiles, out Dictionary files, string mount) { files = new Dictionary(); diff --git a/FModel/Windows/Launcher/FLauncher.xaml.cs b/FModel/Windows/Launcher/FLauncher.xaml.cs index 1828e3b9..7075534f 100644 --- a/FModel/Windows/Launcher/FLauncher.xaml.cs +++ b/FModel/Windows/Launcher/FLauncher.xaml.cs @@ -79,6 +79,13 @@ namespace FModel.Windows.Launcher ComboBoxVm.gamesCbViewModel.Add(new ComboBoxViewModel { Id = i++, Content = "Battle Breakers", Property = battlebreakersFilesPath }); } + string spellbreakerFilesPath = Paks.GetSpellbreakPakFilesPath(); + if (!string.IsNullOrEmpty(battlebreakersFilesPath)) + { + DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[LauncherInstalled.dat]", $"Spellbreak found at {spellbreakerFilesPath}"); + Globals.gNotifier.ShowCustomMessage("Spellbreak", Properties.Resources.PathAutoDetected, "/FModel;component/Resources/spellbreak.ico"); + ComboBoxVm.gamesCbViewModel.Add(new ComboBoxViewModel { Id = i++, Content = "Spellbreak", Property = spellbreakerFilesPath }); + } Games_CbBox.SelectedItem = ComboBoxVm.gamesCbViewModel.Where(x => x.Property.ToString() == Properties.Settings.Default.PakPath).FirstOrDefault(); }