public static void UpdateHeroes(CurrentGameState state)
{
TickNow();
heroPoints[0].Clear();
heroPoints[1].Clear();
heroPoints[2].Clear();
if (ShouldBringToFront) ControlInput.BringHeroesToFront();
var src = GrabScreenGDI(new Rectangle(0, 78, 1024, 550));
var sourceImage = ChangePixelFormat(src, PixelFormat.Format24bppRgb);
var grayScale = Grayscale.CommonAlgorithms.BT709.Apply(sourceImage);
Tools.Thresholder.ThresholdValue = 128;
Tools.Thresholder.ApplyInPlace(grayScale);
var thresholded = Tools.GSToRgb.Apply(grayScale);
var bc = new BlobCounter();
bc.ProcessImage(thresholded);
var blobs = bc.GetObjectsInformation().ToList();
try
{
blobs =
blobs.Where(
o =>
o.Rectangle.Width > 80 && o.Rectangle.Width < 90 && o.Rectangle.Height < 20 &&
o.Rectangle.Height > 10).ToList();
var i = 0;
Bitmap bitmap = null;
foreach (var blob in blobs)
{
Tools.Cropper.Rectangle = new Rectangle(blob.Rectangle.X + 1,
blob.Rectangle.Y + 3,
blob.Rectangle.Width - 1,
4
);
var cropped = Tools.Cropper.Apply(src);
var imstat = new ImageStatistics(cropped);
//Console.WriteLine("R {0} G {1}", imstat.RedWithoutBlack.Median, imstat.GreenWithoutBlack.Median);
if (Math.Abs(imstat.RedWithoutBlack.Median - imstat.GreenWithoutBlack.Median) < 4)
{
state.Me.HeroScreenPosition = new System.Drawing.Point((int) blob.CenterOfGravity.X,
(int) blob.CenterOfGravity.Y + 150);
//state.Me.HeroHP = (float) (matches1.Length/120.0*100.0);
heroPoints[0].Add(
new OnScreenHero(
new System.Drawing.Point((int) blob.CenterOfGravity.X,
(int) blob.CenterOfGravity.Y + 150),
0));
}
else if (imstat.RedWithoutBlack.Median > imstat.GreenWithoutBlack.Median)
{
heroPoints[1].Add(
new OnScreenHero(
new System.Drawing.Point((int) blob.CenterOfGravity.X,
(int) blob.CenterOfGravity.Y + 150),
0));
}
else
{
heroPoints[2].Add(
new OnScreenHero(
new System.Drawing.Point((int) blob.CenterOfGravity.X,
(int) blob.CenterOfGravity.Y + 150),
0));
}
}
state.FriendlyHeroes = heroPoints[2].ToArray();
state.EnemyHeroes = heroPoints[1].ToArray();
}
catch (Exception e)
{
}
MainWindow.DebugReaderStats("Heroes:" + TickNow());
//DebugPlotVectorOnMap(state, null);
}