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,
			};
		}
Beispiel #2
0
        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;
        }