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; }
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); }
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); } }
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, }); } }
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(), }; }
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, }; }
static public bool EveryComponentHasValue(this ShipHitpointsAndEnergy O) => null == O ? false : (O.Struct.HasValue && O.Armor.HasValue && O.Shield.HasValue && O.Capacitor.HasValue);