static public SictAufgaabeParamZerleegungErgeebnis ZerleegeLockTarget( ISictAutomatZuusctand AutomaatZuusctand, SictOverViewObjektZuusctand OverviewObjekt) { var AufgaabeParamZerleegungErgeebnis = new SictAufgaabeParamZerleegungErgeebnis(null, true); if (null == OverviewObjekt) { return(AufgaabeParamZerleegungErgeebnis); } if (true == OverviewObjekt.TargetingOderTargeted) { return(AufgaabeParamZerleegungErgeebnis); } AufgaabeParamZerleegungErgeebnis.ZerleegungVolsctändigSezeAus(); if (null == AutomaatZuusctand) { return(AufgaabeParamZerleegungErgeebnis); } var FittingUndShipZuusctand = AutomaatZuusctand.FittingUndShipZuusctand; var OverviewUndTarget = AutomaatZuusctand.OverviewUndTarget; var MengeTargetNocSictbar = (null == OverviewUndTarget) ? null : OverviewUndTarget.MengeTargetNocSictbar; var MengeTargetAnzaalScrankeMax = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.MengeTargetAnzaalScrankeMax; var ScritNääxteJammed = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.ScritNääxteJammed; var ScritÜüberNääxteJammed = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.ScritÜüberNääxteJammed; if (ScritÜüberNääxteJammed ?? false) { return(AufgaabeParamZerleegungErgeebnis); } if (MengeTargetAnzaalScrankeMax.HasValue) { if (MengeTargetAnzaalScrankeMax <= MengeTargetNocSictbar.CountNullable()) { return(AufgaabeParamZerleegungErgeebnis); } } var MenuKaskaadeLezte = AutomaatZuusctand.GbsMenuLezteInAst(OverviewObjekt); var MenuAstBedingung = new SictAnforderungMenuKaskaadeAstBedingung(SictShipZuusctandMitFitting.MenuEntryLockTargetRegexPattern, true); if (null != MenuKaskaadeLezte) { var MenuKaskaadeLezteAlter = AutomaatZuusctand.NuzerZaitMili - MenuKaskaadeLezte.BeginZait; var Menu0ListeEntry = MenuKaskaadeLezte.AusMenu0ListeEntryBerecne(); if (!Menu0ListeEntry.IsNullOrEmpty()) { var MenuEntryLock = MenuAstBedingung.AusMengeMenuEntryGibUntermengePasendFürFrüühestePasendePrio(Menu0ListeEntry); if (null == MenuEntryLock && !(8888 < MenuKaskaadeLezteAlter)) { // Kain Entry "Lock" vorhande. Daher Vermuutung das Objekt zu wait entfernt für Lock. AufgaabeParamZerleegungErgeebnis.FüügeAn(AufgaabeParamAndere.AufgaabeDistanceAinzusctele(OverviewObjekt, null, 4444)); } } if (!MenuKaskaadeLezte.EndeZait.HasValue) { // Menu zu OverviewObjekt isc noc geöfnet. if (ScritNääxteJammed ?? false) { return(AufgaabeParamZerleegungErgeebnis); } } } AufgaabeParamZerleegungErgeebnis.ZerleegungVolsctändigSezeAin(); AufgaabeParamZerleegungErgeebnis.FüügeAn( AufgaabeParamAndere.AufgaabeAktioonMenu(OverviewObjekt, MenuAstBedingung)); return(AufgaabeParamZerleegungErgeebnis); }
public IEnumerable <SictAufgaabeParam> FürMineListeAufgaabeNääxteParamBerecneTailInBeltMine( ISictAutomatZuusctand AutomaatZuusctand) { if (null == AutomaatZuusctand) { return(null); } var ListeAufgaabeParam = new List <SictAufgaabeParam>(); var AsteroidLockListeAufgaabeParam = new List <SictAufgaabeParam>(); var AsteroidMineListeAufgaabeParam = new List <SictAufgaabeParam>(); var AsteroidMineModuleScalteAinListeAufgaabeParam = new List <SictAufgaabeParam>(); var FittingUndShipZuusctand = AutomaatZuusctand.FittingUndShipZuusctand; var OverviewUndTarget = AutomaatZuusctand.OverviewUndTarget; if (null == FittingUndShipZuusctand) { return(null); } var ShipMengeModule = AutomaatZuusctand.ShipMengeModule(); var ShipMengeModuleMiner = ShipMengeModule .WhereNullable((Kandidaat) => Kandidaat.IstMiner ?? false) .ToArrayNullable(); var ShipZuusctand = FittingUndShipZuusctand.ShipZuusctand; if (null == ShipZuusctand) { return(null); } var CharZuusctandWarping = ShipZuusctand.Warping; var CharZuusctandDocking = ShipZuusctand.Docking; var ListeTargetVerwendet = MengeTargetVerwendet .OrderByNullable((Kandidaat) => Kandidaat.Key.SictungLezteDistanceScrankeMaxScpezTarget ?? int.MaxValue) .OrderByNullable((Kandidaat) => true == Kandidaat.Key.InputFookusTransitioonLezteZiilWert ? -1 : 0) .ToArrayNullable(); var OverViewScrolledToTopLezteAlter = AutomaatZuusctand.OverViewScrolledToTopLezteAlter(); var WindowOverviewScroll = AutomaatZuusctand.WindowOverviewScnapscusLezteScroll(); var MengeOverviewObjektVerwendetFraigaabe = MengeOverviewObjektVerwendet .WhereNullable((Kandidaat) => Kandidaat.Value.OreTypFraigaabe ?? false) .ToArrayNullable(); ListeTargetVerwendet.ForEachNullable((Target) => { if (!Target.Value.OreTypFraigaabe ?? false) { ListeAufgaabeParam.Add( SictAufgaabeParam.KonstruktAufgaabeParam( AufgaabeParamAndere.KonstruktTargetUnLock(Target.Key), "Target Ore Type not suiting Preferences")); } }); var AsteroidKeepInRangeListeAufgaabeParam = new List <SictAufgaabeParam>(); if ((MengeAsteroidInRaicwaiteAnzaalAusraicend ?? false) && (0 < MengeTargetVerwendet.CountNullable((Kandidaat) => Kandidaat.Value.OreTyp.HasValue))) { AsteroidKeepInRangeListeAufgaabeParam.Add(new AufgaabeParamShipStop()); } else { if (null != OverviewObjektFraigaabeLockedNictNääxte.Key) { var TargetOoneAssignedWaitestEntfernte = MengeTargetVerwendet .WhereNullable((Kandidaat) => !(0 < Kandidaat.Key.ScnapscusMengeAssignedAnzaal())) .OrderByDescendingNullable((Kandidaat) => Kandidaat.Key.SictungLezteDistanceScrankeMax() ?? int.MaxValue) .FirstOrDefaultNullable(); if (null != TargetOoneAssignedWaitestEntfernte.Key) { if (OverviewObjektFraigaabeLockedNictNääxte.Key.DistanceScrankeMaxKombi < TargetOoneAssignedWaitestEntfernte.Key.SictungLezteDistanceScrankeMin() - 1111) { ListeAufgaabeParam.Add(AufgaabeParamAndere.KonstruktTargetUnLock(TargetOoneAssignedWaitestEntfernte.Key)); } } } if (!(AutomaatZuusctand.OverViewScrolledToTopLezteAlter() < 13111)) { AsteroidKeepInRangeListeAufgaabeParam.Add(new AufgaabeParamScrollToTop(WindowOverviewScroll)); } if (null != TargetAnzufliigeNääxte) { AsteroidKeepInRangeListeAufgaabeParam.Add(AufgaabeParamAndere.AufgaabeDistanceAinzusctele(TargetAnzufliigeNääxte, null, 4444)); } } ListeAufgaabeParam.AddRange( AsteroidKeepInRangeListeAufgaabeParam .Select((AufgaabeParam) => SictAufgaabeParam.KonstruktAufgaabeParam( AufgaabeParam, "keep Asteroid in Range"))); if (null == OverviewTabBevorzuugtTitel) { } else { // ListeAufgaabeParam.Add(AufgaabeParamAndere.KonstruktOverviewTabAktiviire(OverviewTabBevorzuugtTitel)); // Laade Overview Default "Mining" naac Tab. ListeAufgaabeParam.Add(new AufgaabeParamOverviewPresetLaade(OverviewPresetTyp.Default, OverviewDefaultMiningIdent, OverviewTabBevorzuugtTitel)); } if (null != ShipMengeModuleMiner) { foreach (var ModuleMiner in ShipMengeModuleMiner) { var ModuleMinerTarget = ModuleMiner.TargetAktuel(); var ModuleMinerTargetInfo = MengeTargetVerwendet .FirstOrDefaultNullable((Kandidaat) => Kandidaat.Key == ModuleMinerTarget); if (ModuleMiner.AktiivBerecne(1)) { string ModuleScalteAusUrsaceSictString = null; if (true == AnnaameNaacAbbrucMinerZyyklusOreHoldGefült) { ModuleScalteAusUrsaceSictString = "Ore Hold Full"; } if (null != ModuleMinerTargetInfo.Key) { if (ModuleMinerTargetInfo.Value.ErzMengeRestScrankeMin <= 0) { ModuleScalteAusUrsaceSictString = "Asteroid depleted"; } } if (null != ModuleScalteAusUrsaceSictString) { AsteroidMineListeAufgaabeParam.Add( SictAufgaabeParam.KonstruktAufgaabeParam( AufgaabeParamAndere.KonstruktModuleScalteAus(ModuleMiner), ModuleScalteAusUrsaceSictString)); } continue; } if (true == DockUndOffloadPrioVorMine) { continue; } var ModuleMinerRange = (ModuleMiner.RangeMax ?? ModuleMiner.RangeOptimal); if (!ModuleMinerRange.HasValue) { continue; } SictTargetZuusctand ZuModuleTargetVerwendet = null; if (!(true == CharZuusctandWarping)) { if (null != ListeTargetVerwendet) { foreach (var Target in ListeTargetVerwendet) { if (null != ZuModuleTargetVerwendet) { break; } if (Target.Key.SictungLezteDistanceScrankeMaxScpezTarget <= TargetDistanceScrankeMax) { // Pro Scrit nur ain Module Assigne. if (AsteroidMineModuleScalteAinListeAufgaabeParam.Count < 1) { if (0 < Target.Value.MengeAssignedAnzaal) { // zu diisem Target isc beraits mindestens ain Module Assigned. if (0 < TargetAssignmentMeerereKarenzDauerRest) { continue; } } ZuModuleTargetVerwendet = Target.Key; if (true == Target.Key.InputFookusTransitioonLezteZiilWert) { if (0 < TargetAssignmentKarenzDauerRest) { } else { AsteroidMineModuleScalteAinListeAufgaabeParam.Add(AufgaabeParamAndere.KonstruktModuleScalteAin(ModuleMiner)); } } else { AsteroidMineListeAufgaabeParam.Add(AufgaabeParamAndere.KonstruktTargetInputFookusSeze(Target.Key)); } } } else { } } } if (null != ZuModuleTargetVerwendet) { continue; } } } } AsteroidMineListeAufgaabeParam.AddRange(AsteroidMineModuleScalteAinListeAufgaabeParam.Take(1)); if (null != AsteroidZuLockeNääxte) { AsteroidLockListeAufgaabeParam.Add(new AufgaabeParamLockTarget(AsteroidZuLockeNääxte)); } if (InOverviewSuuceAsteroid ?? false) { /* * 2014.10.05 * * if (OverViewScrolledToTopLezteAlter < 13333) * { * AsteroidLockListeAufgaabeParam.Add(new AufgaabeParamScrollDown(WindowOverviewScroll)); * } * else * { * AsteroidLockListeAufgaabeParam.Add(new AufgaabeParamScrollToTop(WindowOverviewScroll)); * } * */ AsteroidLockListeAufgaabeParam.Add(AufgaabeParamAndere.KonstruktInOverviewTabFolgeViewportDurcGrid()); } ListeAufgaabeParam.AddRange(AsteroidMineListeAufgaabeParam); ListeAufgaabeParam.AddRange(AsteroidLockListeAufgaabeParam); return(ListeAufgaabeParam); }
static public SictAufgaabeParamZerleegungErgeebnis ZerleegeDestrukt( ISictAutomatZuusctand AutomaatZuusctand, SictAufgaabeKombiZuusctand KombiZuusctand, SictOverViewObjektZuusctand ZiilOverviewObjekt, SictTargetZuusctand ZiilTarget) { var AufgaabeParamZerleegungErgeebnis = new SictAufgaabeParamZerleegungErgeebnis(null, false); if (null == AutomaatZuusctand) { return(AufgaabeParamZerleegungErgeebnis); } var NuzerZaitMili = AutomaatZuusctand.NuzerZaitMili; var ZiilOverviewObjektSictungLezteAlterMili = NuzerZaitMili - ((null == ZiilOverviewObjekt) ? null : ZiilOverviewObjekt.SictungLezteZait); var Gbs = AutomaatZuusctand.Gbs; var OverviewUndTarget = AutomaatZuusctand.OverviewUndTarget; var FittingUndShipZuusctand = AutomaatZuusctand.FittingUndShipZuusctand; var InRaumAktioonUndGefect = AutomaatZuusctand.InRaumAktioonUndGefect; var AusScnapscusAuswertungZuusctand = AutomaatZuusctand.ListeScnapscusLezteAuswertungErgeebnisNaacSimu; var FürWirkungDestruktAufgaabeDroneEngageTarget = (null == InRaumAktioonUndGefect) ? null : InRaumAktioonUndGefect.FürWirkungDestruktAufgaabeDroneEngageTarget; var ScnapscusWindowDroneView = (null == AusScnapscusAuswertungZuusctand) ? null : AusScnapscusAuswertungZuusctand.WindowDroneView; var AnforderungDroneReturnLezte = (null == InRaumAktioonUndGefect) ? null : InRaumAktioonUndGefect.AnforderungDroneReturnLezte; var AnnaameDroneControlCountScrankeMaxNulbar = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.AnnaameDroneControlCountScrankeMax; var MengeModuleRepr = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.MengeModuleRepr; var MengeModuleUmscaltFraigaabe = AutomaatZuusctand.MengeModuleUmscaltFraigaabe .WhereNullable((KandidaatModule) => (null == KombiZuusctand) ? true : KombiZuusctand.ModuleVerwendungFraigaabe(KandidaatModule)) .ToArrayNullable(); var AnnaameTargetingDistanceScrankeMax = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.AnnaameTargetingDistanceScrankeMax; var AnnaameModuleDestruktRangeMax = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.AnnaameModuleDestruktRangeMax; var AnnaameModuleDestruktRangeOptimumNulbar = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.AnnaameModuleDestruktRangeOptimum; var AnnaameGefectDistanzOptimum = Bib3.Glob.Min(AnnaameModuleDestruktRangeOptimumNulbar, AnnaameTargetingDistanceScrankeMax); var ScritNääxteJammed = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.ScritNääxteJammed; var ScritÜüberNääxteJammed = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.ScritÜüberNääxteJammed; var ListeAbovemainMessageDronesLezteAlter = (null == Gbs) ? null : Gbs.ListeAbovemainMessageDronesLezteAlter; var MengeTargetNocSictbar = (null == OverviewUndTarget) ? null : OverviewUndTarget.MengeTargetNocSictbar; bool DroneLaunchVolsctändig = false; if (ListeAbovemainMessageDronesLezteAlter < 3e+4) { DroneLaunchVolsctändig = true; } if (!DroneLaunchVolsctändig && 0 < ExtractFromOldAssembly.Bib3.Extension.CountNullable(MengeTargetNocSictbar) || (ScritNääxteJammed ?? false)) { // Drones Launch if (false == AnforderungDroneReturnLezte && null != ScnapscusWindowDroneView) { // Drones Launch if (0 < ScnapscusWindowDroneView.DronesInBayAnzaal) { /* * 2013.09.24 * Anforderung vorerst nur für Scpeziaalfal das nur fünf drones in space sain köne. * Scpääter sol Anzaal nuzbaarer drones berüksictigt were. * */ if ((AnnaameDroneControlCountScrankeMaxNulbar ?? 5) <= ScnapscusWindowDroneView.DronesInLocalSpaceAnzaal) { DroneLaunchVolsctändig = true; } else { AufgaabeParamZerleegungErgeebnis.FüügeAn(AufgaabeParamAndere.AufgaabeAktioonDroneLaunch()); } } else { DroneLaunchVolsctändig = true; } } } var MengeModuleAinSol = MengeModuleUmscaltFraigaabe.IntersectNullable( MengeModuleRepr.WhereNullable((KandidaatModule) => (((true == KandidaatModule.IstWirkmitelDestrukt) && (true == KandidaatModule.ChargeLoaded)) || (true == KandidaatModule.IstTargetPainter)) && !(true == KandidaatModule.AktiivBerecne(1)))) .ToArrayNullable(); if (null == ZiilTarget) { var MengeTargetPasend = OverviewUndTarget.MengeTargetTailmengePasendZuOverviewObjektBerecne(ZiilOverviewObjekt); if (null != MengeTargetPasend) { ZiilTarget = MengeTargetPasend.OrderBy((KandidaatTarget) => KandidaatTarget.SictungLezteDistanceScrankeMaxScpezTarget ?? int.MaxValue).FirstOrDefault(); } } if (null == ZiilTarget) { if (null != ZiilOverviewObjekt) { if (!(GefectListeLockedTargetScranke <= ExtractFromOldAssembly.Bib3.Extension.CountNullable(MengeTargetNocSictbar))) { if (true == ZiilOverviewObjekt.TargetingOderTargeted && 7777 < ZiilOverviewObjektSictungLezteAlterMili) { AufgaabeParamZerleegungErgeebnis.FüügeAn(AufgaabeParamAndere.AufgaabeInOverViewMaceSictbar(ZiilOverviewObjekt)); } else { var DistanceHinraicendGeringFürLock = true; if (0 < ExtractFromOldAssembly.Bib3.Extension.CountNullable(MengeTargetNocSictbar)) { if (ZiilOverviewObjekt.SaitSictbarkaitLezteListeScritAnzaal < 1) { if (AnnaameTargetingDistanceScrankeMax < ZiilOverviewObjekt.SictungLezteDistanceScrankeMaxScpezOverview && NuzerZaitMili - 4444 < ZiilOverviewObjekt.SictungLezteZait) { DistanceHinraicendGeringFürLock = false; } if (AnnaameGefectDistanzOptimum < ZiilOverviewObjekt.SictungLezteDistanceScrankeMaxScpezOverview) { DistanceHinraicendGeringFürLock = false; } } } if (DistanceHinraicendGeringFürLock) { AufgaabeParamZerleegungErgeebnis.FüügeAn(new AufgaabeParamLockTarget(ZiilOverviewObjekt)); } else { AufgaabeParamZerleegungErgeebnis.ZerleegungVolsctändigSezeAus(); } } } if (!(ZiilOverviewObjekt.SictungLezteDistanceScrankeMaxScpezOverview < AnnaameGefectDistanzOptimum)) { AufgaabeParamZerleegungErgeebnis.FüügeAn(AufgaabeParamAndere.AufgaabeDistanceAinzusctele(ZiilOverviewObjekt, null, AnnaameGefectDistanzOptimum)); } } } else { var AnnaameDroneCommandRange = (null == FittingUndShipZuusctand) ? null : FittingUndShipZuusctand.AnnaameDroneCommandRange; var TargetDistancePasendFürModule = false; var TargetDistancePasendFürDrone = false; // !!!! zu ergänze: Berecnung soldistance für Turret // !!!! zu ergänze: Berecnung TargetMengeModuleAinSol: untermenge von MengeModuleAinSol da Module untersciidlice optimaale Distance haabe (TargetPainter) if (ZiilTarget.SictungLezteDistanceScrankeMaxScpezTarget < AnnaameGefectDistanzOptimum) { TargetDistancePasendFürModule = true; } { AufgaabeParamZerleegungErgeebnis.FüügeAn(AufgaabeParamAndere.AufgaabeDistanceAinzusctele(ZiilTarget, null, AnnaameGefectDistanzOptimum)); } if (ZiilTarget.SictungLezteDistanceScrankeMaxScpezTarget < AnnaameDroneCommandRange) { TargetDistancePasendFürDrone = true; } var DroneEngage = DroneLaunchVolsctändig && TargetDistancePasendFürDrone && true == FürWirkungDestruktAufgaabeDroneEngageTarget; if (DroneEngage || !MengeModuleAinSol.IsNullOrEmpty()) { { if (TargetDistancePasendFürModule) { AufgaabeParamZerleegungErgeebnis.FüügeAn(AufgaabeParamAndere.KonstruktTargetInputFookusSeze(ZiilTarget)); } } } if (!MengeModuleAinSol.IsNullOrEmpty()) { // Hiir werd nuur waitergemact wen noc mindesctens ain Module noc aigescaltet werde sol. if (true == ZiilTarget.InputFookusTransitioonLezteZiilWert) { if (TargetDistancePasendFürModule) { AufgaabeParamZerleegungErgeebnis.FüügeAn( MengeModuleAinSol.Select((ModuleAinSol) => AufgaabeParamAndere.KonstruktModuleScalteAin(ModuleAinSol))); } } } if (DroneEngage) { if (true == ZiilTarget.InputFookusTransitioonLezteZiilWert) { AufgaabeParamZerleegungErgeebnis.FüügeAn(AufgaabeParamAndere.KonstruktDronesEngage(ZiilTarget)); } } } return(AufgaabeParamZerleegungErgeebnis); }
/// <summary> /// /// </summary> /// <param name="AutomaatZuusctand"></param> /// <param name="StrategikonInstanz"></param> /// <param name="InStrategikonAtom"></param> /// <param name="MengeObjektGrupeMesungZaitScrankeMin"> /// Früheste Zait zu der dii Mesung der Objekt Grupe zum ausscliise der Existenz noc zu bearbaitender Objekte begine darf.</param> public void Aktualisiire( SictAutomatZuusctand AutomaatZuusctand, SictMissionStrategikonInstanz StrategikonInstanz, SictMissionStrategikonInRaumAtom InStrategikonAtom, Int64?MengeObjektGrupeMesungZaitScrankeMin) { this.MengeObjektGrupeMesungZaitScrankeMin = MengeObjektGrupeMesungZaitScrankeMin; var AtomZwisceergeebnis = this; if (null == AutomaatZuusctand) { return; } if (null == StrategikonInstanz) { return; } var ZaitMili = AutomaatZuusctand.NuzerZaitMili; var RaumMengeObjektCargoDurcsuuct = StrategikonInstanz.MengeObjektCargoDurcsuuct; var OverviewUndTarget = (null == AutomaatZuusctand) ? null : AutomaatZuusctand.OverviewUndTarget; var MengeInRaumObjekt = (null == OverviewUndTarget) ? null : OverviewUndTarget.MengeOverViewObjekt; Int64?ErfolgTailVorMengeOverviewObjektGrupeMesungZuErscteleZait = null; SictOverviewObjektGrupeEnum[] ZuMengeObjektGrupeMesungVolsctändigFeelend = null; var AtomZwisceergeebnisErfolg = false; Int64?MesungMengeObjektGrupeZaitScrankeMinPlusBeruhigungszait = null; try { if (null == InStrategikonAtom) { AtomZwisceergeebnisErfolg = true; return; } if (null == MengeInRaumObjekt) { return; } var InStrategikonAtomMengeObjektFilter = InStrategikonAtom.MengeObjektFilter; var InStrategikonAtomMengeObjektFilterGrupe = (null == InStrategikonAtomMengeObjektFilter) ? null : Bib3.Glob.ArrayAusListeFeldGeflact( InStrategikonAtomMengeObjektFilter.Select((ObjektFilter) => { var BedingungTypeUndName = ObjektFilter.BedingungTypeUndName; if (null == BedingungTypeUndName) { return(null); } return(BedingungTypeUndName.MengeGrupeZuDurcsuuce); }) .Where((Kandidaat) => null != Kandidaat)) .Distinct() .ToArray(); var MengeObjektGefiltert = MengeInRaumObjektGefiltert(MengeInRaumObjekt, InStrategikonAtomMengeObjektFilter); var MengeObjektGefiltertNocSictbar = (null == MengeObjektGefiltert) ? null : MengeObjektGefiltert.Where((OverViewObjekt) => ZaitMili <= OverViewObjekt.SictungLezteZait).ToArray(); var BedingungObjektExistentErfült = false; SictOverViewObjektZuusctand[] MengeObjektCargoZuDurcsuuce = null; SictOverViewObjektZuusctand[] MengeObjektZuZersctööre = null; KeyValuePair <SictOverViewObjektZuusctand, Int64>?ObjektAnzufliigeUndDistanceScranke = null; var FilterCargoZuDurcsuuce = new Func <SictOverViewObjektZuusctand, bool>((InRaumObjekt) => SictMissionZuusctand.FilterCargoZuDurcsuuce(InRaumObjekt, RaumMengeObjektCargoDurcsuuct)); if (!(true == InStrategikonAtom.BedingungObjektExistent) || !MengeObjektGefiltertNocSictbar.IsNullOrEmpty()) { BedingungObjektExistentErfült = true; } var InStrategikonAtomZuObjektDistanzAinzuscteleScrankeMax = InStrategikonAtom.ZuObjektDistanzAinzuscteleScrankeMax; if (null != MengeObjektGefiltert) { if (true == InStrategikonAtom.ObjektDurcsuuceCargo) { MengeObjektCargoZuDurcsuuce = MengeObjektGefiltert.Where(FilterCargoZuDurcsuuce).ToArray(); } if (true == InStrategikonAtom.ObjektZersctööre) { MengeObjektZuZersctööre = MengeObjektGefiltert; } if (InStrategikonAtomZuObjektDistanzAinzuscteleScrankeMax.HasValue) { var MengeObjektGefiltertDistanceNitPasend = MengeObjektGefiltert.Where((InRaumObjekt) => !(InRaumObjekt.SictungLezteDistanceScrankeMaxScpezOverview <= InStrategikonAtomZuObjektDistanzAinzuscteleScrankeMax.Value)).ToArray(); if (0 < MengeObjektGefiltertDistanceNitPasend.Length) { ObjektAnzufliigeUndDistanceScranke = new KeyValuePair <SictOverViewObjektZuusctand, Int64>( MengeObjektGefiltertDistanceNitPasend.FirstOrDefault(), InStrategikonAtomZuObjektDistanzAinzuscteleScrankeMax.Value); } } } var AtomZwisceergeebnisMengeAufgaabeObjektZuBearbaite = new List <SictAufgaabeParam>(); if (ObjektAnzufliigeUndDistanceScranke.HasValue) { if (null != ObjektAnzufliigeUndDistanceScranke.Value.Key) { AtomZwisceergeebnisMengeAufgaabeObjektZuBearbaite.Add( AufgaabeParamAndere.AufgaabeDistanceAinzusctele( ObjektAnzufliigeUndDistanceScranke.Value.Key, null, ObjektAnzufliigeUndDistanceScranke.Value.Value)); } } if (null != MengeObjektCargoZuDurcsuuce) { AtomZwisceergeebnisMengeAufgaabeObjektZuBearbaite.AddRange( MengeObjektCargoZuDurcsuuce.Select((InRaumObjekt) => AufgaabeParamAndere.AufgaabeAktioonCargoDurcsuuce(InRaumObjekt))); } if (null != MengeObjektZuZersctööre) { AtomZwisceergeebnisMengeAufgaabeObjektZuBearbaite.AddRange( MengeObjektZuZersctööre.Select((InRaumObjekt) => new AufgaabeParamDestrukt(InRaumObjekt))); } AtomZwisceergeebnis.MengeAufgaabeObjektZuBearbaite = AtomZwisceergeebnisMengeAufgaabeObjektZuBearbaite.ToArray(); if (MengeObjektCargoZuDurcsuuce.IsNullOrEmpty()) { if (!AtomZwisceergeebnis.CargoDurcsuuceErfolgZait.HasValue) { AtomZwisceergeebnis.CargoDurcsuuceErfolgZait = ZaitMili; } } else { AtomZwisceergeebnis.CargoDurcsuuceErfolgZait = null; } if (MengeObjektZuZersctööre.IsNullOrEmpty()) { if (!AtomZwisceergeebnis.ZersctööreErfolgZait.HasValue) { AtomZwisceergeebnis.ZersctööreErfolgZait = ZaitMili; } } else { AtomZwisceergeebnis.ZersctööreErfolgZait = null; } if (ObjektAnzufliigeUndDistanceScranke.HasValue) { AtomZwisceergeebnis.AnfliigeErfolgZait = null; } else { if (!AtomZwisceergeebnis.AnfliigeErfolgZait.HasValue) { AtomZwisceergeebnis.AnfliigeErfolgZait = ZaitMili; } } if (BedingungObjektExistentErfült) { if (!AtomZwisceergeebnis.ObjektExistentErfolgZait.HasValue) { AtomZwisceergeebnis.ObjektExistentErfolgZait = ZaitMili; } } else { AtomZwisceergeebnis.ObjektExistentErfolgZait = null; } var ScritBedingungErfültBeruhigungszaitMili = InStrategikonAtom.ScritBedingungErfültBeruhigungszaitMili ?? 1000; var AtomZwisceergeebnisMengeScpezielErfültZaitNulbar = new Int64?[] { AtomZwisceergeebnis.CargoDurcsuuceErfolgZait, AtomZwisceergeebnis.ZersctööreErfolgZait, AtomZwisceergeebnis.AnfliigeErfolgZait, AtomZwisceergeebnis.ObjektExistentErfolgZait }; if (AtomZwisceergeebnisMengeScpezielErfültZaitNulbar.Any((ScpezielErfültZaitNulbar) => !ScpezielErfültZaitNulbar.HasValue)) { // Aine der Scpezialisiirte Aufgaabe isc noc nit erfült. return; } ErfolgTailVorMengeOverviewObjektGrupeMesungZuErscteleZait = Bib3.Glob.Max(AtomZwisceergeebnisMengeScpezielErfültZaitNulbar) ?? 0; var MesungMengeObjektGrupeZaitScrankeMin = Bib3.Glob.Max(ErfolgTailVorMengeOverviewObjektGrupeMesungZuErscteleZait, MengeObjektGrupeMesungZaitScrankeMin) ?? 0; MesungMengeObjektGrupeZaitScrankeMinPlusBeruhigungszait = MesungMengeObjektGrupeZaitScrankeMin + ScritBedingungErfültBeruhigungszaitMili; ZuMengeObjektGrupeMesungVolsctändigFeelend = OverviewUndTarget.MengeObjektGrupeUntermengeOoneOverviewViewportFolgeVolsctändigNaacZait( InStrategikonAtomMengeObjektFilterGrupe, MesungMengeObjektGrupeZaitScrankeMin); if (!ZuMengeObjektGrupeMesungVolsctändigFeelend.IsNullOrEmpty()) { // Verzwaigung Für Debug Haltepunkt } if (MesungMengeObjektGrupeZaitScrankeMinPlusBeruhigungszait < ZaitMili) { /* * 2014.06.12 * * Korektur: Versciibe diise Blok naac finally um überscraibe des vorherige Wert mit null zu ermööglice fals try Blok scon vorher unterbroce werd. * * AtomZwisceergeebnis.MengeOverviewObjektGrupeMesungZuErsctele = ZuMengeObjektGrupeMesungVolsctändigFeelend; * * // if (ZuMengeObjektGrupeMesungVolsctändigFeelend.Length < 1) * if (Optimat.Glob.NullOderLeer(ZuMengeObjektGrupeMesungVolsctändigFeelend)) * { * AtomZwisceergeebnisErfolg = true; * } * */ } } finally { AtomZwisceergeebnis.MengeOverviewObjektGrupeMesungZuErsctele = ZuMengeObjektGrupeMesungVolsctändigFeelend; /* * 2014.07.10 Korektur: zuusäzlice Bedingung: * MesungMengeObjektGrupeZaitScrankeMinPlusBeruhigungszait < ZaitMili * * // if (ZuMengeObjektGrupeMesungVolsctändigFeelend.Length < 1) * if (Optimat.Glob.NullOderLeer(ZuMengeObjektGrupeMesungVolsctändigFeelend)) * { * AtomZwisceergeebnisErfolg = true; * } * */ if (MesungMengeObjektGrupeZaitScrankeMinPlusBeruhigungszait < ZaitMili) { if (ZuMengeObjektGrupeMesungVolsctändigFeelend.IsNullOrEmpty()) { AtomZwisceergeebnisErfolg = true; } } AtomZwisceergeebnis.ErfolgTailVorMengeOverviewObjektGrupeMesungZuErscteleZait = ErfolgTailVorMengeOverviewObjektGrupeMesungZuErscteleZait; if (ErfolgTailVorMengeOverviewObjektGrupeMesungZuErscteleZait.HasValue) { AtomZwisceergeebnis.ErfolgTailVorMengeOverviewObjektGrupeMesungZuErscteleZaitLezte = ErfolgTailVorMengeOverviewObjektGrupeMesungZuErscteleZait; } if (AtomZwisceergeebnisErfolg) { AtomZwisceergeebnis.EntscaidungErfolgLezteZait = ZaitMili; } else { AtomZwisceergeebnis.EntscaidungErfolgLezteZait = null; } AtomZwisceergeebnis.AktualisiireTailEntscaidungErfolgFrühesteZait(); } }