diff --git a/FModel/App.xaml.cs b/FModel/App.xaml.cs index 9a36b2c6..db937cdd 100644 --- a/FModel/App.xaml.cs +++ b/FModel/App.xaml.cs @@ -26,7 +26,8 @@ namespace FModel { StartTimer = Stopwatch.StartNew(); - //Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); + if (FModel.Properties.Settings.Default.UseEnglish) + Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); DebugHelper.Init(LogsFilePath); DebugHelper.WriteLine("{0} {1}", "[FModel]", "––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––"); diff --git a/FModel/Creator/Texts/Typefaces.cs b/FModel/Creator/Texts/Typefaces.cs index 4ef7c9b4..f1c74906 100644 --- a/FModel/Creator/Texts/Typefaces.cs +++ b/FModel/Creator/Texts/Typefaces.cs @@ -11,10 +11,10 @@ namespace FModel.Creator.Texts #pragma warning disable IDE0051 private const string _BASE_PATH = "/Game/UI/Foundation/Fonts/"; private const string _ASIA_ERINM = "AsiaERINM"; // korean fortnite - private const string _BURBANK_BIG_CONDENSED_BLACK = "BurbankBigCondensed-Black"; + private const string _BURBANK_BIG_CONDENSED_BLACK = "BurbankBigCondensed-Black"; // russian private readonly Uri _BURBANK_BIG_CONDENSED_BOLD = new Uri("pack://application:,,,/Resources/BurbankBigCondensed-Bold.ttf"); // other languages fortnite unofficial private const string _BURBANK_BIG_REGULAR_BLACK = "BurbankBigRegular-Black"; - private const string _BURBANK_BIG_REGULAR_BOLD = "BurbankBigRegular-Bold"; // official fortnite but it's too big so i use it for russian only + private const string _BURBANK_BIG_REGULAR_BOLD = "BurbankBigRegular-Bold"; // official fortnite ig private const string _BURBANK_SMALL_MEDIUM = "BurbankSmall-Medium"; private const string _DROID_SANS_FORTNITE_SUBSET = "DroidSans-Fortnite-Subset"; private const string _NIS_JYAU = "NIS_JYAU"; // japanese fortnite @@ -55,7 +55,7 @@ namespace FModel.Creator.Texts string namePath = _BASE_PATH + ( Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Korean ? _ASIA_ERINM : - Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Russian ? _BURBANK_BIG_REGULAR_BOLD : + Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Russian ? _BURBANK_BIG_CONDENSED_BLACK : Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Japanese ? _NIS_JYAU : Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Arabic ? _NOTO_SANS_ARABIC_BLACK : Properties.Settings.Default.AssetsLanguage == (long)ELanguage.TraditionalChinese ? _NOTO_SANS_TC_BLACK : @@ -83,7 +83,7 @@ namespace FModel.Creator.Texts string bundleNamePath = _BASE_PATH + ( Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Korean ? _ASIA_ERINM : - Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Russian ? _BURBANK_BIG_REGULAR_BOLD : + Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Russian ? _BURBANK_BIG_CONDENSED_BLACK : Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Japanese ? _NIS_JYAU : Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Arabic ? _NOTO_SANS_ARABIC_BLACK : Properties.Settings.Default.AssetsLanguage == (long)ELanguage.TraditionalChinese ? _NOTO_SANS_TC_BLACK : diff --git a/FModel/MainWindow.xaml b/FModel/MainWindow.xaml index b9ca948e..869af885 100644 --- a/FModel/MainWindow.xaml +++ b/FModel/MainWindow.xaml @@ -9,7 +9,9 @@ xmlns:utils="clr-namespace:FModel.Utils" mc:Ignorable="d" Style="{StaticResource {x:Type Window}}" - Title="FModel" Height="800" MinHeight="800" Width="1300" MinWidth="1300" + Title="FModel" + Height="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}, Converter={utils:Screens}, ConverterParameter='0.80' }" + Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={utils:Screens}, ConverterParameter='0.75' }" WindowStartupLocation="CenterScreen" Icon="FModel.ico" Loaded="OnLoaded" Closing="OnClosing"> diff --git a/FModel/PakReader/Parsers/Objects/FPakEntry.cs b/FModel/PakReader/Parsers/Objects/FPakEntry.cs index 832f5224..6dfce403 100644 --- a/FModel/PakReader/Parsers/Objects/FPakEntry.cs +++ b/FModel/PakReader/Parsers/Objects/FPakEntry.cs @@ -141,23 +141,24 @@ namespace PakReader.Parsers.Objects { var data = new byte[(Size & 15) == 0 ? Size : ((Size / 16) + 1) * 16]; stream.Read(data); + byte[] decrypted = AESDecryptor.DecryptAES(data, key); - if (CompressionMethodIndex == 1) - return new ArraySegment(AESDecryptor.DecryptAES(ZlibStream.UncompressBuffer(data), key), 0, (int)UncompressedSize); - else - return new ArraySegment(AESDecryptor.DecryptAES(data, key), 0, (int)UncompressedSize); + if ((ECompressionFlags)CompressionMethodIndex == ECompressionFlags.COMPRESS_ZLIB) // zlib and pray + decrypted = ZlibStream.UncompressBuffer(decrypted); + return new ArraySegment(decrypted, 0, (int)UncompressedSize); } else { var data = new byte[UncompressedSize]; stream.Read(data); - - if (CompressionMethodIndex == 1) + + if ((ECompressionFlags)CompressionMethodIndex == ECompressionFlags.COMPRESS_ZLIB) // zlib and pray return new ArraySegment(ZlibStream.UncompressBuffer(data)); - else + else if ((ECompressionFlags)CompressionMethodIndex == ECompressionFlags.COMPRESS_None) return new ArraySegment(data); } } + throw new NotImplementedException("Decompression not yet implemented"); } public static long GetSize(EPakVersion version, uint CompressionMethodIndex = 0, uint CompressionBlocksCount = 0) diff --git a/FModel/PakReader/Parsers/Objects/FPakInfo.cs b/FModel/PakReader/Parsers/Objects/FPakInfo.cs index dd57fd24..f91d996e 100644 --- a/FModel/PakReader/Parsers/Objects/FPakInfo.cs +++ b/FModel/PakReader/Parsers/Objects/FPakInfo.cs @@ -80,7 +80,7 @@ namespace PakReader.Parsers.Objects { if (Methods[i*COMPRESSION_METHOD_NAME_LEN] != 0) { - MethodList.Add(Encoding.ASCII.GetString(Methods, i * COMPRESSION_METHOD_NAME_LEN, COMPRESSION_METHOD_NAME_LEN)); + MethodList.Add(Encoding.ASCII.GetString(Methods, i * COMPRESSION_METHOD_NAME_LEN, COMPRESSION_METHOD_NAME_LEN).TrimEnd('\0')); } } CompressionMethods = MethodList.ToArray(); diff --git a/FModel/Properties/Resources.Designer.cs b/FModel/Properties/Resources.Designer.cs index 1cde70da..f47894d6 100644 --- a/FModel/Properties/Resources.Designer.cs +++ b/FModel/Properties/Resources.Designer.cs @@ -2721,6 +2721,15 @@ namespace FModel.Properties { } } + /// + /// Recherche une chaîne localisée semblable à Use FModel in English. + /// + public static string UseFEnglish { + get { + return ResourceManager.GetString("UseFEnglish", resourceCulture); + } + } + /// /// Recherche une chaîne localisée semblable à Use game colors. /// diff --git a/FModel/Properties/Resources.ar.resx b/FModel/Properties/Resources.ar.resx index 6e273636..3756e4e6 100644 --- a/FModel/Properties/Resources.ar.resx +++ b/FModel/Properties/Resources.ar.resx @@ -805,4 +805,19 @@ It's now the most used free software to leak on Fortnite. نعم + + استخدم Discord RPC + + + احفظ المجلد + + + لا يوجد حاليا صورة لنسخها + + + انسخ الصورة + + + استخدم Fmodel باللغة الإنجليزية + \ No newline at end of file diff --git a/FModel/Properties/Resources.de-DE.resx b/FModel/Properties/Resources.de-DE.resx index d48d5d82..b7671af9 100644 --- a/FModel/Properties/Resources.de-DE.resx +++ b/FModel/Properties/Resources.de-DE.resx @@ -841,6 +841,18 @@ Jetzt ist es die am häufigsten genutzte freie Software um mit Fortnite zu leake Ja (Änderungsprotokoll Anzeigen) - Verwende Discord RPC + Discord RPC benutzen + + + Speicherordner + + + Es gibt aktuell kein Bild zum kopieren + + + Bild kopieren + + + FModel in Englisch benutzen \ No newline at end of file diff --git a/FModel/Properties/Resources.fr-FR.resx b/FModel/Properties/Resources.fr-FR.resx index a21335f6..3ec046df 100644 --- a/FModel/Properties/Resources.fr-FR.resx +++ b/FModel/Properties/Resources.fr-FR.resx @@ -856,4 +856,10 @@ C'est maintenant le logiciel gratuit le plus utilisé pour leak sur Fortnite. Copier l'Image + + Il n'y a actuellement aucune image à copier + + + Utiliser FModel en Anglais + \ No newline at end of file diff --git a/FModel/Properties/Resources.it-IT.resx b/FModel/Properties/Resources.it-IT.resx index 1679c1a2..c7159f6b 100644 --- a/FModel/Properties/Resources.it-IT.resx +++ b/FModel/Properties/Resources.it-IT.resx @@ -811,4 +811,13 @@ Col tempo sono state aggiunte nuove funzioni e molti altri utenti hanno comincia Salva Directory + + Copia Immagine + + + Usa FModel in inglese + + + Al momento non ci sono immagini da copiare + \ No newline at end of file diff --git a/FModel/Properties/Resources.resx b/FModel/Properties/Resources.resx index 79e9b8c5..adbf4e1f 100644 --- a/FModel/Properties/Resources.resx +++ b/FModel/Properties/Resources.resx @@ -1094,4 +1094,7 @@ It's now the most used free software to leak on Fortnite. There is currently no image to copy + + Use FModel in English + \ No newline at end of file diff --git a/FModel/Properties/Resources.ru-RU.resx b/FModel/Properties/Resources.ru-RU.resx new file mode 100644 index 00000000..36592803 --- /dev/null +++ b/FModel/Properties/Resources.ru-RU.resx @@ -0,0 +1,792 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + О Fmodel + + + Добавить + + + Все директории + + + AES + + + Ключ AES + + + AES ключи были обновлены + + + '{0}' не работает с '{1}' + + + Все документы + + + Все файлы + + + Арабский + + + Аудио + + + Звуковые устройства + + + Автоматически + + + B + + + Создать бэкап паков + + + Бэкапы + + + Баннер + + + BenBot API + + + Сообщить об ошибке + + + Байтов в секунду + + + Отмена + + + Отмененно! + + + Кастомный баннер для испытаний + + + Редактор тем для испытаний + + + Изменить игру + + + Список изменений + + + Китайский (Упрощенный) + + + Очистить + + + Цвета + + + Скопированно! + + + Не удалось создать директорию + + + Ошибка вовремя создания {0} + + + {0} успешно создан + + + Текщий документ + + + Файлы не найден, кастомная тема для испытаний отключена + + + {0} успешно экспортирован + + + Данные успешно сохранены + + + Стандартный + + + Дизайн + + + Директории + + + Имя директории + + + Отключено + + + Discord сервер + + + Поддержка(донат) + + + Донатеры + + + Ошибка во время загрузки {0} + + + Загружается + + + {0} усепшно загружен + + + {0} не работает с {1} + + + Динамические ключи + + + Изменить директорию + + + Включено + + + Английский + + + Ошибка + + + Выход + + + Экспортировать + + + FBKP Файлы (*.fbkp)|*.fbkp|Все файлы (*.*)|*.* + + + Скопировать + + + Файл + + + Количество файлов + + + Имя файла + + + Имя файла без расширения + + + Файлы + + + Фильтр + + + Найти + + + Найти и заменить + + + Найти следующий + + + Плоский + + + Лаунчер FModel + + + Французкий + + + Выбранный язык будет использоваться во время создания иконок + + + Игры + + + GB + + + Основное + + + Основные настройки + + + Немецкий + + + Здравсвтуйте + + + Помощь + + + Иконка + + + Редактор иконки + + + Изображение водяного знака + + + Файл не найден, водяной знак отключен + + + Изображение + + + Изображение успешно сохранено + + + Редактор изображений + + + Инициализация + + + Установлен {0} язык + + + Итальянский + + + Японский + + + Файлы JSON (*.json)|*.json + + + KB + + + Корейский + + + Язык + + + Загрузить все + + + Загрузка + + + Режим загрузки + + + Загрузить измененные файлы + + + Загрузить новые файлы + + + Загрузить новые и измененные файлы + + + Основные паки: + + + MB + + + Медиафайлы + + + Минималистичный + + + Измененные файлы + + + Имя + + + Новые файлы + + + Новые и измененные файлы + + + No + + + Нет текста + + + Файлы OGG (*.ogg)|*.ogg|Файлы WAV (*.wav)|*.wav|Все файлы (*.*)|*.* + + + OK + + + Прозрачность + + + Открыть + + + Открыть изображение + + + Открыть папку экспорта + + + Опции + + + PAK + + + {0} сейчас доступен + + + {0} заблокировано другим процессом + + + Файлы паков + + + Файлы паков Фортнайта автоматически найдены + + + .PAK файлы обнаружены автоматически + + + PNG Файлы (*.png)|*.png|Все Файлы (*.*)|*.* + + + Польский + + + Португальский (Бразильский) + + + Предварительный просмотр + + + Начальный + + + Редкость + + + Обновлять ключи AES во время запуска программы + + + Запомнить игру + + + Удалить + + + Удалить директорию + + + Удаленные или переименованные предметы: + + + Заменить + + + Заменить все + + + Восстановить расположение + + + Красный, Зелёный, Синий, Прозрачность + + + Русский + + + Сохранить + + + Сохранить изображение + + + {0} успешно сохранено + + + Искать + + + Вторичный + + + Найти файл + + + Указать папку + + + Настройки + + + Испанский + + + Испнский (Латиноамериканский) + + + Обновить + + + Статичкеский ключ + + + {0} не работает с вашими паками + + + Остановить + + + Успешно + + + TB + + + Текст для поиска: + + + Прошло времени {0}мс + + + Общий размер + + + Китайский (Традиционный) + + + Переводчики + + + Турецкий + + + Обновить + + + Доступно обновление + + + Доступна новая версия Fmodel {0}. Вы используйте версию {1}. Хотите обновить версию сейчас? + + + При проверке обновления произошла ошибка + + + Возникла проблема при попытке подключения к серверу обновлений, пожалуйста проверьте своё соединение с интернетом или попробуйте позже + + + Использовать цвета из игры + + + Использовать иконки магазина + + + Использовать водяной знак + + + Версия + + + Громкость звука + + + Ожидание + + + Внимание + + + Водяной знак + + + Да (Посмотреть список изменений) + + + Да + + + Вы собираетесь загрузить {0}, размер которого {1} + + + Добавить перегородку + + + Анализ {0} + + + Информация + + + Функции + + + Аудиоплеер + + + Автоматически открывать звуки + + + С учетом регистра + + + Сжатие + + + Помощники + + + Отличающиеся + + + Путь директории + + + Длительность + + + Зашифрованный + + + Извлечь + + + Открыть директорию + + + Извлечение + + + Путь файла + + + Перейти + + + Оттенок, Насыщенность, Значение + + + Оттенок + + + Форматы + + + Находится в + + + Прослушиватся - {0} + + + {0} пермещено в {1} + + + Путь к файлам + + + На данный момент нет данных для экспорта + + + В настоящее время нет данных для сохранения + + + На данный момент нет изображения для сохранения + + + У вас имеются пробелмы с подключением к интеренету + + + Смещение + + + Просмотр {0} файлов на данный момент не поддерижвается. + + + Путь + + + Путь к FModel был изменен + + + FModel требует перезапуска, потому что вы указали новый путь + + + Всплывающее + + + Обработка + + + Заменить на + + + Размер + + + Поиск в + + + Поиск + + + Положение + + + Произошла непредвиденная ошибка: {0} + + + Использовать Discord RPC + + + Сохранить дерикторию + + + Нет изображения для копирования + + + Скопировать изображение + + + Для Вашей информации: + + + Использовать FModel на Английском + + \ No newline at end of file diff --git a/FModel/Properties/Settings.Designer.cs b/FModel/Properties/Settings.Designer.cs index e0062420..3ec55159 100644 --- a/FModel/Properties/Settings.Designer.cs +++ b/FModel/Properties/Settings.Designer.cs @@ -299,6 +299,18 @@ namespace FModel.Properties { } } + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool UseEnglish { + get { + return ((bool)(this["UseEnglish"])); + } + set { + this["UseEnglish"] = value; + } + } + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] diff --git a/FModel/Properties/Settings.settings b/FModel/Properties/Settings.settings index 8d230e2d..e1871c4f 100644 --- a/FModel/Properties/Settings.settings +++ b/FModel/Properties/Settings.settings @@ -71,6 +71,9 @@ 0 + + False + False diff --git a/FModel/Utils/Screens.cs b/FModel/Utils/Screens.cs new file mode 100644 index 00000000..703dece2 --- /dev/null +++ b/FModel/Utils/Screens.cs @@ -0,0 +1,31 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using System.Windows.Markup; + +namespace FModel.Utils +{ + [ValueConversion(typeof(string), typeof(string))] + public class Screens : MarkupExtension, IValueConverter + { + private static Screens _instance; + + public Screens() { } + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { // do not let the culture default to local to prevent variable outcome re decimal syntax + double size = System.Convert.ToDouble(value) * System.Convert.ToDouble(parameter, CultureInfo.InvariantCulture); + return size.ToString("G0", CultureInfo.InvariantCulture); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { // read only converter... + throw new NotImplementedException(); + } + + public override object ProvideValue(IServiceProvider serviceProvider) + { + return _instance ?? (_instance = new Screens()); + } + } +} diff --git a/FModel/ViewModels/MenuItem/PakMenuItemViewModel.cs b/FModel/ViewModels/MenuItem/PakMenuItemViewModel.cs index 02749682..4ea7fb85 100644 --- a/FModel/ViewModels/MenuItem/PakMenuItemViewModel.cs +++ b/FModel/ViewModels/MenuItem/PakMenuItemViewModel.cs @@ -15,7 +15,6 @@ using PakReader.Parsers.Objects; using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Diagnostics.Eventing.Reader; using System.IO; using System.Linq; using System.Threading.Tasks; diff --git a/FModel/Windows/Settings/General.xaml b/FModel/Windows/Settings/General.xaml index bfc43294..67f53cfe 100644 --- a/FModel/Windows/Settings/General.xaml +++ b/FModel/Windows/Settings/General.xaml @@ -120,6 +120,7 @@ + - + diff --git a/FModel/Windows/Settings/General.xaml.cs b/FModel/Windows/Settings/General.xaml.cs index 52203563..8729ce2a 100644 --- a/FModel/Windows/Settings/General.xaml.cs +++ b/FModel/Windows/Settings/General.xaml.cs @@ -20,6 +20,7 @@ namespace FModel.Windows.Settings private string _inputPath; private string _outputPath; private bool _useDiscordRpc; + private bool _useEnglish; public General() { @@ -36,6 +37,7 @@ namespace FModel.Windows.Settings _inputPath = Properties.Settings.Default.PakPath; _outputPath = Properties.Settings.Default.OutputPath; _useDiscordRpc = Properties.Settings.Default.UseDiscordRpc; + _useEnglish = Properties.Settings.Default.UseEnglish; Languages_CbBox.ItemsSource = ComboBoxVm.languageCbViewModel; Languages_CbBox.SelectedItem = ComboBoxVm.languageCbViewModel.Where(x => x.Id == Properties.Settings.Default.AssetsLanguage).FirstOrDefault(); } @@ -51,8 +53,10 @@ namespace FModel.Windows.Settings await Localizations.SetLocalization(Properties.Settings.Default.AssetsLanguage, true).ConfigureAwait(false); } - bool restart = !_inputPath.Equals(Properties.Settings.Default.PakPath) || !_outputPath.Equals(Properties.Settings.Default.OutputPath); - if (restart) + + if (!_inputPath.Equals(Properties.Settings.Default.PakPath) || + !_outputPath.Equals(Properties.Settings.Default.OutputPath) || + _useEnglish != Properties.Settings.Default.UseEnglish) { DarkMessageBoxHelper.Show(Properties.Resources.PathChangedRestart, Properties.Resources.PathChanged, MessageBoxButton.OK, MessageBoxImage.Information); DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Restarting]", "Path(s) changed");