Ejemplo n.º 1
0
        private static void TestRedText()
        {
            var input   = @"C:\Users\david\OneDrive\Documents\WFChatParser\ErrorImages\Screenshot (175).png";
            var cleaner = new ImageCleaner();

            cleaner.SaveChatColors(input, "test.png");
            cleaner.SaveSoftMask(input, "test2.png");
            var cp    = new ChatParser();
            var lines = cp.ParseChatImage(new Bitmap(input), false, false, 50);
        }
Ejemplo n.º 2
0
        //private static void PrepareRivens()
        //{
        //    var r = new RivenCleaner();
        //    var p = new RivenParser();

        //    var totalSw = new Stopwatch();
        //    var opSw = new Stopwatch();
        //    var rivens = new List<Riven>();
        //    foreach (var riven in Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs\").Where(f => !f.EndsWith("_white.png") && f.EndsWith(".png")))
        //    {
        //        Console.WriteLine("\n" + riven.Substring(riven.LastIndexOf("\\") + 1));
        //        totalSw.Restart();
        //        opSw.Restart();
        //        r.PrepareRivenFromFullscreenImage(riven, riven + "_white.png");
        //        Console.WriteLine("cleanup: " + opSw.Elapsed.TotalSeconds + " seconds");
        //        opSw.Restart();
        //        var result = p.ParseRivenImage(riven + "_white.png");
        //        rivens.Add(result);
        //        Console.WriteLine("Parsed: " + opSw.Elapsed.TotalSeconds + " seconds");
        //        opSw.Restart();
        //        Console.WriteLine(JsonConvert.SerializeObject(result));
        //        Console.WriteLine("Total: " + totalSw.Elapsed.TotalSeconds + " seconds");
        //    }

        //    Console.WriteLine("\n");
        //    Console.WriteLine(JsonConvert.SerializeObject(rivens));
        //}

        private static void FixImages()
        {
            var cleaner = new ImageCleaner();

            cleaner.SaveChatColors(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\input.png", @"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\input_white.png");
            var p = new ChatParser();
            var r = p.ParseChatImage(new Bitmap(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\input.png"));

            foreach (var line in r)
            {
                Console.WriteLine(line.RawMessage);
            }
        }
Ejemplo n.º 3
0
        private static void VisualizeClickpoints()
        {
            var cp   = new ChatParser();
            var r    = cp.ParseChatImage(new Bitmap(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\bad.png"));
            var list = new CoordinateList();

            r.Where(r1 => r1 is ChatMessageLineResult).Cast <ChatMessageLineResult>().SelectMany(r1 => r1.ClickPoints).ToList().ForEach(p => list.Add(p.X, p.Y));
            var ic = new ImageCleaner();

            ic.SaveClickMarkers(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Inputs\bad.png",
                                Path.Combine(outputDir, "bad_clicks.png"),
                                list);
        }
Ejemplo n.º 4
0
        private static int VerifyNoErrors(int verboseLevel = 0, bool fastFail = false, int xOffset = 4)
        {
            var trainingImages = new List <string>();

            Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Validation Inputs").Where(f => f.EndsWith(".png")).ToList().ForEach(f => trainingImages.Add(f));
            //Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Notice Me Senpai\Char Spacing\").Where(f => f.EndsWith(".png")).ToList().ForEach(f => trainingImages.Add(f));
            var trainingText = new List <string>();

            Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Validation Inputs").Where(f => f.EndsWith(".txt")).ToList().ForEach(f => trainingText.Add(f));
            //Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Notice Me Senpai\Char Spacing\").Where(f => f.EndsWith(".txt")).ToList().ForEach(f => trainingText.Add(f));
            //var trainingImages = Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\OCR Test Inputs\").Where(f => f.EndsWith(".png")).ToArray();
            //var trainingText = Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\OCR Test Inputs\").Where(f => f.EndsWith(".txt")).ToArray();
            //var trainingImages = Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Notice Me Senpai\Char Spacing\").Where(f => f.EndsWith("e1.png")).ToArray();
            //var trainingText = Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Notice Me Senpai\Char Spacing\").Where(f => f.EndsWith("e1.txt")).ToArray();

            var errorCount = 0;

            for (int k = 0; k < trainingImages.Count; k++)
            {
                var fileInfo = new FileInfo(trainingText[k]);
                Console.WriteLine($"=={fileInfo.Name}==");
                var masterKeyFile  = trainingImages[k];
                var correctResults = File.ReadAllLines(trainingText[k]).Select(line => line.Trim()).ToArray();
                var c       = new ChatParser();
                var cleaner = new ImageCleaner();
                cleaner.SaveChatColors(masterKeyFile, Path.Combine(outputDir, (new FileInfo(masterKeyFile)).Name));
                var sw = new Stopwatch();
                sw.Restart();
                var result = c.ParseChatImage(new Bitmap(masterKeyFile), xOffset, false, false).Select(i => i.RawMessage.Trim()).ToArray();
                Console.WriteLine("Parsed in: " + sw.Elapsed.TotalSeconds + " seconds");
                sw.Stop();

                Console.WriteLine("Expected");
                Console.WriteLine("Recieved");
                Console.WriteLine();

                if (correctResults.Length != result.Length)
                {
                    errorCount += correctResults.Length;
                    return(errorCount);
                }
                for (int i = 0; i < result.Length; i++)
                {
                    if (verboseLevel >= 1)
                    {
                        Console.WriteLine(correctResults[i]);
                        Console.WriteLine(result[i]);
                    }
                    if (verboseLevel >= 2)
                    {
                        if (Enumerable.SequenceEqual(correctResults[i], result[i]))
                        {
                            Console.WriteLine("They match!");
                        }
                    }
                    if (!String.Equals(correctResults[i].Trim(), result[i]))
                    {
                        if (verboseLevel >= 2)
                        {
                            if (correctResults[i].Length == result[i].Length)
                            {
                                for (int j = 0; j < correctResults[i].Length; j++)
                                {
                                    if (result[i][j] != correctResults[i][j])
                                    {
                                        Console.WriteLine("^");
                                        break;
                                    }
                                    else
                                    {
                                        Console.Write(" ");
                                    }
                                }
                            }
                            Console.WriteLine("They don't match");
                        }
                        errorCount++;
                    }

                    if (verboseLevel >= 2)
                    {
                        Console.WriteLine();
                    }
                }

                if (errorCount > 0 && fastFail)
                {
                    return(errorCount);
                }
            }

            if (verboseLevel >= 2)
            {
                Console.WriteLine("Errors: " + errorCount);
            }
            return(errorCount);
        }
Ejemplo n.º 5
0
        private static void TestRivenStuff()
        {
            var c  = new GameCapture();
            var rp = new RivenParser();
            var ss = new ScreenStateHandler();

            var image = "test.png";
            var b     = c.GetFullImage();

            b.Save("test.png");
            b.Dispose();

            var p       = new ChatParser();
            var results = p.ParseChatImage(new Bitmap(image), true, true, 27).Where(r => r is ChatMessageLineResult).Cast <ChatMessageLineResult>();

            var clean  = new ImageCleaner();
            var coords = new CoordinateList();

            results.SelectMany(r => r.ClickPoints).ToList().ForEach(i => coords.Add(i.X, i.Y));
            clean.SaveClickMarkers("test.png", "test_marked.png", coords);

            var mouse = new MouseHelper();

            var index = 0;
            var sw    = new Stopwatch();

            foreach (var clr in results.Where(r => r is ChatMessageLineResult).Cast <ChatMessageLineResult>())
            {
                foreach (var click in clr.ClickPoints)
                {
                    b = c.GetFullImage();
                    if (ss.IsChatOpen(b))
                    {
                        //Hover over riven
                        System.Threading.Thread.Sleep(17);
                        mouse.MoveTo(click.X, click.Y);

                        //Click riven
                        System.Threading.Thread.Sleep(17);
                        mouse.Click(click.X, click.Y);
                        System.Threading.Thread.Sleep(17);
                    }

                    //Move mouse out of the way
                    mouse.MoveTo(0, 0);
                    sw.Restart();
                    var tries = 0;
                    while (true)
                    {
                        try
                        {
                            var bitmap2 = c.GetFullImage();
                            if (ss.GetScreenState(bitmap2) == ScreenState.RivenWindow)
                            {
                                var crop = rp.CropToRiven(bitmap2);
                                crop.Save(index.ToString() + ".png");
                                crop.Dispose();
                                bitmap2.Dispose();
                                break;
                            }
                            bitmap2.Dispose();
                        }
                        catch { }
                        tries++;
                        if (tries > 15)
                        {
                            Console.WriteLine("Riven not detected! Abort!");
                            break;
                        }
                    }
                    Console.WriteLine("Got \"riven\" in " + sw.Elapsed.TotalSeconds + " seconds");

                    //Hover over exit
                    System.Threading.Thread.Sleep(33);
                    mouse.MoveTo(3816, 2013);

                    //Click exit
                    var bitmap = c.GetFullImage();
                    if (ss.GetScreenState(bitmap) == ScreenState.RivenWindow)
                    {
                        System.Threading.Thread.Sleep(17);
                        mouse.Click(3816, 2013);
                        System.Threading.Thread.Sleep(17);
                    }
                    bitmap.Dispose();

                    //Move mouse out of the way
                    System.Threading.Thread.Sleep(17);
                    mouse.MoveTo(0, 0);

                    System.Threading.Thread.Sleep(17);
                    index++;
                }
            }
            //c.Dispose();
        }