Example #1
0
        /// <summary>
        /// Searching for target according to user input
        /// </summary>
        /// <param name="settingsTarget">Advanced Settings target select</param>
        /// <returns></returns>
        public static IEnumerable <int> SeTarget(int settingsTarget)
        {
            if (settingsTarget == 2)
            {
                // Eagle Artillerty search
                foreach (var f in SearchTarget(EagleArtillery.Find(CacheBehavior.ForceScan)))
                {
                    yield return(f);
                }

                // If not found switch to thownhall
                if (targetIsSet == false)
                {
                    foreach (var f in SearchTarget(TownHall.Find(CacheBehavior.ForceScan)))
                    {
                        yield return(f);
                    }
                }
            }
            else if (settingsTarget == 0)
            {
                // Townhall search
                foreach (var f in SearchTarget(TownHall.Find(CacheBehavior.ForceScan)))
                {
                    yield return(f);
                }

                // If not found switch to the core of the base
                if (targetIsSet == false)
                {
                    AllInOnePushDeploy.Target = AllInOnePushDeploy.Core;
                    targetIsSet = true;
                }
            }
            else if (settingsTarget == 1)
            {
                // Dark Elixir Storage search
                foreach (var f in SearchTarget(DarkElixirStorage.Find(CacheBehavior.ForceScan)?.FirstOrDefault()))
                {
                    yield return(f);
                }

                // If not found switch to townhall
                if (targetIsSet == false)
                {
                    foreach (var f in SearchTarget(TownHall.Find(CacheBehavior.ForceScan)))
                    {
                        yield return(f);
                    }
                }
            }

            // If not found both switch to the core of the base
            if (targetIsSet == false)
            {
                AllInOnePushDeploy.Target = AllInOnePushDeploy.Core;
            }
        }
        void CreateDebugImages()
        {
            List <InfernoTower>  infernos       = InfernoTower.Find(CacheBehavior.Default).ToList();
            List <WizardTower>   wizTowers      = WizardTower.Find(CacheBehavior.Default).ToList();
            List <ArcherTower>   archerTowers   = ArcherTower.Find(CacheBehavior.Default).ToList();
            List <ElixirStorage> elixirStorages = ElixirStorage.Find(CacheBehavior.Default).ToList();
            EagleArtillery       eagle          = EagleArtillery.Find(CacheBehavior.Default);

            var d             = DateTime.UtcNow;
            var debugFileName = $"Dragon Deploy {d.Year}-{d.Month}-{d.Day} {d.Hour}-{d.Minute}-{d.Second}-{d.Millisecond}";

            using (Bitmap canvas = Screenshot.Capture())
            {
                Screenshot.Save(canvas, $"{debugFileName}_1");

                //Draw some stuff on it.
                Visualize.Axes(canvas);
                Visualize.Grid(canvas, redZone: true);
                Visualize.Target(canvas, mainTarget.Center, 40, Color.Red);
                Visualize.Target(canvas, deFunnelPoints[0], 40, Color.White);
                Visualize.Target(canvas, deFunnelPoints[1], 40, Color.White);
                Visualize.Target(canvas, balloonFunnelPoints[0], 40, Color.Pink);
                Visualize.Target(canvas, balloonFunnelPoints[1], 40, Color.Pink);

                for (int i = 0; i < infernos.Count(); i++)
                {
                    Visualize.Target(canvas, infernos.ElementAt(i).Location.GetCenter(), 30, Color.Orange);
                }

                for (int i = 0; i < airDefenses.Count(); i++)
                {
                    Visualize.Target(canvas, airDefenses.ElementAt(i).Location.GetCenter(), 30, Color.Cyan);
                }

                for (int i = 0; i < wizTowers.Count(); i++)
                {
                    Visualize.Target(canvas, wizTowers.ElementAt(i).Location.GetCenter(), 30, Color.Purple);
                }

                for (int i = 0; i < archerTowers.Count(); i++)
                {
                    Visualize.Target(canvas, archerTowers.ElementAt(i).Location.GetCenter(), 30, Color.RosyBrown);
                }

                if (eagle != null)
                {
                    Visualize.Target(canvas, eagle.Location.GetCenter(), 30, Color.YellowGreen);
                }

                Visualize.Target(canvas, mainTarget.DeployGrunts, 40, Color.Beige);

                Screenshot.Save(canvas, $"{debugFileName}_2");
            }

            //Write a text file that goes with all images that shows what is in the image.
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < airDefenses.Count(); i++)
            {
                sb.AppendLine($"Air Defense {i + 1} - Level:{airDefenses.ElementAt(i).Level}");
            }

            for (int i = 0; i < infernos.Count(); i++)
            {
                sb.AppendLine($"Inferno Tower {i + 1} - Level:{infernos.ElementAt(i).Level}");
            }

            for (int i = 0; i < wizTowers.Count(); i++)
            {
                sb.AppendLine($"Wizard Tower {i + 1} - Level:{wizTowers.ElementAt(i).Level}");
            }

            for (int i = 0; i < archerTowers.Count(); i++)
            {
                sb.AppendLine($"Archer Tower {i + 1} - Level:{archerTowers.ElementAt(i).Level}");
            }

            if (eagle != null)
            {
                sb.AppendLine($"Eagle Artillery 1 - Level:{eagle.Level}");
            }

            //System.IO.File.WriteAllText($@"C:\RaccoonBot\Debug Screenshots\{debugFileName}_3.txt", sb.ToString());

            Log.Info($"{Tag} Deploy Debug Image Saved!");
        }