private bool IsUsingCorrectTrait(Bitmap bmpScreenCapture, System.Drawing.Point p, int specIndex, int traitIndex, int traitValue) { int brightestIndex = -1; ulong brightestColor = 0; for (int ii = 0; ii < 3; ++ii) { double x = hp.TraitOffsetX + traitIndex * hp.TraitSpacingX; double y = hp.TraitOffsetY + specIndex * hp.TraitSpacingY; y += ii * hp.TraitChoiceSpacing; int border = 7; var rect = new System.Drawing.Rectangle(p.X + (int)x + border, p.Y + (int)y + border, (int)hp.TraitIconSize - border * 2, (int)hp.TraitIconSize - border * 2); var screenCaptureRegion = bmpScreenCapture.Clone(rect, bmpScreenCapture.PixelFormat); ulong brightness = ImageUtils.AverageBrightness(screenCaptureRegion); if (brightness > brightestColor) { brightestColor = brightness; brightestIndex = ii; } //for debugging: //screenCaptureRegion.Save(string.Format("TraitIcons/spec{0}-trait{1}-{2}.bmp", specIndex, traitIndex, ii), System.Drawing.Imaging.ImageFormat.Bmp); screenCaptureRegion.Dispose(); } return(traitValue == brightestIndex); }