コード例 #1
0
ファイル: Gbs.Zuusctand.cs プロジェクト: sUmcont/Optimat.EO
 public SictGbsWindowZuusctand WindowSurveyScanView()
 {
     return(MengeWindow
            .FirstOrDefaultNullable((Kandidaat) => Kandidaat.AingangScnapscusTailObjektIdentLezteBerecne() is VonSensor.WindowSurveyScanView));
 }
コード例 #2
0
        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;
        }
コード例 #3
0
        public void Aktualisiire(
            SictAutomatZuusctand AutomaatZuusctand,
            VonSensorikMesung AusScnapscusAuswertungZuusctand)
        {
            if (null == AutomaatZuusctand)
            {
                return;
            }

            var AgregatioonAusTransitionInfo = this.AgregatioonAusTransitionInfo;

            var ZaitMili = AutomaatZuusctand.NuzerZaitMili;

            var OverviewUndTarget = AutomaatZuusctand.OverviewUndTarget;

            /*
             * 2015.03.12
             *
             * Ersaz durc ToCustomBotSnapshot
             *      var GbsBaum = AutomaatZuusctand.VonNuzerMeldungZuusctandTailGbsBaum;
             * */

            var GbsBaum = AutomaatZuusctand.ListeScnapscusLezteAuswertungErgeebnisNaacSimu;

            var MengeWindow = this.MengeWindow;
            var ListeAbovemainMessageAuswertMitZait = this.ListeAbovemainMessageAuswertMitZait;

            var ScnapscusWindowOverview = (null == AusScnapscusAuswertungZuusctand) ? null : AusScnapscusAuswertungZuusctand.WindowOverview;

            var NeocomClockZaitKalenderModuloTaagStringUndMinMax = (null == AusScnapscusAuswertungZuusctand) ? null :
                                                                   AusScnapscusAuswertungZuusctand.NeocomClockZaitKalenderModuloTaagMinMax;

            var ScnapscusWindowOverviewZaileInputFookusExklusiiv = (null == ScnapscusWindowOverview) ? null : ScnapscusWindowOverview.ZaileMitInputFookusExklusiiv();

            var ScnapscusMengeWindow = (null == AusScnapscusAuswertungZuusctand) ? null :
                                       AusScnapscusAuswertungZuusctand.MengeWindowBerecne();

            var ScnapscusMengeWindowSictbar =
                ExtractFromOldAssembly.Bib3.Extension.WhereNullable(ScnapscusMengeWindow, (Kandidaat) => null == Kandidaat ? false : (true == Kandidaat.Sictbar))
                .ToArrayNullable();

            var ScnapscusMengeMenu = (null == AusScnapscusAuswertungZuusctand) ? null : AusScnapscusAuswertungZuusctand.MengeMenu;

            if (null == AgregatioonAusTransitionInfo)
            {
                this.AgregatioonAusTransitionInfo = AgregatioonAusTransitionInfo = new SictGbsAgregatioonAusTransitionInfo();
            }

            AgregatioonAusTransitionInfo.Agregiire(AutomaatZuusctand);

            if (null == MengeWindow)
            {
                this.MengeWindow = MengeWindow = new List <SictGbsWindowZuusctand>();
            }

            if (NeocomClockZaitKalenderModuloTaagStringUndMinMax.HasValue)
            {
                this.NeocomClockZaitModuloTaagMinMax = NeocomClockZaitKalenderModuloTaagStringUndMinMax.Value;
            }

            var ListeAusGbsAbovemainMessageMitZait = AutomaatZuusctand.ListeAusGbsAbovemainMessageMitZait();

            var ListeAusGbsAbovemainMessageMitZaitLezte =
                (null == ListeAusGbsAbovemainMessageMitZait) ? null : ListeAusGbsAbovemainMessageMitZait.LastOrDefault();

            if (null != AusScnapscusAuswertungZuusctand)
            {
                if (null != AusScnapscusAuswertungZuusctand.InfoPanelLocationInfo)
                {
                    InfoPanelLocationInfoSictbarLezteZaitMili = ZaitMili;
                }

                if (null != AusScnapscusAuswertungZuusctand.InfoPanelRoute)
                {
                    InfoPanelRouteSictbarLezteZaitMili = ZaitMili;
                }

                if (null != AusScnapscusAuswertungZuusctand.InfoPanelMissions)
                {
                    InfoPanelMissionsSictbarLezteZaitMili = ZaitMili;
                }
            }

            SictGbsWindowZuusctand.ZuZaitAingangMengeObjektScnapscus(
                ZaitMili,
                ScnapscusMengeWindowSictbar,
                MengeWindow,
                false,
                AgregatioonAusTransitionInfo);

            {
                //	Window entferne welce zu lange nit meer geöfnet sind.
                MengeWindow.RemoveAll((Kandidaat) => !Kandidaat.InLezteScnapscusSictbar());
            }

            {
                var MengeWindowGrupe = MengeWindow.GroupBy((Kandidaat) => Kandidaat.GbsAstHerkunftAdrese).ToArray();

                if (MengeWindowGrupe.Any((Grupe) => 1 < Grupe.Count()))
                {
                    //	Temp für Debug Verzwaigung
                }
            }

            {
                //	Berecnung	ListeAbovemainMessageAuswertMitZait

                if (null != ListeAusGbsAbovemainMessageMitZaitLezte)
                {
                    var ListeAusGbsAbovemainMessageLezte = ListeAusGbsAbovemainMessageMitZaitLezte.Wert;

                    var ListeAusGbsAbovemainMessageLezteText = ListeAusGbsAbovemainMessageLezte.LabelText;

                    if (null != ListeAusGbsAbovemainMessageLezteText)
                    {
                        if (null != ListeAusGbsAbovemainMessageLezte)
                        {
                            if (null == ListeAbovemainMessageAuswertMitZait)
                            {
                                this.ListeAbovemainMessageAuswertMitZait = ListeAbovemainMessageAuswertMitZait =
                                    new List <SictVerlaufBeginUndEndeRef <SictMessageStringAuswert> >();
                            }

                            SictVerlaufBeginUndEndeRef <SictMessageStringAuswert> AbovemainMessageAuswertMitZait =
                                ListeAbovemainMessageAuswertMitZait
                                .LastOrDefault((Kandidaat) => Kandidaat.BeginZait == ListeAusGbsAbovemainMessageMitZaitLezte.BeginZait);

                            if (null == AbovemainMessageAuswertMitZait)
                            {
                                var AbovemainMessageAuswert = new SictMessageStringAuswert(ListeAusGbsAbovemainMessageLezteText);

                                AbovemainMessageAuswertMitZait = new SictVerlaufBeginUndEndeRef <SictMessageStringAuswert>(
                                    ListeAusGbsAbovemainMessageMitZaitLezte.BeginZait,
                                    ListeAusGbsAbovemainMessageMitZaitLezte.EndeZait,
                                    AbovemainMessageAuswert);

                                AbovemainMessageAuswert.Berecne();

                                ListeAbovemainMessageAuswertMitZait.Add(AbovemainMessageAuswertMitZait);

                                if (AbovemainMessageAuswert.ClusterShutdownZaitDistanz.HasValue)
                                {
                                    AbovemainMessageClusterShutdownLezte = AbovemainMessageAuswertMitZait;
                                }
                            }
                        }
                    }
                }
            }

            ListeAbovemainMessageDronesLezteAuswertMitZait =
                ListeAbovemainMessageAuswertMitZait
                .LastOrDefaultNullable((Kandidaat) =>
                                       null == Kandidaat.Wert ? false :
                                       (Kandidaat.Wert.DroneBandwithAvailableMili.HasValue ||
                                        Kandidaat.Wert.DroneCommandRange.HasValue ||
                                        Kandidaat.Wert.DroneControlCountScrankeMax.HasValue));

            ListeAbovemainMessageDronesLezteAlter =
                ZaitMili - (null == ListeAbovemainMessageDronesLezteAuswertMitZait ? (Int64?)null : (ListeAbovemainMessageDronesLezteAuswertMitZait.EndeZait ?? ZaitMili));

            if (null != ListeAbovemainMessageAuswertMitZait)
            {
                foreach (var AbovemainMessageAuswertMitZait in ListeAbovemainMessageAuswertMitZait.Reversed().Take(4))
                {
                    if (AbovemainMessageAuswertMitZait.EndeZait.HasValue)
                    {
                        continue;
                    }

                    var AbovemainMessageMitZait =
                        ExtractFromOldAssembly.Bib3.Extension.FirstOrDefaultNullable(
                            ListeAusGbsAbovemainMessageMitZait,
                            (Kandidaat) => Kandidaat.BeginZait == AbovemainMessageAuswertMitZait.BeginZait);

                    if (null == AbovemainMessageMitZait)
                    {
                        AbovemainMessageAuswertMitZait.EndeZait = ZaitMili;
                    }
                    else
                    {
                        AbovemainMessageAuswertMitZait.EndeZait = AbovemainMessageMitZait.EndeZait;
                    }
                }

                {
                    //	Naacricte welce älter sind als Viir minuute entferne

                    var ListeAbovemainMessageAuswertMitZaitZuErhalteZaitScranke = ZaitMili - 1000 * 60 * 4;

                    ListeAbovemainMessageAuswertMitZait
                    .RemoveAll((Kandidaat) => Kandidaat.BeginZait < ListeAbovemainMessageAuswertMitZaitZuErhalteZaitScranke);
                }
            }

            {
                //	Berecnung ListeGbsMenu

                //	Menge Menu werd geordnet für den Fal das in aine Scnapscus meerere Menu auftauce
                //	2014.02.27	Beobactung: lezte Menu erhält 0=InGbsZIndex -> noieste isc am waiteste vorne (okludiirt andere)

                var ScnapscusListeMenu =
                    (null == ScnapscusMengeMenu) ? null :
                    ScnapscusMengeMenu

                    /*
                     * 2015.09.01
                     * Änderung InGbsBaumAstIndex: Übernaame von noie Sensor InTreeIndex: Element occludes other Elements with lower Value.
                     *
                     * .OrderByDescending((ScnapscusMenu) => ScnapscusMenu.InGbsBaumAstIndex ?? -1)
                     */
                    .OrderBy((ScnapscusMenu) => ScnapscusMenu.InGbsBaumAstIndex ?? -1)
                    .ToArray();

                var ScnapscusListeMenuFrüüheste =
                    ExtractFromOldAssembly.Bib3.Extension.FirstOrDefaultNullable(ScnapscusListeMenu);

                var ScnapscusListeMenuFrüühesteListeEntry =
                    (null == ScnapscusListeMenuFrüüheste) ? null :
                    ScnapscusListeMenuFrüüheste.ListeEntry;

                var MenuKaskaadeLezte = ExtractFromOldAssembly.Bib3.Extension.LastOrDefaultNullable(ListeMenuKaskaade);

                if (null == ScnapscusListeMenuFrüühesteListeEntry)
                {
                    if (null != MenuKaskaadeLezte)
                    {
                        MenuKaskaadeLezte.AingangScnapscusLeer(ZaitMili);
                    }

                    MenuKaskaadeLezte = null;
                }
                else
                {
                    GbsElement MenuWurzelAnnaameInitiaal = null;

                    var MengeAufgaabeZuusctand = AutomaatZuusctand.MengeAufgaabeZuusctand;

                    var ScritLezteWirkungMengeAufgaabePfaadZuBlatMitGrupePrioNaame =
                        AutomaatZuusctand.ScritLezteWirkungMengeAufgaabePfaadZuBlatMitGrupePrioNaame
                        .ToArrayNullable();

                    if (null != ScritLezteWirkungMengeAufgaabePfaadZuBlatMitGrupePrioNaame)
                    {
                        foreach (var ScritLezteWirkungAufgaabePfaadZuBlatMitGrupePrioNaame in ScritLezteWirkungMengeAufgaabePfaadZuBlatMitGrupePrioNaame)
                        {
                            if (null == ScritLezteWirkungAufgaabePfaadZuBlatMitGrupePrioNaame.Key)
                            {
                                continue;
                            }

                            foreach (var AufgaabeAst in ScritLezteWirkungAufgaabePfaadZuBlatMitGrupePrioNaame.Key)
                            {
                                var AufgaabeAstAufgaabeParam = AufgaabeAst.AufgaabeParam as AufgaabeParamAndere;

                                if (null == AufgaabeAstAufgaabeParam)
                                {
                                    continue;
                                }

                                var AufgaabeAstAufgaabeParamMenuWurzelGbsObjekt = AufgaabeAstAufgaabeParam.MenuWurzelGbsObjekt;

                                if (null == AufgaabeAstAufgaabeParamMenuWurzelGbsObjekt)
                                {
                                    continue;
                                }

                                var AufgaabeAstAufgaabeParamMenuWurzelGbsObjektIdentNulbar = (Int64?)AufgaabeAstAufgaabeParamMenuWurzelGbsObjekt.Ident;

                                if (!AufgaabeAstAufgaabeParamMenuWurzelGbsObjektIdentNulbar.HasValue)
                                {
                                    continue;
                                }

                                var AufgaabeAstAufgaabeParamMenuWurzelGbsObjektIdent = AufgaabeAstAufgaabeParamMenuWurzelGbsObjektIdentNulbar.Value;

                                var AufgaabeAstAufgaabeParamMenuWurzelGbsObjektFläce = AufgaabeAstAufgaabeParamMenuWurzelGbsObjekt.InGbsFläce;

                                if (null == AufgaabeAstAufgaabeParamMenuWurzelGbsObjektFläce)
                                {
                                    continue;
                                }

                                var AufgaabeAstAufgaabeParamMenuWurzelGbsObjektFläceVergröösertFürTestÜberscnaidung =
                                    AufgaabeAstAufgaabeParamMenuWurzelGbsObjektFläce.Vergröösert(40, 10);

                                var ScnapscusAufgaabeMenuWurzelTarget      = AufgaabeAstAufgaabeParamMenuWurzelGbsObjekt as ShipUiTarget;
                                var ScnapscusAufgaabeMenuWurzelOverviewRow =
                                    (GbsElement)(AufgaabeAstAufgaabeParamMenuWurzelGbsObjekt as VonSensor.OverviewZaile);

                                bool AnnaameMenuPasendZuAusAufgaabeMenuWurzel = true;

                                var ScnapscusLezteMenuWurzelGbsObjektTarget =
                                    AusScnapscusAuswertungZuusctand.TargetEnthaltendGbsAstBerecne(AufgaabeAstAufgaabeParamMenuWurzelGbsObjekt);

                                var ScnapscusLezteMenuWurzelGbsObjektOverviewRow = (null == ScnapscusWindowOverview) ? null :
                                                                                   ScnapscusWindowOverview.OverviewRowEnthaltendGbsAstBerecne(AufgaabeAstAufgaabeParamMenuWurzelGbsObjekt);

                                {
                                    /*
                                     * 2014.04.22	Beobactung Probleem:
                                     * In vorherige Scrit für OverviewZaile geöfnete Menu werd waiterverwendet als Menu welces für ain in Inventory angezaigte Objekt ersctelt werde solte.
                                     * In Folge werd der falsce Cargo Container Abandoned.
                                     *
                                     * Daher Ainfüürung zuusäzlice Bedingung:
                                     * Menu früheste Fläce mus überscnaide mit MenuWurzelGbsObjektAbbild.Fläce
                                     * */

                                    //	Bedingung: Fläce von ScnapscusAufgaabeMenuWurzelTarget und Menu müsen sic scnaide

                                    if (OrtogoonInt.Scnitfläce(
                                            AufgaabeAstAufgaabeParamMenuWurzelGbsObjektFläceVergröösertFürTestÜberscnaidung,
                                            ScnapscusListeMenuFrüüheste.InGbsFläce).IsLeer)
                                    {
                                        AnnaameMenuPasendZuAusAufgaabeMenuWurzel = false;
                                    }
                                }

                                {
                                    /*
                                     * 2014.04.22	Beobactung Probleem:
                                     * In vorherige Scrit für OverviewZaile geöfnete Menu werd waiterverwendet als Menu welces für ain in Inventory angezaigte Objekt ersctelt werde solte.
                                     * In Folge werd der falsce Cargo Container Abandoned.
                                     *
                                     * Daher 2014.04.29 Ainfüürung zuusäzlice Bedingung:
                                     * Fals MenuWurzelGbsObjekt in aine Window enthalte isc mus diises das vorderste Window sain.
                                     * */

                                    if (null == GbsBaum ||
                                        null == MengeWindow)
                                    {
                                        AnnaameMenuPasendZuAusAufgaabeMenuWurzel = false;
                                    }
                                    else
                                    {
                                        SictGbsWindowZuusctand MenuWurzelGbsObjektWindow = null;

                                        foreach (var KandidaatGbsWindow in MengeWindow)
                                        {
                                            var GbsWindowHerkunftAdrese = KandidaatGbsWindow.GbsAstHerkunftAdrese;

                                            if (!GbsWindowHerkunftAdrese.HasValue)
                                            {
                                                continue;
                                            }

                                            var GbsWindowAst = GbsBaum.SuuceFlacMengeGbsAstFrühesteMitIdent(GbsWindowHerkunftAdrese.Value);

                                            if (null == GbsWindowAst)
                                            {
                                                continue;
                                            }

                                            if (null != GbsWindowAst.SuuceFlacMengeGbsAstFrühesteMitIdent(AufgaabeAstAufgaabeParamMenuWurzelGbsObjektIdent))
                                            {
                                                MenuWurzelGbsObjektWindow = KandidaatGbsWindow;
                                            }
                                        }

                                        if (null != MenuWurzelGbsObjektWindow)
                                        {
                                            /*
                                             * 2015.09.01
                                             * Änderung InGbsBaumAstIndex: Übernaame von noie Sensor InTreeIndex: Element occludes other Elements with lower Value.
                                             *                                              if (MengeWindow.Any((GbsWindow) => GbsWindow.ZIndex.HasValue && GbsWindow.ZIndex < (MenuWurzelGbsObjektWindow.ZIndex ?? int.MaxValue)))
                                             */
                                            if (MengeWindow.Any((GbsWindow) => GbsWindow.ZIndex.HasValue && GbsWindow.ZIndex > (MenuWurzelGbsObjektWindow.ZIndex ?? int.MaxValue)))
                                            {
                                                //	Ain anderes Window befindet sic waiter vorne als das Window welces MenuWurzelGbsObjekt enthalt.
                                                AnnaameMenuPasendZuAusAufgaabeMenuWurzel = false;
                                            }
                                        }
                                    }
                                }

                                if (null != ScnapscusAufgaabeMenuWurzelTarget)
                                {
                                    if (null == ScnapscusLezteMenuWurzelGbsObjektTarget)
                                    {
                                        AnnaameMenuPasendZuAusAufgaabeMenuWurzel = false;
                                    }
                                    else
                                    {
                                        if (null == ScnapscusAufgaabeMenuWurzelTarget.InGbsFläce ||
                                            null == ScnapscusLezteMenuWurzelGbsObjektTarget.InGbsFläce)
                                        {
                                            AnnaameMenuPasendZuAusAufgaabeMenuWurzel = false;
                                        }
                                        else
                                        {
                                            var BeweegungSctreke =
                                                ScnapscusLezteMenuWurzelGbsObjektTarget.InGbsFläce.ZentrumLaage -
                                                ScnapscusAufgaabeMenuWurzelTarget.InGbsFläce.ZentrumLaage;

                                            if (!(BeweegungSctreke.Betraag < 4))
                                            {
                                                //	Target solte zwisce deen zwai Scnapscus nit beweegt haabe.
                                                AnnaameMenuPasendZuAusAufgaabeMenuWurzel = false;
                                            }
                                        }

                                        var KandidaatMenuEntryIndikatorTarget = ScnapscusListeMenuFrüühesteListeEntry.MenuEntryTargetUnLock();

                                        if (null == KandidaatMenuEntryIndikatorTarget)
                                        {
                                            AnnaameMenuPasendZuAusAufgaabeMenuWurzel = false;
                                        }
                                    }
                                }

                                if (null != ScnapscusAufgaabeMenuWurzelOverviewRow)
                                {
                                    if (null == ScnapscusLezteMenuWurzelGbsObjektOverviewRow)
                                    {
                                        AnnaameMenuPasendZuAusAufgaabeMenuWurzel = false;
                                    }
                                    else
                                    {
                                        if (!(ObjektMitIdentInt64.Identisc(ScnapscusLezteMenuWurzelGbsObjektOverviewRow, ScnapscusWindowOverviewZaileInputFookusExklusiiv)))
                                        {
                                            AnnaameMenuPasendZuAusAufgaabeMenuWurzel = false;
                                        }
                                    }
                                }

                                if (!AnnaameMenuPasendZuAusAufgaabeMenuWurzel)
                                {
                                    continue;
                                }

                                MenuWurzelAnnaameInitiaal = AufgaabeAstAufgaabeParamMenuWurzelGbsObjekt;
                            }
                        }
                    }

                    Action MenuKaskaadeKonstrukt = delegate()
                    {
                        MenuKaskaadeLezte = new SictGbsMenuKaskaadeZuusctand(
                            ZaitMili,
                            ScritLezteWirkungMengeAufgaabePfaadZuBlatMitGrupePrioNaame,
                            MenuWurzelAnnaameInitiaal,
                            ScnapscusListeMenu);
                        ListeMenuKaskaade.Enqueue(MenuKaskaadeLezte);
                    };

                    if (null == MenuKaskaadeLezte)
                    {
                        /*
                         * 2015.01.16
                         *
                         * MenuKaskaadeLezte = new SictGbsMenuKaskaadeZuusctand(ZaitMili, MenuWurzelAnnaameInitiaal, ScnapscusListeMenu);
                         * ListeMenuKaskaade.Enqueue(MenuKaskaadeLezte);
                         * */
                        MenuKaskaadeKonstrukt();
                    }
                    else
                    {
                        if (!MenuKaskaadeLezte.AingangScnapscus(ZaitMili, ScnapscusListeMenu))
                        {
                            /*
                             * 2015.01.16
                             *
                             * MenuKaskaadeLezte = new SictGbsMenuKaskaadeZuusctand(ZaitMili, MenuWurzelAnnaameInitiaal, ScnapscusListeMenu);
                             * ListeMenuKaskaade.Enqueue(MenuKaskaadeLezte);
                             * */
                            MenuKaskaadeKonstrukt();
                        }
                    }
                }

                ListeMenuKaskaade.ListeKürzeBegin(30);

                var ListeMenu =
                    (null == MenuKaskaadeLezte) ? null :
                    MenuKaskaadeLezte.ListeMenu;

                var AusButtonListSurroundingsMenu =
                    ExtractFromOldAssembly.Bib3.Extension.FirstOrDefaultNullable(
                        ListeMenu, ButtonListSurroundingsMenuPrädikaatTailSctaatisc);

                if (null != AusButtonListSurroundingsMenu)
                {
                    if (1 < AusButtonListSurroundingsMenu.ListeScnapscusZuZaitAingangBisherAnzaal)
                    {
                        //	Übernaame ersct bai meer als ain Scnapscus da eventuel in früühescte Scnapscus noc nit ale Entry enthalte
                        AusButtonListSurroundingsMenuLezteMitBeginZait = AusButtonListSurroundingsMenu.SictWertMitZaitBerecneFürBeginZait <SictGbsMenuZuusctand>();
                    }
                }
            }
        }