예제 #1
0
        public override void Wykonaj()
        {
            KlocekPionowyZZawartością        rodzic             = Rodzic;
            List <KlocekPionowyZZawartością> klockiDoPrzerwania = new List <KlocekPionowyZZawartością>();

            while (rodzic != null)
            {
                klockiDoPrzerwania.Add(rodzic);

                IPętla pętla = rodzic as IPętla;

                if (pętla != null)
                {
                    pętla.PowódSkoku = _powódSkoku;

                    break;
                }

                rodzic = rodzic.Rodzic;
            }

            if (rodzic != null)
            {
                foreach (KlocekPionowyZZawartością klocek in klockiDoPrzerwania)
                {
                    klocek.SkokPętli = true;
                }
            }
        }
예제 #2
0
        private static void ResetujBłędy(KlocekPionowyZZawartością klocekPionowyZZawartością)
        {
            klocekPionowyZZawartością.Błąd = false;

            foreach (KlocekPionowy klocekPionowy in klocekPionowyZZawartością.Zawartość)
            {
                klocekPionowy.Błąd = false;
                KlocekPionowyZZawartością wewnętrznyKlocekPionowyZZawartością = klocekPionowy as KlocekPionowyZZawartością;

                if (wewnętrznyKlocekPionowyZZawartością != null)
                {
                    ResetujBłędy(wewnętrznyKlocekPionowyZZawartością);
                }
            }
        }
예제 #3
0
        private static void ResetujFlagęAktualnegoWykonywania(KlocekPionowyZZawartością klocekPionowyZZawartością)
        {
            klocekPionowyZZawartością.AktualnieWykonywany = false;

            foreach (KlocekPionowy klocekPionowy in klocekPionowyZZawartością.Zawartość)
            {
                klocekPionowy.AktualnieWykonywany = false;

                KlocekPionowyZZawartością wewnętrznyKlocekPionowyZZawartością = klocekPionowy as KlocekPionowyZZawartością;

                if (wewnętrznyKlocekPionowyZZawartością != null)
                {
                    ResetujFlagęAktualnegoWykonywania(wewnętrznyKlocekPionowyZZawartością);
                }
            }
        }
예제 #4
0
        public override void Wykonaj()
        {
            SprawdźPoprawnośćKlockówKonfigurujących();

            bool warunek = (Wartość[0] != null) && Wartość.Zwróć <bool>(false) && !Błąd;

            if (warunek)
            {
                base.Wykonaj();
            }
            else
            {
                foreach (KlocekPionowy klocekPionowy in AlternatywnaZawartość)
                {
                    if (SkokPętli)
                    {
                        break;
                    }
                    else
                    {
                        if (klocekPionowy.PunktPrzerwania)
                        {
                            KlocekPionowyZZawartością klocekPionowyZZawartością = this;

                            while (!(klocekPionowyZZawartością is RozpoczęcieProgramu))
                            {
                                klocekPionowyZZawartością = klocekPionowyZZawartością.Rodzic;
                            }

                            klocekPionowyZZawartością.Debugowanie = true;
                        }

                        klocekPionowy.AktualnieWykonywany = true;

                        if (klocekPionowy.PunktPrzerwania || klocekPionowy.KrokPoKroku)
                        {
                            Semafor.Opuść();
                        }

                        klocekPionowy.Wykonaj();

                        klocekPionowy.AktualnieWykonywany = false;
                    }
                }
            }
        }
예제 #5
0
        private void UsuńKlocekPionowy(object obiektKlocka)
        {
            KlocekPionowy             usuwanyKlocek             = (KlocekPionowy)obiektKlocka;
            KlocekPionowyZZawartością klocekPionowyZZawartością = usuwanyKlocek.Rodzic;

            if (klocekPionowyZZawartością != null)
            {
                ZawartośćKlockaPionowegoZZawartością miejsceUmieszczenia = klocekPionowyZZawartością.Zawartość;
                int indeks = miejsceUmieszczenia.IndexOf(usuwanyKlocek);

                if ((indeks == -1) && klocekPionowyZZawartością is WykonajJeżeli)
                {
                    miejsceUmieszczenia = ((WykonajJeżeli)klocekPionowyZZawartością).AlternatywnaZawartość;
                    indeks = miejsceUmieszczenia.IndexOf(usuwanyKlocek);
                }

                miejsceUmieszczenia.RemoveAt(indeks);
                DodajDziałanie(new ManipulacjaKlockiemPionowym(ManipulacjeKlockiem.Usunięcie, usuwanyKlocek)
                {
                    IndeksDocelowy = indeks,
                    Cel            = miejsceUmieszczenia
                });
            }
        }
예제 #6
0
        private static void ZwińRozwińKlocekZZawartością(object obiektKlocka)
        {
            KlocekPionowyZZawartością klocek = (KlocekPionowyZZawartością)obiektKlocka;

            klocek.Rozwinięty = !klocek.Rozwinięty;
        }