private static bool HandlerArgs(string[] args) { string gameArgs = ""; int crashDelay = 25; if (args.Length > 0) { if (args.Length > 1) { gameArgs = args[1]; // may gets overwritten somwhere else } if (args[0].Equals("-FixLocalSave", StringComparison.InvariantCultureIgnoreCase)) { // hande FixLocalSave SaveFilePatcher.PatchSaveFiles(args.ElementAtOrDefault(1), true); return(true); } else if (args[0].Equals("-FixLocalSaveNoQuests", StringComparison.InvariantCultureIgnoreCase)) { // hande FixLocalSave SaveFilePatcher.PatchSaveFiles(args.ElementAtOrDefault(1), false); return(true); } else if (args[0].Equals("-UpdateKeyBinds", StringComparison.InvariantCultureIgnoreCase)) { // hande UpdateKeyBinds KeyBindingSync.SyncKeyBindings(args.ElementAtOrDefault(1)); return(false); } else if (args.Length > 1 && args[1].Equals("-Delay", StringComparison.InvariantCultureIgnoreCase)) { // Handle Delay if (!Int32.TryParse(args[2], out crashDelay)) { Console.WriteLine("Bad argument for -Delay"); return(false); } ConsolePrint($"Delay has been set to: {crashDelay}ms", ConsoleColor.DarkYellow); // if user is setting a custom delay value and specifying game.exe path if (args.Length > 3) { gameArgs = args[3]; } } // launch with extra CLI options return(Patcher.Start(args[0], crashDelay, gameArgs)); } // launch with default settings return(Patcher.Start()); }
private static bool HandlerArgs(string[] args) { int crashDelay = 25; if (args.Length > 0) { string gameArgs; if (args[0].Equals("-FixLocalSave", StringComparison.InvariantCultureIgnoreCase)) { // hande FixLocalSave SaveFilePatcher.PatchSaveFiles(args.ElementAtOrDefault(1), true); return(true); } else if (args[0].Equals("-FixLocalSaveNoQuests", StringComparison.InvariantCultureIgnoreCase)) { // hande FixLocalSave SaveFilePatcher.PatchSaveFiles(args.ElementAtOrDefault(1), false); return(true); } else if (args[0].Equals("-UpdateKeyBinds", StringComparison.InvariantCultureIgnoreCase)) { // hande UpdateKeyBinds KeyBindingSync.SyncKeyBindings(args.ElementAtOrDefault(1)); return(false); } else if ( args[0].Equals("-Delay", StringComparison.InvariantCultureIgnoreCase) || (args.Length > 1 && args[1].Equals("-Delay", StringComparison.InvariantCultureIgnoreCase)) ) { // user is setting a custom delay value if (args[0].Equals("-Delay", StringComparison.InvariantCultureIgnoreCase)) { gameArgs = string.Join(" ", args.Skip(2).Take(args.Length - 2)); if (HandleDelayArg(args.ElementAtOrDefault(1), out crashDelay)) { return(Patcher.Start(Constants.DIABLO_MAIN_EXE_FILE_NAME, crashDelay, gameArgs)); } else { return(false); } } // user is setting a custom delay value and specifying game.exe path else { if (HandleDelayArg(args.ElementAtOrDefault(2), out crashDelay)) { gameArgs = string.Join(" ", args.Skip(3).Take(args.Length - 3)); return(Patcher.Start(args[0], crashDelay, gameArgs)); } else { return(false); } } } else if (args[0].Trim().StartsWith("-")) { // user is specifying game args only gameArgs = string.Join(" ", args.Take(args.Length)); return(Patcher.Start(Constants.DIABLO_MAIN_EXE_FILE_NAME, crashDelay, gameArgs)); } else { // user is specifying game.exe path gameArgs = string.Join(" ", args.Skip(1).Take(args.Length - 1)); return(Patcher.Start(args[0], crashDelay, gameArgs)); } } else { // launch with default settings return(Patcher.Start()); } }