static public KeyValuePair <Int64, string>?AusGbsAstIconMitTextIconIdentUndText( UINodeInfoInTree gbsAst) { if (null == gbsAst) { return(null); } var iconAst = gbsAst?.FirstMatchingNodeFromSubtreeBreadthFirst(AuswertGbs.Glob.GbsAstTypeIstEveIcon, 2, 1); var textAst = gbsAst?.FirstMatchingNodeFromSubtreeBreadthFirst(AuswertGbs.Glob.GbsAstTypeIstEveLabel, 2, 1); var iconIdentNulbar = iconAst?.PyObjAddress; if (!iconIdentNulbar.HasValue) { return(null); } var text = textAst?.LabelText(); return(new KeyValuePair <Int64, string>(iconIdentNulbar.Value, text)); }
public void Berecne() { var uiElementBase = EWarElementAst?.AsUIElementIfVisible(); if (uiElementBase == null) { return; } EWarButtonAst = EWarElementAst; IconAst = EWarElementAst?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => (string.Equals("Icon", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) || string.Equals("EveIcon", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase)), 3, 1); if (!(IconAst?.VisibleIncludingInheritance ?? false)) { return; // Annaame diise EWar Anzaige isc nit aktiiv. } var EWarTypeString = EWarElementAst?.Name; this.Ergeebnis = new ShipUiEWarElement(uiElementBase) { EWarType = EWarTypeString, IconTexture = IconAst?.TextureIdent0?.AsObjectIdInMemory(), }; }
static public IOverviewEntry OverviewEntryKonstrukt( UINodeInfoInTree EntryAst, IColumnHeader[] ListeScrollHeader, RectInt?regionConstraint) { if (!(EntryAst?.VisibleIncludingInheritance ?? false)) { return(null); } var ListEntryAuswert = new SictAuswertGbsListEntry(EntryAst, ListeScrollHeader, regionConstraint, ListEntryTrenungZeleTypEnum.Ast); ListEntryAuswert.Berecne(); var ListEntry = ListEntryAuswert.ErgeebnisListEntry; if (null == ListEntry) { return(null); } var MainIconAst = EntryAst?.FirstMatchingNodeFromSubtreeBreadthFirst(c => c?.PyObjTypNameMatchesRegexPatternIgnoreCase(MainIconPyTypeName) ?? false); var RightIconContainer = EntryAst?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameIsContainer() && // 2015.09.01: Name = "rightAlignedIconContainer" Regex.Match(k?.Name ?? "", "right.*icon", RegexOptions.IgnoreCase).Success); var RightIcon = RightIconContainer?.MatchingNodesFromSubtreeBreadthFirst(AuswertGbs.Glob.PyObjTypNameIsIcon) ?.Select(AuswertGbs.Extension.AlsSprite) ?.WhereNotDefault() ?.OrdnungLabel() ?.ToArray(); var MainIconSetIndicatorName = MainIconAst?.DictListKeyStringValueNotEmpty?.Where(key => key.RegexMatchSuccessIgnoreCase(MainIconIndicatorKeyRegexPattern)) ?.ToArrayIfNotEmpty(); return(new OverviewEntry(ListEntry) { MainIconSetIndicatorName = MainIconSetIndicatorName, RightIcon = RightIcon, }); }
/// <summary> /// Diis werd verwand mit LayerUtilmenu, daher prüüfung Sictbarkait nit ausraicend. /// </summary> /// <param name="GbsAst"></param> /// <returns></returns> static public IContainer AlsUtilmenu(this UINodeInfoInTree GbsAst) { // 2015.09.08: PyObjTypName = "ExpandedUtilMenu" var AstExpanded = GbsAst?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameMatchesRegexPatternIgnoreCase("ExpandedUtilMenu")); return(AstExpanded?.AlsContainer()); }
static public UINodeInfoInTree FirstNodeWithPyObjAddressFromSubtreeBreadthFirst( this UINodeInfoInTree node, Int64?pyObjAddress, int?depthBoundMax = null, int?depthBoundMin = null) => node.FirstMatchingNodeFromSubtreeBreadthFirst( kandidaat => kandidaat.PyObjAddress == pyObjAddress, depthBoundMax, depthBoundMin);
static public MenuEntry ReadMenuEntry( UINodeInfoInTree entryNode, RectInt regionConstraint) { if (!(entryNode?.VisibleIncludingInheritance ?? false)) { return(null); } var fillAst = entryNode.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("Fill", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 2, 1) ?? entryNode.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => Regex.Match(kandidaat.PyObjTypName ?? "", "Underlay", RegexOptions.IgnoreCase).Success, 2, 1); var fillColor = fillAst == null ? null : ColorORGB.VonVal(fillAst.Color); var entryHighlight = null != fillColor ? (200 < fillColor.OMilli) : (bool?)null; return(entryNode.MenuEntry(regionConstraint, entryHighlight)); }
static public WindowAgentPane PaneAuswert(UINodeInfoInTree paneAst) { if (!(paneAst?.VisibleIncludingInheritance ?? false)) { return(null); } var EditAst = paneAst?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k?.PyObjTypNameEqualsIgnoreCase("Edit") ?? false); return (new WindowAgentPane(paneAst?.AsUIElementIfVisible()) { Html = EditAst?.SrHtmlstr, }); }
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; }
public void Berecne() { if (!(slotNode?.VisibleIncludingInheritance ?? false)) { return; } ModuleButtonAst = slotNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals(ModuleButtonPyTypeName, kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 1, 1); ModuleButtonIconAst = ModuleButtonAst?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) => (string.Equals("Icon", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) || string.Equals("EveIcon", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase)), 1, 1); ModuleButtonQuantityAst = ModuleButtonAst?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) => string.Equals("quantityParent", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 1, 1); ModuleButtonQuantityLabelAst = ModuleButtonQuantityAst?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) => string.Equals("Label", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 1, 1); var MengeSpriteAst = slotNode?.MatchingNodesFromSubtreeBreadthFirst((kandidaat) => true == kandidaat.VisibleIncludingInheritance && string.Equals("Sprite", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), null, 1, 1); SpriteHiliteAst = (null == MengeSpriteAst) ? null : MengeSpriteAst.FirstOrDefault((kandidaat) => string.Equals("hilite", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)); SpriteGlowAst = (null == MengeSpriteAst) ? null : MengeSpriteAst.FirstOrDefault((kandidaat) => string.Equals("glow", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)); SpriteBusyAst = (null == MengeSpriteAst) ? null : MengeSpriteAst.FirstOrDefault((kandidaat) => string.Equals("busy", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)); MengeKandidaatRampAst = slotNode?.MatchingNodesFromSubtreeBreadthFirst((kandidaat) => true == kandidaat.VisibleIncludingInheritance && Regex.Match(kandidaat.PyObjTypName ?? "", "ramps", RegexOptions.IgnoreCase).Success, 1, 1); MengeKandidaatRampAuswert = MengeKandidaatRampAst?.Select((kandidaatRampAst) => { var Auswert = new SictAuswertGbsShipModuleButtonRamps(kandidaatRampAst); Auswert.Berecne(); return(Auswert); }).ToArray(); var RampAuswert = MengeKandidaatRampAuswert ?.FirstOrDefault((kandidaat) => null != kandidaat.LeftRampAst || kandidaat.RampAktiiv); AstMainShape = slotNode?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) => string.Equals("mainshape", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 1, 1); if (null == AstMainShape) { return; } bool?SpriteHiliteSictbar = null; bool?SpriteGlowSictbar = null; bool?SpriteBusySictbar = null; if (null != SpriteHiliteAst) { SpriteHiliteSictbar = true == SpriteHiliteAst.VisibleIncludingInheritance; } if (null != SpriteGlowAst) { SpriteGlowSictbar = true == SpriteGlowAst.VisibleIncludingInheritance; } if (null != SpriteBusyAst) { SpriteBusySictbar = true == SpriteBusyAst.VisibleIncludingInheritance; } var ModuleButtonSictbar = ModuleButtonAst?.VisibleIncludingInheritance; var ModuleButtonFlächeToggle = ModuleButtonAst.AsUIElementIfVisible().WithRegionSizePivotAtCenter(new Vektor2DInt(16, 16)); var ModuleButtonIconTextureIdent = ModuleButtonIconAst?.TextureIdent0; var rampActive = ModuleButtonAst?.RampActive ?? RampAuswert?.RampAktiiv ?? false; var rampRotationMilli = RampAuswert?.RotatioonMili; bool?overloadOn = null; var overloadButton = slotNode?.FirstMatchingNodeFromSubtreeBreadthFirst(node => node.PyObjTypNameIsSprite() && (node?.Name?.RegexMatchSuccessIgnoreCase("OverloadB(tn|utton)") ?? false)); if (null != overloadButton) { if (overloadButton?.Hint?.RegexMatchSuccessIgnoreCase(overloadOffHintRegexPattern) ?? false) { overloadOn = false; } if (overloadButton?.Hint?.RegexMatchSuccessIgnoreCase(overloadOnHintRegexPattern) ?? false) { overloadOn = true; } } var ModuleRepr = new ShipUiModule(slotNode.AsUIElementIfVisible()) { ModuleButtonVisible = ModuleButtonSictbar, ModuleButtonIconTexture = ModuleButtonIconTextureIdent?.AsObjectIdInMemory(), ModuleButtonQuantity = ModuleButtonQuantityLabelAst?.SetText, RampActive = rampActive, RampRotationMilli = rampRotationMilli, HiliteVisible = SpriteHiliteSictbar, GlowVisible = SpriteGlowSictbar, BusyVisible = SpriteBusySictbar, OverloadOn = overloadOn, }; this.ModuleRepr = ModuleRepr; }
virtual public void Berecne() { var Container = EntryAst.AlsContainer(regionConstraint: RegionConstraint); if (null == Container) return; LabelAst = EntryAst.LargestLabelInSubtree(); FläceFürMenuAst = LabelAst; LabelGrenzeLinx = (int?)LabelAst.LaagePlusVonParentErbeLaageA(); /* * 2014.11.08 * * Änderung für Release "Rhea": * "PyObjTypName": "GlowSprite" * ExpanderAst = EntryAst.SuuceFlacMengeAstFrüheste( (Kandidaat) => AuswertGbs.Glob.GbsAstTypeIstEveIcon(Kandidaat) && Regex.Match(Kandidaat.Name ?? "", "expander", RegexOptions.IgnoreCase).Success); * */ ExpanderAst = EntryAst.FirstMatchingNodeFromSubtreeBreadthFirst( (kandidaat) => (AuswertGbs.Glob.GbsAstTypeIstEveIcon(kandidaat) || AuswertGbs.Glob.GbsAstTypeIstSprite(kandidaat)) && Regex.Match(kandidaat.Name ?? "", "expander", RegexOptions.IgnoreCase).Success); IstGroup = ((null == ExpanderAst) ? null : ExpanderAst.VisibleIncludingInheritance) ?? false; var MengeIconOderSpriteAst = EntryAst.MatchingNodesFromSubtreeBreadthFirst( (kandidaat) => (AuswertGbs.Glob.GbsAstTypeIstEveIcon(kandidaat) || Regex.Match(kandidaat.PyObjTypName ?? "", "sprite", RegexOptions.IgnoreCase).Success) && (kandidaat.VisibleIncludingInheritance ?? false)); IstItem = (!MengeIconOderSpriteAst.IsNullOrEmpty() || null != LabelAst) && !(IstGroup ?? false); var MengeIconOderSpriteGrenzeLinx = MengeIconOderSpriteAst ?.Select((iconAst) => iconAst.LaagePlusVonParentErbeLaageA()) ?.Where((kandidaat) => kandidaat.HasValue) ?.Select((iconAstGrenzeLinx) => iconAstGrenzeLinx.Value) ?.ToArray(); if (!MengeIconOderSpriteGrenzeLinx.IsNullOrEmpty()) InhaltGrenzeLinx = (int)Math.Min(InhaltGrenzeLinx ?? int.MaxValue, MengeIconOderSpriteGrenzeLinx.Min()); if (LabelGrenzeLinx.HasValue) InhaltGrenzeLinx = (int)Math.Min(InhaltGrenzeLinx ?? int.MaxValue, LabelGrenzeLinx.Value); var ListEntryInZeleTrenung = this.ListEntryInZeleTrenung(); if (ListEntryTrenungZeleTypEnum.Ast == ListEntryInZeleTrenung) { // genuzt z.B. für "OverviewScrollEntry". var EntryListeZeleLabel = EntryAst.ExtraktMengeLabelString()?.ToArray(); ListeZuHeaderZeleString = EntryListeZeleLabel ?.Select(zeleLabel => new KeyValuePair<IColumnHeader, string>( HeaderBestFit(zeleLabel, ListeColumnHeader), zeleLabel?.Text)) ?.ToArray(); } else { Label = LabelAst.AsUIElementTextIfTextNotEmpty(); var Bescriftung = Label?.Text; if (null != Bescriftung) { if (!(IstGroup ?? false)) { ItemListeZeleTextMitFormat = Bescriftung.Split(new string[] { "<t>" }, StringSplitOptions.None); var ItemListeZeleText = ItemListeZeleTextMitFormat ?.Select((zeleTextMitFormat) => ZeleTextAusZeleTextMitFormat(zeleTextMitFormat)) ?.ToArray(); ListeZuHeaderZeleString = ItemListeZeleText ?.Select((zeleText, index) => new KeyValuePair<IColumnHeader, string>( ListeColumnHeader?.FirstOrDefault(kandidaat => kandidaat.ColumnIndex == index), zeleText)) ?.ToArray(); } } } var backgroundColorNode = EntryAst?.FirstMatchingNodeFromSubtreeBreadthFirst(node => (node?.PyObjTypNameMatchesRegexPatternIgnoreCase("fill") ?? false) && (node?.Name?.RegexMatchSuccessIgnoreCase("bgColor") ?? false)); var ListBackgroundColor = EntryAst?.BackgroundList ?.Select(background => background.Color.AlsColorORGB()) .ConcatNullable(new[] { backgroundColorNode?.Color.AlsColorORGB() }) ?.WhereNotDefault() ?.ToArrayIfNotEmpty(); var SetSprite = EntryAst.SetSpriteFromChildren() ?.ToArrayIfNotEmpty(); ErgeebnisListEntry = new ListEntry(Container) { ContentBoundLeft = InhaltGrenzeLinx, ListColumnCellLabel = ListeZuHeaderZeleString, GroupExpander = ExpanderAst?.AsUIElementIfVisible(), IsGroup = IstGroup, IsExpanded = ExpanderSpriteIsExpanded(ExpanderAst), IsSelected = EntryAst.isSelected, ListBackgroundColor = ListBackgroundColor, SetSprite = SetSprite, }; }
virtual public void Read() { if (!(ScrollNode?.VisibleIncludingInheritance ?? false)) { return; } var mainContainerNode = ScrollNode?.FirstMatchingNodeFromSubtreeBreadthFirst( candidate => string.Equals(MainContainerUIElementName, candidate.Name, StringComparison.InvariantCultureIgnoreCase), 2, 0); var scrollHeadersContainerNode = ScrollNode?.FirstMatchingNodeFromSubtreeBreadthFirst(candidate => candidate.PyObjTypNameIsContainer() && (Regex.Match(candidate.Name ?? "", "scrollHeader", RegexOptions.IgnoreCase).Success) || Regex.Match(candidate.PyObjTypName ?? "", "SortHeader", RegexOptions.IgnoreCase).Success || candidate.PyObjTypNameMatchesRegexPatternIgnoreCase("ScrollColumnHeader"), 3, 1); var setCandidateForColumnHeaderNode = scrollHeadersContainerNode?.MatchingNodesFromSubtreeBreadthFirst(candidate => Regex.Match(candidate.PyObjTypName ?? "", "ColumnHeader", RegexOptions.IgnoreCase).Success || candidate.PyObjTypNameIsContainer(), null, 2, 1) ?.ToArray(); var listColumnHeader = setCandidateForColumnHeaderNode ?.Select(SictAuswertGbsListColumnHeader.Read) ?.Where((columnHeader) => null != columnHeader) ?.Where((columnHeader) => !(columnHeader?.Text).IsNullOrEmpty()) .TailmengeUnterste(ScrollNode) ?.OrderBy((columnHeader) => columnHeader.Region.Center().A) ?.GroupBy(header => header.Id) ?.Select(headerGroup => headerGroup.FirstOrDefault()) ?.ToArray(); var mainContainerScrollControlsNode = mainContainerNode?.FirstMatchingNodeFromSubtreeBreadthFirst( candidate => string.Equals("ScrollControls", candidate.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 2, 1); var mainContainerScrollControlsScrollHandleNode = mainContainerScrollControlsNode?.FirstMatchingNodeFromSubtreeBreadthFirst( candidate => string.Equals("ScrollHandle", candidate.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 3, 1); var mainContainerClipperNode = mainContainerNode?.FirstMatchingNodeFromSubtreeBreadthFirst( candidate => string.Equals(ClipperUIElementName, candidate.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); ClipperContentNode = mainContainerClipperNode?.FirstMatchingNodeFromSubtreeBreadthFirst( candidate => candidate.PyObjTypNameIsContainer() && string.Equals(ClipperContentUIElementName, candidate.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); Result = new Scroll(ScrollNode.AsUIElementIfVisible()) { ColumnHeader = listColumnHeader, Clipper = mainContainerClipperNode.AsUIElementIfVisible(), ScrollHandleBound = mainContainerScrollControlsNode.AsUIElementIfVisible(), ScrollHandle = mainContainerScrollControlsScrollHandleNode.AsUIElementIfVisible(), }; }
public void Berecne() { if (!(LayerShipUiNode?.VisibleIncludingInheritance ?? false)) { return; } ShipUIContainerAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("ShipUIContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) || string.Equals("ShipHudContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), // 2015.05.00 Singularity 2, 1); EwarUIContainerAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("EwarUIContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) || string.Equals("EwarContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) || // 2015.05.00 Singularity string.Equals("BuffBarContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), // 2017-12-20 Process Measurement 0E078DF56834065378574C9319212CF6D01A114E 2, 1); TimersContainerAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => kandidaat.PyObjTypNameIsContainer() && string.Equals("timers", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); var CapacitorContainerAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameEqualsIgnoreCase("CapacitorContainer")); MengeTimerKandidaatAst = TimersContainerAst?.ListChild; EwarUIContainerMengeEWarElementKandidaatAst = EwarUIContainerAst?.MatchingNodesFromSubtreeBreadthFirst(kandidaat => (kandidaat?.VisibleIncludingInheritance ?? false) && (kandidaat?.PyObjTypNameEqualsIgnoreCase("BuffSlotParent") ?? false), null, 2, 1); EwarUIContainerMengeEWarElementKandidaatAuswert = EwarUIContainerMengeEWarElementKandidaatAst ?.Select(kandidaatAst => { var Auswert = new SictAuswertGbsShipUiEWarElement(kandidaatAst); Auswert.Berecne(); return(Auswert); }).ToArray(); EwarUIContainerMengeEWarElementKandidaatAuswertErgeebnis = EwarUIContainerMengeEWarElementKandidaatAuswert ?.Select(auswert => auswert.Ergeebnis) .WhereNotDefault() .ToArray(); ContainerPowerCoreAst = ShipUIContainerAst?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("powercore", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); var ContainerPowerCoreHint = ContainerPowerCoreAst?.Hint; ContainerPowerCoreMengeMarkAst = ContainerPowerCoreAst?.MatchingNodesFromSubtreeBreadthFirst(kandidaat => string.Equals("Sprite", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && string.Equals("pmark", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), null, 2, 1); if (null != ContainerPowerCoreMengeMarkAst) { ContainerPowerCoreMengeMarkAinAnzaal = ContainerPowerCoreMengeMarkAst ?.Count((node) => 700 < node?.Color.Value.OMilli); } var FensterGaugeReadout = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("gaugeReadout", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)); var UnderMainAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("underMain", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)); var SpeedNeedleAst = UnderMainAst?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) => string.Equals("Transform", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && Regex.Match(kandidaat.Name ?? "", "speedNeedle", RegexOptions.IgnoreCase).Success); var HPGaugesAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst( k => string.Equals("HPGauges", k?.PyObjTypName, StringComparison.InvariantCultureIgnoreCase)) ?? LayerShipUiNode; var SpeedGaugeAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst( k => string.Equals("SpeedGauge", k?.PyObjTypName, StringComparison.InvariantCultureIgnoreCase)) ?? LayerShipUiNode; ButtonStopAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k?.NameEqualsIgnoreCase("stopButton") ?? false) ?? // 2015.08.26 Singularity LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k?.PyObjTypNameEqualsIgnoreCase("StopButton") ?? false); var ReadoutContainerAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => (k?.PyObjTypNameIsContainer() ?? false) && (k?.NameMatchesRegex(ReadoutContainerAstNameRegex) ?? false)); var ReadoutLabel = ReadoutContainerAst.ExtraktMengeLabelString()?.OrdnungLabel()?.ToArray(); var SpeedLabel = SpeedGaugeAst?.LargestLabelInSubtree(); var StructureGaugeSpriteAst = HPGaugesAst?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("structureGauge", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)); var ArmorGaugeSpriteAst = HPGaugesAst?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("armorGauge", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)); var ShieldGaugeSpriteAst = HPGaugesAst?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("shieldGauge", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase)); var StructureGaugeSpriteHint = StructureGaugeSpriteAst?.Hint; var ArmorGaugeSpriteHint = ArmorGaugeSpriteAst?.Hint; var ShieldGaugeSpriteHint = ShieldGaugeSpriteAst?.Hint; var SlotsAst = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("slotsContainer", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 4) ?? // 2015.08.25 Beobact Singularity LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameEqualsIgnoreCase("SlotsContainer")); AstIndicationContainer = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("indicationContainer", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 4, 1); var indication = AstIndicationContainer?.AlsContainer(); AuswertSlots = new SictAuswertGbsShipUiSlots(SlotsAst); AuswertSlots.Berecne(); var MengeModule = AuswertSlots.ListModuleButton; ShipHitpointsAndEnergy ShipTreferpunkte = null; var ContainerPowerCoreMengeMarkAstAnzaal = ContainerPowerCoreMengeMarkAst?.Count(); int?CapacitorCapacityNormiirtMili = null; if (0 < ContainerPowerCoreMengeMarkAstAnzaal) { CapacitorCapacityNormiirtMili = (ContainerPowerCoreMengeMarkAinAnzaal * 1000) / (int?)ContainerPowerCoreMengeMarkAstAnzaal; } CapacitorCapacityNormiirtMili = CapacitorCapacityNormiirtMili ?? ((int?)(CapacitorContainerAst?.LastSetCapacitorFloat * 1e+3)); ShipTreferpunkte = new ShipHitpointsAndEnergy() { Struct = (int?)((LayerShipUiNode.StructureLevel ?? StructureGaugeSpriteAst?.LastValueFloat) * 1e+3), Armor = (int?)((LayerShipUiNode.ArmorLevel ?? ArmorGaugeSpriteAst?.LastValueFloat) * 1e+3), Shield = (int?)((LayerShipUiNode.ShieldLevel ?? ShieldGaugeSpriteAst?.LastValueFloat) * 1e+3), Capacitor = CapacitorCapacityNormiirtMili, }; var ButtonStop = ButtonStopAst?.AsUIElementIfVisible(); var ButtonSpeedMax = LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k?.PyObjTypNameEqualsIgnoreCase("MaxSpeedButton") ?? false) .AsUIElementIfVisible(); var ListeTimer = MengeTimerKandidaatAst?.Select(AlsTimer)?.OrdnungLabel()?.ToArray(); var squadronsUINode = LayerShipUiNode ?.FirstMatchingNodeFromSubtreeBreadthFirst(node => node.PyObjTypNameMatchesRegexPatternIgnoreCase("SquadronsUI")); Ergeebnis = new ShipUi(null) { Center = (ContainerPowerCoreAst ?? CapacitorContainerAst).AsUIElementIfVisible().WithRegionSizePivotAtCenter(new Vektor2DInt(40, 40)), Indication = indication, HitpointsAndEnergy = ShipTreferpunkte, SpeedLabel = SpeedLabel?.AsUIElementTextIfTextNotEmpty(), EWarElement = EwarUIContainerMengeEWarElementKandidaatAuswertErgeebnis, Timer = ListeTimer, ButtonSpeed0 = ButtonStop, ButtonSpeedMax = ButtonSpeedMax, Module = MengeModule, SpeedMilli = (Int64?)(LayerShipUiNode?.Speed * 1e+3), Readout = ReadoutLabel, SquadronsUI = squadronsUINode?.AsSquadronsUI(), }; }