public void Repräsentiire(ShipHitpointsAndEnergy Repräsentiirte)
        {
            this.Repräsentiirte = Repräsentiirte;

            SictTreferpunkteTotalUndRel Shield = null;
            SictTreferpunkteTotalUndRel Armor  = null;
            SictTreferpunkteTotalUndRel Struct = null;

            if (null != Repräsentiirte)
            {
                Shield = SictTreferpunkteTotalUndRel.FürNormiirtMili(Repräsentiirte.Shield);
                Armor  = SictTreferpunkteTotalUndRel.FürNormiirtMili(Repräsentiirte.Armor);
                Struct = SictTreferpunkteTotalUndRel.FürNormiirtMili(Repräsentiirte.Struct);
            }

            ShieldTreferpunktInspekt.Treferpunkte = Shield;
            ArmorTreferpunktInspekt.Treferpunkte  = Armor;
            StructTreferpunktInspekt.Treferpunkte = Struct;
        }
Пример #2
0
        static public bool EachComponentLessThenOrEqual(
            this ShipHitpointsAndEnergy O0,
            ShipHitpointsAndEnergy O1)
        {
            if (O0 == O1)
            {
                return(true);
            }

            if (null == O0 || null == O1)
            {
                return(false);
            }

            return
                (O0.Struct <= O1.Struct &&
                 O0.Armor <= O1.Armor &&
                 O0.Shield <= O1.Shield &&
                 O0.Capacitor <= O1.Capacitor);
        }
Пример #3
0
        public void Repräsentiire(Optimat.EveOnline.ShipState Repräsentiirte)
        {
            bool? Docked  = null;
            bool? Cloaked = null;
            bool? Warping = null;
            bool? Jumping = null;
            Int64?SpeedDurcMeterProSekunde      = null;
            ShipHitpointsAndEnergy Treferpunkte = null;

            try
            {
                if (null == Repräsentiirte)
                {
                    return;
                }

                Docked  = Repräsentiirte.Docked;
                Cloaked = Repräsentiirte.Cloaked;
                Warping = Repräsentiirte.Warping;
                Jumping = Repräsentiirte.Jumping;

                SpeedDurcMeterProSekunde = Repräsentiirte.SpeedDurcMeterProSekunde;

                Treferpunkte = Repräsentiirte.HitpointsRelMili;
            }
            finally
            {
                this.Repräsentiirte = Repräsentiirte;

                CheckBoxDocked.IsChecked  = Docked;
                CheckBoxCloaked.IsChecked = Cloaked;
                CheckBoxWarping.IsChecked = Warping;
                CheckBoxJumping.IsChecked = Jumping;

                TextBoxSpeedInspekt.Text = SpeedDurcMeterProSekunde.ToString();

                TreferpunkteInspekt.Repräsentiire(Treferpunkte);
            }
        }
Пример #4
0
		public void Travel_InputFrequency()
		{
			var BotSequence = new BotSequence();

			var ClientPreference = new Bot.BotPreference() { TravelEnable = true };

			var UIElementFactory = new Func<UIElement>(Exe.UIElementFactory.Instance.UIElementConstruct);

			var InfoPanelRouteWaypointMarker = UIElementFactory();

			var InfoPanelRoute = new InfoPanelRoute(new InfoPanel(UIElementFactory(), true, UIElementFactory()), null, null, new[] { InfoPanelRouteWaypointMarker });

			var ShipUiHitpoints = new ShipHitpointsAndEnergy(1000, 1000, 1000, 700);

			var ShipUiModule = new ShipUiModule(UIElementFactory(), true, null, null, false, null, null, null, null);

			var ShipUi = new ShipUi(UIElementFactory(), UIElementFactory(), new ShipUiIndication(UIElementFactory(), null), ShipUiHitpoints, null, null, null, null, new[] { ShipUiModule });

			var Menu = new BotEngine.EveOnline.Sensor.Menu(UIElementFactory(), new[] { new MenuEntry(new UIElementLabelString(UIElementFactory(), TravelInfoPanelRouteParam.MenuEntryJumpLabel)) });

			var Measurement = new MemoryMeasurement()
			{
				InfoPanelRoute = InfoPanelRoute,

				//	ShipUI tells the Bot that char is in Space.
				ShipUi = ShipUi
			};

			bool MenuOpen = false;

			var MeasurementCurrent = new Func<MemoryMeasurement>(() =>
			 {
				 Measurement.Menu = MenuOpen ? new[] { Menu } : null;

				 return Measurement;
			 });

			var ListInputMenuCountMin = 2;

			var ListTaskMenuOpenTime = new List<Int64>();
			var ListTaskMenuEntryActivateTime = new List<Int64>();
			var ListTaskModuleMeasureTime = new List<Int64>();

			BotSequence.SequenceStep(
				MeasurementCurrent,
				() => ClientPreference,
				Bot =>
				{
					var BotTime = Bot.Time().Value;

					var RecommendedMotion =
						Bot.ExtractRecommendedMotion()
						?.ToArray();

					var Status = Bot.ToUserReport?.TravelTask?.CurrentInstant?.ExtractStatus();
					var ListPathToClientTask = Bot.ToUserReport?.TravelTask?.CurrentInstant?.ExtractPathToClientNode()?.ToArray();

					var ListTaskFlat = ListPathToClientTask.ConcatNullable()?.Distinct()?.ToArray();

					var TaskMenuOpen =
						RecommendedMotion
						?.FirstOrDefault(Node => (Node.Param as MotionParam).ContainsUIElement(InfoPanelRouteWaypointMarker));

					var TaskMenuEntryActivate =
						RecommendedMotion
						?.FirstOrDefault(Node => (Node.Param as MotionParam).ContainsUIElement(Menu?.ListEntry?.FirstOrDefault()));

					var TaskModuleMeasure =
						RecommendedMotion
						?.FirstOrDefault(Node => (Node.Param as MotionParam).ContainsUIElement(ShipUiModule));

					if (null != TaskMenuOpen)
					{
						MenuOpen = true;

						BotSequence.TaskMarkAsCompleted(TaskMenuOpen.IdAtBot);

						if (0 < ListTaskMenuOpenTime.Count)
						{
							var Distance = BotTime - ListTaskMenuOpenTime.Last();

							Assert.Greater(Distance, TravelInfoPanelRouteParam.InputNextManeuverDistanceMin - 1111, "menu open.distance min");

							Assert.Less(Distance, TravelInfoPanelRouteParam.InputNextManeuverDistanceMin + 1111, "menu open.distance max");
						}

						ListTaskMenuOpenTime.Add(BotTime);
					}

					if (null != TaskMenuEntryActivate)
					{
						MenuOpen = false;

						BotSequence.TaskMarkAsCompleted(TaskMenuEntryActivate.IdAtBot);

						var DistanceToMenuOpen = BotTime - ListTaskMenuOpenTime.Last();

						Assert.Less(DistanceToMenuOpen, 1111, "menu entry activate.distance max");

						ListTaskMenuEntryActivateTime.Add(BotTime);
					}

					if (null != TaskModuleMeasure)
					{
						ListTaskModuleMeasureTime.Add(BotTime);
					}
				},
				(int)1e+5);

			Assert.GreaterOrEqual(ListTaskMenuOpenTime.Count, ListInputMenuCountMin, "input menu count min");

			Assert.GreaterOrEqual(ListTaskModuleMeasureTime.Count, 4, "module measure");
		}
        /// <summary>
        /// 2015.07.28
        /// Bescriftung für Item welces meerere Drone repräsentiirt:
        /// "Hobgoblin I (2)"
        /// </summary>
        /// <param name="entryAst"></param>
        /// <param name="listeScrollHeader"></param>
        /// <returns></returns>
        static public DroneViewEntry DroneEntryKonstrukt(
            UINodeInfoInTree entryAst,
            IColumnHeader[] listeScrollHeader,
            RectInt?regionConstraint)
        {
            if (!(entryAst?.VisibleIncludingInheritance ?? false))
            {
                return(null);
            }

            var listEntryAuswert = new SictAuswertGbsListEntry(entryAst, listeScrollHeader, regionConstraint, ListEntryTrenungZeleTypEnum.Ast);

            listEntryAuswert.Berecne();

            var listEntry = listEntryAuswert.ErgeebnisListEntry;

            if (null == listEntry)
            {
                return(null);
            }

            var LabelGröösteAst = entryAst?.LargestLabelInSubtree();

            var labelGrööste = LabelGröösteAst.AsUIElementTextIfTextNotEmpty();

            var isGroup = listEntry?.IsGroup ?? false;

            if (isGroup)
            {
                var Caption = labelGrööste;

                return(new DroneViewEntryGroup(listEntry)
                {
                    Caption = labelGrööste,
                });
            }
            else
            {
                var MengeContainerAst =
                    entryAst.MatchingNodesFromSubtreeBreadthFirst(
                        kandidaat => kandidaat.PyObjTypNameIsContainer(),
                        null,
                        3, 1);

                var GaugesAst =
                    MengeContainerAst.SuuceFlacMengeAstFrüheste(
                        kandidaat => string.Equals("gauges", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase),
                        1, 0);

                var MengeGaugeScpezContainerAst =
                    GaugesAst.MatchingNodesFromSubtreeBreadthFirst(
                        kandidaat => kandidaat.PyObjTypNameIsContainer(),
                        null,
                        1, 1,
                        true);

                var DictZuTypSictStringTreferpunkte = new Dictionary <string, int?>();

                if (null != MengeGaugeScpezContainerAst)
                {
                    foreach (var GaugeScpezContainerAst in MengeGaugeScpezContainerAst)
                    {
                        if (null == GaugeScpezContainerAst)
                        {
                            continue;
                        }

                        var GaugeScpezContainerAstName = GaugeScpezContainerAst.Name;

                        if (null == GaugeScpezContainerAstName)
                        {
                            continue;
                        }

                        var nameMatch = GaugeScpezContainerAstName?.RegexMatchIfSuccess(DroneEntryGaugeScpezAstNameRegexPattern, RegexOptions.IgnoreCase);

                        var typSictString = nameMatch?.Groups[1].Value;

                        if (null == typSictString)
                        {
                            continue;
                        }

                        DictZuTypSictStringTreferpunkte[typSictString] = AusDroneEntryGaugeTreferpunkteRelMili(GaugeScpezContainerAst);
                    }
                }

                var TreferpunkteStruct = DictZuTypSictStringTreferpunkte.FirstOrDefault(kandidaat => kandidaat.Key.ToLower().Contains("struct"));
                var TreferpunkteArmor  = DictZuTypSictStringTreferpunkte.FirstOrDefault(kandidaat => kandidaat.Key.ToLower().Contains("armor"));
                var TreferpunkteShield = DictZuTypSictStringTreferpunkte.FirstOrDefault(kandidaat => kandidaat.Key.ToLower().Contains("shield"));

                var Treferpunkte = new ShipHitpointsAndEnergy
                {
                    Struct = TreferpunkteStruct.Value,
                    Armor  = TreferpunkteArmor.Value,
                    Shield = TreferpunkteShield.Value,
                };

                return(new DroneViewEntryItem(listEntry)
                {
                    Hitpoints = Treferpunkte,
                });
            }
        }
Пример #6
0
        public void Berecne()
        {
            if (!(LayerShipUiNode?.VisibleIncludingInheritance ?? false))
            {
                return;
            }

            ShipUIContainerAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat =>
                                                                          string.Equals("ShipUIContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) ||
                                                                          string.Equals("ShipHudContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), //	2015.05.00	Singularity
                                                                          2, 1);

            EwarUIContainerAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat =>
                                                                          string.Equals("EwarUIContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) ||
                                                                          string.Equals("EwarContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) ||  //	2015.05.00	Singularity
                                                                          string.Equals("BuffBarContainer", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), //	2017-12-20 Process Measurement 0E078DF56834065378574C9319212CF6D01A114E
                                                                          2, 1);

            TimersContainerAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat =>
                                                                          kandidaat.PyObjTypNameIsContainer() &&
                                                                          string.Equals("timers", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase),
                                                                          2, 1);

            var CapacitorContainerAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameEqualsIgnoreCase("CapacitorContainer"));

            MengeTimerKandidaatAst =
                TimersContainerAst?.ListChild;

            EwarUIContainerMengeEWarElementKandidaatAst =
                EwarUIContainerAst?.MatchingNodesFromSubtreeBreadthFirst(kandidaat =>
                                                                         (kandidaat?.VisibleIncludingInheritance ?? false) && (kandidaat?.PyObjTypNameEqualsIgnoreCase("BuffSlotParent") ?? false),
                                                                         null, 2, 1);

            EwarUIContainerMengeEWarElementKandidaatAuswert =
                EwarUIContainerMengeEWarElementKandidaatAst
                ?.Select(kandidaatAst =>
            {
                var Auswert = new SictAuswertGbsShipUiEWarElement(kandidaatAst);
                Auswert.Berecne();
                return(Auswert);
            }).ToArray();

            EwarUIContainerMengeEWarElementKandidaatAuswertErgeebnis =
                EwarUIContainerMengeEWarElementKandidaatAuswert
                ?.Select(auswert => auswert.Ergeebnis)
                .WhereNotDefault()
                .ToArray();

            ContainerPowerCoreAst =
                ShipUIContainerAst?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("powercore", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase),
                                                                             2, 1);

            var ContainerPowerCoreHint = ContainerPowerCoreAst?.Hint;

            ContainerPowerCoreMengeMarkAst =
                ContainerPowerCoreAst?.MatchingNodesFromSubtreeBreadthFirst(kandidaat =>
                                                                            string.Equals("Sprite", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) &&
                                                                            string.Equals("pmark", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase),
                                                                            null, 2, 1);

            if (null != ContainerPowerCoreMengeMarkAst)
            {
                ContainerPowerCoreMengeMarkAinAnzaal =
                    ContainerPowerCoreMengeMarkAst
                    ?.Count((node) => 700 < node?.Color.Value.OMilli);
            }

            var FensterGaugeReadout =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("gaugeReadout", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase));

            var UnderMainAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("underMain", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase));

            var SpeedNeedleAst =
                UnderMainAst?.FirstMatchingNodeFromSubtreeBreadthFirst((kandidaat) =>
                                                                       string.Equals("Transform", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase) &&
                                                                       Regex.Match(kandidaat.Name ?? "", "speedNeedle", RegexOptions.IgnoreCase).Success);

            var HPGaugesAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(
                    k => string.Equals("HPGauges", k?.PyObjTypName, StringComparison.InvariantCultureIgnoreCase)) ?? LayerShipUiNode;

            var SpeedGaugeAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(
                    k => string.Equals("SpeedGauge", k?.PyObjTypName, StringComparison.InvariantCultureIgnoreCase)) ?? LayerShipUiNode;

            ButtonStopAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k?.NameEqualsIgnoreCase("stopButton") ?? false) ??
                //	2015.08.26 Singularity
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k?.PyObjTypNameEqualsIgnoreCase("StopButton") ?? false);

            var ReadoutContainerAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => (k?.PyObjTypNameIsContainer() ?? false) && (k?.NameMatchesRegex(ReadoutContainerAstNameRegex) ?? false));

            var ReadoutLabel =
                ReadoutContainerAst.ExtraktMengeLabelString()?.OrdnungLabel()?.ToArray();

            var SpeedLabel = SpeedGaugeAst?.LargestLabelInSubtree();

            var StructureGaugeSpriteAst =
                HPGaugesAst?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat =>
                                                                      string.Equals("structureGauge", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase));

            var ArmorGaugeSpriteAst =
                HPGaugesAst?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat =>
                                                                      string.Equals("armorGauge", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase));

            var ShieldGaugeSpriteAst =
                HPGaugesAst?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat =>
                                                                      string.Equals("shieldGauge", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase));

            var StructureGaugeSpriteHint = StructureGaugeSpriteAst?.Hint;
            var ArmorGaugeSpriteHint     = ArmorGaugeSpriteAst?.Hint;
            var ShieldGaugeSpriteHint    = ShieldGaugeSpriteAst?.Hint;

            var SlotsAst =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("slotsContainer", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 4) ??
                //	2015.08.25 Beobact Singularity
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k.PyObjTypNameEqualsIgnoreCase("SlotsContainer"));

            AstIndicationContainer =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(kandidaat => string.Equals("indicationContainer", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 4, 1);

            var indication = AstIndicationContainer?.AlsContainer();

            AuswertSlots = new SictAuswertGbsShipUiSlots(SlotsAst);

            AuswertSlots.Berecne();

            var MengeModule = AuswertSlots.ListModuleButton;

            ShipHitpointsAndEnergy ShipTreferpunkte = null;

            var ContainerPowerCoreMengeMarkAstAnzaal = ContainerPowerCoreMengeMarkAst?.Count();

            int?CapacitorCapacityNormiirtMili = null;

            if (0 < ContainerPowerCoreMengeMarkAstAnzaal)
            {
                CapacitorCapacityNormiirtMili = (ContainerPowerCoreMengeMarkAinAnzaal * 1000) / (int?)ContainerPowerCoreMengeMarkAstAnzaal;
            }

            CapacitorCapacityNormiirtMili = CapacitorCapacityNormiirtMili ?? ((int?)(CapacitorContainerAst?.LastSetCapacitorFloat * 1e+3));

            ShipTreferpunkte = new ShipHitpointsAndEnergy()
            {
                Struct    = (int?)((LayerShipUiNode.StructureLevel ?? StructureGaugeSpriteAst?.LastValueFloat) * 1e+3),
                Armor     = (int?)((LayerShipUiNode.ArmorLevel ?? ArmorGaugeSpriteAst?.LastValueFloat) * 1e+3),
                Shield    = (int?)((LayerShipUiNode.ShieldLevel ?? ShieldGaugeSpriteAst?.LastValueFloat) * 1e+3),
                Capacitor = CapacitorCapacityNormiirtMili,
            };

            var ButtonStop =
                ButtonStopAst?.AsUIElementIfVisible();

            var ButtonSpeedMax =
                LayerShipUiNode?.FirstMatchingNodeFromSubtreeBreadthFirst(k => k?.PyObjTypNameEqualsIgnoreCase("MaxSpeedButton") ?? false)
                .AsUIElementIfVisible();

            var ListeTimer =
                MengeTimerKandidaatAst?.Select(AlsTimer)?.OrdnungLabel()?.ToArray();

            var squadronsUINode =
                LayerShipUiNode
                ?.FirstMatchingNodeFromSubtreeBreadthFirst(node => node.PyObjTypNameMatchesRegexPatternIgnoreCase("SquadronsUI"));

            Ergeebnis = new ShipUi(null)
            {
                Center             = (ContainerPowerCoreAst ?? CapacitorContainerAst).AsUIElementIfVisible().WithRegionSizePivotAtCenter(new Vektor2DInt(40, 40)),
                Indication         = indication,
                HitpointsAndEnergy = ShipTreferpunkte,
                SpeedLabel         = SpeedLabel?.AsUIElementTextIfTextNotEmpty(),
                EWarElement        = EwarUIContainerMengeEWarElementKandidaatAuswertErgeebnis,
                Timer          = ListeTimer,
                ButtonSpeed0   = ButtonStop,
                ButtonSpeedMax = ButtonSpeedMax,
                Module         = MengeModule,
                SpeedMilli     = (Int64?)(LayerShipUiNode?.Speed * 1e+3),
                Readout        = ReadoutLabel,
                SquadronsUI    = squadronsUINode?.AsSquadronsUI(),
            };
        }
Пример #7
0
        public void Berecne()
        {
            var TargetAst = this.TargetAst;

            if (null == TargetAst)
            {
                return;
            }

            AstBarAndImageCont = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                TargetAst, (kandidaat) => string.Equals("barAndImageCont", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2);

            AstLabelContainer = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                TargetAst, (kandidaat) => string.Equals("labelContainer", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2);

            AstAssignedPar = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                TargetAst, (kandidaat) => string.Equals("assignedPar", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2);

            AssignedContainerAst =
                TargetAst.FirstMatchingNodeFromSubtreeBreadthFirst(
                    (kandidaat) => kandidaat.PyObjTypNameIsContainer() && string.Equals("assigned", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase),
                    3, 1);

            MengeAssignedModuleOderDroneGrupeAst =
                AssignedContainerAst.MatchingNodesFromSubtreeBreadthFirst(
                    c => c.PyObjTypNameIsContainer() || c.PyObjTypNameMatchesRegexPatternIgnoreCase("Weapon"),
                    null,
                    1, 1,
                    true);

            AstSymboolActive = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                AstBarAndImageCont, (kandidaat) => string.Equals("ActiveTargetOnBracket", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 4);

            AstTargetHealthBars = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                AstBarAndImageCont, (kandidaat) => string.Equals("TargetHealthBars", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 4);

            AstTargetHealthBarsShield = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                AstTargetHealthBars, (kandidaat) => string.Equals("shieldBar", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2);

            AstTargetHealthBarsArmor = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                AstTargetHealthBars, (kandidaat) => string.Equals("armorBar", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2);

            AstTargetHealthBarsHull = Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                AstTargetHealthBars, (kandidaat) => string.Equals("hullBar", kandidaat.Name, StringComparison.InvariantCultureIgnoreCase), 2);

            var AusLabelContainerMengeLabel =
                Optimat.EveOnline.AuswertGbs.Extension.MatchingNodesFromSubtreeBreadthFirst(
                    AstLabelContainer, (kandidaat) => string.Equals("EveLabelSmall", kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), null, 2);

            if (null == AusLabelContainerMengeLabel)
            {
                return;
            }

            var Treferpunkte = new ShipHitpointsAndEnergy()
            {
                Struct = AusGbsAstTargetHealthBarTreferpunkteNormiirtMili(AstTargetHealthBarsHull),
                Armor  = AusGbsAstTargetHealthBarTreferpunkteNormiirtMili(AstTargetHealthBarsArmor),
                Shield = AusGbsAstTargetHealthBarTreferpunkteNormiirtMili(AstTargetHealthBarsShield),
            };

            var AusLabelContainerMengeLabelMitText =
                AusLabelContainerMengeLabel
                .Select((kandidaat) => new KeyValuePair <UINodeInfoInTree, string>(kandidaat, kandidaat.SetText))
                .Where((kandidaat) => null != kandidaat.Value && kandidaat.Key.LaagePlusVonParentErbeLaage().HasValue)
                .ToArray();

            var AusLabelContainerMengeLabelMitTextOrdnet =
                AusLabelContainerMengeLabelMitText
                .OrderBy((kandidaat) => kandidaat.Key.LaagePlusVonParentErbeLaage().Value.B)
                .ToArray();

            if (AusLabelContainerMengeLabelMitTextOrdnet.Length < 2 ||
                4 < AusLabelContainerMengeLabelMitTextOrdnet.Length)
            {
                return;
            }

            var DistanceZaileIndex = AusLabelContainerMengeLabelMitTextOrdnet.Length - 1;

            var DistanceSictStringFormiirt = AusLabelContainerMengeLabelMitTextOrdnet.ElementAtOrDefault(DistanceZaileIndex).Value;

            var OoberhalbDistanceListeZaile =
                AusLabelContainerMengeLabelMitTextOrdnet
                .Take(AusLabelContainerMengeLabelMitTextOrdnet.Length - 1)
                .Select((zaileStringFormiirt) => AusTargetLabelStringEntferneFormiirung(zaileStringFormiirt.Value))
                .Where((zaileBescriftung) => !zaileBescriftung.IsNullOrEmpty())
                .ToArray();

            bool?Active = null;

            if (null != AstSymboolActive)
            {
                Active = null != Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                    AstSymboolActive, (kandidaat) => true == kandidaat.VisibleIncludingInheritance, 2, 1);
            }

            var mengeAssignedModuleOderDroneGrupe =
                MengeAssignedModuleOderDroneGrupeAst
                ?.Select((modulOderDroneGrupeAssignedAst) => AusAstBerecneAssignedModuleOderDroneGrupe(modulOderDroneGrupeAssignedAst))
                ?.Where((modulOderDroneGrupeAssigned) => null != modulOderDroneGrupeAssigned)
                ?.ToArrayIfNotEmpty();

            var RegioonInputFookusSeze =
                AstBarAndImageCont?.AsUIElementIfVisible();

            RegioonInputFookusSeze = RegioonInputFookusSeze?.WithRegionSizePivotAtCenter((RegioonInputFookusSeze.Region.Size() * 7) / 10);

            Ergeebnis = new ShipUiTarget(
                TargetAst.AsUIElementIfVisible())
            {
                LabelText  = TargetAst?.ExtraktMengeLabelString()?.OrdnungLabel()?.ToArray(),
                IsSelected = Active,
                Hitpoints  = Treferpunkte,
                RegionInteractionElement = RegioonInputFookusSeze,
                Assigned = mengeAssignedModuleOderDroneGrupe,
            };
        }
Пример #8
0
 static public bool EveryComponentHasValue(this ShipHitpointsAndEnergy O) =>
 null == O ? false :
 (O.Struct.HasValue &&
  O.Armor.HasValue &&
  O.Shield.HasValue &&
  O.Capacitor.HasValue);