Ejemplo n.º 1
0
        public static void Run()
        {
            var bitmap = new Bitmap("E:\\dev\\venomsw\\images\\cropped_rune.png");
            var scaled = ScaleBitmap(bitmap, bitmap.Width * 2, bitmap.Height * 2);

            //TODO debug only
            if (analyzer.ShouldGetRune(scaled))
            {
                return;
            }



            TesseractEngine engine = new TesseractEngine(@"E:\\dev\\venomsw\\venomsw\\tessdata", "eng",
                                                         EngineMode.Default, "venom");

            engine.SetVariable("language_model_penalty_non_freq_dict_word", "1");
            engine.SetVariable("language_model_penalty_non_dict_word", "1");

            using (Page page = engine.Process(scaled, PageSegMode.SingleBlock))
            {
                Console.WriteLine(page.GetText());
            }

            scaled.Save("E:\\dev\\venomsw\\images\\cropped_rune3_nobg.png");
        }
Ejemplo n.º 2
0
        State DefineStates()
        {
            State teamSelection    = new State("Team selection", 2);
            State teamConfirmation = new State("Team confirmation", 5);       // can ask for more energy, have internet instability or go to the dungeon

            State internetInstability = new State("Internet instability", 5); // goes to team confirmation

            // if there's the need for more energy
            State moreEnergyRequired       = new State("More energy required", 2);
            State energyShop               = new State("Energy shop", 3);
            State energyBuyingConfirmation = new State("Energy buying confirmation", 3);
            State energyBuyingOk           = new State("Energy buying ok", 3);
            State energyShopLeave          = new State("Energy shop leave", 3); // goes to team selection

            // entered the dungeon
            State defeatRevive = new State("Defeat revive", 2);
            State defeated     = new State("Defeated", 2);
            State victory      = new State("Victory", 2);
            State victoryChest = new State("Victory Chest", 2);
            State runeGained   = new State("Rune gained", 2); // get button
            State miscGained   = new State("Misc gained", 2); // ok button

            // custom patterns
            Pattern.Load();

            // selecting team
            teamSelection.roads    = new Road[] { new Road(Pattern.Get("team_selection"), teamConfirmation, 537, 238) };
            teamConfirmation.roads = new Road[] { new Road(Pattern.Get("more_energy_required"), energyShop, 0, 0),
                                                  new Road(null, internetInstability, 0, 0),
                                                  new Road(Pattern.Get("defeat_revive"), defeatRevive, 425, 225),
                                                  new Road(Pattern.Get("victory"), victory, 340, 65) };

            // internet instability
            internetInstability.roads = new Road[] { new Road(null, teamConfirmation, 0, 0) };

            // buying more energy
            energyShop.roads = new Road[] { new Road(Pattern.Get("energy_shop"), energyBuyingConfirmation, 0, 0) };
            energyBuyingConfirmation.roads = new Road[] { new Road(Pattern.Get("energy_buying_confirmation"), energyBuyingOk, 0, 0) };
            energyBuyingOk.roads           = new Road[] { new Road(Pattern.Get("energy_buying_ok"), energyShopLeave, 0, 0) };
            energyShopLeave.roads          = new Road[] { new Road(Pattern.Get("energy_shop_leave"), teamSelection, 0, 0) };

            // farming
            defeatRevive.roads = new Road[] { new Road(Pattern.Get("defeated"), defeated, 350, 70) };
            defeated.roads     = new Road[] { new Road(Pattern.Get("dungeon_replay"), teamSelection, 240, 190) };

            victory.roads      = new Road[] { new Road(Pattern.Get("victory"), victoryChest, 340, 65, null, 1) };
            victoryChest.roads = new Road[] { new Road(Pattern.Get("rune_gained"), runeGained, 390, 275,
                                                       (r) =>
                {
                    Bitmap screen = User32.CaptureApplication(PROCESS_NAME);

                    Rectangle crop = r.pattern.coordinates;
                    float ratio    = r.pattern.GetRatio(screen);
                    crop.X         = (int)(crop.X * ratio);
                    crop.Y         = (int)(crop.Y * ratio);
                    crop.Width     = (int)(crop.Width * ratio);
                    crop.Height    = (int)(crop.Height * ratio);

                    Bitmap cropped = Comparer.Crop(screen, crop);

                    //TODO verify instead of just call
                    analyzer.ShouldGetRune(cropped);

                    try
                    {
                        cropped.Save(PATH + "\\runes\\rune_" + runesAcquired + ".png");
                    } catch (Exception e)
                    {
                        Console.WriteLine("Exception: " + e.Message);
                    }
                }),
                                              new Road(Pattern.Get("misc_gained"), miscGained, 340, 280),
                                              new Road(Pattern.Get("victory"), victoryChest, 340, 65, null, 1) }; // try again

            runeGained.roads = new Road[] { new Road(Pattern.Get("dungeon_replay"), teamSelection, 240, 190) };
            miscGained.roads = new Road[] { new Road(Pattern.Get("dungeon_replay"), teamSelection, 240, 190) };

            return(teamSelection); // starting node
        }