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, }; }
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, }); }
public void Berecne() { if (null == AstAgentEntry) { return; } if (!(true == AstAgentEntry.VisibleIncludingInheritance)) { return; } TextContAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( AstAgentEntry, (Kandidaat) => string.Equals("textCont", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); ButtonStartConversationAst = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( AstAgentEntry, (Kandidaat) => string.Equals("ButtonIcon", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) && Regex.Match(Kandidaat.Hint ?? "", "Conversation", RegexOptions.IgnoreCase).Success, 2, 1); AstTextContText = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst( TextContAst, (Kandidaat) => string.Equals("text", Kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2, 1); AstTextContTextMengeLabel = Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst( AstTextContText, (Kandidaat) => string.Equals("EveLabelMedium", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), null, 2, 1); StartConversationButton = ButtonStartConversationAst.AsUIElementIfVisible(); if (null != AstTextContTextMengeLabel) { AstTextContTextMengeLabel = AstTextContTextMengeLabel .OrderBy((Kandidaat) => { var LaagePlusVonParentErbeLaage = Kandidaat.LaagePlusVonParentErbeLaage(); if (!LaagePlusVonParentErbeLaage.HasValue) { return(-1); } return(LaagePlusVonParentErbeLaage.Value.B); }) .ToArray(); } if (null != AstTextContTextMengeLabel && null != AstTextContText) { if (AstTextContText.Grööse.HasValue) { AstTextContTextMengeLabelLinx = AstTextContTextMengeLabel .Where((Kandidaat) => { if (!Kandidaat.LaageInParent.HasValue) { return(false); } return(Kandidaat.LaageInParent.Value.A < AstTextContText.Grööse.Value.A * 0.5); }) .ToArray(); } } if (null == AstTextContTextMengeLabelLinx) { return; } string AgentName = null; string AgentTyp = null; int? AgentLevel = null; string ZaileTypUndLevelText = null; if (null != AstTextContTextMengeLabelLinx) { if (1 < AstTextContTextMengeLabelLinx.Length) { AgentName = AstTextContTextMengeLabelLinx.FirstOrDefault().SetText; ZaileTypUndLevelText = AstTextContTextMengeLabelLinx.LastOrDefault().SetText; } } var TypUndLevel = AgentTypUndLevel(ZaileTypUndLevelText); if (TypUndLevel.HasValue) { AgentTyp = TypUndLevel.Value.Key; AgentLevel = TypUndLevel.Value.Value; } var Ergeebnis = new LobbyAgentEntry(TextContAst.AsUIElementIfVisible()) { LabelText = AstAgentEntry?.ExtraktMengeLabelString()?.OrdnungLabel()?.ToArray(), StartConversationButton = StartConversationButton, }; this.Ergeebnis = Ergeebnis; }