From 8165e1d7f96f58fee74e623248925c5ed0ac27f0 Mon Sep 17 00:00:00 2001 From: Bagus Nur Listiyono <28079733+bagusnl@users.noreply.github.com> Date: Wed, 14 Feb 2024 11:48:39 +0000 Subject: [PATCH] [Feature] Pre-Launch and Post-Exit Commands Launching (#398) * Update CsWinRT This PR adds ability to run command before and after the game exits, values are saved to `CollapseSettings_Misc` registry on each region keys. Command outputs recorded in the console, and it WILL NOT be interactable from the console. Also supports running GUI applications. 2.0.6 -> 2.0.7 https://github.com/microsoft/CsWinRT/releases/tag/2.0.7.240207.1 * (GSP) Move all GSPs into its own folder Getting crowded up there on Pages main dir * (GLC) Introduce GameLaunchCommand Backend * Defer StarRail unnecesarry settings load on region load * Avoid unnecessary UniversalGameSettings call on GameRunningWatcher * (GLC) Introduce prototype in HSR GSP * (GLC) Fix title * (GLC) Backend Changes - Rename PostLaunch to PostExit to better reflect the function - Skip GLC if provided string is empty - Change GLC console tag color to light red - Adjust ErrorSender message - Make consoleWidth and barwidth available for private use - Move `GAME STOPPED` bar into GameRunningWatcher - Remove unused Window Restore inside ReadOutputLog (already available in GameRunningWatcher * (GLC) Localization! * (GLC) Frontends! This also fixes warnings about OneWay bindings (WMC1506) for Genshin and StarRail GSPs by implementing INotifyPropertyChanged in the Ext * (GLC) Fix main toggle margin and style * (GSP) Fix HSR Character Quality selector The enum is weird... * (GSP) HSR: Disable VSync when selecting 120FPS * Fix typos and CodeQA * (GLC) Sanitize command for escape Co-authored-by: Shatyuka <958182453@qq.com> * Remove CsWinRT as its not needed anymore Code generated is already on CoCreateInstance.cs i forgor * (GSP) HSR: Fix CharQual enum values - Also renamed the enum name to avoid confusion - Also clamped the values to avoid IndexOutOfRangeException Co-authored-by: Kemal Setya Adhi * [skip ci] (GSP) HSR: Adjust CharQ summary * (GLC) Honkai: Fix panel not collapsing when disabled --------- Co-authored-by: Shatyuka <958182453@qq.com> Co-authored-by: Kemal Setya Adhi --- .../StarRail/RegistryClass/Model.cs | 9 +- .../GameSettings/StarRail/Settings.cs | 27 +- .../RegistryClass/CollapseMiscSetting.cs | 51 +- .../XAMLs/MainApp/MainPage.xaml.cs | 8 +- .../XAMLs/MainApp/Pages/GameSettingsPage.xaml | 476 ------- .../GenshinGameSettingsPage.Ext.cs | 107 +- .../GenshinGameSettingsPage.xaml | 1199 +++++++++++++++++ .../GenshinGameSettingsPage.xaml.cs | 0 .../HonkaiGameSettingsPage.Ext.cs} | 96 +- .../HonkaiGameSettingsPage.xaml | 912 +++++++++++++ .../HonkaiGameSettingsPage.xaml.cs} | 4 +- .../StarRailGameSettingsPage.Ext.cs | 137 +- .../StarRailGameSettingsPage.xaml | 891 ++++++++++++ .../StarRailGameSettingsPage.xaml.cs | 0 .../Pages/GenshinGameSettingsPage.xaml | 603 --------- .../XAMLs/MainApp/Pages/HomePage.xaml.cs | 157 ++- .../Pages/StarRailGameSettingsPage.xaml | 448 ------ Hi3Helper.Core/Classes/Logger/Enum/LogType.cs | 3 +- Hi3Helper.Core/Classes/Logger/LoggerBase.cs | 2 + .../Lang/Locale/LangGameSettingsPage.cs | 166 +-- .../Locale/LangStarRailGameSettingsPage.cs | 119 +- Hi3Helper.Core/Lang/en_US.json | 14 +- 22 files changed, 3722 insertions(+), 1707 deletions(-) delete mode 100644 CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.xaml rename CollapseLauncher/XAMLs/MainApp/Pages/{ => GameSettingsPages}/GenshinGameSettingsPage.Ext.cs (82%) create mode 100644 CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.xaml rename CollapseLauncher/XAMLs/MainApp/Pages/{ => GameSettingsPages}/GenshinGameSettingsPage.xaml.cs (100%) rename CollapseLauncher/XAMLs/MainApp/Pages/{GameSettingsPage.Ext.cs => GameSettingsPages/HonkaiGameSettingsPage.Ext.cs} (83%) create mode 100644 CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.xaml rename CollapseLauncher/XAMLs/MainApp/Pages/{GameSettingsPage.xaml.cs => GameSettingsPages/HonkaiGameSettingsPage.xaml.cs} (98%) rename CollapseLauncher/XAMLs/MainApp/Pages/{ => GameSettingsPages}/StarRailGameSettingsPage.Ext.cs (69%) create mode 100644 CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.xaml rename CollapseLauncher/XAMLs/MainApp/Pages/{ => GameSettingsPages}/StarRailGameSettingsPage.xaml.cs (100%) delete mode 100644 CollapseLauncher/XAMLs/MainApp/Pages/GenshinGameSettingsPage.xaml delete mode 100644 CollapseLauncher/XAMLs/MainApp/Pages/StarRailGameSettingsPage.xaml diff --git a/CollapseLauncher/Classes/GameManagement/GameSettings/StarRail/RegistryClass/Model.cs b/CollapseLauncher/Classes/GameManagement/GameSettings/StarRail/RegistryClass/Model.cs index 979e57d77..95d02e55a 100644 --- a/CollapseLauncher/Classes/GameManagement/GameSettings/StarRail/RegistryClass/Model.cs +++ b/CollapseLauncher/Classes/GameManagement/GameSettings/StarRail/RegistryClass/Model.cs @@ -29,6 +29,13 @@ public enum AntialiasingMode // TypeDefIndex: 25409 TAA = 1, FXAA = 2 } + + public enum CharacterQualityEnum + { + Low = 2, + Medium = 3, + High = 4 + } #endregion internal class Model : IGameSettingsValue @@ -97,7 +104,7 @@ private static Dictionary GenerateStaticFPSIndexDict() /// Options: Low (2), Medium(3), High(4) /// Default: Medium /// - public Quality CharacterQuality { get; set; } = Quality.Medium; + public CharacterQualityEnum CharacterQuality { get; set; } = CharacterQualityEnum.Medium; /// /// This defines "Environment Quality" combobox In-game settings.
diff --git a/CollapseLauncher/Classes/GameManagement/GameSettings/StarRail/Settings.cs b/CollapseLauncher/Classes/GameManagement/GameSettings/StarRail/Settings.cs index 0ebe3ab36..4273e21be 100644 --- a/CollapseLauncher/Classes/GameManagement/GameSettings/StarRail/Settings.cs +++ b/CollapseLauncher/Classes/GameManagement/GameSettings/StarRail/Settings.cs @@ -39,21 +39,26 @@ public StarRailSettings(IGameVersionCheck GameVersionManager) private void InitializeSettings() { - // Load Settings + // Load Settings required for MainPage SettingsCustomArgument = CustomArgs.Load(); - GraphicsSettings = Model.Load(); SettingsCollapseScreen = CollapseScreenSetting.Load(); - SettingsCollapseMisc = CollapseMiscSetting.Load(); - SettingsScreen = PCResolution.Load(); - AudioSettings_BGM = BGMVolume.Load(); - AudioSettings_Master = MasterVolume.Load(); - AudioSettings_SFX = SFXVolume.Load(); - AudioSettings_VO = VOVolume.Load(); - AudioLanguage = LocalAudioLanguage.Load(); - TextLanguage = LocalTextLanguage.Load(); + SettingsCollapseMisc = CollapseMiscSetting.Load(); + SettingsScreen = PCResolution.Load(); + } - public void ReloadSettings() => InitializeSettings(); + public void ReloadSettings() + { + // Load rest of the settings for GSP + AudioSettings_BGM = BGMVolume.Load(); + AudioSettings_Master = MasterVolume.Load(); + AudioSettings_SFX = SFXVolume.Load(); + AudioSettings_VO = VOVolume.Load(); + AudioLanguage = LocalAudioLanguage.Load(); + TextLanguage = LocalTextLanguage.Load(); + GraphicsSettings = Model.Load(); + InitializeSettings(); + } public void SaveSettings() { diff --git a/CollapseLauncher/Classes/GameManagement/GameSettings/Universal/RegistryClass/CollapseMiscSetting.cs b/CollapseLauncher/Classes/GameManagement/GameSettings/Universal/RegistryClass/CollapseMiscSetting.cs index 3602746a1..3d97c6b67 100644 --- a/CollapseLauncher/Classes/GameManagement/GameSettings/Universal/RegistryClass/CollapseMiscSetting.cs +++ b/CollapseLauncher/Classes/GameManagement/GameSettings/Universal/RegistryClass/CollapseMiscSetting.cs @@ -15,6 +15,8 @@ internal class CollapseMiscSetting : IGameSettingsValue private const string _ValueName = "CollapseLauncher_Misc"; private bool _UseCustomArguments = true; + + private static bool _IsDeserializing; #endregion #region Properties @@ -34,9 +36,45 @@ public bool UseCustomArguments set { _UseCustomArguments = value; - Save(); + // Stop saving if Load() is not yet done. + if (!_IsDeserializing) Save(); } } + + /// + /// This define if Advanced Game Settings should be shown in respective GSP and used.

+ /// Default: false + ///
+ public bool UseAdvancedGameSettings { get; set; } = false; + + /// + /// This control if GamePreLaunchCommand is going to be used.

+ /// Default: false + ///
+ public bool UseGamePreLaunchCommand { get; set; } = false; + + /// + /// This sets the command that is going to be launched before the game process is invoked.

+ /// Command is launched as a shell with no window.

+ ///
+ public string GamePreLaunchCommand { get; set; } = ""; + + /// + /// Close GamePreLaunch process when game is stopped.

+ ///
+ public bool GamePreLaunchExitOnGameStop { get; set; } = false; + + /// + /// This control if GamePostLaunchCommand is going to be used.

+ /// Default: false + ///
+ public bool UseGamePostExitCommand { get; set; } = false; + + /// + /// This sets the command that is going to be launched after the game process is closed.

+ /// Command is launched as a shell with no window.

+ ///
+ public string GamePostExitCommand { get; set; } = ""; #endregion #region Methods @@ -45,6 +83,7 @@ public static CollapseMiscSetting Load() { try { + _IsDeserializing = true; if (RegistryRoot == null) throw new NullReferenceException($"Cannot load {_ValueName} RegistryKey is unexpectedly not initialized!"); object? value = RegistryRoot.GetValue(_ValueName, null); @@ -52,16 +91,20 @@ public static CollapseMiscSetting Load() if (value != null) { ReadOnlySpan byteStr = (byte[])value; -#if DEBUG + #if DEBUG LogWriteLine($"Loaded Collapse Misc Settings:\r\n{Encoding.UTF8.GetString(byteStr.TrimEnd((byte)0))}", LogType.Debug, true); -#endif + #endif return byteStr.Deserialize(UniversalSettingsJSONContext.Default) ?? new CollapseMiscSetting(); } } - catch (Exception ex) + catch ( Exception ex ) { LogWriteLine($"Failed while reading {_ValueName}\r\n{ex}", LogType.Error, true); } + finally + { + _IsDeserializing = false; + } return new CollapseMiscSetting(); } diff --git a/CollapseLauncher/XAMLs/MainApp/MainPage.xaml.cs b/CollapseLauncher/XAMLs/MainApp/MainPage.xaml.cs index 56c5dffd2..d643ddb39 100644 --- a/CollapseLauncher/XAMLs/MainApp/MainPage.xaml.cs +++ b/CollapseLauncher/XAMLs/MainApp/MainPage.xaml.cs @@ -1113,7 +1113,7 @@ private void InitializeNavigationItems(bool ResetSelection = true) { case GameType.Honkai: NavigationViewControl.MenuItems.Add(new NavigationViewItem() - { Content = Lang._GameSettingsPage.PageTitle, Icon = IconGameSettings, Tag = "gamesettings" }); + { Content = Lang._GameSettingsPage.PageTitle, Icon = IconGameSettings, Tag = "honkaigamesettings" }); break; case GameType.StarRail: NavigationViewControl.MenuItems.Add(new NavigationViewItem() @@ -1183,8 +1183,8 @@ void NavigateInnerSwitch(string itemTag) Navigate(typeof(UnavailablePage), itemTag); break; - case "gamesettings": - Navigate(IsGameInstalled() ? typeof(GameSettingsPage) : typeof(NotInstalledPage), itemTag); + case "honkaigamesettings": + Navigate(IsGameInstalled() ? typeof(HonkaiGameSettingsPage) : typeof(NotInstalledPage), itemTag); break; case "starrailgamesettings": @@ -1768,7 +1768,7 @@ private void GoGameSettings_Invoked(KeyboardAccelerator sender, KeyboardAccelera switch (CurrentGameProperty._GamePreset.GameType) { case GameType.Honkai: - Navigate(typeof(GameSettingsPage), "gamesettings"); + Navigate(typeof(HonkaiGameSettingsPage), "honkaigamesettings"); break; case GameType.Genshin: Navigate(typeof(GenshinGameSettingsPage), "genshingamesettings"); diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.xaml b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.xaml deleted file mode 100644 index 67553989b..000000000 --- a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.xaml +++ /dev/null @@ -1,476 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GenshinGameSettingsPage.Ext.cs b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.Ext.cs similarity index 82% rename from CollapseLauncher/XAMLs/MainApp/Pages/GenshinGameSettingsPage.Ext.cs rename to CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.Ext.cs index c0d08ba05..ec4b13b11 100644 --- a/CollapseLauncher/XAMLs/MainApp/Pages/GenshinGameSettingsPage.Ext.cs +++ b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.Ext.cs @@ -1,13 +1,25 @@ using CollapseLauncher.GameSettings.Genshin; using CollapseLauncher.GameSettings.Genshin.Enums; +using Microsoft.UI.Xaml.Controls; using System; +using System.ComponentModel; using System.Drawing; +using System.Runtime.CompilerServices; using static Hi3Helper.Shared.Region.LauncherConfig; namespace CollapseLauncher.Pages { - public partial class GenshinGameSettingsPage + public partial class GenshinGameSettingsPage : Page, INotifyPropertyChanged { + #region Methods + public event PropertyChangedEventHandler PropertyChanged = delegate { }; + private void OnPropertyChanged([CallerMemberName] string propertyName = null) + { + // Raise the PropertyChanged event, passing the name of the property whose value has changed. + this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + #endregion + #region GameResolution public bool IsFullscreenEnabled { @@ -484,5 +496,98 @@ public bool IsGameBoost set => Settings.SettingsCollapseMisc.UseGameBoost = value; } #endregion + + #region Advanced Settings + public bool IsUseAdvancedSettings + { + get + { + bool value = Settings.SettingsCollapseMisc.UseAdvancedGameSettings; + if (value){AdvancedSettingsPanel.Visibility = Microsoft.UI.Xaml.Visibility.Visible;} + else AdvancedSettingsPanel.Visibility = Microsoft.UI.Xaml.Visibility.Collapsed; + return value; + } + set + { + Settings.SettingsCollapseMisc.UseAdvancedGameSettings = value; + if (value) AdvancedSettingsPanel.Visibility = Microsoft.UI.Xaml.Visibility.Visible; + else AdvancedSettingsPanel.Visibility = Microsoft.UI.Xaml.Visibility.Collapsed; + } + } + + public bool IsUsePreLaunchCommand + { + get + { + bool value = Settings.SettingsCollapseMisc.UseGamePreLaunchCommand; + + if (value) + { + PreLaunchCommandTextBox.IsEnabled = true; + PreLaunchForceCloseToggle.IsEnabled = true; + } + else + { + PreLaunchCommandTextBox.IsEnabled = false; + PreLaunchForceCloseToggle.IsEnabled = false; + } + + return value; + } + set + { + if (value) + { + PreLaunchCommandTextBox.IsEnabled = true; + PreLaunchForceCloseToggle.IsEnabled = true; + } + else + { + PreLaunchCommandTextBox.IsEnabled = false; + PreLaunchForceCloseToggle.IsEnabled = false; + } + + Settings.SettingsCollapseMisc.UseGamePreLaunchCommand = value; + } + } + + public string PreLaunchCommand + { + get => Settings.SettingsCollapseMisc.GamePreLaunchCommand; + set => Settings.SettingsCollapseMisc.GamePreLaunchCommand = value; + } + + public bool IsPreLaunchCommandExitOnGameClose + { + get => Settings.SettingsCollapseMisc.GamePreLaunchExitOnGameStop; + set => Settings.SettingsCollapseMisc.GamePreLaunchExitOnGameStop = value; + } + + public bool IsUsePostExitCommand + { + get + { + bool value = Settings.SettingsCollapseMisc.UseGamePostExitCommand; + + if (value) PostExitCommandTextBox.IsEnabled = true; + else PostExitCommandTextBox.IsEnabled = false; + + return value; + } + set + { + if (value) PostExitCommandTextBox.IsEnabled = true; + else PostExitCommandTextBox.IsEnabled = false; + + Settings.SettingsCollapseMisc.UseGamePostExitCommand = value; + } + } + + public string PostExitCommand + { + get => Settings.SettingsCollapseMisc.GamePostExitCommand; + set => Settings.SettingsCollapseMisc.GamePostExitCommand = value; + } + #endregion } } diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.xaml b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.xaml new file mode 100644 index 000000000..3f2dd13e5 --- /dev/null +++ b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.xaml @@ -0,0 +1,1199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GenshinGameSettingsPage.xaml.cs b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.xaml.cs similarity index 100% rename from CollapseLauncher/XAMLs/MainApp/Pages/GenshinGameSettingsPage.xaml.cs rename to CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/GenshinGameSettingsPage.xaml.cs diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.Ext.cs b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.Ext.cs similarity index 83% rename from CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.Ext.cs rename to CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.Ext.cs index e20caebc9..75dd52c4a 100644 --- a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.Ext.cs +++ b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.Ext.cs @@ -9,11 +9,12 @@ namespace CollapseLauncher.Pages { - public partial class GameSettingsPage : Page, INotifyPropertyChanged + public partial class HonkaiGameSettingsPage : Page, INotifyPropertyChanged { #region Fields private int prevGraphSelect; #endregion + #region Methods public event PropertyChangedEventHandler PropertyChanged = delegate { }; private void OnPropertyChanged([CallerMemberName] string propertyName = null) @@ -446,5 +447,98 @@ public bool IsGameBoost set => Settings.SettingsCollapseMisc.UseGameBoost = value; } #endregion + + #region Advanced Settings + public bool IsUseAdvancedSettings + { + get + { + bool value = Settings.SettingsCollapseMisc.UseAdvancedGameSettings; + if (value){AdvancedSettingsPanel.Visibility = Microsoft.UI.Xaml.Visibility.Visible;} + else AdvancedSettingsPanel.Visibility = Microsoft.UI.Xaml.Visibility.Collapsed; + return value; + } + set + { + Settings.SettingsCollapseMisc.UseAdvancedGameSettings = value; + if (value) AdvancedSettingsPanel.Visibility = Microsoft.UI.Xaml.Visibility.Visible; + else AdvancedSettingsPanel.Visibility = Microsoft.UI.Xaml.Visibility.Collapsed; + } + } + + public bool IsUsePreLaunchCommand + { + get + { + bool value = Settings.SettingsCollapseMisc.UseGamePreLaunchCommand; + + if (value) + { + PreLaunchCommandTextBox.IsEnabled = true; + PreLaunchForceCloseToggle.IsEnabled = true; + } + else + { + PreLaunchCommandTextBox.IsEnabled = false; + PreLaunchForceCloseToggle.IsEnabled = false; + } + + return value; + } + set + { + if (value) + { + PreLaunchCommandTextBox.IsEnabled = true; + PreLaunchForceCloseToggle.IsEnabled = true; + } + else + { + PreLaunchCommandTextBox.IsEnabled = false; + PreLaunchForceCloseToggle.IsEnabled = false; + } + + Settings.SettingsCollapseMisc.UseGamePreLaunchCommand = value; + } + } + + public string PreLaunchCommand + { + get => Settings.SettingsCollapseMisc.GamePreLaunchCommand; + set => Settings.SettingsCollapseMisc.GamePreLaunchCommand = value; + } + + public bool IsPreLaunchCommandExitOnGameClose + { + get => Settings.SettingsCollapseMisc.GamePreLaunchExitOnGameStop; + set => Settings.SettingsCollapseMisc.GamePreLaunchExitOnGameStop = value; + } + + public bool IsUsePostExitCommand + { + get + { + bool value = Settings.SettingsCollapseMisc.UseGamePostExitCommand; + + if (value) PostExitCommandTextBox.IsEnabled = true; + else PostExitCommandTextBox.IsEnabled = false; + + return value; + } + set + { + if (value) PostExitCommandTextBox.IsEnabled = true; + else PostExitCommandTextBox.IsEnabled = false; + + Settings.SettingsCollapseMisc.UseGamePostExitCommand = value; + } + } + + public string PostExitCommand + { + get => Settings.SettingsCollapseMisc.GamePostExitCommand; + set => Settings.SettingsCollapseMisc.GamePostExitCommand = value; + } + #endregion } } diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.xaml b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.xaml new file mode 100644 index 000000000..0c1abcc8c --- /dev/null +++ b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.xaml @@ -0,0 +1,912 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.xaml.cs b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.xaml.cs similarity index 98% rename from CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.xaml.cs rename to CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.xaml.cs index 1e2e139ee..3b5c2ee6a 100644 --- a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPage.xaml.cs +++ b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/HonkaiGameSettingsPage.xaml.cs @@ -21,14 +21,14 @@ namespace CollapseLauncher.Pages { - public partial class GameSettingsPage : Page + public partial class HonkaiGameSettingsPage : Page { private GamePresetProperty CurrentGameProperty { get; set; } private HonkaiSettings Settings { get => (HonkaiSettings)CurrentGameProperty._GameSettings; } private Brush InheritApplyTextColor { get; set; } private RegistryMonitor RegistryWatcher { get; set; } private bool IsNoReload { get; set; } - public GameSettingsPage() + public HonkaiGameSettingsPage() { try { diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/StarRailGameSettingsPage.Ext.cs b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.Ext.cs similarity index 69% rename from CollapseLauncher/XAMLs/MainApp/Pages/StarRailGameSettingsPage.Ext.cs rename to CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.Ext.cs index 443f9ad63..31fb66c24 100644 --- a/CollapseLauncher/XAMLs/MainApp/Pages/StarRailGameSettingsPage.Ext.cs +++ b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.Ext.cs @@ -1,12 +1,24 @@ using CollapseLauncher.GameSettings.StarRail; +using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using System; +using System.ComponentModel; using System.Drawing; +using System.Runtime.CompilerServices; namespace CollapseLauncher.Pages { - public partial class StarRailGameSettingsPage : Page + public partial class StarRailGameSettingsPage : Page, INotifyPropertyChanged { + #region Methods + public event PropertyChangedEventHandler PropertyChanged = delegate { }; + private void OnPropertyChanged([CallerMemberName] string propertyName = null) + { + // Raise the PropertyChanged event, passing the name of the property whose value has changed. + this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + #endregion + #region GameResolution public bool IsFullscreenEnabled { @@ -176,11 +188,24 @@ public int FPS { get { - int fpsValue = NormalizeFPSNumber(Settings.GraphicsSettings.FPS); - return Model.FPSIndexDict[fpsValue]; + int value = Model.FPSIndexDict[NormalizeFPSNumber(Settings.GraphicsSettings.FPS)]; + if (value == 2) + { + VSyncToggle.IsChecked = false; + VSyncToggle.IsEnabled = false; + } + + return value; } set { + if (value == 2) + { + VSyncToggle.IsChecked = false; + VSyncToggle.IsEnabled = false; + } + else { VSyncToggle.IsEnabled = true; } + Settings.GraphicsSettings.FPS = Model.FPSIndex[value]; } } @@ -221,8 +246,17 @@ public int LightQuality //CharacterQuality public int CharacterQuality { - get => (int)Settings.GraphicsSettings.CharacterQuality; - set => Settings.GraphicsSettings.CharacterQuality = (Quality)value; + get + { + int value = (int)Settings.GraphicsSettings.CharacterQuality; + + // Clamp value + if (value < 2) return 2; // Low + if (value > 4) return 4; // High + + return value; + } + set => Settings.GraphicsSettings.CharacterQuality = (CharacterQualityEnum)value; } //EnvDetailQuality public int EnvDetailQuality @@ -301,5 +335,98 @@ public bool IsGameBoost set => Settings.SettingsCollapseMisc.UseGameBoost = value; } #endregion + + #region Advanced Settings + public bool IsUseAdvancedSettings + { + get + { + bool value = Settings.SettingsCollapseMisc.UseAdvancedGameSettings; + if (value){AdvancedSettingsPanel.Visibility = Visibility.Visible;} + else AdvancedSettingsPanel.Visibility = Visibility.Collapsed; + return value; + } + set + { + Settings.SettingsCollapseMisc.UseAdvancedGameSettings = value; + if (value) AdvancedSettingsPanel.Visibility = Visibility.Visible; + else AdvancedSettingsPanel.Visibility = Visibility.Collapsed; + } + } + + public bool IsUsePreLaunchCommand + { + get + { + bool value = Settings.SettingsCollapseMisc.UseGamePreLaunchCommand; + + if (value) + { + PreLaunchCommandTextBox.IsEnabled = true; + PreLaunchForceCloseToggle.IsEnabled = true; + } + else + { + PreLaunchCommandTextBox.IsEnabled = false; + PreLaunchForceCloseToggle.IsEnabled = false; + } + + return value; + } + set + { + if (value) + { + PreLaunchCommandTextBox.IsEnabled = true; + PreLaunchForceCloseToggle.IsEnabled = true; + } + else + { + PreLaunchCommandTextBox.IsEnabled = false; + PreLaunchForceCloseToggle.IsEnabled = false; + } + + Settings.SettingsCollapseMisc.UseGamePreLaunchCommand = value; + } + } + + public string PreLaunchCommand + { + get => Settings.SettingsCollapseMisc.GamePreLaunchCommand; + set => Settings.SettingsCollapseMisc.GamePreLaunchCommand = value; + } + + public bool IsPreLaunchCommandExitOnGameClose + { + get => Settings.SettingsCollapseMisc.GamePreLaunchExitOnGameStop; + set => Settings.SettingsCollapseMisc.GamePreLaunchExitOnGameStop = value; + } + + public bool IsUsePostExitCommand + { + get + { + bool value = Settings.SettingsCollapseMisc.UseGamePostExitCommand; + + if (value) PostExitCommandTextBox.IsEnabled = true; + else PostExitCommandTextBox.IsEnabled = false; + + return value; + } + set + { + if (value) PostExitCommandTextBox.IsEnabled = true; + else PostExitCommandTextBox.IsEnabled = false; + + Settings.SettingsCollapseMisc.UseGamePostExitCommand = value; + } + } + + public string PostExitCommand + { + get => Settings.SettingsCollapseMisc.GamePostExitCommand; + set => Settings.SettingsCollapseMisc.GamePostExitCommand = value; + } + #endregion } } diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.xaml b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.xaml new file mode 100644 index 000000000..5cf0bcc1f --- /dev/null +++ b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.xaml @@ -0,0 +1,891 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/StarRailGameSettingsPage.xaml.cs b/CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.xaml.cs similarity index 100% rename from CollapseLauncher/XAMLs/MainApp/Pages/StarRailGameSettingsPage.xaml.cs rename to CollapseLauncher/XAMLs/MainApp/Pages/GameSettingsPages/StarRailGameSettingsPage.xaml.cs diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/GenshinGameSettingsPage.xaml b/CollapseLauncher/XAMLs/MainApp/Pages/GenshinGameSettingsPage.xaml deleted file mode 100644 index 14ab85fdf..000000000 --- a/CollapseLauncher/XAMLs/MainApp/Pages/GenshinGameSettingsPage.xaml +++ /dev/null @@ -1,603 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/HomePage.xaml.cs b/CollapseLauncher/XAMLs/MainApp/Pages/HomePage.xaml.cs index c487a5bea..41a2aac8d 100644 --- a/CollapseLauncher/XAMLs/MainApp/Pages/HomePage.xaml.cs +++ b/CollapseLauncher/XAMLs/MainApp/Pages/HomePage.xaml.cs @@ -55,6 +55,9 @@ public sealed partial class HomePage : Page private CancellationTokenSource PageToken { get; set; } private CancellationTokenSource CarouselToken { get; set; } private CancellationTokenSource PlaytimeToken { get; set; } + + private int barwidth; + private int consoleWidth; public static int RefreshRateDefault { get; } = 200; public static int RefreshRateSlow { get; } = 1000; @@ -88,6 +91,8 @@ public HomePage() RefreshRate = RefreshRateDefault; this.Loaded += StartLoadedRoutine; m_homePage = this; + + InitializeConsoleValues(); } ~HomePage() @@ -96,6 +101,13 @@ public HomePage() this.Loaded -= StartLoadedRoutine; } + private void InitializeConsoleValues() + { + consoleWidth = 24; + try { consoleWidth = Console.BufferWidth; } catch { } + barwidth = ((consoleWidth - 22) / 2) - 1; + } + private bool IsPageUnload { get; set; } private bool NeedShowEventIcon = true; @@ -1230,6 +1242,8 @@ private async void StartGame(object sender, RoutedEventArgs e) if (CurrentGameProperty._GameVersion.GameType == GameType.Genshin && GetAppConfigValue("ForceGIHDREnable").ToBool()) GenshinHDREnforcer(); + if (_Settings.SettingsCollapseMisc.UseAdvancedGameSettings && _Settings.SettingsCollapseMisc.UseGamePreLaunchCommand) PreLaunchCommand(_Settings); + Process proc = new Process(); proc.StartInfo.FileName = Path.Combine(NormalizePath(GameDirPath), CurrentGameProperty._GameVersion.GamePreset.GameExecutableName); proc.StartInfo.UseShellExecute = true; @@ -1250,7 +1264,7 @@ private async void StartGame(object sender, RoutedEventArgs e) CurrentGameProperty._GameVersion.GamePreset.GameExecutableName, _Settings, CurrentGameProperty._GameVersion.GamePreset.GameType); - GameRunningWatcher(); + GameRunningWatcher(_Settings); if (GetAppConfigValue("EnableConsole").ToBool()) { @@ -1303,11 +1317,12 @@ private async void StartGame(object sender, RoutedEventArgs e) catch (System.ComponentModel.Win32Exception ex) { LogWriteLine($"There is a problem while trying to launch Game with Region: {CurrentGameProperty._GameVersion.GamePreset.ZoneName}\r\nTraceback: {ex}", LogType.Error, true); + ErrorSender.SendException(new System.ComponentModel.Win32Exception($"There was an error while trying to launch the game!\r\tThrow: {ex}", ex)); } } // Use this method to do something when game is closed - private async void GameRunningWatcher() + private async void GameRunningWatcher(IGameSettingsUniversal _settings) { await Task.Delay(5000); while (_cachedIsGameRunning) @@ -1315,6 +1330,8 @@ private async void GameRunningWatcher() await Task.Delay(3000); } + LogWriteLine($"{new string('=', barwidth)} GAME STOPPED {new string('=', barwidth)}", LogType.Warning, true); + if (ResizableWindowHookToken != null) { ResizableWindowHookToken.Cancel(); @@ -1325,6 +1342,9 @@ private async void GameRunningWatcher() if (GetAppConfigValue("EnableConsole").ToBool()) WatchOutputLog.Cancel(); + // Stop PreLaunchCommand process + if (_settings.SettingsCollapseMisc.GamePreLaunchExitOnGameStop) PreLaunchCommand_ForceClose(); + // Window manager on game closed switch (GetAppConfigValue("GameLaunchedBehavior").ToString()) { @@ -1341,6 +1361,9 @@ private async void GameRunningWatcher() (m_window as MainWindow).Restore(); break; } + + // Run Post Launch Command + if (_settings.SettingsCollapseMisc.UseAdvancedGameSettings && _settings.SettingsCollapseMisc.UseGamePostExitCommand) PostExitCommand(_settings); } private void StopGame(PresetConfigV2 gamePreset) @@ -1582,11 +1605,8 @@ public async void StartExclusiveWindowPayload() #region Game Log Method public async void ReadOutputLog() { - int consoleWidth = 24; - try { consoleWidth = Console.BufferWidth; } catch { } + InitializeConsoleValues(); - string line; - int barwidth = ((consoleWidth - 22) / 2) - 1; LogWriteLine($"Are Game logs getting saved to Collapse logs: {GetAppConfigValue("IncludeGameLogs").ToBool()}", LogType.Scheme, true); LogWriteLine($"{new string('=', barwidth)} GAME STARTED {new string('=', barwidth)}", LogType.Warning, true); try @@ -1603,6 +1623,7 @@ public async void ReadOutputLog() { while (!reader.EndOfStream) { + string line; line = await reader.ReadLineAsync(WatchOutputLog.Token); if (RequireWindowExclusivePayload && line == "MoleMole.MonoGameEntry:Awake()") { @@ -1615,14 +1636,10 @@ public async void ReadOutputLog() } } } - catch (OperationCanceledException) - { - LogWriteLine($"{new string('=', barwidth)} GAME STOPPED {new string('=', barwidth)}", LogType.Warning, true); - (m_window as MainWindow).Restore(); - } + catch (OperationCanceledException) { } catch (Exception ex) { - LogWriteLine($"{ex}", LogType.Error); + LogWriteLine($"There were a problem in Game Log Reader\r\n{ex}", LogType.Error); } } #endregion @@ -2068,6 +2085,122 @@ private void GenshinHDREnforcer() } #endregion + #region Pre/Post Game Launch Command + private Process _procPreGLC; + + private async void PreLaunchCommand(IGameSettingsUniversal _settings) + { + try + { + string preGameLaunchCommand = _settings?.SettingsCollapseMisc?.GamePreLaunchCommand; + if (string.IsNullOrEmpty(preGameLaunchCommand)) return; + + LogWriteLine($"Using Pre-launch command : {preGameLaunchCommand}\r\n\t" + + $"BY USING THIS, NO SUPPORT IS PROVIDED IF SOMETHING HAPPENED TO YOUR ACCOUNT, GAME, OR SYSTEM!", + LogType.Warning, true); + + _procPreGLC = new Process(); + + _procPreGLC.StartInfo.FileName = "cmd.exe"; + _procPreGLC.StartInfo.Arguments = "/S /C " + "\"" + preGameLaunchCommand + "\""; + _procPreGLC.StartInfo.CreateNoWindow = true; + _procPreGLC.StartInfo.UseShellExecute = false; + _procPreGLC.StartInfo.RedirectStandardOutput = true; + _procPreGLC.StartInfo.RedirectStandardError = true; + + _procPreGLC.OutputDataReceived += (sender, e) => + { + if (!string.IsNullOrEmpty(e.Data)) LogWriteLine(e.Data, LogType.GLC, true); + }; + + _procPreGLC.ErrorDataReceived += (sender, e) => + { + if (!string.IsNullOrEmpty(e.Data)) LogWriteLine($"ERROR RECEIVED!\r\n\t{e.Data}", LogType.GLC, true); + }; + + _procPreGLC.Start(); + + _procPreGLC.BeginOutputReadLine(); + _procPreGLC.BeginErrorReadLine(); + + await _procPreGLC.WaitForExitAsync(); + } + catch ( System.ComponentModel.Win32Exception ex ) + { + LogWriteLine($"There is a problem while trying to launch Pre-Game Command with Region: {CurrentGameProperty._GameVersion.GamePreset.ZoneName}\r\nTraceback: {ex}", LogType.Error, true); + ErrorSender.SendException(new System.ComponentModel.Win32Exception($"There was an error while trying to launch Pre-Launch command!\r\tThrow: {ex}", ex)); + } + finally + { + if (_procPreGLC != null) _procPreGLC.Dispose(); + } + } + + private void PreLaunchCommand_ForceClose() + { + try + { + if (_procPreGLC != null && !_procPreGLC.HasExited) + { + // Kill main and child processes + Process taskKill = new Process(); + taskKill.StartInfo.FileName = "taskkill"; + taskKill.StartInfo.Arguments = $"/F /T /PID {_procPreGLC.Id}"; + taskKill.Start(); + taskKill.WaitForExit(); + + LogWriteLine("Pre-launch command has been forced to close!", LogType.Warning, true); + } + } + // Ignore external errors + catch ( InvalidOperationException ) {} + catch (System.ComponentModel.Win32Exception) {} + } + + private async void PostExitCommand(IGameSettingsUniversal _settings) + { + try + { + string postGameExitCommand = _settings?.SettingsCollapseMisc?.GamePostExitCommand ?? null; + if (string.IsNullOrEmpty(postGameExitCommand)) return; + + LogWriteLine($"Using Post-launch command : {postGameExitCommand}\r\n\t" + + $"BY USING THIS, NO SUPPORT IS PROVIDED IF SOMETHING HAPPENED TO YOUR ACCOUNT, GAME, OR SYSTEM!", + LogType.Warning, true); + + Process procPostGLC = new Process(); + + procPostGLC.StartInfo.FileName = "cmd.exe"; + procPostGLC.StartInfo.Arguments = "/S /C " + "\"" + postGameExitCommand + "\""; + procPostGLC.StartInfo.CreateNoWindow = true; + procPostGLC.StartInfo.UseShellExecute = false; + procPostGLC.StartInfo.RedirectStandardOutput = true; + procPostGLC.StartInfo.RedirectStandardError = true; + + procPostGLC.OutputDataReceived += (sender, e) => + { + if (!string.IsNullOrEmpty(e.Data)) LogWriteLine(e.Data, LogType.GLC, true); + }; + + procPostGLC.ErrorDataReceived += (sender, e) => + { + if (!string.IsNullOrEmpty(e.Data)) LogWriteLine($"ERROR RECEIVED!\r\n\t{e.Data}", LogType.GLC, true); + }; + + procPostGLC.Start(); + procPostGLC.BeginOutputReadLine(); + procPostGLC.BeginErrorReadLine(); + + await procPostGLC.WaitForExitAsync(); + } + catch ( System.ComponentModel.Win32Exception ex ) + { + LogWriteLine($"There is a problem while trying to launch Post-Game Command with Region: {CurrentGameProperty._GameVersion.GamePreset.ZoneName}\r\nTraceback: {ex}", LogType.Error, true); + ErrorSender.SendException(new System.ComponentModel.Win32Exception($"There was an error while trying to launch Post-Exit command\r\tThrow: {ex}", ex)); + } + } + #endregion + #region Shortcut Creation private async void AddToSteamButton_Click(object sender, RoutedEventArgs e) { diff --git a/CollapseLauncher/XAMLs/MainApp/Pages/StarRailGameSettingsPage.xaml b/CollapseLauncher/XAMLs/MainApp/Pages/StarRailGameSettingsPage.xaml deleted file mode 100644 index ceef3fec4..000000000 --- a/CollapseLauncher/XAMLs/MainApp/Pages/StarRailGameSettingsPage.xaml +++ /dev/null @@ -1,448 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Hi3Helper.Core/Classes/Logger/Enum/LogType.cs b/Hi3Helper.Core/Classes/Logger/Enum/LogType.cs index 8b60e9542..d9062a622 100644 --- a/Hi3Helper.Core/Classes/Logger/Enum/LogType.cs +++ b/Hi3Helper.Core/Classes/Logger/Enum/LogType.cs @@ -8,6 +8,7 @@ public enum LogType Scheme, NoTag, Game, - Debug + Debug, + GLC } } diff --git a/Hi3Helper.Core/Classes/Logger/LoggerBase.cs b/Hi3Helper.Core/Classes/Logger/LoggerBase.cs index e69669203..282241e77 100644 --- a/Hi3Helper.Core/Classes/Logger/LoggerBase.cs +++ b/Hi3Helper.Core/Classes/Logger/LoggerBase.cs @@ -184,6 +184,7 @@ private int GetTotalInstance() LogType.Scheme => "\u001b[34;1m", LogType.Game => "\u001b[35;1m", LogType.Debug => "\u001b[36;1m", + LogType.GLC => "\u001b[91;1m", _ => string.Empty }; @@ -201,6 +202,7 @@ private int GetTotalInstance() LogType.Scheme => "[Schm]", LogType.Game => "[Game]", LogType.Debug => "[DBG]", + LogType.GLC => "[GLC]", LogType.NoTag => " ", _ => throw ThrowInvalidType() }; diff --git a/Hi3Helper.Core/Lang/Locale/LangGameSettingsPage.cs b/Hi3Helper.Core/Lang/Locale/LangGameSettingsPage.cs index b24da6eab..0f8ba0d88 100644 --- a/Hi3Helper.Core/Lang/Locale/LangGameSettingsPage.cs +++ b/Hi3Helper.Core/Lang/Locale/LangGameSettingsPage.cs @@ -8,85 +8,95 @@ public sealed partial class LocalizationParams public LangGameSettingsPage _GameSettingsPage { get; set; } = LangFallback?._GameSettingsPage; public sealed class LangGameSettingsPage { - public string PageTitle { get; set; } = LangFallback?._GameSettingsPage.PageTitle; - public string Graphics_Title { get; set; } = LangFallback?._GameSettingsPage.Graphics_Title; - public string Graphics_ResolutionPanel { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResolutionPanel; - public string Graphics_Fullscreen { get; set; } = LangFallback?._GameSettingsPage.Graphics_Fullscreen; - public string Graphics_Borderless { get; set; } = LangFallback?._GameSettingsPage.Graphics_Borderless; - public string Graphics_ExclusiveFullscreen { get; set; } = LangFallback?._GameSettingsPage.Graphics_ExclusiveFullscreen; - public string Graphics_ResizableWindow { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResizableWindow; + public string PageTitle { get; set; } = LangFallback?._GameSettingsPage.PageTitle; + public string Graphics_Title { get; set; } = LangFallback?._GameSettingsPage.Graphics_Title; + public string Graphics_ResolutionPanel { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResolutionPanel; + public string Graphics_Fullscreen { get; set; } = LangFallback?._GameSettingsPage.Graphics_Fullscreen; + public string Graphics_Borderless { get; set; } = LangFallback?._GameSettingsPage.Graphics_Borderless; + public string Graphics_ExclusiveFullscreen { get; set; } = LangFallback?._GameSettingsPage.Graphics_ExclusiveFullscreen; + public string Graphics_ResizableWindow { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResizableWindow; public string Graphics_ResizableWindowTooltip { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResizableWindowTooltip; - public string Graphics_ResSelectPlaceholder { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResSelectPlaceholder; - public string Graphics_ResCustom { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResCustom; - public string Graphics_ResCustomW { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResCustomW; - public string Graphics_ResCustomH { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResCustomH; - public string Graphics_FPSPanel { get; set; } = LangFallback?._GameSettingsPage.Graphics_FPSPanel; - public string Graphics_FPSInCombat { get; set; } = LangFallback?._GameSettingsPage.Graphics_FPSInCombat; - public string Graphics_FPSInMenu { get; set; } = LangFallback?._GameSettingsPage.Graphics_FPSInMenu; - public string Graphics_APIPanel { get; set; } = LangFallback?._GameSettingsPage.Graphics_APIPanel; - public string Graphics_APIHelp1 { get; set; } = LangFallback?._GameSettingsPage.Graphics_APIHelp1; - public string Graphics_APIHelp2 { get; set; } = LangFallback?._GameSettingsPage.Graphics_APIHelp2; - public string Graphics_APIHelp3 { get; set; } = LangFallback?._GameSettingsPage.Graphics_APIHelp3; - public string Graphics_SpecPanel { get; set; } = LangFallback?._GameSettingsPage.Graphics_SpecPanel; - public string Graphics_Preset { get; set; } = LangFallback?._GameSettingsPage.Graphics_Preset; - public string Graphics_Render { get; set; } = LangFallback?._GameSettingsPage.Graphics_Render; - public string Graphics_Shadow { get; set; } = LangFallback?._GameSettingsPage.Graphics_Shadow; - public string Graphics_Reflection { get; set; } = LangFallback?._GameSettingsPage.Graphics_Reflection; - public string Graphics_FX { get; set; } = LangFallback?._GameSettingsPage.Graphics_FX; - public string Graphics_FXPost { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXPost; - public string Graphics_FXPhysics { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXPhysics; - public string Graphics_FXHDR { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXHDR; - public string Graphics_FXHQ { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXHQ; - public string Graphics_FXAA { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXAA; - public string Graphics_FXDistort { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXDistort; - public string Graphics_APHO2Panel { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2Panel; - public string Graphics_APHO2GI { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2GI; - public string Graphics_APHO2VL { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2VL; - public string Graphics_APHO2AO { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2AO; - public string Graphics_APHO2LOD { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2LOD; - public string SpecDisabled { get; set; } = LangFallback?._GameSettingsPage.SpecDisabled; - public string SpecLow { get; set; } = LangFallback?._GameSettingsPage.SpecLow; - public string SpecMedium { get; set; } = LangFallback?._GameSettingsPage.SpecMedium; - public string SpecHigh { get; set; } = LangFallback?._GameSettingsPage.SpecHigh; - public string SpecVeryHigh { get; set; } = LangFallback?._GameSettingsPage.SpecVeryHigh; - public string SpecMaximum { get; set; } = LangFallback?._GameSettingsPage.SpecMaximum; - public string Audio_Title { get; set; } = LangFallback?._GameSettingsPage.Audio_Title; - public string Audio_Mute { get; set; } = LangFallback?._GameSettingsPage.Audio_Mute; - public string Audio_Master { get; set; } = LangFallback?._GameSettingsPage.Audio_Master; - public string Audio_BGM { get; set; } = LangFallback?._GameSettingsPage.Audio_BGM; - public string Audio_SFX { get; set; } = LangFallback?._GameSettingsPage.Audio_SFX; - public string Audio_VOLang { get; set; } = LangFallback?._GameSettingsPage.Audio_VOLang; - public string Audio_VOLang1 { get; set; } = LangFallback?._GameSettingsPage.Audio_VOLang1; - public string Audio_VOLang2 { get; set; } = LangFallback?._GameSettingsPage.Audio_VOLang2; - public string Audio_VODefault { get; set; } = LangFallback?._GameSettingsPage.Audio_VODefault; - public string Audio_VO { get; set; } = LangFallback?._GameSettingsPage.Audio_VO; - public string Audio_Elf { get; set; } = LangFallback?._GameSettingsPage.Audio_Elf; - public string Audio_Cutscenes { get; set; } = LangFallback?._GameSettingsPage.Audio_Cutscenes; - public string ApplyBtn { get; set; } = LangFallback?._GameSettingsPage.ApplyBtn; - public string SettingsApplied { get; set; } = LangFallback?._GameSettingsPage.SettingsApplied; - public string SettingsRegExported { get; set; } = LangFallback?._GameSettingsPage.SettingsRegExported; - public string SettingsRegExportTitle { get; set; } = LangFallback?._GameSettingsPage.SettingsRegExportTitle; - public string SettingsRegImported { get; set; } = LangFallback?._GameSettingsPage.SettingsRegImported; - public string SettingsRegImportTitle { get; set; } = LangFallback?._GameSettingsPage.SettingsRegImportTitle; - public string SettingsRegErr1 { get; set; } = LangFallback?._GameSettingsPage.SettingsRegErr1; - public string SettingsRegErr2 { get; set; } = LangFallback?._GameSettingsPage.SettingsRegErr2; - public string RegImportExport { get; set; } = LangFallback?._GameSettingsPage.RegImportExport; - public string RegExportTitle { get; set; } = LangFallback?._GameSettingsPage.RegExportTitle; - public string RegExportTooltip { get; set; } = LangFallback?._GameSettingsPage.RegExportTooltip; - public string RegImportTitle { get; set; } = LangFallback?._GameSettingsPage.RegImportTitle; - public string RegImportTooltip { get; set; } = LangFallback?._GameSettingsPage.RegImportTooltip; - public string OverlayNotInstalledTitle { get; set; } = LangFallback?._GameSettingsPage.OverlayNotInstalledTitle; - public string OverlayNotInstalledSubtitle { get; set; } = LangFallback?._GameSettingsPage.OverlayNotInstalledSubtitle; - public string OverlayGameRunningTitle { get; set; } = LangFallback?._GameSettingsPage.OverlayGameRunningTitle; - public string OverlayGameRunningSubtitle { get; set; } = LangFallback?._GameSettingsPage.OverlayGameRunningSubtitle; - public string OverlayFirstTimeTitle { get; set; } = LangFallback?._GameSettingsPage.OverlayFirstTimeTitle; - public string OverlayFirstTimeSubtitle { get; set; } = LangFallback?._GameSettingsPage.OverlayFirstTimeSubtitle; - public string CustomArgs_Title { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Title; - public string CustomArgs_Subtitle { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Subtitle; - public string CustomArgs_Footer1 { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Footer1; - public string CustomArgs_Footer2 { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Footer2; - public string CustomArgs_Footer3 { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Footer3; - public string GameBoost { get; set; } = LangFallback?._GameSettingsPage.GameBoost; + public string Graphics_ResSelectPlaceholder { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResSelectPlaceholder; + public string Graphics_ResCustom { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResCustom; + public string Graphics_ResCustomW { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResCustomW; + public string Graphics_ResCustomH { get; set; } = LangFallback?._GameSettingsPage.Graphics_ResCustomH; + public string Graphics_FPSPanel { get; set; } = LangFallback?._GameSettingsPage.Graphics_FPSPanel; + public string Graphics_FPSInCombat { get; set; } = LangFallback?._GameSettingsPage.Graphics_FPSInCombat; + public string Graphics_FPSInMenu { get; set; } = LangFallback?._GameSettingsPage.Graphics_FPSInMenu; + public string Graphics_APIPanel { get; set; } = LangFallback?._GameSettingsPage.Graphics_APIPanel; + public string Graphics_APIHelp1 { get; set; } = LangFallback?._GameSettingsPage.Graphics_APIHelp1; + public string Graphics_APIHelp2 { get; set; } = LangFallback?._GameSettingsPage.Graphics_APIHelp2; + public string Graphics_APIHelp3 { get; set; } = LangFallback?._GameSettingsPage.Graphics_APIHelp3; + public string Graphics_SpecPanel { get; set; } = LangFallback?._GameSettingsPage.Graphics_SpecPanel; + public string Graphics_Preset { get; set; } = LangFallback?._GameSettingsPage.Graphics_Preset; + public string Graphics_Render { get; set; } = LangFallback?._GameSettingsPage.Graphics_Render; + public string Graphics_Shadow { get; set; } = LangFallback?._GameSettingsPage.Graphics_Shadow; + public string Graphics_Reflection { get; set; } = LangFallback?._GameSettingsPage.Graphics_Reflection; + public string Graphics_FX { get; set; } = LangFallback?._GameSettingsPage.Graphics_FX; + public string Graphics_FXPost { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXPost; + public string Graphics_FXPhysics { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXPhysics; + public string Graphics_FXHDR { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXHDR; + public string Graphics_FXHQ { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXHQ; + public string Graphics_FXAA { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXAA; + public string Graphics_FXDistort { get; set; } = LangFallback?._GameSettingsPage.Graphics_FXDistort; + public string Graphics_APHO2Panel { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2Panel; + public string Graphics_APHO2GI { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2GI; + public string Graphics_APHO2VL { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2VL; + public string Graphics_APHO2AO { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2AO; + public string Graphics_APHO2LOD { get; set; } = LangFallback?._GameSettingsPage.Graphics_APHO2LOD; + public string SpecDisabled { get; set; } = LangFallback?._GameSettingsPage.SpecDisabled; + public string SpecLow { get; set; } = LangFallback?._GameSettingsPage.SpecLow; + public string SpecMedium { get; set; } = LangFallback?._GameSettingsPage.SpecMedium; + public string SpecHigh { get; set; } = LangFallback?._GameSettingsPage.SpecHigh; + public string SpecVeryHigh { get; set; } = LangFallback?._GameSettingsPage.SpecVeryHigh; + public string SpecMaximum { get; set; } = LangFallback?._GameSettingsPage.SpecMaximum; + public string Audio_Title { get; set; } = LangFallback?._GameSettingsPage.Audio_Title; + public string Audio_Mute { get; set; } = LangFallback?._GameSettingsPage.Audio_Mute; + public string Audio_Master { get; set; } = LangFallback?._GameSettingsPage.Audio_Master; + public string Audio_BGM { get; set; } = LangFallback?._GameSettingsPage.Audio_BGM; + public string Audio_SFX { get; set; } = LangFallback?._GameSettingsPage.Audio_SFX; + public string Audio_VOLang { get; set; } = LangFallback?._GameSettingsPage.Audio_VOLang; + public string Audio_VOLang1 { get; set; } = LangFallback?._GameSettingsPage.Audio_VOLang1; + public string Audio_VOLang2 { get; set; } = LangFallback?._GameSettingsPage.Audio_VOLang2; + public string Audio_VODefault { get; set; } = LangFallback?._GameSettingsPage.Audio_VODefault; + public string Audio_VO { get; set; } = LangFallback?._GameSettingsPage.Audio_VO; + public string Audio_Elf { get; set; } = LangFallback?._GameSettingsPage.Audio_Elf; + public string Audio_Cutscenes { get; set; } = LangFallback?._GameSettingsPage.Audio_Cutscenes; + public string ApplyBtn { get; set; } = LangFallback?._GameSettingsPage.ApplyBtn; + public string SettingsApplied { get; set; } = LangFallback?._GameSettingsPage.SettingsApplied; + public string SettingsRegExported { get; set; } = LangFallback?._GameSettingsPage.SettingsRegExported; + public string SettingsRegExportTitle { get; set; } = LangFallback?._GameSettingsPage.SettingsRegExportTitle; + public string SettingsRegImported { get; set; } = LangFallback?._GameSettingsPage.SettingsRegImported; + public string SettingsRegImportTitle { get; set; } = LangFallback?._GameSettingsPage.SettingsRegImportTitle; + public string SettingsRegErr1 { get; set; } = LangFallback?._GameSettingsPage.SettingsRegErr1; + public string SettingsRegErr2 { get; set; } = LangFallback?._GameSettingsPage.SettingsRegErr2; + public string RegImportExport { get; set; } = LangFallback?._GameSettingsPage.RegImportExport; + public string RegExportTitle { get; set; } = LangFallback?._GameSettingsPage.RegExportTitle; + public string RegExportTooltip { get; set; } = LangFallback?._GameSettingsPage.RegExportTooltip; + public string RegImportTitle { get; set; } = LangFallback?._GameSettingsPage.RegImportTitle; + public string RegImportTooltip { get; set; } = LangFallback?._GameSettingsPage.RegImportTooltip; + public string OverlayNotInstalledTitle { get; set; } = LangFallback?._GameSettingsPage.OverlayNotInstalledTitle; + public string OverlayNotInstalledSubtitle { get; set; } = LangFallback?._GameSettingsPage.OverlayNotInstalledSubtitle; + public string OverlayGameRunningTitle { get; set; } = LangFallback?._GameSettingsPage.OverlayGameRunningTitle; + public string OverlayGameRunningSubtitle { get; set; } = LangFallback?._GameSettingsPage.OverlayGameRunningSubtitle; + public string OverlayFirstTimeTitle { get; set; } = LangFallback?._GameSettingsPage.OverlayFirstTimeTitle; + public string OverlayFirstTimeSubtitle { get; set; } = LangFallback?._GameSettingsPage.OverlayFirstTimeSubtitle; + public string CustomArgs_Title { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Title; + public string CustomArgs_Subtitle { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Subtitle; + public string CustomArgs_Footer1 { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Footer1; + public string CustomArgs_Footer2 { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Footer2; + public string CustomArgs_Footer3 { get; set; } = LangFallback?._GameSettingsPage.CustomArgs_Footer3; + public string GameBoost { get; set; } = LangFallback?._GameSettingsPage.GameBoost; + public string Advanced_Title { get; set; } = LangFallback?._GameSettingsPage.Advanced_Title; + public string Advanced_Subtitle1 { get; set; } = LangFallback?._GameSettingsPage.Advanced_Subtitle1; + public string Advanced_Subtitle2 { get; set; } = LangFallback?._GameSettingsPage.Advanced_Subtitle2; + public string Advanced_Subtitle3 { get; set; } = LangFallback?._GameSettingsPage.Advanced_Subtitle3; + public string Advanced_GLC_WarningAdmin { get; set; } = LangFallback?._GameSettingsPage.Advanced_GLC_WarningAdmin; + public string Advanced_GLC_PreLaunch_Title { get; set; } = LangFallback?._GameSettingsPage.Advanced_GLC_PreLaunch_Title; + public string Advanced_GLC_PreLaunch_Subtitle { get; set; } = LangFallback?._GameSettingsPage.Advanced_GLC_PreLaunch_Subtitle; + public string Advanced_GLC_PreLaunch_Exit { get; set; } = LangFallback?._GameSettingsPage.Advanced_GLC_PreLaunch_Exit; + public string Advanced_GLC_PostExit_Title { get; set; } = LangFallback?._GameSettingsPage.Advanced_GLC_PostExit_Title; + public string Advanced_GLC_PostExit_Subtitle { get; set; } = LangFallback?._GameSettingsPage.Advanced_GLC_PostExit_Subtitle; } } #endregion diff --git a/Hi3Helper.Core/Lang/Locale/LangStarRailGameSettingsPage.cs b/Hi3Helper.Core/Lang/Locale/LangStarRailGameSettingsPage.cs index d6892ad72..dc7bff364 100644 --- a/Hi3Helper.Core/Lang/Locale/LangStarRailGameSettingsPage.cs +++ b/Hi3Helper.Core/Lang/Locale/LangStarRailGameSettingsPage.cs @@ -8,66 +8,67 @@ public sealed partial class LocalizationParams public LangStarRailGameSettingsPage _StarRailGameSettingsPage { get; set; } = LangFallback?._StarRailGameSettingsPage; public sealed class LangStarRailGameSettingsPage { - public string PageTitle { get; set; } = LangFallback?._StarRailGameSettingsPage.PageTitle; - public string Graphics_Title { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_Title; - public string Graphics_ResolutionPanel { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResolutionPanel; - public string Graphics_Fullscreen { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_Fullscreen; - public string Graphics_ExclusiveFullscreen { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ExclusiveFullscreen; + public string PageTitle { get; set; } = LangFallback?._StarRailGameSettingsPage.PageTitle; + public string Graphics_Title { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_Title; + public string Graphics_ResolutionPanel { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResolutionPanel; + public string Graphics_Fullscreen { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_Fullscreen; + public string Graphics_ExclusiveFullscreen { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ExclusiveFullscreen; public string Graphics_ResSelectPlaceholder { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResSelectPlaceholder; - public string Graphics_ResCustom { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResCustom; - public string Graphics_ResCustomTooltip { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResCustomTooltip; - public string Graphics_ResCustomW { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResCustomW; - public string Graphics_ResCustomH { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResCustomH; - public string OverlayNotInstalledTitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayNotInstalledTitle; - public string OverlayNotInstalledSubtitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayNotInstalledSubtitle; - public string OverlayGameRunningTitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayGameRunningTitle; - public string OverlayGameRunningSubtitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayGameRunningSubtitle; - public string OverlayFirstTimeTitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayFirstTimeTitle; - public string OverlayFirstTimeSubtitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayFirstTimeSubtitle; - public string CustomArgs_Title { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Title; - public string CustomArgs_Subtitle { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Subtitle; - public string CustomArgs_Footer1 { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Footer1; - public string CustomArgs_Footer2 { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Footer2; - public string CustomArgs_Footer3 { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Footer3; - public string ApplyBtn { get; set; } = LangFallback?._StarRailGameSettingsPage.ApplyBtn; - public string SettingsApplied { get; set; } = LangFallback?._StarRailGameSettingsPage.SettingsApplied; - public string Audio_Title { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_Title; - public string Audio_Master { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_Master; - public string Audio_BGM { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_BGM; - public string Audio_SFX { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_SFX; - public string Audio_VO { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_VO; - public string Audio_Mute { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_Mute; - public string Language { get; set; } = LangFallback?._StarRailGameSettingsPage.Language; - public string Language_Help1 { get; set; } = LangFallback?._StarRailGameSettingsPage.Language_Help1; - public string Language_Help2 { get; set; } = LangFallback?._StarRailGameSettingsPage.Language_Help2; - public string LanguageAudio { get; set; } = LangFallback?._StarRailGameSettingsPage.LanguageAudio; - public string LanguageText { get; set; } = LangFallback?._StarRailGameSettingsPage.LanguageText; - public string VO_en { get; set; } = LangFallback?._StarRailGameSettingsPage.VO_en; - public string VO_cn { get; set; } = LangFallback?._StarRailGameSettingsPage.VO_cn; - public string VO_jp { get; set; } = LangFallback?._StarRailGameSettingsPage.VO_jp; - public string VO_kr { get; set; } = LangFallback?._StarRailGameSettingsPage.VO_kr; - public string Graphics_FPS { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_FPS; - public string Graphics_FPS_Help { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_FPS_Help; - public string Graphics_FPS_Help2 { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_FPS_Help2; - public string Graphics_VSync { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_VSync; - public string Graphics_RenderScale { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_RenderScale; - public string Graphics_ResolutionQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResolutionQuality; - public string Graphics_ShadowQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ShadowQuality; - public string Graphics_LightQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_LightQuality; - public string Graphics_CharacterQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_CharacterQuality; - public string Graphics_EnvDetailQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_EnvDetailQuality; - public string Graphics_ReflectionQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ReflectionQuality; - public string Graphics_BloomQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_BloomQuality; - public string Graphics_SFXQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_SFXQuality; - public string Graphics_AAMode { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_AAMode; - public string Graphics_SpecPanel { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_SpecPanel; - public string SpecEnabled { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecEnabled; - public string SpecDisabled { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecDisabled; - public string SpecVeryLow { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecVeryLow; - public string SpecLow { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecLow; - public string SpecMedium { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecMedium; - public string SpecHigh { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecHigh; - public string SpecVeryHigh { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecVeryHigh; + public string Graphics_ResCustom { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResCustom; + public string Graphics_ResCustomTooltip { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResCustomTooltip; + public string Graphics_ResCustomW { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResCustomW; + public string Graphics_ResCustomH { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResCustomH; + public string OverlayNotInstalledTitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayNotInstalledTitle; + public string OverlayNotInstalledSubtitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayNotInstalledSubtitle; + public string OverlayGameRunningTitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayGameRunningTitle; + public string OverlayGameRunningSubtitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayGameRunningSubtitle; + public string OverlayFirstTimeTitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayFirstTimeTitle; + public string OverlayFirstTimeSubtitle { get; set; } = LangFallback?._StarRailGameSettingsPage.OverlayFirstTimeSubtitle; + public string CustomArgs_Title { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Title; + public string CustomArgs_Subtitle { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Subtitle; + public string CustomArgs_Footer1 { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Footer1; + public string CustomArgs_Footer2 { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Footer2; + public string CustomArgs_Footer3 { get; set; } = LangFallback?._StarRailGameSettingsPage.CustomArgs_Footer3; + public string ApplyBtn { get; set; } = LangFallback?._StarRailGameSettingsPage.ApplyBtn; + public string SettingsApplied { get; set; } = LangFallback?._StarRailGameSettingsPage.SettingsApplied; + public string Audio_Title { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_Title; + public string Audio_Master { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_Master; + public string Audio_BGM { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_BGM; + public string Audio_SFX { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_SFX; + public string Audio_VO { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_VO; + public string Audio_Mute { get; set; } = LangFallback?._StarRailGameSettingsPage.Audio_Mute; + public string Language { get; set; } = LangFallback?._StarRailGameSettingsPage.Language; + public string Language_Help1 { get; set; } = LangFallback?._StarRailGameSettingsPage.Language_Help1; + public string Language_Help2 { get; set; } = LangFallback?._StarRailGameSettingsPage.Language_Help2; + public string LanguageAudio { get; set; } = LangFallback?._StarRailGameSettingsPage.LanguageAudio; + public string LanguageText { get; set; } = LangFallback?._StarRailGameSettingsPage.LanguageText; + public string VO_en { get; set; } = LangFallback?._StarRailGameSettingsPage.VO_en; + public string VO_cn { get; set; } = LangFallback?._StarRailGameSettingsPage.VO_cn; + public string VO_jp { get; set; } = LangFallback?._StarRailGameSettingsPage.VO_jp; + public string VO_kr { get; set; } = LangFallback?._StarRailGameSettingsPage.VO_kr; + public string Graphics_FPS { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_FPS; + public string Graphics_FPS_Help { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_FPS_Help; + public string Graphics_FPS_Help2 { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_FPS_Help2; + public string Graphics_VSync { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_VSync; + public string Graphics_VSync_Help { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_VSync_Help; + public string Graphics_RenderScale { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_RenderScale; + public string Graphics_ResolutionQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ResolutionQuality; + public string Graphics_ShadowQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ShadowQuality; + public string Graphics_LightQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_LightQuality; + public string Graphics_CharacterQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_CharacterQuality; + public string Graphics_EnvDetailQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_EnvDetailQuality; + public string Graphics_ReflectionQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_ReflectionQuality; + public string Graphics_BloomQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_BloomQuality; + public string Graphics_SFXQuality { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_SFXQuality; + public string Graphics_AAMode { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_AAMode; + public string Graphics_SpecPanel { get; set; } = LangFallback?._StarRailGameSettingsPage.Graphics_SpecPanel; + public string SpecEnabled { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecEnabled; + public string SpecDisabled { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecDisabled; + public string SpecVeryLow { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecVeryLow; + public string SpecLow { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecLow; + public string SpecMedium { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecMedium; + public string SpecHigh { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecHigh; + public string SpecVeryHigh { get; set; } = LangFallback?._StarRailGameSettingsPage.SpecVeryHigh; } } #endregion diff --git a/Hi3Helper.Core/Lang/en_US.json b/Hi3Helper.Core/Lang/en_US.json index 344afc07d..25bcee67e 100644 --- a/Hi3Helper.Core/Lang/en_US.json +++ b/Hi3Helper.Core/Lang/en_US.json @@ -327,7 +327,18 @@ "CustomArgs_Footer2": "Unity Standalone Player command line documentation", "CustomArgs_Footer3": "to see more parameters.", - "GameBoost": "Boost Game Priority [Experimental]" + "GameBoost": "Boost Game Priority [Experimental]", + + "Advanced_Title": "Advanced Settings", + "Advanced_Subtitle1": "Collapse Launcher Team", + "Advanced_Subtitle2": "IS NOT RESPONSIBLE", + "Advanced_Subtitle3": "for anything happened to your game, account or system while this settings is in use! Use at your own risk.", + "Advanced_GLC_WarningAdmin": "WARNING: Commands provided will be run as Administrator!", + "Advanced_GLC_PreLaunch_Title": "Pre-Launch Commands", + "Advanced_GLC_PreLaunch_Subtitle": "Commands to be executed before the game is launched", + "Advanced_GLC_PreLaunch_Exit": "Force exit launched process when Game is closed/stopped", + "Advanced_GLC_PostExit_Title": "Post-Exit Commands", + "Advanced_GLC_PostExit_Subtitle": "Commands to be executed after the game is closed" }, "_SettingsPage": { @@ -921,6 +932,7 @@ "Graphics_FPS_Help": "120 FPS is EXPERIMENTAL! Please use with caution as Honkai: Star Rail does not officially support this!", "Graphics_FPS_Help2": "Setting the FPS value to 120 will break the in-game Graphics Settings menu.\r\nIf your menu is broken in-game, use Collapse to change the Game Graphics Settings.", "Graphics_VSync": "VSync", + "Graphics_VSync_Help": "VSync is not available on 120 FPS", "Graphics_RenderScale": "Render Scale", "Graphics_ResolutionQuality": "Resolution Quality", "Graphics_ShadowQuality": "Shadow Quality",