public SetDestinationTask(Bot bot, int currentDestinationId, IMemoryMeasurement memoryMeasurement, string[] enemySystems) { this.bot = bot; this.currentDestinationId = currentDestinationId; MemoryMeasurement = memoryMeasurement; this.enemySystems = enemySystems; }
private void BookmarkByMenu(IMemoryMeasurement measure, IMenu menu, string WhichOne, string BookName) { WindowMotor motor = new WindowMotor(EveMainWindow.Value); IMemoryMeasurement measureme; MotionParam motionParam; var response = sensor?.MeasurementTakeNewRequest(EveClientId.Value); WindowsInput.InputSimulator sim = new InputSimulator(); sim.Keyboard.KeyDown(VirtualKeyCode.MENU).Sleep(200).KeyPress(VirtualKeyCode.VK_D).Sleep(200).KeyUp(VirtualKeyCode.MENU); if (null == menu) { do { response = sensor?.MeasurementTakeNewRequest(EveClientId.Value); } while (null == response.MemoryMeasurement.Value.Menu); menu = response.MemoryMeasurement.Value.Menu.First(); } var menuEntry = menu.Entry.FirstOrDefault(x => Regex.IsMatch(x.Text, WhichOne)); motionParam = menuEntry.MouseClick(MouseButtonIdEnum.Left); motor.ActSequenceMotion(motionParam.AsSequenceMotion(measure)); do { response = sensor?.MeasurementTakeNewRequest(EveClientId.Value); } while (null == response.MemoryMeasurement.Value.WindowOther.First(p => Regex.IsMatch(p.Caption, "Location"))); IWindow other = response.MemoryMeasurement.Value.WindowOther.First(p => Regex.IsMatch(p.Caption, "Location")); //var inputText = other.InputText.First(p => Regex.IsMatch(p.Text, "Wormhole")); //WindowsInput.InputSimulator sim = new InputSimulator(); sim.Keyboard.TextEntry(BookName).Sleep(200).KeyPress(VirtualKeyCode.RETURN); sim.Keyboard.Sleep(1000).KeyDown(VirtualKeyCode.MENU).Sleep(200).KeyPress(VirtualKeyCode.VK_D).Sleep(200).KeyUp(VirtualKeyCode.MENU); }
static public IEnumerable <Motion> AsSequenceMotion( this MotionParam motion, IMemoryMeasurement memoryMeasurement) { if (null == motion) { yield break; } if (motion?.WindowToForeground ?? false) { yield return(new Motion(null, windowToForeground: true)); } var SetElementExcludedFromOcclusion = memoryMeasurement?.EnumerateSetElementExcludedFromOcclusion()?.ToArray(); var Random = new Random((int)Bib3.Glob.StopwatchZaitMiliSictInt()); var MouseListWaypoint = motion?.MouseListWaypoint; var mouseButtonDownMotion = new Motion(null, motion?.MouseButton); var mouseButtonUpMotion = new Motion(null, null, motion?.MouseButton); for (int WaypointIndex = 0; WaypointIndex < (MouseListWaypoint?.Length ?? 0); WaypointIndex++) { var mouseWaypoint = MouseListWaypoint[WaypointIndex]; var waypointUIElement = mouseWaypoint?.UIElement; waypointUIElement = (waypointUIElement as Accumulation.IRepresentingMemoryObject)?.RepresentedMemoryObject as UIElement ?? waypointUIElement; var waypointUIElementCurrent = waypointUIElement.GetInstanceWithIdFromCLRGraph(memoryMeasurement, Interface.FromInterfaceResponse.SerialisPolicyCache); if (null == waypointUIElementCurrent) { throw new ApplicationException("mouse waypoint not anymore contained in UITree"); } var waypointRegion = waypointUIElementCurrent.RegionInteraction?.Region; var waypointRegionReplacement = mouseWaypoint.RegionReplacement; if (waypointRegionReplacement.HasValue) { waypointRegion = waypointRegionReplacement.Value + waypointRegion.Value.Center(); } waypointRegion = mouseWaypoint.RegionReplacementAbsolute ?? waypointRegion; if (!waypointRegion.HasValue) { throw new ArgumentException("Did not find a region for the waypoint."); } waypointUIElementCurrent = waypointUIElementCurrent.WithRegion(waypointRegion.Value); var WaypointRegionPortionVisible = waypointUIElementCurrent.GetOccludedUIElementRemainingRegion( memoryMeasurement, c => SetElementExcludedFromOcclusion?.Contains(c) ?? false) // remaining region is contracted to provide a safety margin. ?.Select(portionVisible => portionVisible.WithSizeExpandedPivotAtCenter(-MotionMouseWaypointSafetyMarginMin * 2)) ?.Where(portionVisible => !portionVisible.IsEmpty()) ?.ToArray(); var WaypointRegionPortionVisibleLargestPatch = WaypointRegionPortionVisible ?.OrderByDescending(patch => Math.Min(patch.Side0Length(), patch.Side1Length())) ?.FirstOrDefault(); if (!(0 < WaypointRegionPortionVisibleLargestPatch?.Side0Length() && 0 < WaypointRegionPortionVisibleLargestPatch?.Side1Length())) { throw new ApplicationException("mouse waypoint region remaining after occlusion is too small"); } var Point = WaypointRegionPortionVisibleLargestPatch.Value .WithSizeExpandedPivotAtCenter(-MotionMouseWaypointSafetyMarginAdditional * 2) .RandomPointInRectangle(Random); yield return(new Motion(Point)); if (0 == WaypointIndex) { yield return(mouseButtonDownMotion); for (int repetitionIndex = 0; repetitionIndex < motion?.MouseButtonRepetitionCount; repetitionIndex++) { yield return(mouseButtonUpMotion); yield return(mouseButtonDownMotion); } } } yield return(mouseButtonUpMotion); var MotionKeyDown = motion?.KeyDown; var MotionKeyUp = motion?.KeyUp; if (null != MotionKeyDown) { yield return(new Motion(null, keyDown: MotionKeyDown)); } if (null != MotionKeyUp) { yield return(new Motion(null, keyUp: MotionKeyUp)); } var MotionTextEntry = motion?.TextEntry; if (0 < MotionTextEntry?.Length) { yield return(new Motion(null, textEntry: MotionTextEntry)); } }
static public IEnumerable <IUIElement> EnumerateSetElementExcludedFromOcclusion(this IMemoryMeasurement memoryMeasurement) => new[] { memoryMeasurement?.ModuleButtonTooltip, }.WhereNotDefault();
static public bool SessionDurationRemainingSufficientToStayExposed(this IMemoryMeasurement measurement) => ExeConfig.StayExposedSessionDurationRemainingMin <= measurement?.SessionDurationRemaining;
static public KeyValuePair <IOverviewEntry, IEnumerable <IMenu> >?OverviewEntryMenu(this IMemoryMeasurement MemoryMeasurement) { var OverviewEntry = MemoryMeasurement?.WindowOverview ?.Select(WindowOverview => WindowOverview?.ListView?.Entry) ?.ConcatNullable() ?.OfType <IOverviewEntry>() ?.FirstOrDefault(Entry => Entry?.IsSelected ?? false); if (null == OverviewEntry) { return(null); } if (null == MemoryMeasurement?.Menu?.FirstOrDefault()?.EntryRemoveFromOverview()) { return(null); } return(new KeyValuePair <IOverviewEntry, IEnumerable <IMenu> >(OverviewEntry, MemoryMeasurement?.Menu)); }
public void Berecne(int?sessionDurationRemaining) { if (null == GbsBaumWurzel) { return; } AstSidePanels = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("SidePanels", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase)); LayerShipUiAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("ShipUI", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 5, 1); var FensterLayerTarget = Optimat.EveOnline.AuswertGbs.Extension .FirstMatchingNodeFromSubtreeBreadthFirst(GbsBaumWurzel, (Kandidaat) => string.Equals("l_target", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)); var WindowOverviewAst = Optimat.EveOnline.AuswertGbs.Extension .FirstMatchingNodeFromSubtreeBreadthFirst(GbsBaumWurzel, (Kandidaat) => string.Equals("OverView", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase)); AstLayerMenu = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("LayerCore", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && string.Equals("l_menu", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); AstLayerMain = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("LayerCore", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && string.Equals("l_main", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); AstLayerModal = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("LayerCore", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && string.Equals("l_modal", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); LayerSystemmenuAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("SystemMenu", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && string.Equals("l_systemmenu", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); LayerSystemmenuSysmenuAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( LayerSystemmenuAst, (Kandidaat) => Kandidaat.PyObjTypNameIsContainer() && string.Equals("sysmenu", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); LayerLoginAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("Login", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && string.Equals("l_login", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 3, 1); var InflightLayer = GbsBaumWurzel?.FirstMatchingNodeFromSubtreeBreadthFirst(c => (c?.PyObjTypName?.RegexMatchSuccessIgnoreCase("Layer") ?? false) && (c?.Name?.RegexMatchSuccessIgnoreCase("inflight") ?? false)); var InflightBracketLayer = InflightLayer?.FirstMatchingNodeFromSubtreeBreadthFirst(c => (c?.PyObjTypName?.RegexMatchSuccessIgnoreCase("Layer") ?? false) && (c?.Name?.RegexMatchSuccessIgnoreCase("bracket") ?? false)); var setInflightBracket = InflightBracketLayer ?.MatchingNodesFromSubtreeBreadthFirst(c => c?.PyObjTypName?.RegexMatchSuccessIgnoreCase("InSpaceBracket") ?? false, null, null, null, true) ?.Select(bracketNode => bracketNode?.AsInSpaceBracket()) ?.ToArrayIfNotEmpty(); var LayerSystemmenuAstMengeKandidaatLabelVersionAst = Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( LayerSystemmenuAst, (Kandidaat) => Optimat.EveOnline.AuswertGbs.Glob.GbsAstTypeIstLabel(Kandidaat), null, 3, 1) .ConcatNullable( Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( LayerLoginAst, (Kandidaat) => Optimat.EveOnline.AuswertGbs.Glob.GbsAstTypeIstLabel(Kandidaat), null, 3, 1)) ?.ToArray(); if (null != LayerSystemmenuAst) { SystemmenuAuswert = new SictAuswertGbsSystemMenu(LayerSystemmenuAst); SystemmenuAuswert.Berecne(); } if (null != LayerSystemmenuAstMengeKandidaatLabelVersionAst) { foreach (var KandidaatLabelVersionAst in LayerSystemmenuAstMengeKandidaatLabelVersionAst) { var Text = KandidaatLabelVersionAst.LabelText(); if (null == Text) { continue; } var Match = Regex.Match(Text ?? "", VersionLabelRegexPattern, RegexOptions.IgnoreCase); if (!Match.Success) { continue; } VersionString = Match.Groups[1].Value; break; } } AstLayerModalMengeKandidaatWindow = Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( AstLayerModal, (Kandidaat) => Regex.Match(Kandidaat.PyObjTypName ?? "", "MessageBox", RegexOptions.IgnoreCase).Success || Regex.Match(Kandidaat.PyObjTypName ?? "", "HybridWindow", RegexOptions.IgnoreCase).Success || Regex.Match(Kandidaat.PyObjTypName ?? "", "PopupWnd", RegexOptions.IgnoreCase).Success, null, 3, 1); LayerHintAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("LayerCore", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && string.Equals("l_hint", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); var SetTooltipNode = GbsBaumWurzel.MatchingNodesFromSubtreeBreadthFirst(k => k?.PyObjTypNameMatchesRegexPattern("TooltipGeneric|TooltipPanel") ?? false); var SetTooltip = SetTooltipNode?.Select(TooltipNode => TooltipNode?.AlsContainer())?.WhereNotDefault()?.ToArrayIfNotEmpty(); ModuleButtonHintAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("ModuleButtonTooltip", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && (true == Kandidaat.VisibleIncludingInheritance), 2, 1); AstLayerUtilmenu = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("LayerCore", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && string.Equals("l_utilmenu", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); AstLayerAbovemain = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => string.Equals("LayerCore", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && string.Equals("l_abovemain", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); MengeKandidaatAbovemainMessageAst = Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( AstLayerAbovemain, (Kandidaat) => string.Equals("Message", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), null, 3, 1); MengeKandidaatAbovemainPanelEveMenuAst = Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( AstLayerAbovemain, (Kandidaat) => string.Equals("PanelEveMenu", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), null, 3, 1); MengeKandidaatAbovemainPanelGroupAst = Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( AstLayerAbovemain, (Kandidaat) => string.Equals("PanelGroup", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), null, 3, 1); LayerMainMengeKandidaatWindowAst = Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( AstLayerMain, (Kandidaat) => true == Kandidaat.VisibleIncludingInheritance && (null != Kandidaat.Caption || null != Kandidaat.WindowID), null, 2, 1, true); MengeKandidaatWindowAst = Bib3.Glob.ListeEnumerableAgregiirt( new UINodeInfoInTree[][] { LayerMainMengeKandidaatWindowAst, AstLayerModalMengeKandidaatWindow, }) ?.WhereNotDefault() ?.ToArray(); MengeWindow = MengeKandidaatWindowAst ?.Select((WindowAst) => Optimat.EveOnline.AuswertGbs.Glob.WindowBerecneScpezTypFürGbsAst(WindowAst)) ?.WhereNotDefault() ?.ToArray(); MengeKandidaatMenuAst = Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( AstLayerMenu, (Kandidaat) => Regex.Match(Kandidaat.PyObjTypName ?? "", "DropDownMenu", RegexOptions.IgnoreCase).Success, null, 2, 1); if (null != ModuleButtonHintAst) { ModuleButtonTooltipAuswert = new SictAuswertGbsModuleButtonTooltip(ModuleButtonHintAst); ModuleButtonTooltipAuswert.Berecne(); } if (null != MengeKandidaatAbovemainPanelEveMenuAst) { MengeKandidaatAbovemainPanelEveMenuAuswert = MengeKandidaatAbovemainPanelEveMenuAst .Select((GbsAst) => { var Auswert = new SictAuswertGbsPanelEveMenu(GbsAst); Auswert.Berecne(); return(Auswert); }).ToArray(); } if (null != MengeKandidaatAbovemainPanelGroupAst) { MengeKandidaatAbovemainPanelGroupAuswert = MengeKandidaatAbovemainPanelGroupAst .Select((GbsAst) => { var Auswert = new SictAuswertGbsPanelGroup(GbsAst); Auswert.Berecne(); return(Auswert); }).ToArray(); } var MengeKandidaatUtilmenu = (null == AstLayerUtilmenu) ? null : Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( GbsBaumWurzel, (Kandidaat) => (true == Kandidaat.VisibleIncludingInheritance) && string.Equals("UtilMenu", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), null, null, 1); Utilmenu = new[] { AstLayerUtilmenu.AlsUtilmenu() }.WhereNotDefault()?.ToArrayIfNotEmpty(); AuswertSidePanels = new SictAuswertGbsSidePanels(AstSidePanels); AuswertSidePanels.Berecne(); LayerShipUiAstAuswert = new SictAuswertGbsShipUi(LayerShipUiAst); LayerShipUiAstAuswert.Berecne(); AuswertLayerTarget = new SictAuswertGbsLayerTarget(FensterLayerTarget); AuswertLayerTarget.Berecne(); var AuswertSidePanelsAuswertPanelCurrentSystem = AuswertSidePanels.AuswertPanelCurrentSystem; var AuswertSidePanelsAuswertPanelRoute = AuswertSidePanels.AuswertPanelRoute; var AuswertSidePanelsAstInfoPanelMissions = AuswertSidePanels.AuswertPanelMissions; var Ergeebnis = new MemoryMeasurement { SessionDurationRemaining = sessionDurationRemaining, }; Ergeebnis.UserDefaultLocaleName = BotEngine.WinApi.Kernel32.GetUserDefaultLocaleName(); if (null != SystemmenuAuswert) { Ergeebnis.SystemMenu = SystemmenuAuswert.Ergeebnis; } var AstLayerMainGrööse = AstLayerMain?.Grööse; if (AstLayerMainGrööse.HasValue) { Ergeebnis.ScreenSize = new Bib3.Geometrik.Vektor2DInt((int)AstLayerMainGrööse.Value.A, (int)AstLayerMainGrööse.Value.B); } if (null != ModuleButtonTooltipAuswert) { Ergeebnis.ModuleButtonTooltip = ModuleButtonTooltipAuswert.Ergeebnis; } Ergeebnis.Menu = MengeKandidaatMenuAst?.Select(SictAuswertGbsMenu.ReadMenu)?.WhereNotDefault()?.ToArrayIfNotEmpty(); Ergeebnis.AbovemainMessage = MengeKandidaatAbovemainMessageAst ?.Select((GbsAst) => GbsAst?.LargestLabelInSubtree()?.AsUIElementTextIfTextNotEmpty()) ?.Where(Label => 0 < Label?.Text?.Length) ?.ToArrayIfNotEmpty(); if (null != MengeKandidaatAbovemainPanelEveMenuAuswert) { Ergeebnis.AbovemainPanelEveMenu = MengeKandidaatAbovemainPanelEveMenuAuswert .Select((Kandidaat) => Kandidaat.Ergeebnis) .Where((Kandidaat) => null != Kandidaat) ?.ToArrayIfNotEmpty(); } if (null != MengeKandidaatAbovemainPanelGroupAuswert) { Ergeebnis.AbovemainPanelGroup = MengeKandidaatAbovemainPanelGroupAuswert .Select((Kandidaat) => Kandidaat.Ergeebnis) .Where((Kandidaat) => null != Kandidaat) ?.ToArrayIfNotEmpty(); } IWindowStation WindowStationLobby = null; IWindowOverview WindowOverview = null; IWindowInventory[] MengeWindowInventory = null; if (null != MengeWindow) { var MengeWindowStack = MengeWindow .OfType <WindowStack>() .ToArray(); var MengeWindowStackWindow = MengeWindowStack .Select((WindowStack) => WindowStack.TabSelectedWindow) .Where((Window) => null != Window) .ToArray(); var MengeWindowMitAusWindowStackWindow = MengeWindow .ConcatNullable(MengeWindowStackWindow) ?.ToArrayIfNotEmpty(); var MengeWindowOverView = MengeWindowMitAusWindowStackWindow?.OfType <IWindowOverview>().ToArrayIfNotEmpty(); var MengeWindowChatChannel = MengeWindowMitAusWindowStackWindow?.OfType <WindowChatChannel>().ToArrayIfNotEmpty(); var MengeWindowSelectedItemView = MengeWindowMitAusWindowStackWindow?.OfType <IWindowSelectedItemView>().ToArrayIfNotEmpty(); var MengeWindowPeopleAndPlaces = MengeWindowMitAusWindowStackWindow?.OfType <WindowPeopleAndPlaces>().ToArrayIfNotEmpty(); var MengeWindowDroneView = MengeWindowMitAusWindowStackWindow?.OfType <IWindowDroneView>().ToArrayIfNotEmpty(); var MengeWindowFittingWindow = MengeWindowMitAusWindowStackWindow?.OfType <WindowShipFitting>().ToArrayIfNotEmpty(); var MengeWindowFittingMgmt = MengeWindowMitAusWindowStackWindow?.OfType <WindowFittingMgmt>().ToArrayIfNotEmpty(); var MengeWindowStationLobby = MengeWindowMitAusWindowStackWindow?.OfType <IWindowStation>().ToArrayIfNotEmpty(); var MengeWindowSurveyScanView = MengeWindowMitAusWindowStackWindow?.OfType <IWindowSurveyScanView>().ToArrayIfNotEmpty(); MengeWindowInventory = MengeWindowMitAusWindowStackWindow?.OfType <IWindowInventory>().ToArrayIfNotEmpty(); var MengeWindowAgentDialogue = MengeWindowMitAusWindowStackWindow?.OfType <WindowAgentDialogue>().ToArrayIfNotEmpty(); var MengeWindowAgentBrowser = MengeWindowMitAusWindowStackWindow?.OfType <WindowAgentBrowser>().ToArrayIfNotEmpty(); var MengeWindowTelecom = MengeWindowMitAusWindowStackWindow?.OfType <WindowTelecom>().ToArrayIfNotEmpty(); var MengeWindowRegionalMarket = MengeWindowMitAusWindowStackWindow?.OfType <WindowRegionalMarket>().ToArrayIfNotEmpty(); var MengeWindowMarketAction = MengeWindowMitAusWindowStackWindow?.OfType <WindowMarketAction>().ToArrayIfNotEmpty(); var MengeWindowItemSell = MengeWindowMitAusWindowStackWindow?.OfType <WindowItemSell>().ToArrayIfNotEmpty(); Ergeebnis.WindowStack = MengeWindowStack.ToArrayIfNotEmpty(); WindowOverview = MengeWindowOverView?.FirstOrDefault(); WindowStationLobby = MengeWindowStationLobby?.FirstOrDefault(); Ergeebnis.WindowOverview = MengeWindowOverView.ToArrayIfNotEmpty(); Ergeebnis.WindowChatChannel = MengeWindowChatChannel.ToArrayIfNotEmpty(); Ergeebnis.WindowSelectedItemView = MengeWindowSelectedItemView.ToArrayIfNotEmpty(); Ergeebnis.WindowPeopleAndPlaces = MengeWindowPeopleAndPlaces.ToArrayIfNotEmpty(); Ergeebnis.WindowDroneView = MengeWindowDroneView.ToArrayIfNotEmpty(); Ergeebnis.WindowShipFitting = MengeWindowFittingWindow.ToArrayIfNotEmpty(); Ergeebnis.WindowFittingMgmt = MengeWindowFittingMgmt.ToArrayIfNotEmpty(); Ergeebnis.WindowStation = MengeWindowStationLobby.ToArrayIfNotEmpty(); Ergeebnis.WindowSurveyScanView = MengeWindowSurveyScanView.ToArrayIfNotEmpty(); Ergeebnis.WindowInventory = MengeWindowInventory; Ergeebnis.WindowAgentDialogue = MengeWindowAgentDialogue; Ergeebnis.WindowAgentBrowser = MengeWindowAgentBrowser; Ergeebnis.WindowTelecom = MengeWindowTelecom; Ergeebnis.WindowRegionalMarket = MengeWindowRegionalMarket; Ergeebnis.WindowMarketAction = MengeWindowMarketAction; Ergeebnis.WindowItemSell = MengeWindowItemSell; Ergeebnis.WindowProbeScanner = MengeWindowMitAusWindowStackWindow?.OfType <IWindowProbeScanner>().ToArrayIfNotEmpty(); var MengeWindowSonstige = MengeWindow .Except( new IEnumerable <IWindow>[] { MengeWindowStack, MengeWindowOverView, MengeWindowChatChannel, MengeWindowPeopleAndPlaces, MengeWindowSelectedItemView, MengeWindowSurveyScanView, MengeWindowDroneView, MengeWindowFittingWindow, MengeWindowFittingMgmt, MengeWindowStationLobby, MengeWindowInventory, MengeWindowAgentDialogue, MengeWindowAgentBrowser, MengeWindowTelecom, MengeWindowRegionalMarket, MengeWindowMarketAction, MengeWindowItemSell, Ergeebnis.WindowProbeScanner, }.ConcatNullable()) .ToArrayIfNotEmpty(); Ergeebnis.WindowOther = MengeWindowSonstige; } Ergeebnis.VersionString = VersionString; Ergeebnis.Neocom = AuswertSidePanels?.Neocom; Ergeebnis.InfoPanelCurrentSystem = AuswertSidePanelsAuswertPanelCurrentSystem?.ErgeebnisScpez; Ergeebnis.InfoPanelRoute = AuswertSidePanelsAuswertPanelRoute?.ErgeebnisScpez; Ergeebnis.InfoPanelMissions = AuswertSidePanelsAstInfoPanelMissions?.ErgeebnisScpez; var InfoPanelButtonCurrentSystem = AuswertSidePanels.InfoPanelButtonLocationInfoAst.AsUIElementIfVisible(); var InfoPanelButtonRoute = AuswertSidePanels.InfoPanelButtonRouteAst.AsUIElementIfVisible(); var InfoPanelButtonMissions = AuswertSidePanels.InfoPanelButtonMissionAst.AsUIElementIfVisible(); Ergeebnis.InfoPanelButtonCurrentSystem = InfoPanelButtonCurrentSystem; Ergeebnis.InfoPanelButtonRoute = InfoPanelButtonRoute; Ergeebnis.InfoPanelButtonMissions = InfoPanelButtonMissions; Ergeebnis.InfoPanelButtonIncursions = AuswertSidePanels?.InfoPanelButtonIncursionsAst?.AsUIElementIfVisible(); Ergeebnis.Utilmenu = Utilmenu; Ergeebnis.ShipUi = LayerShipUiAstAuswert.Ergeebnis; Ergeebnis.Target = AuswertLayerTarget?.SetTarget?.ToArrayIfNotEmpty(); Ergeebnis.Tooltip = SetTooltip; Ergeebnis.InflightBracket = setInflightBracket; this.AuswertErgeebnis = Ergeebnis; }
static public IEnumerable <Motion> AsSequenceMotion( this MotionParam Motion, IMemoryMeasurement MemoryMeasurement) { if (null == Motion) { yield break; } if (Motion?.WindowToForeground ?? false) { yield return(new Motion(null, WindowToForeground: true)); } var SetElementExcludedFromOcclusion = MemoryMeasurement?.EnumerateSetElementExcludedFromOcclusion()?.ToArray(); var Random = new Random((int)Bib3.Glob.StopwatchZaitMiliSictInt()); var MouseListWaypoint = Motion?.MouseListWaypoint; for (int WaypointIndex = 0; WaypointIndex < (MouseListWaypoint?.Length ?? 0); WaypointIndex++) { var MouseWaypoint = MouseListWaypoint[WaypointIndex]; var WaypointUIElement = MouseWaypoint?.UIElement; WaypointUIElement = (WaypointUIElement as Accumulation.IRepresentingMemoryObject)?.RepresentedMemoryObject as UIElement ?? WaypointUIElement; var WaypointRegionReplacement = MouseWaypoint.RegionReplacement; var WaypointUIElementCurrent = WaypointUIElement.GetInstanceWithIdFromCLRGraph(MemoryMeasurement, Interface.FromSensorToConsumerMessage.SerialisPolicyCache); if (null == WaypointUIElementCurrent) { throw new ApplicationException("mouse waypoint not anymore contained in UITree"); } var WaypointUIElementRegion = WaypointUIElementCurrent.RegionInteraction?.Region; if (!WaypointUIElementRegion.HasValue) { throw new ArgumentException("Waypoint UIElement has no Region to interact with"); } if (WaypointRegionReplacement.HasValue) { WaypointUIElementRegion = WaypointRegionReplacement.Value + WaypointUIElementRegion.Value.Center(); } WaypointUIElementCurrent = WaypointUIElementCurrent.WithRegion(WaypointUIElementRegion.Value); var WaypointRegionPortionVisible = WaypointUIElementCurrent.GetOccludedUIElementRemainingRegion( MemoryMeasurement, c => SetElementExcludedFromOcclusion?.Contains(c) ?? false) // remaining region is contracted to provide an safety margin. ?.Select(PortionVisible => PortionVisible.WithSizeExpandedPivotAtCenter(-MotionMouseWaypointSafetyMarginMin * 2)) ?.Where(PortionVisible => !PortionVisible.IsEmpty()) ?.ToArray(); var WaypointRegionPortionVisibleLargestPatch = WaypointRegionPortionVisible ?.OrderByDescending(Patch => Math.Min(Patch.Side0Length(), Patch.Side1Length())) ?.FirstOrDefault(); if (!(0 < WaypointRegionPortionVisibleLargestPatch?.Side0Length() && 0 < WaypointRegionPortionVisibleLargestPatch?.Side1Length())) { throw new ApplicationException("mouse waypoint region remaining after occlusion is too small"); } var Point = WaypointRegionPortionVisibleLargestPatch.Value .WithSizeExpandedPivotAtCenter(-MotionMouseWaypointSafetyMarginAdditional * 2) .RandomPointInRectangle(Random); yield return(new Motion(Point)); if (0 == WaypointIndex) { // Mouse Buttons Down yield return(new Motion(null, Motion?.MouseButton)); } } // Mouse Buttons Up yield return(new Motion(null, null, Motion?.MouseButton)); var MotionKeyDown = Motion?.KeyDown; var MotionKeyUp = Motion?.KeyUp; if (null != MotionKeyDown) { yield return(new Motion(null, KeyDown: MotionKeyDown)); } if (null != MotionKeyUp) { yield return(new Motion(null, KeyUp: MotionKeyUp)); } var MotionTextEntry = Motion?.TextEntry; if (0 < MotionTextEntry?.Length) { yield return(new Motion(null, TextEntry: MotionTextEntry)); } }
public CheckShipTask(IMemoryMeasurement memoryMeasurement, string desiredShipName) { MemoryMeasurement = memoryMeasurement; this.desiredShipName = desiredShipName; }
public UndockTask(IMemoryMeasurement memoryMeasurement) { MemoryMeasurement = memoryMeasurement; }
static public bool ManeuverStartPossible(this IMemoryMeasurement memoryMeasurement) => !(memoryMeasurement?.IsDocked ?? false) && !new[] { ShipManeuverTypeEnum.Warp, ShipManeuverTypeEnum.Jump, ShipManeuverTypeEnum.Docked }.Contains( memoryMeasurement?.ShipUi?.Indication?.ManeuverType ?? ShipManeuverTypeEnum.None);
public SetMissionDestinationTask(Bot bot, string[] processedMissions) { this.bot = bot; this.processedMissions = processedMissions; MemoryMeasurement = bot.MemoryMeasurementAtTime.Value; }
public OpenBookmarksFolderTask(IMemoryMeasurement memoryMeasurement, string[] foldersToOpen) { FoldersToOpen = foldersToOpen; MemoryMeasurement = memoryMeasurement; }
static public IEnumerable<Motion> AsSequenceMotion( this MotionParam Motion, IMemoryMeasurement MemoryMeasurement) { if (null == Motion) { yield break; } if (Motion?.WindowToForeground ?? false) yield return new Motion(null, WindowToForeground: true); var SetElementExcludedFromOcclusion = MemoryMeasurement?.EnumerateSetElementExcludedFromOcclusion()?.ToArray(); var Random = new Random((int)Bib3.Glob.StopwatchZaitMiliSictInt()); var MouseListWaypoint = Motion?.MouseListWaypoint; for (int WaypointIndex = 0; WaypointIndex < (MouseListWaypoint?.Length ?? 0); WaypointIndex++) { var MouseWaypoint = MouseListWaypoint[WaypointIndex]; var WaypointUIElement = MouseWaypoint?.UIElement; WaypointUIElement = (WaypointUIElement as Accumulation.IRepresentingMemoryObject)?.RepresentedMemoryObject as UIElement ?? WaypointUIElement; var WaypointRegionReplacement = MouseWaypoint.RegionReplacement; var WaypointUIElementCurrent = WaypointUIElement.GetInstanceWithIdFromCLRGraph(MemoryMeasurement, Interface.FromSensorToConsumerMessage.SerialisPolicyCache); if (null == WaypointUIElementCurrent) { throw new ApplicationException("mouse waypoint not anymore contained in UITree"); } var WaypointUIElementRegion = WaypointUIElementCurrent.RegionInteraction?.Region; if (!WaypointUIElementRegion.HasValue) { throw new ArgumentException("Waypoint UIElement has no Region to interact with"); } if (WaypointRegionReplacement.HasValue) { WaypointUIElementRegion = WaypointRegionReplacement.Value + WaypointUIElementRegion.Value.Center(); } WaypointUIElementCurrent = WaypointUIElementCurrent.WithRegion(WaypointUIElementRegion.Value); var WaypointRegionPortionVisible = WaypointUIElementCurrent.GetOccludedUIElementRemainingRegion( MemoryMeasurement, c => SetElementExcludedFromOcclusion?.Contains(c) ?? false) // remaining region is contracted to provide an safety margin. ?.Select(PortionVisible => PortionVisible.WithSizeExpandedPivotAtCenter(-MotionMouseWaypointSafetyMarginMin * 2)) ?.Where(PortionVisible => !PortionVisible.IsEmpty()) ?.ToArray(); var WaypointRegionPortionVisibleLargestPatch = WaypointRegionPortionVisible ?.OrderByDescending(Patch => Math.Min(Patch.Side0Length(), Patch.Side1Length())) ?.FirstOrDefault(); if (!(0 < WaypointRegionPortionVisibleLargestPatch?.Side0Length() && 0 < WaypointRegionPortionVisibleLargestPatch?.Side1Length())) { throw new ApplicationException("mouse waypoint region remaining after occlusion is too small"); } var Point = WaypointRegionPortionVisibleLargestPatch.Value .WithSizeExpandedPivotAtCenter(-MotionMouseWaypointSafetyMarginAdditional * 2) .RandomPointInRectangle(Random); yield return new Motion(Point); if (0 == WaypointIndex) { // Mouse Buttons Down yield return new Motion(null, Motion?.MouseButton); } } // Mouse Buttons Up yield return new Motion(null, null, Motion?.MouseButton); var MotionKeyDown = Motion?.KeyDown; var MotionKeyUp = Motion?.KeyUp; if (null != MotionKeyDown) { yield return new Motion(null, KeyDown: MotionKeyDown); } if (null != MotionKeyUp) { yield return new Motion(null, KeyUp: MotionKeyUp); } var MotionTextEntry = Motion?.TextEntry; if (0 < MotionTextEntry?.Length) yield return new Motion(null, TextEntry: MotionTextEntry); }
private void MainWindow_SimulateMeasurement(IMemoryMeasurement measurement) { var time = GetTimeStopwatch(); MemoryMeasurementLast = new FromProcessMeasurement <IMemoryMeasurement>(measurement, time, time); }
public ActiveTargetsContoller(Bot bot, IMemoryMeasurement memoryMeasurement) { List = memoryMeasurement.Target?.Select(t => new SimpleTargetInfo(bot, t))?.ToList <ITarget>(); }