Ejemplo n.º 1
0
 static public BotEngine.EveOnline.Interface.MemoryStruct.LobbyAgentEntry AsOld(this LobbyAgentEntry entry) =>
 entry == null ? null :
 new BotEngine.EveOnline.Interface.MemoryStruct.LobbyAgentEntry(
     entry.AsOldUIElement(),
     entry?.LabelText?.AsOldUIElementLabelString()?.ToArray(),
     entry?.StartConversationButton?.AsOldUIElement());
        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;
        }