/ src / Ryujinx.UI.Common / Helper / CommandLineState.cs
CommandLineState.cs
  1  using Ryujinx.Common.Logging;
  2  using System.Collections.Generic;
  3  
  4  namespace Ryujinx.UI.Common.Helper
  5  {
  6      public static class CommandLineState
  7      {
  8          public static string[] Arguments { get; private set; }
  9  
 10          public static bool? OverrideDockedMode { get; private set; }
 11          public static bool? OverrideHardwareAcceleration { get; private set; }
 12          public static string OverrideGraphicsBackend { get; private set; }
 13          public static string OverrideHideCursor { get; private set; }
 14          public static string BaseDirPathArg { get; private set; }
 15          public static string Profile { get; private set; }
 16          public static string LaunchPathArg { get; private set; }
 17          public static string LaunchApplicationId { get; private set; }
 18          public static bool StartFullscreenArg { get; private set; }
 19  
 20          public static void ParseArguments(string[] args)
 21          {
 22              List<string> arguments = new();
 23  
 24              // Parse Arguments.
 25              for (int i = 0; i < args.Length; ++i)
 26              {
 27                  string arg = args[i];
 28  
 29                  switch (arg)
 30                  {
 31                      case "-r":
 32                      case "--root-data-dir":
 33                          if (i + 1 >= args.Length)
 34                          {
 35                              Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
 36  
 37                              continue;
 38                          }
 39  
 40                          BaseDirPathArg = args[++i];
 41  
 42                          arguments.Add(arg);
 43                          arguments.Add(args[i]);
 44                          break;
 45                      case "-p":
 46                      case "--profile":
 47                          if (i + 1 >= args.Length)
 48                          {
 49                              Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
 50  
 51                              continue;
 52                          }
 53  
 54                          Profile = args[++i];
 55  
 56                          arguments.Add(arg);
 57                          arguments.Add(args[i]);
 58                          break;
 59                      case "-f":
 60                      case "--fullscreen":
 61                          StartFullscreenArg = true;
 62  
 63                          arguments.Add(arg);
 64                          break;
 65                      case "-g":
 66                      case "--graphics-backend":
 67                          if (i + 1 >= args.Length)
 68                          {
 69                              Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
 70  
 71                              continue;
 72                          }
 73  
 74                          OverrideGraphicsBackend = args[++i];
 75                          break;
 76                      case "-i":
 77                      case "--application-id":
 78                          LaunchApplicationId = args[++i];
 79                          break;
 80                      case "--docked-mode":
 81                          OverrideDockedMode = true;
 82                          break;
 83                      case "--handheld-mode":
 84                          OverrideDockedMode = false;
 85                          break;
 86                      case "--hide-cursor":
 87                          if (i + 1 >= args.Length)
 88                          {
 89                              Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
 90  
 91                              continue;
 92                          }
 93  
 94                          OverrideHideCursor = args[++i];
 95                          break;
 96                      case "--software-gui":
 97                          OverrideHardwareAcceleration = false;
 98                          break;
 99                      default:
100                          LaunchPathArg = arg;
101                          break;
102                  }
103              }
104  
105              Arguments = arguments.ToArray();
106          }
107      }
108  }