CommandLineState.cs 3.9 KB

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