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(); }