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