示例#1
0
        public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            //Win condition - Check reward color and a pixel in the middle
            if (posColorManager.WinCondition1Col.Matches(Screen.GetPixel(posColorManager.WinCondition1Pos)) &&
                posColorManager.WinCondition2Col.Matches(Screen.GetPixel(posColorManager.WinCondition2Pos)))
            {
                return(StateManager.Instance[StateKind.Win]);
            }
            //Lose condition
            if (posColorManager.LoseCondition1Col.Matches(Screen.GetPixel(posColorManager.LoseCondition1Pos)) &&
                posColorManager.LoseCondition2Col.Matches(Screen.GetPixel(posColorManager.LoseCondition2Pos)))
            {
                return(StateManager.Instance[StateKind.Lose]);
            }
            //Network problems - send data again
            if (posColorManager.NetworkProblems1Col.Matches(
                    Screen.GetPixel(posColorManager.NetworkProblems1Pos)) &&
                posColorManager.NetworkProblems2Col.Matches(Screen.GetPixel(posColorManager.NetworkProblems2Pos)))
            {
                return(StateManager.Instance[StateKind.NetworkProblem]);
            }
            //Unstable network connection
            if (posColorManager.UnstableConnection1Col.Matches(
                    Screen.GetPixel(posColorManager.UnstableConnection1Pos)) &&
                posColorManager.UnstableConnection1Col.Matches(Screen.GetPixel(posColorManager.UnstableConnection2Pos)))
            {
                return(StateManager.Instance[StateKind.UnstableNetwork]);
            }

            return(StateManager.Instance[StateKind.LastRuneFarming]);
        }
示例#2
0
 /// <summary>
 /// Validate command.
 /// </summary>
 private static bool IsValidCommand(string command, ModeConfig config)
 {
     if (config.Commands.ContainsKey(command))
     {
         return(true);
     }
     return(false);
 }
示例#3
0
        public override IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            stats.Refills += StartNewRound(posColorManager, config.RefreshEnergy);
            stats.SuccessfulRuns++;
            stats.Runs++;
            stats.Print();

            return(StateManager.Instance[StateKind.LastRuneFarming]);
        }
示例#4
0
        public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            //Unknown scroll, rainbowmon, mystical scroll, ...
            //sendMouseLeftclick(new Point(Randomize(90, 890), Randomize(15, 860)));
            Mouse.LeftClick(posColorManager.GetMiscButtonPos);
            ExecutionDelay.DelayFor(1500, 300);
            stats.MiscDrops++;

            return(StateManager.Instance[StateKind.AfterWin]);
        }
示例#5
0
        public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            Console.WriteLine($"Position X is: {Cursor.Position.X} Position Y is: {Cursor.Position.Y}"
                              + "\n R:" + Screen.GetPixel(new Point(Cursor.Position.X, Cursor.Position.Y)).R
                              + "\n G: " + Screen.GetPixel(new Point(Cursor.Position.X, Cursor.Position.Y)).G
                              + "\n B: " + Screen.GetPixel(new Point(Cursor.Position.X, Cursor.Position.Y)).B +
                              "\n");
            ExecutionDelay.DelayFor(1500);

            return(StateManager.Instance[StateKind.Debug]);
        }
示例#6
0
        public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            //Perform a double click
            Mouse.DoubleLeftClick(posColorManager.DoubleClickPos);
            ExecutionDelay.DelayFor(2000, 300);

            //Check whether it is a rune drop or not
            return(posColorManager.CheckRuneDropCol.Matches(Screen.GetPixel(posColorManager.CheckRuneDropPos))
                ? StateManager.Instance[StateKind.RuneDrop]
                : StateManager.Instance[StateKind.NoRuneDrop]);
        }
示例#7
0
        public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            //Check whether it is a good rune (6* || legend)
            var isGoodRune =
                posColorManager.CheckSixStarRuneCol.Matches(Screen.GetPixel(posColorManager.CheckSixStarRunePos)) ||
                posColorManager.CheckLegendCol.Matches(Screen.GetPixel(posColorManager.CheckLegendPos));

            return(isGoodRune
                ? StateManager.Instance[StateKind.GoodRuneDrop]
                : StateManager.Instance[StateKind.BadRuneDrop]);
        }
示例#8
0
        public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            //Bad rune
            stats.BadRuneCount++;
            //Purple 5* rune: take screenshot in order to check the sell heuristic quality
            //if ((checkRuneName(230, 130, 237) && MatchedColor(221, 228, 226, GetPixel(new Point(657, 366)))))
            //    take_screenshot(SUBPATH, bad_rune_count);
            Mouse.LeftClick(posColorManager.SellRuneButtonPos);
            ExecutionDelay.DelayFor(1200, 300);
            //Is it a 5* or violet rune? Confirm sell button
            Mouse.LeftClick(posColorManager.ConfirmSellRuneButtonPos);
            ExecutionDelay.DelayFor(3500, 300);

            return(StateManager.Instance[StateKind.AfterWin]);
        }
示例#9
0
        public override IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            Mouse.LeftClick(posColorManager.NoContinueButtonPos);
            ExecutionDelay.DelayFor(3500, 300);
            Mouse.LeftClick(posColorManager.ReplayButtonPos);
            ExecutionDelay.DelayFor(1500, 300);

            stats.Refills += StartNewRound(posColorManager, config.RefreshEnergy);

            stats.LossCount++;
            stats.Runs++;
            stats.Print();

            return(StateManager.Instance[StateKind.LastRuneFarming]);
        }
示例#10
0
        public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            //Good rune
            stats.GoodRuneCount++;
            if (stats.GoodRuneCount != null)
            {
                Screen.TakeScreenshot(Environment.ExpandEnvironmentVariables(Settings.Default.Rootpath),
                                      stats.GoodRuneCount.Value);
            }

            ExecutionDelay.DelayFor(1200, 300);
            Mouse.LeftClick(posColorManager.GetRuneButtonPos);
            ExecutionDelay.DelayFor(1200, 300);

            return(StateManager.Instance[StateKind.AfterWin]);
        }
示例#11
0
        public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            Mouse.LeftClick(posColorManager.ResendWinButtonPos);

            return(StateManager.Instance[StateKind.LastRuneFarming]);
        }
示例#12
0
        /// <summary>
        /// Validate commands string and convert into individual items.
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static List <string> ParseCommands(string input, ModeConfig mode)
        {
            // Initialise new list
            List <string> _cmdlist = new List <string>();

            // Check for shell calls with parameters
            if (IsValidFullInvoke(input))
            {
                _cmdlist.Add(input);
                return(_cmdlist);
            }

            // Simulate current mode and mode switches
            ModeConfig _curMode = mode;

            // Check each command item
            foreach (string _cmd in input.Trim().Split(' '))
            {
                // Ignore empty entries
                if (_cmd == "")
                {
                    continue;
                }
                // Check for batch commands
                if (IsValidBatchKey(_cmd))
                {
                    _cmdlist.Add(_cmd);
                    continue;
                }

                // Check for mode changes
                if (IsValidModeSwitch(_cmd))
                {
                    _cmdlist.Add(_cmd);
                    _curMode = TerminalMode.GetMode(_cmd);
                    continue;
                }

                // Check for invoke command
                if (IsValidInvoke(_cmd))
                {
                    _cmdlist.Add(_cmd);
                    continue;
                }

                // Check for valid macro
                if (IsValidMacro(_cmd))
                {
                    MacroItem _macro = Program.Config.Macros[_cmd];
                    // Check for infinite recursion
                    if (_macro.Command.Contains(_cmd))
                    {
                        throw new BadConfigException($"Macro {_cmd} references self. Unable to resolve.");
                    }
                    // Generate mode key
                    string _mode = $"{Program.Config.Program.ModeKey}{_macro.SetMode} ";

                    // Recursively resolve macro
                    _cmdlist.AddRange(ParseCommands(_mode + _macro.Command, _curMode));
                    continue;
                }

                // Check for valid command
                if (IsValidCommand(_cmd, _curMode))
                {
                    _cmdlist.Add(_cmd);
                    continue;
                }

                // Write to terminal of invalid command
                Terminal.WriteError(
                    $"'{_cmd}' is not a valid command in '{TerminalMode.GetModeName(_curMode)} Mode'."
                    );

                // No valid command has been found.
                // If not ignoring, return null
                if (!Program.Config.Program.SkipInvalidCommands)
                {
                    return(null);
                }
            }

            return(_cmdlist);
        }
示例#13
0
 /// <summary>
 /// Return the string name of the mode given.
 /// </summary>
 public static string GetModeName(ModeConfig mode)
 {
     return(Program.Config.Modes.Keys.Where(k => Program.Config.Modes[k] == mode).FirstOrDefault());
 }
示例#14
0
        public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats)
        {
            ExecutionDelay.DelayFor(1500);

            return(StateManager.Instance[StateKind.InitialRuneFamring]);
        }
示例#15
0
 public abstract IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats);