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; } } }
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ą); } } }
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ą); } } }
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; } } } }
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 }); } }
private static void ZwińRozwińKlocekZZawartością(object obiektKlocka) { KlocekPionowyZZawartością klocek = (KlocekPionowyZZawartością)obiektKlocka; klocek.Rozwinięty = !klocek.Rozwinięty; }