static public Menu ReadMenu(UINodeInfoInTree menuNode) { if (!(menuNode?.VisibleIncludingInheritance ?? false)) { return(null); } var setEntryNode = menuNode.MatchingNodesFromSubtreeBreadthFirst( kandidaat => kandidaat?.PyObjTypNameMatchesRegexPatternIgnoreCase(MenuEntryPyTypeName) ?? false, null, 3, 1); var baseElement = menuNode.AsUIElementIfVisible(); var setEntry = setEntryNode ?.Select(kandidaatAst => ReadMenuEntry(kandidaatAst, baseElement?.Region ?? RectInt.Empty)).ToArray(); var listEntry = setEntry?.OrdnungLabel()?.ToArray(); return(new Menu(baseElement) { Entry = listEntry, }); }
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(), }; }
public void Berecne() { if (null == AstMessage) { return; } if (!(true == AstMessage.VisibleIncludingInheritance)) { return; } AstLabel = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( AstMessage, (Kandidaat) => string.Equals("Label", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 2, 1); if (null != AstLabel) { AstLabelSetText = AstLabel.SetText; } this.Ergeebnis = new UIElementText(AstMessage.AsUIElementIfVisible()) { Text = AstLabelText }; }
public void Berecne() { ListAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( InventoryAst, (Kandidaat) => "Scroll".EqualsIgnoreCase(Kandidaat.PyObjTypName), 1, 1); var MengeInvItemAst = Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( InventoryAst, (Kandidaat) => true == Kandidaat.VisibleIncludingInheritance && "InvItem".EqualsIgnoreCase(Kandidaat.PyObjTypName), null, null, null); if (null != MengeInvItemAst) { foreach (var InvItemAst in MengeInvItemAst) { if (null == InvItemAst) { continue; } var InvItemAstGrööse = InvItemAst.Grööse; if (!InvItemAstGrööse.HasValue) { continue; } if (44 < InvItemAstGrööse.Value.B) { SictwaiseScaintGeseztAufListNict = true; break; } } } if (null == ListAst) { return; } ListAuswert = new SictAuswertGbsListViewport <IListEntry>(ListAst, SictAuswertGbsListViewport <IListEntry> .ListEntryKonstruktSctandard); ListAuswert.Read(); var ListAuswertErgeebnis = ListAuswert.Result; if (null == ListAuswertErgeebnis) { return; } var Ergeebnis = new Inventory(InventoryAst.AsUIElementIfVisible()) { ListView = ListAuswertErgeebnis, }; this.Ergeebnis = Ergeebnis; }
static public Sprite AlsSprite( this UINodeInfoInTree GbsAst) => !(GbsAst?.VisibleIncludingInheritance ?? false) ? null : new Sprite(GbsAst.AsUIElementIfVisible()) { Name = GbsAst?.Name, Color = GbsAst?.Color.AsColorORGBIfAnyHasValue(), Texture0Id = GbsAst?.TextureIdent0?.AsObjectIdInMemory(), HintText = GbsAst?.Hint, TexturePath = GbsAst?.texturePath, };
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, }); }
static ShipUiTargetAssignedGroup AusAstBerecneAssignedModuleOderDroneGrupe( UINodeInfoInTree ast) { if (null == ast) { return(null); } bool?IstDrone = null; var SpriteAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( ast, (kandidaat) => string.Equals("Sprite", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 2, 1); var IconAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( ast, AuswertGbs.Glob.GbsAstTypeIstEveIcon, 2, 1); if (null != SpriteAst) { var SpriteAstHint = SpriteAst.Hint; if (null != SpriteAstHint) { IstDrone = Regex.Match(SpriteAstHint, "Drone", RegexOptions.IgnoreCase).Success; } } var IconTextureIdent = IconAst?.TextureIdent0; var ModuleOderDroneGrupe = new ShipUiTargetAssignedGroup(ast.AsUIElementIfVisible()) { IconTexture = IconTextureIdent?.AsObjectIdInMemory(), }; return(ModuleOderDroneGrupe); }
static public Window Window( this UINodeInfoInTree uiNode, bool?isModal, string caption, bool?headerButtonsVisible = null, Sprite[] headerButton = null) { string GbsAstType = null; if (null != uiNode) { GbsAstType = uiNode.PyObjTypName; } return(new Window(uiNode.AsUIElementIfVisible()) { isModal = isModal, Caption = caption, HeaderButtonsVisible = headerButtonsVisible, HeaderButton = headerButton, }); }
public void Berecne() { if (null == AstMission) { return; } AstLabel = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( AstMission, (kandidaat) => string.Equals("EveLabelMedium", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 3, 1); if (null == AstLabel) { return; } var AstLabelBescriftung = AstLabel.LabelText(); Ergeebnis = new UIElementText(AstMission.AsUIElementIfVisible(), AstLabelBescriftung); this.Ergeebnis = Ergeebnis; }
public void Read() { if (!(ListViewNode?.VisibleIncludingInheritance ?? false)) return; var scrollReader = new ScrollReader(ListViewNode); scrollReader.Read(); var scroll = scrollReader.Result; if (null == scroll) return; ListeHeader = scroll.ColumnHeader; var ListeHeaderInfo = ListeHeader ?.Select((header, index) => new ColumnHeader(header) { ColumnIndex = index }) ?.ToArray(); ScrollClipperContentNode = scrollReader.ClipperContentNode; var clipperRegion = ScrollClipperContentNode?.AsUIElementIfVisible()?.Region; var listEntry = ScrollClipperContentNode?.ListChild ?.Select(kandidaatEntryAst => CallbackListEntryConstruct(kandidaatEntryAst, ListeHeaderInfo, clipperRegion)) ?.WhereNotDefault() ?.OrderBy(entry => entry.Region.Center().B) ?.ToArray(); Result = new ListViewAndControl<EntryT>(ListViewNode.AsUIElementIfVisible()) { ColumnHeader = ListeHeader, Entry = listEntry, Scroll = scroll, }; }
virtual public void Berecne() { if (null == TabAst) { return; } if (!(true == TabAst.VisibleIncludingInheritance)) { return; } LabelAst = TabAst.LargestLabelInSubtree(3); if (null == LabelAst) { return; } LabelColor = ColorORGB.VonVal(LabelAst.Color); LabelText = LabelAst.LabelText(); if (null == LabelText || null == LabelColor) { return; } var LabelColorOpazitäätMili = LabelColor.OMilli; var Label = new UIElementText(LabelAst.AsUIElementIfVisible(), LabelText); Ergeebnis = new Tab(TabAst.AsUIElementIfVisible()) { Label = Label, LabelColorOpacityMilli = LabelColorOpazitäätMili, }; }
static public Container AlsContainer( this UINodeInfoInTree containerNode, bool treatIconAsSprite = false, RectInt?regionConstraint = null) { if (!(containerNode?.VisibleIncludingInheritance ?? false)) { return(null); } var MengeKandidaatInputTextAst = containerNode?.MatchingNodesFromSubtreeBreadthFirst(k => k.PyObjTypNameMatchesRegexPatternIgnoreCase("SinglelineEdit|QuickFilterEdit")); var ListeInputText = MengeKandidaatInputTextAst ?.Select(textBoxAst => { var LabelAst = textBoxAst.LargestLabelInSubtree(); if (null == LabelAst) { return(null); } var LabelText = LabelAst?.LabelText(); return(new UIElementInputText(textBoxAst.AsUIElementIfVisible(), LabelText)); }) ?.WhereNotDefault() ?.OrdnungLabel() ?.ToArrayIfNotEmpty(); var ListeButton = containerNode?.ExtraktMengeButtonLabelString()?.OrdnungLabel() ?.ToArrayIfNotEmpty(); var ListeButtonAst = ListeButton?.Select(button => containerNode.FirstNodeWithPyObjAddressFromSubtreeBreadthFirst(button.Id))?.ToArray(); var ListeTextBoxAst = ListeInputText?.Select(textBox => containerNode.FirstNodeWithPyObjAddressFromSubtreeBreadthFirst(textBox.Id))?.ToArray(); var LabelContainerAussclus = new[] { ListeButtonAst, ListeTextBoxAst }.ConcatNullable().ToArray(); var ListeLabelText = containerNode?.ExtraktMengeLabelString() ?.WhereNitEnthalte(LabelContainerAussclus) ?.OrdnungLabel() ?.ToArrayIfNotEmpty(); var setSprite = containerNode.SetSpriteFromChildren(treatIconAsSprite) ?.OrdnungLabel() ?.ToArrayIfNotEmpty(); var baseElement = containerNode.AsUIElementIfVisible(); if (regionConstraint.HasValue) { baseElement = baseElement.WithRegionConstrainedToIntersection(regionConstraint.Value); } return(new Container(baseElement) { ButtonText = ListeButton, InputText = ListeInputText, LabelText = ListeLabelText, Sprite = setSprite, }); }
static public IUIElementText AsUIElementText(this UINodeInfoInTree GbsAst) => (GbsAst?.VisibleIncludingInheritance ?? false) ? new UIElementText(GbsAst.AsUIElementIfVisible(), GbsAst.LabelText() ?? GbsAst.Text) : null;
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; }
public void Berecne() { if (null == NeocomAst) { return; } if (!(true == NeocomAst.VisibleIncludingInheritance)) { return; } NeocomMainContAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( NeocomAst, (Kandidaat) => string.Equals("mainCont", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); NeocomMainContButtonContAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( NeocomMainContAst, (Kandidaat) => string.Equals("buttonCont", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); var EveMenuButton = NeocomMainContAst?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameMatchesRegex(EveMenuButtonPyTypeRegex)) ?.AsUIElementIfVisible(); var CharButton = // 2015.08.23 ShipFitting+FittingManagement+Lobby.AgentEntry: Name = "charSheetBtn" NeocomMainContAst?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameIsButton() && k.NameMatchesRegexPatternIgnoreCase("charSheet")) ?.AsUIElementIfVisible(); var NeocomListButtonAst = NeocomMainContButtonContAst .MatchingNodesFromSubtreeBreadthFirst(k => k.PyObjTypNameIsButton()) ?.ToArray(); var NeocomListButton = NeocomListButtonAst ?.Where(ButtonAst => ButtonAst?.VisibleIncludingInheritance ?? false) ?.Select(ButtonAst => new UIElementText(ButtonAst.AsUIElementIfVisible(), ButtonAst?.Name)) ?.OrdnungLabel() ?.ToArray(); var Button = NeocomListButtonAst ?.Select(ButtonAst => ButtonAst?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameIsSprite())) ?.WhereNotDefault() ?.Select(Extension.AlsSprite) ?.OrdnungLabel() ?.ToArray(); NeocomClockLabelAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( NeocomMainContAst, (Kandidaat) => string.Equals("clockLabel", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 5, 1); if (null != NeocomClockLabelAst) { NeocomClockBescriftung = new UIElementText( NeocomClockLabelAst.AsUIElementIfVisible(), NeocomClockLabelAst.LabelText()?.RemoveXmlTag()); } NeocomCharContAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( NeocomMainContAst, (Kandidaat) => string.Equals("charCont", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 3, 1); Ergeebnis = new Neocom(NeocomAst.AsUIElementIfVisible()) { EveMenuButton = EveMenuButton, CharButton = CharButton, Button = Button, Clock = NeocomClockBescriftung, }; }
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(), }; }