CommandLineState.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 string OverrideGraphicsBackend { get; private set; }
  9. public static string BaseDirPathArg { get; private set; }
  10. public static string Profile { get; private set; }
  11. public static string LaunchPathArg { get; private set; }
  12. public static bool StartFullscreenArg { get; private set; }
  13. public static void ParseArguments(string[] args)
  14. {
  15. List<string> arguments = new();
  16. // Parse Arguments.
  17. for (int i = 0; i < args.Length; ++i)
  18. {
  19. string arg = args[i];
  20. switch (arg)
  21. {
  22. case "-r":
  23. case "--root-data-dir":
  24. if (i + 1 >= args.Length)
  25. {
  26. Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
  27. continue;
  28. }
  29. BaseDirPathArg = args[++i];
  30. arguments.Add(arg);
  31. arguments.Add(args[i]);
  32. break;
  33. case "-p":
  34. case "--profile":
  35. if (i + 1 >= args.Length)
  36. {
  37. Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
  38. continue;
  39. }
  40. Profile = args[++i];
  41. arguments.Add(arg);
  42. arguments.Add(args[i]);
  43. break;
  44. case "-f":
  45. case "--fullscreen":
  46. StartFullscreenArg = true;
  47. arguments.Add(arg);
  48. break;
  49. case "-g":
  50. case "--graphics-backend":
  51. if (i + 1 >= args.Length)
  52. {
  53. Logger.Error?.Print(LogClass.Application, $"Invalid option '{arg}'");
  54. continue;
  55. }
  56. OverrideGraphicsBackend = args[++i];
  57. break;
  58. default:
  59. LaunchPathArg = arg;
  60. break;
  61. }
  62. }
  63. Arguments = arguments.ToArray();
  64. }
  65. }
  66. }