Пример #1
0
 public ProcessingContext(IMouse m, IKeyboard k, IVDController c)
 {
     mouse        = m;
     keyboard     = k;
     vdcontroller = c;
     stdClk       = new StandardClicks(this);
 }
Пример #2
0
        public void Process()
        {
            var items = upgradeBuildingFinder.Processing();

            foreach (var itm in items)
            {
                if (itm.x > 200)
                {
                    if (!StandardClicks.isRegionGood(itm))
                    {
                        context.InfoLog($"found too far skipp {itm.extraInfo} {itm.x}/{itm.y}");
                        continue;
                    }
                    context.InfoLog($"found {itm.extraInfo} {itm.x}/{itm.y}");
                    var cmdres      = ActionStructureNameReco.GetNameAtPoint(context, itm);
                    var numBuilders = NumBuilders(context, cmdres);
                    if (numBuilders == 0)
                    {
                        context.InfoLog($"No builder");
                        return;
                    }
                    Thread.Sleep(1000);
                    var nameLevel = ActionStructureNameReco.GetStructureName(itm, cmdres, context);
                    if (nameLevel == null)
                    {
                        cmdres    = ActionStructureNameReco.GetNameAtPoint(context, itm);
                        nameLevel = ActionStructureNameReco.GetStructureName(itm, cmdres, context);
                        if (nameLevel == null)
                        {
                            context.InfoLog($"failed reco namelevel {itm.extraInfo} {itm.x}/{itm.y}");
                            continue;
                        }
                    }
                    var goodNames = ActionStructureNameReco.GetGoodNames();

                    foreach (var gname in goodNames)
                    {
                        if (gname.ToLower() == nameLevel.name.ToLower())
                        {
                            context.DebugLog($"found match name {gname}");
                            //context.MoveMouseAndClick(itm);
                            //Thread.Sleep(1000);
                            var upgGrood = canUpgrade(context, numBuilders);
                            if (upgGrood != null && upgGrood.extraInfo.Contains("Good"))
                            {
                                context.MoveMouseAndClick(upgGrood);
                                Upgraded();
                                numBuilders--;
                            }
                            break;
                        }
                    }
                }
            }
        }
Пример #3
0
        public List <CommandInfo> Processing(CurBaseType baseType)
        {
            string filterby = "";

            switch (baseType)
            {
            case CurBaseType.Unknown:
                return(new List <CommandInfo>());

            case CurBaseType.PrimaryBase:
                filterby = "primary";
                break;

            case CurBaseType.SecondaryBase:
                filterby = "secondary";
                break;
            }
            var res = ldr.Processing(clk =>
            {
                return(clk.ImageName.Contains(filterby));
            });

            foreach (var clk in res)
            {
                var yoff = 0;
                if (clk.extraInfo.IndexOf("_drop") > 0)
                {
                    yoff = 10;
                }
                if (clk.extraInfo.Contains("primary_grave.png"))
                {
                    if (!StandardClicks.isRegionGood(clk))
                    {
                        context.InfoLog($"Bad click for gravy {clk.extraInfo} {clk.x}/{clk.y}");
                        continue;
                    }
                }
                if (clk.y > 700)
                {
                    context.InfoLog($"Bad click for {clk.extraInfo} {clk.x}/{clk.y}");
                    continue;
                }
                context.MoveMouseAndClick(clk.x, clk.y + yoff);
            }
            return(res);
        }
Пример #4
0
        public void Process()
        {
            var numBuilders = getNumBuilders();

            if (numBuilders == 0)
            {
                context.InfoLog($"No builder");
                return;
            }
            const int SLEEPS = 5;
            var       junks  = junkFinder.Processing();

            foreach (var junk in junks)
            {
                if (StandardClicks.isRegionGood(junk) && junk.decision == "true")
                {
                    context.DebugLog($"Found {junk.extraInfo} {junk.cmpRes}");
                    context.MoveMouseAndClick(junk);
                    Thread.Sleep(1000);
                    var btn = buttons.ProcessingWithRetryTop1();
                    if (btn != null && btn.decision == "true")
                    {
                        context.MoveMouseAndClick(btn);
                        Thread.Sleep(1000);
                        int found = 0;
                        for (int i = 0; i < 30; i += SLEEPS)
                        {
                            btn = buttons.ProcessingWithRetryTop1();
                            if (btn != null && btn.decision == "true" && btn.extraInfo.Contains("cancelremove"))
                            {
                                found++;
                            }
                            else
                            {
                                break;
                            }
                        }
                        if (found == 0)
                        {
                            context.DebugLog($"Wait not found, sleep 15s");
                            Thread.Sleep(1000 * 15);
                        }
                    }
                }
            }
        }
Пример #5
0
        public static CommandInfo canUpgrade(ProcessingContext context, int numBuilders)
        {
            context.MouseMouseTo(0, 0);
            string imgName = StandardClicks.GetTempDirFile("tempUpgradeBuildingUpg.png");

            Utils.doScreenShoot(imgName);
            string[] resultTypes = new[] { "Good", "Bad" };
            string[] itemTypes   = new[] { "Gold", "Eli" };
            var      sb          = new StringBuilder();

            sb.Append($"-input {imgName} ");
            const int actx = 200;
            const int acty = 630;

            if (numBuilders > 0)
            {
                foreach (var rt in resultTypes)
                {
                    foreach (var itm in itemTypes)
                    {
                        sb.Append($"-name {itm}_{rt} -matchRect {actx},{acty},650,105_200 -match data\\check\\upgrade{itm}{rt}.png 40 ");
                    }
                }
            }
            var res = context.GetAppInfo(sb.ToString());

            res.ForEach(r =>
            {
                r.x += actx;
                r.y += acty;
            });

            if (context != null)
            {
                foreach (var r in res)
                {
                    context.DebugLog("           DEBUGRM " + r);
                }
            }
            return(res.Where(r => r.decision == "true").OrderBy(r => r.cmpRes).FirstOrDefault());
        }
Пример #6
0
        public void RearmAll()
        {
            var ldr = new AutoResourceLoader(context, StandardClicks.GetTempDirFile("tmpRearmAll.png"),
                                             getCheckImgs());

            var cmd = ldr.ProcessingWithRetryTop1(r => r.extraInfo != null && r.extraInfo.Contains("townhall"));

            if (cmd == null)
            {
                context.InfoLog("Warning, didn't find townhall");
                return;
            }
            context.InfoLog($"Found townhall clicking {cmd.extraInfo} {cmd.cmpRes} {cmd.decision}");
            context.MoveMouseAndClick(cmd);
            Thread.Sleep(1000);
            context.InfoLog($"done wait, try find rearmall");
            var cmds = ldr.ProcessingWithRetry();

            cmd = cmds.Where(c => c.decision == "true" && c.extraInfo.Contains("rearmall")).OrderBy(c => c.cmpRes).FirstOrDefault();
            //cmd = cmds.FirstOrDefault(c => c.extraInfo.Contains("rearmall") && c.cmpRes < 30000);
            if (cmd == null)
            {
                context.InfoLog("Warning, didn't find rearm all");
                return;
            }
            context.InfoLog($"Found rearm all {cmd.extraInfo} {cmd.cmpRes} {cmd.decision}");
            context.MoveMouseAndClick(cmd);

            cmds = ldr.ProcessingWithRetry(r => r.extraInfo.Contains("ok_bigv1"));
            cmd  = cmds.FirstOrDefault();
            if (cmd == null)
            {
                context.InfoLog("Warning, didn't find ok button");
                return;
            }
            context.InfoLog($"Found rearm all ok button {cmd.extraInfo} {cmd.cmpRes} {cmd.decision}");
            context.MoveMouseAndClick(cmd);
        }