BoringHeroes.ScreenReader.UpdateTowers C# (CSharp) Метод

UpdateTowers() публичный статический Метод

public static UpdateTowers ( CurrentGameState state ) : void
state BoringHeroes.GameLogic.CurrentGameState
Результат void
        public static void UpdateTowers(CurrentGameState state)
        {
            TickNow();
            var unitPoints = new List<System.Drawing.Point>();
            try
            {
                //TickNow("unitSearchStart", dt);
                if (ShouldBringToFront) ControlInput.BringHeroesToFront();
                var src = GrabScreenGDI(new Rectangle(0, 100, 1024, 450));
                var sourceImage = ChangePixelFormat(src, PixelFormat.Format24bppRgb);
                Tools.ColorFilter.Red = new IntRange(100, 255);
                Tools.ColorFilter.Green = new IntRange(0, 10);
                Tools.ColorFilter.Blue = new IntRange(0, 10);
                var filtered = Tools.ColorFilter.Apply(sourceImage);
                var grayScale = Grayscale.CommonAlgorithms.BT709.Apply(filtered);
                var bc = new BlobCounter();
                bc.ProcessImage(filtered);
                var blobs = bc.GetObjectsInformation().ToList();

                blobs =
                    blobs.Where(
                        o =>
                            !o.Rectangle.IntersectsWith(state.GameMode.MinimapRectangle) && o.Rectangle.Width > 10 &&
                            o.Rectangle.Width < 100 && o.Rectangle.Height >= 3 && o.Rectangle.Height <= 5).ToList();
                var i = 0;
                var gc = Graphics.FromImage(sourceImage);
                foreach (var blob in blobs)
                {
                    var rc = new Rectangle(blob.Rectangle.X, blob.Rectangle.Y, 100, 20);
                    Tools.Cropper.Rectangle = rc;
                    var cut = Tools.Cropper.Apply(sourceImage);
                    var res = Tools.TemplateMatcher.ProcessImage(cut, templateTower);
                    foreach (var r in res)
                    {
                        gc.DrawRectangle(new Pen(Color.Magenta), rc.X, rc.Y, 100, 20);
                        unitPoints.Add(new System.Drawing.Point(rc.X - 12, 100 + rc.Y + 350));
                    }
                }
                sourceImage.Save("./debug/towaz.png");
            }
            catch (Exception e)
            {
            }
            state.TowersFound = unitPoints.ToArray();

            if (state.TowersFound.Length > 0) Console.WriteLine("TOWERS " + state.TowersFound.Length);
            MainWindow.DebugReaderStats("Towers:" + TickNow());
        }