Exemplo n.º 1
0
        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);
        }