public async void Run(IProgress <Tuple <Framebuffer, Point?, BonusMask> > progress, CancellationToken ct) { while (true) { await buffer.RefreshAsync(ct); if (prevBuffer == null) { prevBuffer = new byte[buffer.Data.Length]; currBuffer = new byte[buffer.Data.Length]; } Array.Copy(buffer.Data, currBuffer, buffer.Data.Length); Point? point = null; BonusMask bonus = null; if (CheckInApp(buffer)) { point = FindRedOne(buffer); } bonus = FindBonus(buffer); progress.Report(Tuple.Create(buffer, point, bonus)); Array.Copy(currBuffer, prevBuffer, currBuffer.Length); ct.ThrowIfCancellationRequested(); } }
protected void ReadBonusImages() { var rectNormal = new Rectangle(188, 580, 180, 180); var rectExtra = new Rectangle(188, 470, 180, 180); var files = new[] { new { Type = BonusType.Bpc, FileName = "BPC Bonus.png", IsExtra = false }, new { Type = BonusType.Bps, FileName = "BPS Bonus.png", IsExtra = false }, new { Type = BonusType.FasterResearch, FileName = "Faster Research.png", IsExtra = false }, new { Type = BonusType.FreeBacteria, FileName = "Free Bacteria.png", IsExtra = false }, new { Type = BonusType.FreeDiamond, FileName = "Free Diamond.png", IsExtra = false }, new { Type = BonusType.BpcExtra, FileName = "BPC Bonus Extra.png", IsExtra = true }, new { Type = BonusType.BpsExtra, FileName = "BPS Bonus Extra.png", IsExtra = true }, new { Type = BonusType.FasterResearchExtra, FileName = "Faster Research Extra.png", IsExtra = true }, new { Type = BonusType.FreeBacteriaExtra, FileName = "Free Bacteria Extra.png", IsExtra = true }, new { Type = BonusType.FreeDiamondExtra, FileName = "Free Diamond Extra.png", IsExtra = true } }; bonusMasks = new List <BonusMask>(); foreach (var file in files) { var image = Image.FromFile("Images//" + file.FileName) as Bitmap; var mask = new BonusMask(file.IsExtra ? rectExtra : rectNormal) { ClickNormalPos = file.IsExtra ? new Point(550, 1400) : new Point(550, 1270), ClickExtraPos = file.IsExtra ? new Point(550, 1230) : (Point?)null, Type = file.Type }; for (int n = 0; n < BonusMask.PixelCount; n++) { var p = mask.GetCoord(n); mask.Pixels[n] = image.GetPixel(p.X, p.Y); } bonusMasks.Add(mask); } }