/// <summary> /// Podstawowy konstruktor do lotu pojedynczego /// </summary> public Lot(string ID, Trasa _Droga, DateTime DataWylotu, Boolean _CZyMawracac, Samolot MaszynaObslugujaca, TypSamolotu RodzajSamolotu) { Pojazd = RodzajSamolotu; Maszyna = MaszynaObslugujaca; LNIDRezerwacjiBiletow = new List <string>(); ListaRezerwacji = new List <RezerwcjaBilet>(); SetID(ID); Droga = _Droga; DataGodzinaWylotu = DataWylotu; //ostatnia liczna to sekundy- nieistotna wartość w programie Pojazd = null; // to też pomaga stwierdzić czy istnieje samolot który jest zapisany do trasy CzasLotu = new TimeSpan(0, 0, 0); //dzięki temu wiemy że na początku nie ma konkretnego samolotu który obsługuje ta trase CzyMaWracac = _CZyMawracac; Maszyna.Cykliczny = false; Maszyna.CzyDostepny = false; CzasLotu = PlanLotu.ILeleciWjednaStrone(RodzajSamolotu, _Droga); DataLadowania = this.DataLądowaniaDateTime(); if (CzyMaWracac == true && Maszyna.CoObsluguje != null) { Maszyna.Coobsluguje2 = this; } else { Maszyna.CoObsluguje = this; } }
public void PrzyciskUsunTypSamolotu(TypSamolotu Wskazany) { if (Wskazany.GetListaSamolotow().Count() == 0) { ListaTypow.Remove(Wskazany); } else { throw new Wyjatek("Istnieją jeszcze samoloty tego typu, najpierw je usun"); } }
/// <summary> /// Funkcja liczy ile samolot leci w jedną stronę /// </summary> /// <returns></returns> public static TimeSpan ILeleciWjednaStrone(TypSamolotu TypSamolotuKtorychcemydodac, Trasa TrasaCochcemydodac) { TimeSpan CzasLotu; double czas = TrasaCochcemydodac.GetOdleglosc() / TypSamolotuKtorychcemydodac.GetPredkosc();// czas wychodzi w godz z minutamie po przecinku czas = Math.Round(czas, 2); double min = (czas % 1) * 60; // minuty w formiacie 0,xx więc trzeba pomnożyć razy 60 CzasLotu = new TimeSpan((int)czas, (int)min, 0); // zero na końcu- to sekundy nieistotne w programie return(CzasLotu); }
/// <summary> /// Metoda statyczna , Po to żeby sprawdzać czy wybrany samolot i trasa będą dobre- metode stayczną da się wywoływać jak nie istnieje obiekt /// </summary> /// <param name="TypPojazdu"></param> /// <param name="Droga"></param> public static Boolean CzyDoleci(TypSamolotu TypPojazdu, Trasa Droga) { if (TypPojazdu.GetZasieg() >= Droga.GetOdleglosc()) { return(true); } else { return(false); } }
public PlanLotu(DateTime PierwszyLot, TimeSpan _CoIleLata, Trasa Kierunek, TypSamolotu _RodzajSamolotu, TimeSpan NajakiPrzedzialCzasuTworzyc, Samolot _Pojazd) { NaJakiPrzedzialczasu = NajakiPrzedzialCzasuTworzyc; Polaczenie = Kierunek; CZasBazowy = PierwszyLot; CoIleLata = _CoIleLata; RodzajSamolotu = _RodzajSamolotu; PierwszyLot = PierwszyLot.Subtract(CoIleLata);// te odjęcie czasu wiąże się z sposobem dodawania nowych lotów Pojazd = _Pojazd; Pojazd.Cykliczny = true; }
/// <summary> /// Specialny konstruktor Lotu, zakłada powrót tego samego samolotu więc tworzony lot ma wszystko takie same prócz: IDLotu , daty wylotu, kolejności Lotnisk w trasie, po tym wywołaniu stary lot powinien zostac usunięty /// </summary> //public Lot(Lot IstniejacyLOt,string _IDLotu,TimeSpan IloscCzasuDoStartuLiczonaOdMomentuLondowania) //{ // this.LNIDRezerwacjiBiletow = new List<string>(); // this.ListaRezerwacji = new List<RezerwcjaBilet>(); // IstniejacyLOt.GetSamolot().CzyDostepny=true;// taki cheat żeby przez chwile samolt był dostępny ten cheat się komplikuje wiestety , lepiej nie ruszać // this.SetPojazd(IstniejacyLOt.Pojazd); // this.SetIDSamolotuWLocie(IstniejacyLOt.GetSamolot().GetIDWlasne()); // IstniejacyLOt.GetSamolot().CzyDostepny=false;// taki cheat // this.DataGodzinaWylotu = IstniejacyLOt.DataLądowaniaDateTime().Add(IloscCzasuDoStartuLiczonaOdMomentuLondowania); // this.CzasLotu = IstniejacyLOt.GetCzasLotu(); // this.Droga = new Trasa(IstniejacyLOt.GetDroga()); // CzyMaWracac = false; //} /// <summary> /// Z racji że typ samolotu ma dany zasięg, trzeba sprawdazć czy dany samolot nadaje się do lotu /// dla konkretnej trasy, podawy jest od razu id samolotu, bardzo ważna funkcja, bez niej lot nie mam maszyny!! /// funkcja od razu liczy nowy czas przelotu danej trasy /// </summary> /// <returns></returns> public Boolean SetPojazd(TypSamolotu TypPojazdu)// nie jest w konstruktorze ponieważ zwraca booleana { if (TypPojazdu.GetZasieg() >= Droga.GetOdleglosc()) { Pojazd = TypPojazdu; double czas = Droga.GetOdleglosc() / Pojazd.GetPredkosc(); // czas wychodzi w godz z minutamie po przecinku czas = Math.Round(czas, 2); double min = (czas % 1) * 60; // minuty w formiacie 0,xx więc trzeba pomnożyć razy 60 CzasLotu = new TimeSpan((int)czas, (int)min, 0); // zero na końcu- to sekundy nieistotne w programie DataLadowania = this.DataLądowaniaDateTime(); return(true); } else { return(false); } }
// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public void PrzyciskUsunSamolot(Samolot Wskazany, TypSamolotu JakiTyp) { if (Wskazany != null && JakiTyp != null) { if (Wskazany.CzyDostepny == true && Wskazany.Cykliczny == false) { JakiTyp.GetListaSamolotow().Remove(Wskazany); } else { throw new Wyjatek("Samolot obsługuje aktualnie jakis lot"); } } else { throw new Wyjatek("Wybierz dwa obiekty"); } }
/// <summary> /// Zwraca true jeżeli samolot zdąrzy rócić przed nastepnym lotem, wywala wyjatek jeżeli nie ma wystarczająco dużo pul wypełnionych /// więc wystarczy ładnie obsłurzyć /// </summary> public static Boolean CzyzdarzyWrocic(TypSamolotu TypSamolotuKtorychcemyDodac, Trasa TrasaCochemydodac, TimeSpan CoIleMaLatac)// ta funkcja jest do poprawy musi być statyczna { if (TypSamolotuKtorychcemyDodac != null && TrasaCochemydodac != null && CoIleMaLatac != null) { TimeSpan CalkowityCzas = PlanLotu.ILeleciWjednaStrone(TypSamolotuKtorychcemyDodac, TrasaCochemydodac); CalkowityCzas = CalkowityCzas.Add(CalkowityCzas); CalkowityCzas = CalkowityCzas.Add(new TimeSpan(3, 0, 0)); if (CalkowityCzas.CompareTo(CoIleMaLatac) >= 0) { return(false); } else { return(true); } } else { throw new Wyjatek("Dodaj wymagane pola!!"); } }
/// <summary> /// Funkcja do dodawanie PlanuLotu, zwraca 3 wyjątki: albo nie wszystkie pola pełne , albo że zdąży wrócić przed nsateonym lotem, że nie /// dolec ponieważ typ samolotu ma za mały sasięg , lub też że nie zdąży wrócić przed następnym lotem /// </summary> public void PrzyciskDodajPlanLotu(DateTime _PierwszyLot, TimeSpan _CoIlelata, Trasa Kierunek, TypSamolotu _RodzajSamolotu, TimeSpan NaJakiPrzedzialCzasu, Samolot _PojazdPermamentny) { if (_PierwszyLot != null && _CoIlelata != null && Kierunek != null && _RodzajSamolotu != null && NaJakiPrzedzialCzasu != null && _PojazdPermamentny != null) { if (PlanLotu.CzyDoleci(_RodzajSamolotu, Kierunek) == true) { if (PlanLotu.CzyzdarzyWrocic(_RodzajSamolotu, Kierunek, _CoIlelata) == true) { ListaPlanowLotu.Add(new PlanLotu(_PierwszyLot, _CoIlelata, Kierunek, _RodzajSamolotu, NaJakiPrzedzialCzasu, _PojazdPermamentny)); } else { throw new Wyjatek("Samolot nie zdąży wrócić do Lotniska bazoewgo"); } } else { throw new Wyjatek("Samolot ma za mały zasięg"); } } else { throw new Wyjatek("Wypełnij wszystkie pola!"); } }
/// <summary> /// Funkcja wywala /// </summary> public void PrzyciskDodajLot(Trasa Droga, DateTime DataWylotu, Boolean CzyMawracac, TypSamolotu _WybranytypSamolotu, Samolot WybranaMaszyna) { if (Droga != null && DataWylotu != null && _WybranytypSamolotu != null && WybranaMaszyna != null) { if (_WybranytypSamolotu.GetZasieg() >= Droga.Odleglosc) { Lot tmp = new Lot(PrzydzielanieID(ListaLotow, LNIDLotow), Droga, DataWylotu, CzyMawracac, WybranaMaszyna, _WybranytypSamolotu); if (CzyMawracac == true) { Lot tmp2 = new Lot(PrzydzielanieID(ListaLotow, LNIDLotow), Droga, DataWylotu.Add(tmp.CzasLotu.Add(new TimeSpan(3, 0, 0))), CzyMawracac, WybranaMaszyna, _WybranytypSamolotu); DodawanieDoListy(ListaLotow, tmp2); } DodawanieDoListy(ListaLotow, tmp); } else { throw new Wyjatek("Samolot nie doleci do celu, zmień jego rodzaj!"); } } else { throw new Wyjatek("Wypełnij wszystkie pola!"); } }
/// <summary> /// Konstruktor dla lotów cyklicznych /// </summary> public Lot(string ID, Trasa Droga, DateTime Datawylotu, TypSamolotu TypPrzypisanyDoPlanu, Samolot Maszyna, PlanLotu JakiPlan) : this(ID, Droga, Datawylotu, true, Maszyna, TypPrzypisanyDoPlanu) { Maszyna.Cykliczny = true; Maszyna.CoObsluguje = null; Maszyna.PlanLotuPrzypisany = JakiPlan; }