Exemplo n.º 1
0
        private static void testRivenSplit()
        {
            foreach (var error in Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs").Select(f => new FileInfo(f)).Where(f => f.Name.StartsWith("test")))
            {
                using (var cropped = new Bitmap(error.FullName))
                {
                    var cleaner = new RivenCleaner();
                    var rp      = new RivenParser();
                    //var cropped = rp.CropToRiven(new Bitmap(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs\error.png"));
                    using (var cleaned = cleaner.CleanRiven(cropped))
                    {
                        cleaned.Save("cleaned.png");
                        var r = rp.ParseRivenTextFromImage(cleaned, null);
                        Console.WriteLine(JsonConvert.SerializeObject(r, Formatting.Indented) + "\n");
                    }
                }
            }
            //var cropped = new Bitmap(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs\error.png");
            //var cleaner = new RivenCleaner();
            //var rp = new RivenParser();
            ////var cropped = rp.CropToRiven(new Bitmap(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs\error.png"));
            //var cleaned = cleaner.CleanRiven(cropped);
            //cleaned.Save("cleaned.png");
            //var r = rp.ParseRivenTextFromImage(cleaned, "Akj Cri-vex");

            ////var inputs = new string[] {"+2.6 Punch Through", "+78.7% Multishot", "-10.4% Puncture" };
            ////var modis = inputs.Select(i => Modifier.ParseString(i));
            ////Console.WriteLine(JsonConvert.SerializeObject(new { Modifiers = modis }));
        }
Exemplo n.º 2
0
        private static void WinOcrTest()
        {
            var rp = new RivenParser();
            var rc = new RivenCleaner();

            if (!Directory.Exists("riven_stuff"))
            {
                Directory.CreateDirectory("riven_stuff");
            }
            foreach (var error in Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs").Select(f => new FileInfo(f)).Where(f => f.Name.EndsWith("13.png")))
            {
                using (var image = new Bitmap(error.FullName))
                {
                    Bitmap cropped = null;
                    if (image.Width == 4096)
                    {
                        cropped = rp.CropToRiven(image);
                        var ss    = new ScreenStateHandler();
                        var state = ss.GetScreenState(image);
                        if (state != ScreenState.RivenWindow)
                        {
                            System.Diagnostics.Debugger.Break();
                        }
                    }
                    else
                    {
                        cropped = image;
                    }
                    using (var cleaned = rc.CleanRiven(cropped))
                    {
                        cleaned.Save(Path.Combine("riven_stuff", error.Name));
                        var result = rp.ParseRivenTextFromImage(cleaned, null);
                        result.Polarity = rp.ParseRivenPolarityFromColorImage(cropped);
                        result.Rank     = rp.ParseRivenRankFromColorImage(cropped);
                        var sb = new StringBuilder();
                        sb.AppendLine(result.Name);
                        if (result.Modifiers != null)
                        {
                            foreach (var modi in result.Modifiers)
                            {
                                sb.AppendLine(modi.ToString());
                            }
                        }
                        sb.AppendLine(result.Drain.ToString());
                        sb.AppendLine(result.MasteryRank + " " + result.Rolls);
                        File.WriteAllText(Path.Combine("riven_stuff", error.Name.Replace(".png", ".txt")), sb.ToString());
                    }
                    cropped.Dispose();
                }
            }
        }
Exemplo n.º 3
0
 private static void SimulateParseRiven()
 {
     var rc = new RivenCleaner();
     var rp = new RivenParser();
     //const string image = @"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs\input.png";
     //var srcBitmap = new Bitmap(image);
     //var bitmap = srcBitmap.Clone(new Rectangle(1757, 463, 582, 831), PixelFormat.DontCare);
     const string imageWhite = @"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs\b2ef63f6434cae7af57a011a1e6645c1_0.png";
     //bitmap.Save(imageWhite);
     //srcBitmap.Dispose();
     //bitmap.Dispose();
     //rc.CleanRiven(imageWhite);
     //var riven = rp.ParseRivenImage(imageWhite);
 }
Exemplo n.º 4
0
        private static void TestRivenParsing()
        {
            var rp      = new RivenParser();
            var cropped = new Bitmap(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs\error9.png");

            //var cropped = rp.CropToRiven(bitmap);
            cropped.Save("cropped.png");
            //bitmap.Dispose();
            var rc    = new RivenCleaner();
            var clean = rc.CleanRiven(cropped);

            cropped.Dispose();
            clean.Save("clean.png");
            var result = rp.ParseRivenTextFromImage(clean, null);
        }
Exemplo n.º 5
0
        private static void AsyncRivenParsingShim()
        {
            var images = Directory.GetFiles(@"C:\Users\david\OneDrive\Documents\WFChatParser\Test Runs\Riven Inputs\") /*.SelectMany(f => new string[] { f, f, f, f, f, })*/.Where(f => f.EndsWith(".png")).ToArray();

            Console.WriteLine("Riven inputs: " + images.Length);
            var rc      = new RivenCleaner();
            var rp      = new RivenParser();
            var bitmaps = images.Select(f =>
            {
                var bitmap = new Bitmap(f);
                if (bitmap.Width == 4096)
                {
                    var cropped = rp.CropToRiven(bitmap);
                    bitmap.Dispose();
                    return(cropped);
                }
                else
                {
                    return(bitmap);
                }
            }).Select(b =>
            {
                var cleaned = rc.CleanRiven(b);
                return(new { Cleaned = cleaned, Cropped = b });
            }).ToArray();

            //var sw = new Stopwatch();
            ////var serialRivens = new List<Riven>();
            ////sw.Start();
            ////foreach (var bitmap in bitmaps)
            ////{
            ////    var riven = rp.ParseRivenTextFromImage(bitmap.Cleaned, null);
            ////    riven.Rank = rp.ParseRivenRankFromColorImage(bitmap.Cropped);
            ////    riven.Polarity = rp.ParseRivenPolarityFromColorImage(bitmap.Cropped);
            ////    serialRivens.Add(riven);
            ////}
            ////sw.Stop();
            ////Console.WriteLine("Serial parse time: " + sw.Elapsed.TotalSeconds);

            //Console.WriteLine("starting parallel parse");
            //sw.Restart();
            //var tasks = bitmaps.Select(b =>
            //{
            //    var t = new Task<Riven>(() =>
            //    {
            //        using (var parser = new RivenParser())
            //        {
            //            var riven = parser.ParseRivenTextFromImage(b.Cleaned, null);
            //            riven.Polarity = parser.ParseRivenPolarityFromColorImage(b.Cropped);
            //            riven.Rank = parser.ParseRivenRankFromColorImage(b.Cropped);
            //            Console.WriteLine("Task finished");
            //            return riven;
            //        }
            //    });
            //    t.Start();
            //    return t;
            //}).ToArray();
            //Console.WriteLine("Starting sleep");
            //Thread.Sleep(28 * 1000);
            //Console.WriteLine("Sleep finished");
            //var done = Task.WhenAll(tasks).Result;
            //sw.Stop();
            //Console.WriteLine("Parallel parse time: " + sw.Elapsed.TotalSeconds);

            var queue = new ConcurrentQueue <RivenParseTaskWorkItem>();

            for (int i = 0; i < images.Length / 5; i++)
            {
                var group = bitmaps.Skip(i * 5).Take(5);
                queue.Enqueue(new RivenParseTaskWorkItem()
                {
                    Model            = new ChatMessageModel(),
                    RivenWorkDetails = group.Select(image => new RivenParseTaskWorkItemDetails()
                    {
                        RivenIndex = 0, RivenName = null, CroppedRivenBitmap = image.Cropped
                    }).ToList()
                });
            }

            var thread = new Thread(() =>
            {
                ChatRivenBot.ProcessRivenQueue(new CancellationToken(), new RivenParserFactory(), new DummySender(), queue, new RivenCleaner());
            });

            thread.Start();

            while (queue.Count > 0)
            {
                Thread.Sleep(1000);
            }
        }