Example #1
0
        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());
        }
Example #2
0
        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());
            }
        }