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 }