public OsrsScanData SearchScreenForColors(List <Color> colors, OsrsImage image, ScanBoundaries boundaries = null) { LoggingUtility.WriteToAuditLog("Starting Color Search"); OsrsScanData response = null; var osrsWindow = HwndInterface.GetHwndFromTitle("Old School RuneScape"); var windowSize = HwndInterface.GetHwndSize(osrsWindow); var windowLocation = HwndInterface.GetHwndPos(osrsWindow); HwndInterface.ActivateWindow(osrsWindow); var screenshot = TakeScreenshot(); #region Scan Boundaries Calculation if (boundaries == null) { boundaries = new ScanBoundaries(); boundaries.MinX = windowLocation.X < 0 ? 0 : windowLocation.X; boundaries.MinY = windowLocation.Y < 0 ? 0 : windowLocation.Y; boundaries.MaxX = (windowLocation.X + windowSize.Width) > screenshot.Width ? screenshot.Width : (windowLocation.X + windowSize.Width); boundaries.MaxY = (windowLocation.Y + windowSize.Height) > screenshot.Height ? screenshot.Height : (windowLocation.Y + windowSize.Height); } #endregion response = FindColorsInImage(colors, screenshot, boundaries); //response = FindColorsInImage(colors, image.ImageBitmap, new ScanBoundaries { MinX = 0, MinY = 0, MaxX = image.ImageBitmap.Width, MaxY = image.ImageBitmap.Height }); LoggingUtility.WriteToAuditLog("Color Search Complete"); return(response); }
public static List <OsrsImage> ToList(this OsrsImage img) { var result = new List <OsrsImage>(); result.Add(img); return(result); }
public void UseToolOnResources(List <OsrsImage> resources, OsrsImage tool, int pauseTime = 2000) { resources.Add(tool); #region Determine Scan Boundaries var scanBounds = new ScanBoundaries(); var invLoc = MenuControls.Inventory.MatchLocations.FirstOrDefault(); scanBounds.MinX = invLoc.X; scanBounds.MinY = invLoc.Y; scanBounds.MaxX = invLoc.X + MenuControls.Inventory.ImageData.ImageBitmap.Width; scanBounds.MaxY = invLoc.Y + MenuControls.Inventory.ImageData.ImageBitmap.Height; #endregion IoSimulator.ClickLocation(MenuControls.PackContents.MatchLocations.FirstOrDefault()); var resourceScanData = _imageProcessor.SearchScreenForImages(resources, scanBounds); var toolData = resourceScanData.Where(x => x.ImageData.ImageName == tool.ImageName).FirstOrDefault(); if (toolData != null) { var toolLocation = toolData.MatchLocations.FirstOrDefault(); foreach (var r in resourceScanData.Where(x => x.ImageData.ImageName != tool.ImageName)) { IoSimulator.ClickLocation(toolLocation); IoSimulator.PauseThread(2000); IoSimulator.ClickLocation(r.MatchLocations.FirstOrDefault()); IoSimulator.PauseThread(2000); IoSimulator.ClickLocation(MenuControls.PerformActionOnAll); IoSimulator.PauseThread(pauseTime * r.MatchLocations.Count); } } else { // tool not in inventory } }
public List <Color> SaveColorData(OsrsImage osrsImage) { var result = new List <Color>(); var colorList = new List <OsrsColor>(); // The X and Y on the inner loops represent the coordinates on the bitmap that we are trying to find in the Screenshot for (int innerX = 0; innerX < osrsImage.ImageBitmap.Width; innerX++) { for (int innerY = 0; innerY < osrsImage.ImageBitmap.Height; innerY++) { var imgColor = osrsImage.ImageBitmap.GetPixel(innerX, innerY); result.Add(imgColor); var cData = new OsrsColor() { ImageName = osrsImage.ImageName, ColorName = imgColor.Name, A = imgColor.A, R = imgColor.R, G = imgColor.G, B = imgColor.B }; if (!colorList.Where(x => x.ImageName == cData.ImageName && x.ColorName == cData.ColorName && x.A == cData.A && x.R == cData.R && x.G == cData.G && x.B == cData.B).Any()) { colorList.Add(cData); } } } LoggingUtility.WriteToColorLog(colorList, osrsImage.ImageName); return(result); }