public static Przystanek OdczytajPlik(string nazwaPliku, ZarzadTransportu zt) { Przystanek rezultat = null; using (var sr = File.OpenText(nazwaPliku)) { var nazwa = sr.ReadLine(); var stale = sr.ReadLine().Split('|'); var zapelnieniaPasazerow = sr.ReadLine().Split('|'); var zapelnieniaAutobusow = sr.ReadLine().Split('|'); rezultat = new Przystanek(nazwa, zt, Convert.ToDouble(stale[3]), Convert.ToInt32(stale[0]), Convert.ToInt32(stale[1]), Convert.ToInt32(stale[2]), stale[4]); foreach (var val in zapelnieniaPasazerow) { var elems = val.Split(':'); rezultat.DodajProgKolorZapelnieniaPasazerow(Convert.ToInt32(elems[0]), Color.FromArgb(Convert.ToInt32(elems[1]))); } foreach (var val in zapelnieniaAutobusow) { var elems = val.Split(':'); rezultat.DodajProgKolorZapelnieniaAutobusow(Convert.ToInt32(elems[0]), Color.FromArgb(Convert.ToInt32(elems[1]))); } } return(rezultat); }
public virtual List <Pasazer> StworzListeWsiadajacychPasazerow(Przystanek.Przystanek obecnyPrzystanek, Linia liniaAutobusu, TimeSpan obecnyCzas) { var listaWsiadajacych = new List <Pasazer>(); var pasazerowie = obecnyPrzystanek.ZwrocPasazerowOczekujacychNaLinie(liniaAutobusu, obecnyCzas).ToList(); foreach (var pasazer in pasazerowie) { if ((obecniPasazerowie.Count + listaWsiadajacych.Count) < maksymalnaPojemnosc) { listaWsiadajacych.Add(pasazer); } else { break; } } foreach (var pasazer in listaWsiadajacych) { obecnyPrzystanek.UsunPasazera(pasazer); pasazer.Wsiadz(this, obecnyCzas); } return(listaWsiadajacych); }
public Pasazer(int czasWsiadania, int czasWysiadania, Przystanek.Przystanek przystanekPoczatkowy, Przystanek.Przystanek przystanekKoncowy) : this(czasWsiadania, czasWysiadania) { this.przystanekPoczatkowy = przystanekPoczatkowy; obecnyPrzystanek = przystanekPoczatkowy; this.przystanekKoncowy = przystanekKoncowy; }
public WpisLinii(Przystanek.Przystanek przystanek, TimeSpan czasPrzyjaduDoPrzystanku, string sciezkaPlikuTrasy) : this(przystanek, czasPrzyjaduDoPrzystanku) { if (sciezkaPlikuTrasy != "") { trasa = Trasa.OdczytajPlik(sciezkaPlikuTrasy); przystanek.DodajTrase(trasa); this.sciezkaPlikuTrasy = sciezkaPlikuTrasy; } }
public Przejazd(ZarzadTransportu zt, Firma.Firma firma, Linia linia, TimeSpan czasRozpoczeciaPrzejazdu) : this() { autobus = null; this.zt = zt; this.firma = firma; this.czasRozpoczeciaPrzejazdu = czasRozpoczeciaPrzejazdu; this.linia = linia; obecnyPrzystanek = linia.ZwrocPrzystanekIndeks(0); }
public Przejazd(Autobus autobus, ZarzadTransportu zt, Firma.Firma firma, TimeSpan czasRozpoczeciaPrzejazdu) : this() { this.autobus = autobus; this.zt = zt; this.firma = firma; linia = autobus.liniaAutobusu; obecnyPrzystanek = autobus.liniaAutobusu.ZwrocPrzystanekIndeks(0); this.czasRozpoczeciaPrzejazdu = czasRozpoczeciaPrzejazdu; }
public virtual int ZwrocIndeksPrzystanku(Przystanek.Przystanek przystanek) { for (int i = 0; i < trasaLinii.Count; i++) { if (trasaLinii[i].przystanek == przystanek) { return(i); } } return(-1); }
public Przystanek.Przystanek ZwrocNastepnyPrzystanek(Przystanek.Przystanek przystanek) { var rezultat = ZnajdzIndexPrzystanku(przystanek); if (rezultat == -1 || rezultat >= trasaLinii.Count - 1) { return(null); } return(trasaLinii[rezultat + 1].przystanek); }
public virtual Trasa ZwrocTraseDo(Przystanek przystanek) { foreach (var trasa in trasy) { if (trasa.PrzystanekPrawy == przystanek) { return(trasa); } } throw new ArgumentException($"Przystanek {nazwaPrzystanku} nie posiada trasy do przystanku {przystanek.NazwaPrzystanku}!"); }
protected virtual bool CzyPrzystanekkNalezyDoLinii(Przystanek.Przystanek p) { foreach (var w in trasaLinii) { if (w.przystanek == p) { return(true); } } return(false); }
public virtual Trasa ZnajdzTraseDoNastepnegoPrzystanku(Przystanek nastepnyPrzystanek) { foreach (var trasa in trasy) { if (trasa.PrzystanekPrawy == nastepnyPrzystanek) { return(trasa); } } return(null); }
public TimeSpan SpodziewanyCzasPrzejazduDoPrzystanku(Przystanek.Przystanek przystanek) { var rezultat = TimeSpan.Zero; foreach (var wpis in trasaLinii) { rezultat += wpis.czasPrzyjaduDoPrzystanku; if (wpis.przystanek == przystanek) { return(rezultat); } } throw new ArgumentException($"Przystanek {przystanek.NazwaPrzystanku} nie występuje na trasie linii {idLinii}."); }
public virtual int ZnajdzIndexPrzystanku(Przystanek.Przystanek przystanek) { var rezultat = 0; foreach (var wpis in trasaLinii) { if (przystanek == wpis.przystanek) { return(rezultat); } rezultat++; } return(-1); }
public virtual int PobierzPasazerow(Przystanek.Przystanek obecnyPrzystanek, Linia liniaAutobusu, IEnumerable <Pasazer> listaWsiadajacych) { var listaKolejekPasazerow = StworzListeKolejek(); PodzielPasazerowNaKolejki(listaWsiadajacych, listaKolejekPasazerow); foreach (var lista in listaKolejekPasazerow) { foreach (var pasazer in lista) { obecniPasazerowie.Add(pasazer); } } return(ObliczCzasWsiadaniaPasazerow(listaKolejekPasazerow)); }
public Trasa(string nazwaTrasy, Przystanek.Przystanek przystanekLewy, Przystanek.Przystanek przystanekPrawy, int sTrasy, double vMaxTrasy, IEnumerable <Point> punktyTrasy = null) : this() { this.nazwaTrasy = nazwaTrasy; this.przystanekLewy = przystanekLewy; this.przystanekPrawy = przystanekPrawy; this.sTrasy = sTrasy; this.vMaxTrasy = vMaxTrasy; if (punktyTrasy != null) { foreach (var p in punktyTrasy) { this.punktyTrasy.Add(p); } } }
private void WykonajPrzejazd() { obecnyPrzystanek.UsunAutobus(autobus); obecnyPrzystanek.DodajAutobusDoZatoki(); var trasa = obecnyPrzystanek.ZnajdzTraseDoNastepnegoPrzystanku( autobus.liniaAutobusu.ZwrocNastepnyPrzystanek(obecnyPrzystanek)); var czasAkcji = new TimeSpan(0, 0, autobus.PrzejedzTrase(trasa)); var czasRozpoczeciaAkcji = CzasRozpoczeciaAkcji(czasPrzejazdu); czasPrzejazdu += czasAkcji; Logger.ZalogujPrzejechanieTrasy(uid, czasRozpoczeciaAkcji, autobus, trasa, czasRozpoczeciaPrzejazdu + czasPrzejazdu); autobus.czasNastepnejAkcji = czasRozpoczeciaPrzejazdu + czasPrzejazdu; nastepnaAkcja = Akcja.WypuszczniePasazerow; obecnyPrzystanek = trasa.PrzystanekPrawy; }
public virtual IEnumerable <Przystanek.Przystanek> ZwrocPozostalePrzystanki(Przystanek.Przystanek przystanek) { var rezultat = new List <Przystanek.Przystanek>(); var czyZnaleziony = false; foreach (var wpis in trasaLinii) { if (czyZnaleziony) { rezultat.Add(wpis.przystanek); } if (wpis.przystanek == przystanek) { czyZnaleziony = true; } } return(rezultat); }
public virtual int WysadzPasazerow(Przystanek.Przystanek obecnyPrzystanek, IEnumerable <Pasazer> listaWysiadajacych) { var listaKolejkaPasazerow = StworzListeKolejek(); PodzielPasazerowNaKolejki(listaWysiadajacych, listaKolejkaPasazerow); foreach (var lista in listaKolejkaPasazerow) { foreach (var pasazer in lista) { if (pasazer.PrzystanekKoncowy != obecnyPrzystanek) { obecnyPrzystanek.DodajPasazera(pasazer); } } } return(ObliczCzasWysiadaniaPasazerow(listaKolejkaPasazerow)); }
public virtual List <Pasazer> StworzListeWysiadajacychPasazerow(Przystanek.Przystanek obecnyPrzystanek) { var listaWysiadajacych = new List <Pasazer>(); foreach (var pasazer in obecniPasazerowie) { if (pasazer.OczekiwanyPrzystanek == obecnyPrzystanek || pasazer.OczekiwanyPrzystanek == null) { listaWysiadajacych.Add(pasazer); pasazer.Wysiadz(obecnyPrzystanek); } } foreach (var pasazer in listaWysiadajacych) { obecniPasazerowie.Remove(pasazer); } return(listaWysiadajacych); }
public virtual TimeSpan CzasPrzejazduPoMiedzyPrzystankami(Przystanek.Przystanek pStartowy, Przystanek.Przystanek pKoncowy) { if (!CzyPrzystanekkNalezyDoLinii(pStartowy) || !CzyPrzystanekkNalezyDoLinii(pKoncowy)) { throw new ArgumentException($"Przystanek {pStartowy.NazwaPrzystanku} lub " + $"{pKoncowy.NazwaPrzystanku} nie należy do linii {idLinii}."); } if (ZwrocIndeksPrzystanku(pStartowy) > ZwrocIndeksPrzystanku(pKoncowy)) { throw new ArgumentException( $"Przystanek {pKoncowy.NazwaPrzystanku} występuje przed {pStartowy.NazwaPrzystanku}."); } var rezultat = TimeSpan.Zero; for (var i = ZwrocIndeksPrzystanku(pStartowy); i <= ZwrocIndeksPrzystanku(pKoncowy); i++) { rezultat += trasaLinii[i].czasPrzyjaduDoPrzystanku; } return(rezultat); }
public void WykonajNastepnaAkcje() { if (obecnyPrzystanek == null) { obecnyPrzystanek = linia.PierwszyPrzystanek; } //obecnyPrzystanek.WykonajPrzyplywy(czasRozpoczeciaPrzejazdu + czasPrzejazdu); zt.WykonajPrzyplywy(czasRozpoczeciaPrzejazdu + czasPrzejazdu); SprawdzCzyPrzejazdPosiadaZasoby(); if (trasaZakonczona) { return; } switch (nastepnaAkcja) { case Akcja.PobieraniePasazerow: WykonajPobieraniaPasazerow(); break; case Akcja.Przejazd: WykonajPrzejazd(); break; case Akcja.WypuszczniePasazerow: WykonajWypuszczaniePasazerow(); break; default: throw new ArgumentOutOfRangeException(); } linia.DodajWpisStatusuLinii(czasRozpoczeciaPrzejazdu + czasPrzejazdu, firma.DlugoscNajkrotszegoAutobusu, obecnyPrzystanek); }
public virtual void WypuscWszystkichPasazerow(Przystanek.Przystanek p) { WysadzPasazerow(p, obecniPasazerowie); }
public abstract void Wysiadz(Przystanek.Przystanek przystanek);
public PrzyplywPasazerow(TimeSpan czasPrzyplywu, Przystanek przystanek) : this() { this.czasPrzyplywu = czasPrzyplywu; this.przystanek = przystanek; }
public WpisLinii(WpisLinii wl) { przystanek = wl.przystanek; czasPrzyjaduDoPrzystanku = new TimeSpan(wl.czasPrzyjaduDoPrzystanku.Ticks); }
public void DodajWpisStatusuLinii(bool czyPrzejazdUwarunkowany, Przystanek.Przystanek przystanek, TimeSpan czas, double minDlugoscZatoki) { wpisyStatusuLinii.Add(new WpisStatusuLinii(czyPrzejazdUwarunkowany, czas, SpodziewanyCzasPrzejazduDoPrzystanku(przystanek), minDlugoscZatoki, przystanek)); }
public WpisLinii(Przystanek.Przystanek przystanek, TimeSpan czasPrzyjaduDoPrzystanku) { this.przystanek = przystanek; this.czasPrzyjaduDoPrzystanku = czasPrzyjaduDoPrzystanku; }
public void DodajWpisStatusuLinii(TimeSpan czas, double dlugoscNajkrotszegoAutobusu, Przystanek.Przystanek przystanek) { var czyIstniejePasujacyAutobus = MinWolnaDlugoscZatoki > dlugoscNajkrotszegoAutobusu; PowodBrakuUwarunkowania powod = PowodBrakuUwarunkowania.Brak; if (CzyPrzejazdUwarunkowany && !czyIstniejePasujacyAutobus) { powod = PowodBrakuUwarunkowania.DlugoscAutobusu; } else if (!CzyPrzejazdUwarunkowany) { powod = PowodBrakuUwarunkowania.LiczbaPasazerow; } DodajWpisDoListyStatusow(new WpisStatusuLinii(CzyPrzejazdUwarunkowany && czyIstniejePasujacyAutobus, czas, czas - SpodziewanyCzasPrzejazduDoPrzystanku(przystanek), MinWolnaDlugoscZatoki, przystanek, powod)); }
public virtual bool JestPrzystankiemKoncowym(Przystanek.Przystanek przystanek) { return(przystanek == trasaLinii[trasaLinii.Count - 1].przystanek); }
public virtual bool CzyPrzystanekPozostalDoOdwiedzenia(Przystanek.Przystanek przystanekObecny, Przystanek.Przystanek przystanekDocelowy) { return(ZwrocIndeksPrzystanku(przystanekObecny) < ZnajdzIndexPrzystanku(przystanekDocelowy)); }