示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        public IEnumerable <SictAufgaabeParam> FürMineListeAufgaabeNääxteParamBerecneTailSurveyScan(
            ISictAutomatZuusctand AutomaatZuusctand)
        {
            if (null == AutomaatZuusctand)
            {
                return(null);
            }

            var NuzerZaitMili = AutomaatZuusctand.NuzerZaitMili;

            var ListeAufgaabeParam = new List <SictAufgaabeParam>();

            var MenuKaskaadeLezte = AutomaatZuusctand.MenuKaskaadeLezte();
            var MenuKaskaadeLezteAlterScritAnzaal = AutomaatZuusctand.ZuObjektBerecneAlterScnapscusAnzaal(MenuKaskaadeLezte);
            var TargetInputFookusTransitioonLezteAlterScritAnzaal = AutomaatZuusctand.TargetInputFookusTransitioonLezteAlterScritAnzaal();

            var MinerAktivitäätZyyklusGrenzeNaheSurveyScan =
                MengeTargetVerwendet
                .AnyNullable((Kandidaat) => Kandidaat.Value.MinerAktivitäätZyyklusGrenzeNaheSurveyScan ?? false);

            var ShipMengeModule = AutomaatZuusctand.ShipMengeModule();

            var ShipModuleSurveyScanner =
                ShipMengeModule
                .FirstOrDefaultNullable((Kandidaat) => Kandidaat.IstSurveyScanner ?? false);

            var WindowSurveyScanView = AutomaatZuusctand.WindowSurveyScanView();

            var WindowSurveyScanViewList = (null == WindowSurveyScanView) ? null : WindowSurveyScanView.ListHaupt;

            var WindowSurveyScanViewListListeEntry = (null == WindowSurveyScanViewList) ? null : WindowSurveyScanViewList.ListeEntry();

            var WindowSurveyScanViewListListeEntryGrupiirtNaacOreTyp =
                (null == WindowSurveyScanViewListListeEntry) ? null :
                WindowSurveyScanViewListListeEntry
                .GroupBy((Kandidaat) => Kandidaat.OreTypSictString ?? Kandidaat.BescriftungTailTitel)
                .ToArray();

            var SurveyScanAlterMili = AutomaatZuusctand.ScnapscusFrühesteZaitAlterMili(WindowSurveyScanViewList);

            var BisSurveyScanBeginZaitDauer = SurveyScanBeginZaitScrankeMin - NuzerZaitMili;

            var WindowSurveyScanViewListScnapscus = (null == WindowSurveyScanViewList) ? null : WindowSurveyScanViewList.AingangScnapscusTailObjektIdentLezteBerecne();

            if (MengeTargetVerwendet.WhereNullable((Kandidaat) => Kandidaat.Value.OreTypFraigaabe ?? false).IsNullOrEmpty())
            {
                return(ListeAufgaabeParam);
            }

            if (!(0 < BisSurveyScanBeginZaitDauer))
            {
                //	Verbindung zwisce SurveyScan und Target mese.

                var SurveyScanNoi = false;

                if (null == WindowSurveyScanViewList ||
                    !(SurveyScanAlterMili < 1000 * 60 * 4) ||
                    (4000 < SaitSurveyScanLezteShipStreke) ||
                    (!(SurveyScanAlterMili < 1000 * 10) &&
                     (MinerAktivitäätZyyklusGrenzeNaheSurveyScan ?? false)))
                {
                    SurveyScanNoi = true;
                }
                else
                {
                    var VonMinerNuldurcgangBisSurveyScanZait =
                        (WindowSurveyScanViewList.ScnapscusFrühesteZait ?? 0) - SurveyScanBeginZaitScrankeMin;

                    if (VonMinerNuldurcgangBisSurveyScanZait < 0)
                    {
                        SurveyScanNoi = true;
                    }
                }

                if (SurveyScanNoi)
                {
                    SictAufgaabeParam SurveyScanKonstruktAufgaabeParam = null;

                    if (null == WindowSurveyScanView)
                    {
                        SurveyScanKonstruktAufgaabeParam = AufgaabeParamAndere.KonstruktModuleScalteAin(ShipModuleSurveyScanner);
                    }
                    else
                    {
                        var WindowSurveyScanViewScnapscus =
                            WindowSurveyScanView.AingangScnapscusTailObjektIdentLezteBerecne() as WindowSurveyScanView;

                        if (null == WindowSurveyScanViewScnapscus)
                        {
                        }
                        else
                        {
                            SictAufgaabeParam SurveyScanEntferneAufgaabeParam = null;

                            var ButtonClear = WindowSurveyScanViewScnapscus.ButtonClear;

                            if (null == ButtonClear)
                            {
                                SurveyScanEntferneAufgaabeParam = AufgaabeParamAndere.KonstruktWindowMinimize(WindowSurveyScanView);
                            }
                            else
                            {
                                SurveyScanEntferneAufgaabeParam = AufgaabeParamAndere.KonstruktMausPfaad(SictAufgaabeParamMausPfaad.KonstruktMausKlikLinx(ButtonClear));
                            }

                            if (null != SurveyScanEntferneAufgaabeParam)
                            {
                                SurveyScanKonstruktAufgaabeParam =
                                    SictAufgaabeParam.KonstruktAufgaabeParam(
                                        SurveyScanEntferneAufgaabeParam,
                                        "clear Survey Scan");
                            }
                        }
                    }

                    if (null != SurveyScanKonstruktAufgaabeParam)
                    {
                        ListeAufgaabeParam.Add(SictAufgaabeParam.KonstruktAufgaabeParam(SurveyScanKonstruktAufgaabeParam, "create new Survey Scan"));
                    }
                }

                if (!SurveyScanNoi && null != WindowSurveyScanViewList)
                {
                    if (null != ListeTargetVerwendetMengeErzRestZuMeseNääxte.Key &&
                        !(MenuKaskaadeLezteAlterScritAnzaal < 2) &&
                        !(TargetInputFookusTransitioonLezteAlterScritAnzaal < 2))
                    {
                        var Target = ListeTargetVerwendetMengeErzRestZuMeseNääxte;

                        if (1 < MengeTargetVerwendet.CountNullable())
                        {
                            //	zunääxt InputFookus auf andere Target seze damit bai Auswaal über SurveyScanView Entry aine Transitioon beoobactet werde kan.

                            if (Target.Key.InputFookusTransitioonLezteZiilWert ?? false)
                            {
                                var TargetAndere =
                                    MengeTargetVerwendet
                                    .FirstOrDefault((Kandidaat) => !(Kandidaat.Key == Target.Key));

                                ListeAufgaabeParam.Add(
                                    AufgaabeParamAndere.KonstruktTargetInputFookusSeze(TargetAndere.Key));
                            }
                        }

                        var TargetAusSurveyScanListGroup = Target.Value.AusSurveyScanListGroup;
                        var AusSurveyScanMengeListItemPasendZuInRaumObjekt = Target.Value.AusSurveyScanMengeListItemPasendZuInRaumObjekt;

                        var ZuTargetAusSurveyScanInfo = Target.Value.AusSurveyScanInfo;

                        var TargetAusSurveyScanListGroupInScnapscusLezteSictbar =
                            (null == TargetAusSurveyScanListGroup) ? (bool?)null : TargetAusSurveyScanListGroup.InLezteScnapscusSictbar();

                        var TargetAusSurveyScanMengeListItemPasendZuOreTypeMitMenuLezte =
                            AusSurveyScanMengeListItemPasendZuInRaumObjekt
                            .WhereNullable((ListEntry) => !(true == ListEntry.IstGroup))
                            .SelectNullable((ListEntry) =>
                                            new KeyValuePair <GbsListGroupedEntryZuusctand, SictGbsMenuKaskaadeZuusctand>(
                                                ListEntry,
                                                AutomaatZuusctand.GbsMenuLezteInAstMitHerkunftAdrese(ListEntry.GbsAstHerkunftAdrese)))
                            .ToArrayNullable();

                        var TargetAusSurveyScanMengeListItemPasendZuOreTypeMitMenuLezteOrdnet =
                            TargetAusSurveyScanMengeListItemPasendZuOreTypeMitMenuLezte
                            .OrderByNullable((Kandidaat) => ((null == Kandidaat.Value) ? null : Kandidaat.Value.BeginZait) ?? int.MinValue)
                            .ToArrayNullable();

                        {
                            ListeTargetVerwendetMengeErzRestZuMeseNääxte = Target;

                            var WindowSurveyScanViewListListeGroup =
                                WindowSurveyScanViewList.ListeEntry()
                                .WhereNullable((Kandidaat) => Kandidaat.IstGroup ?? false)
                                .ToArrayNullable();

                            {
                                //	Ale andere Group collapse.

                                var WindowSurveyScanViewListListeGroupZuCollapse =
                                    WindowSurveyScanViewListListeGroup
                                    .WhereNullable((Kandidaat) =>
                                                   (Kandidaat.IstExpanded ?? true) &&
                                                   !(Kandidaat == TargetAusSurveyScanListGroup))
                                    .OrderByDescendingNullable((Kandidaat) => (Kandidaat.IstExpanded ?? false) ? 1 : 0)
                                    .ToArrayNullable();

                                foreach (var ListGroup in WindowSurveyScanViewListListeGroupZuCollapse)
                                {
                                    ListeAufgaabeParam.Add(AufgaabeParamAndere.KonstruktListEntryCollapse(ListGroup));
                                    break;
                                }
                            }

                            var SurveyScanListEntryZuMeseNääxte =
                                TargetAusSurveyScanMengeListItemPasendZuOreTypeMitMenuLezteOrdnet
                                .FirstOrDefaultNullable((Kandidaat) => !(Kandidaat.Key.IstGroup ?? false) && (Kandidaat.Key.InLezteScnapscusSictbar()));

                            if (null != SurveyScanListEntryZuMeseNääxte.Key)
                            {
                                var SurveyScanListEntryZuMeseNääxteLezteMenu = SurveyScanListEntryZuMeseNääxte.Value;

                                var SurveyScanListEntryZuMeseNääxteLezteMenuBeginZait =
                                    (null == SurveyScanListEntryZuMeseNääxteLezteMenu) ? null : SurveyScanListEntryZuMeseNääxteLezteMenu.BeginZait;

                                var SurveyScanListEntryZuMeseNääxteLezteMenuAlter =
                                    NuzerZaitMili - (SurveyScanListEntryZuMeseNääxteLezteMenuBeginZait ?? int.MinValue);

                                if (33333 < SurveyScanListEntryZuMeseNääxteLezteMenuAlter)
                                {
                                    ListeAufgaabeParam.Add(AufgaabeParamAndere.KonstruktMenuBegin(
                                                               SurveyScanListEntryZuMeseNääxte.Key.FläceFürMenuWurzelBerecne(),
                                                               new SictAnforderungMenuKaskaadeAstBedingung[] {
                                        new     SictAnforderungMenuKaskaadeAstBedingung("non existant Entry", false)
                                    }));
                                }
                            }

                            if (null == TargetAusSurveyScanListGroup)
                            {
                            }
                            else
                            {
                                if (!(true == TargetAusSurveyScanListGroup.IstExpanded))
                                {
                                    ListeAufgaabeParam.Add(AufgaabeParamAndere.KonstruktListEntryExpand(TargetAusSurveyScanListGroup));
                                }
                            }

                            if (null != WindowSurveyScanViewListScnapscus)
                            {
                                var WindowSurveyScanViewListScnapscusScroll = WindowSurveyScanViewListScnapscus.Scroll;

                                if (null != WindowSurveyScanViewListScnapscusScroll)
                                {
                                    if (null != ZuTargetAusSurveyScanInfo)
                                    {
                                        if (WindowSurveyScanViewListScnapscusScroll.ScrollHandleAntailAnGesamtMili < 990)
                                        {
                                            if ((ZuTargetAusSurveyScanInfo.OreTypInScnapscusSurveyScanEntryIstOoberste ?? false) &&
                                                3 < WindowSurveyScanViewListScnapscusScroll.ScrollHandleFläceGrenzeOobnAntailAnGesamtMili &&
                                                !(TargetAusSurveyScanListGroupInScnapscusLezteSictbar ?? false))
                                            {
                                                ListeAufgaabeParam.Add(
                                                    new AufgaabeParamScrollToTop(WindowSurveyScanViewListScnapscusScroll));
                                            }
                                            else
                                            {
                                                if ((ZuTargetAusSurveyScanInfo.OreTypInScnapscusSurveyScanEntryIstUnterste ?? false) &&
                                                    WindowSurveyScanViewListScnapscusScroll.ScrollHandleFläceGrenzeUntnAntailAnGesamtMili < 997)
                                                {
                                                    ListeAufgaabeParam.Add(
                                                        new AufgaabeParamScrollDown(WindowSurveyScanViewListScnapscusScroll));
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        /*
                         * 2014.10.00
                         *
                         * ListeAufgaabeParam.AddRange(
                         *      VerbindungSurveyScanZuTargetListeAufgaabeParam
                         *      .Select((AufgaabeParam) => SictAufgaabeParam.KonstruktAufgaabeParam(AufgaabeParam, "connect Survey Scan to Target")));
                         * */
                    }
                }
            }

            return(ListeAufgaabeParam);
        }