Parcourir la source

UI: Option to automatically Hide UI when game launches (#462)

Quality of life feature
Similar in function to the "Start Games in Fullscreen" toggle
For users who want to run games in windowed/non-fullscreen mode with
menu UI hidden, this eliminates the need to always click "Hide UI"
asfasagag il y a 1 an
Parent
commit
11531dacb6

+ 1 - 1
src/Ryujinx/AppHost.cs

@@ -1044,7 +1044,7 @@ namespace Ryujinx.Ava
                     _viewModel.WindowState = WindowState.FullScreen;
                 }
 
-                if (_viewModel.WindowState is WindowState.FullScreen)
+                if (_viewModel.WindowState is WindowState.FullScreen || _viewModel.StartGamesWithoutUI)
                 {
                     _viewModel.ShowMenuAndStatusBar = false;
                 }

+ 25 - 0
src/Ryujinx/Assets/locales.json

@@ -572,6 +572,31 @@
         "zh_TW": "使用全螢幕模式啟動遊戲"
       }
     },
+    {
+      "ID": "MenuBarOptionsStartGamesWithoutUI",
+      "Translations": {
+        "ar_SA": "",
+        "de_DE": "",
+        "el_GR": "",
+        "en_US": "Start Games with UI Hidden",
+        "es_ES": "",
+        "fr_FR": "",
+        "he_IL": "",
+        "it_IT": "",
+        "ja_JP": "",
+        "ko_KR": "",
+        "no_NO": "",
+        "pl_PL": "",
+        "pt_BR": "",
+        "ru_RU": "",
+        "sv_SE": "",
+        "th_TH": "",
+        "tr_TR": "",
+        "uk_UA": "",
+        "zh_CN": "",
+        "zh_TW": ""
+      }
+    },
     {
       "ID": "MenuBarOptionsStopEmulation",
       "Translations": {

+ 18 - 0
src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs

@@ -488,6 +488,19 @@ namespace Ryujinx.Ava.UI.ViewModels
             }
         }
 
+        public bool StartGamesWithoutUI
+        {
+            get => ConfigurationState.Instance.UI.StartNoUI;
+            set
+            {
+                ConfigurationState.Instance.UI.StartNoUI.Value = value;
+
+                ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
+
+                OnPropertyChanged();
+            }
+        }
+
         public bool ShowConsole
         {
             get => ConfigurationState.Instance.UI.ShowConsole;
@@ -1198,6 +1211,11 @@ namespace Ryujinx.Ava.UI.ViewModels
             StartGamesInFullscreen = !StartGamesInFullscreen;
         }
 
+        public void ToggleStartGamesWithoutUI()
+        {
+            StartGamesWithoutUI = !StartGamesWithoutUI;
+        }
+
         public void ToggleShowConsole()
         {
             ShowConsole = !ShowConsole;

+ 23 - 0
src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml

@@ -119,6 +119,29 @@
                         </Style>
                     </MenuItem.Styles>
                 </MenuItem>
+                <MenuItem
+                    Padding="0"
+                    Command="{Binding ToggleStartGamesWithoutUI}"
+                    Header="{ext:Locale MenuBarOptionsStartGamesWithoutUI}">
+                    <MenuItem.Icon>
+                        <CheckBox
+                            MinWidth="{DynamicResource CheckBoxSize}"
+                            MinHeight="{DynamicResource CheckBoxSize}"
+                            IsChecked="{Binding StartGamesWithoutUI, Mode=TwoWay}"
+                            Padding="0" />
+                    </MenuItem.Icon>
+                    <MenuItem.Styles>
+                        <Style Selector="Viewbox#PART_IconPresenter">
+                            <Setter Property="MaxHeight" Value="36" />
+                            <Setter Property="MinHeight" Value="36" />
+                            <Setter Property="MaxWidth" Value="36" />
+                            <Setter Property="MinWidth" Value="36" />
+                        </Style>
+                        <Style Selector="ContentPresenter#PART_HeaderPresenter">
+                            <Setter Property="Padding" Value="-10,0,0,0" />
+                        </Style>
+                    </MenuItem.Styles>
+                </MenuItem>
                 <MenuItem
                     Padding="0"
                     IsVisible="{Binding ShowConsoleVisible}"

+ 6 - 1
src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs

@@ -17,7 +17,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
         /// <summary>
         /// The current version of the file format
         /// </summary>
-        public const int CurrentVersion = 59;
+        public const int CurrentVersion = 60;
 
         /// <summary>
         /// Version of the configuration file format
@@ -351,6 +351,11 @@ namespace Ryujinx.Ava.Utilities.Configuration
         /// </summary>
         public bool StartFullscreen { get; set; }
 
+        /// <summary>
+        /// Start games with UI hidden
+        /// </summary>
+        public bool StartNoUI { get; set; }
+
         /// <summary>
         /// Show console window
         /// </summary>

+ 3 - 1
src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs

@@ -127,6 +127,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
             UI.GridSize.Value = cff.GridSize;
             UI.ApplicationSort.Value = cff.ApplicationSort;
             UI.StartFullscreen.Value = cff.StartFullscreen;
+            UI.StartNoUI.Value = cff.StartNoUI;
             UI.ShowConsole.Value = cff.ShowConsole;
             UI.WindowStartup.WindowSizeWidth.Value = cff.WindowStartup.WindowSizeWidth;
             UI.WindowStartup.WindowSizeHeight.Value = cff.WindowStartup.WindowSizeHeight;
@@ -414,7 +415,8 @@ namespace Ryujinx.Ava.Utilities.Configuration
                     // This was accidentally enabled by default when it was PRed. That is not what we want,
                     // so as a compromise users who want to use it will simply need to re-enable it once after updating.
                     cff.IgnoreApplet = false;
-                })
+                }),
+                (60, static cff => cff.StartNoUI = false)
             );
     }
 }

+ 6 - 0
src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs

@@ -152,6 +152,11 @@ namespace Ryujinx.Ava.Utilities.Configuration
             /// </summary>
             public ReactiveObject<bool> StartFullscreen { get; private set; }
 
+            /// <summary>
+            /// Start games with UI hidden
+            /// </summary>
+            public ReactiveObject<bool> StartNoUI { get; private set; }
+
             /// <summary>
             /// Hide / Show Console Window
             /// </summary>
@@ -192,6 +197,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
                 WindowStartup = new WindowStartupSettings();
                 BaseStyle = new ReactiveObject<string>();
                 StartFullscreen = new ReactiveObject<bool>();
+                StartNoUI = new ReactiveObject<bool>();
                 GameListViewMode = new ReactiveObject<int>();
                 ShowNames = new ReactiveObject<bool>();
                 GridSize = new ReactiveObject<int>();

+ 2 - 0
src/Ryujinx/Utilities/Configuration/ConfigurationState.cs

@@ -125,6 +125,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
                 ApplicationSort = UI.ApplicationSort,
                 IsAscendingOrder = UI.IsAscendingOrder,
                 StartFullscreen = UI.StartFullscreen,
+                StartNoUI = UI.StartNoUI,
                 ShowConsole = UI.ShowConsole,
                 EnableKeyboard = Hid.EnableKeyboard,
                 EnableMouse = Hid.EnableMouse,
@@ -233,6 +234,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
             UI.ApplicationSort.Value = 0;
             UI.IsAscendingOrder.Value = true;
             UI.StartFullscreen.Value = false;
+            UI.StartNoUI.Value = false;
             UI.ShowConsole.Value = true;
             UI.WindowStartup.WindowSizeWidth.Value = 1280;
             UI.WindowStartup.WindowSizeHeight.Value = 760;