Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public static List <OsrsImage> ToList(this OsrsImage img)
        {
            var result = new List <OsrsImage>();

            result.Add(img);

            return(result);
        }
Ejemplo n.º 3
0
        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
            }
        }
Ejemplo n.º 4
0
        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);
        }