Exemplo n.º 1
0
        public BotController(ILogger logger)
        {
            wowProcess     = new WowProcess(logger);
            this.WowScreen = new WowScreen(logger);
            this.logger    = logger;

            var frames = DataFrameConfiguration.ConfigurationExists()
                ? DataFrameConfiguration.LoadConfiguration()
                : new List <DataFrame>(); //config.CreateConfiguration(WowScreen.GetAddonBitmap());

            AddonReader = new AddonReader(WowScreen, frames, logger);

            addonThread = new Thread(AddonRefreshThread);
            addonThread.Start();

            // wait for addon to read the wow state
            while (AddonReader.PlayerReader.Sequence == 0 || !Enum.GetValues(typeof(PlayerClassEnum)).Cast <PlayerClassEnum>().Contains(AddonReader.PlayerReader.PlayerClass))
            {
                logger.LogWarning("There is a problem with the addon, I have been unable to read the player class. Is it running ?");
                Thread.Sleep(100);
            }

            npcNameFinder = new NpcNameFinder(wowProcess, AddonReader.PlayerReader, logger);
            ActionFactory = new ActionFactory(AddonReader, logger, wowProcess, npcNameFinder);

            screenshotThread = new Thread(ScreenshotRefreshThread);
            screenshotThread.Start();
        }
Exemplo n.º 2
0
        public void Refresh()
        {
            try
            {
                using (var bitMap = WowScreen.GetAddonBitmap(this.width, this.height))
                {
                    frames.ForEach(frame => FrameColor[frame.index] = colorReader.GetColorAt(frame.point, bitMap));
                }

                if (PlayerReader != null)
                {
                    PlayerReader.Updated();
                }
            }
            catch (Exception ex)
            {
                logger.LogInformation(ex.Message);
            }
        }
Exemplo n.º 3
0
        public Point?Find(bool highlight)
        {
            this.bitmap = WowScreen.GetCroppedMinimapBitmap(highlight);

            Score?best = Score.ScorePoints(FindYellowPoints());

            var e = new NodeEventArgs()
            {
                Bitmap = this.bitmap
            };

            if (best != null && best.count > 2)
            {
                e.Point = best.point;
            }

            NodeEvent?.Invoke(this, e);

            this.bitmap.Dispose();

            return(best?.point);
        }