CommandLineState.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using Ryujinx.Common.Logging;
  2. using System.Collections.Generic;
  3. namespace Ryujinx.Ui.Common.Helper
  4. {
  5. public static class CommandLineState
  6. {
  7. public static string[] Arguments { get; private set; }
  8. public static bool? OverrideDockedMode { get; private set; }
  9. public static string OverrideGraphicsBackend { get; private set; }
  10. public static string BaseDirPathArg { get; private set; }
  11. public static string Profile { get; private set; }
  12. public static string LaunchPathArg { get; private set; }
  13. public static bool StartFullscreenArg { get; private set; }
  14. public static void ParseArguments(string[] args)
  15. {
  16. List<string> arguments = new();
  17. // Parse Arguments.
  18. for (int i = 0; i < args.Length; ++i)
  19. {
  20. string arg = args[i];
  21. switch (arg)
  22. {
  23. case "-r":
  24. case "--root-data-dir":
  25. if (i + 1 >= args.Length)
  26. {
  27. Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
  28. continue;
  29. }
  30. BaseDirPathArg = args[++i];
  31. arguments.Add(arg);
  32. arguments.Add(args[i]);
  33. break;
  34. case "-p":
  35. case "--profile":
  36. if (i + 1 >= args.Length)
  37. {
  38. Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
  39. continue;
  40. }
  41. Profile = args[++i];
  42. arguments.Add(arg);
  43. arguments.Add(args[i]);
  44. break;
  45. case "-f":
  46. case "--fullscreen":
  47. StartFullscreenArg = true;
  48. arguments.Add(arg);
  49. break;
  50. case "-g":
  51. case "--graphics-backend":
  52. if (i + 1 >= args.Length)
  53. {
  54. Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
  55. continue;
  56. }
  57. OverrideGraphicsBackend = args[++i];
  58. break;
  59. case "--docked-mode":
  60. OverrideDockedMode = true;
  61. break;
  62. case "--handheld-mode":
  63. OverrideDockedMode = false;
  64. break;
  65. default:
  66. LaunchPathArg = arg;
  67. break;
  68. }
  69. }
  70. Arguments = arguments.ToArray();
  71. }
  72. }
  73. }