Example #1
0
 public static void ObradiKomanduPripremi(KomandaRedak komanda)
 {
     foreach (string voziloID in komanda.Vozila)
     {
         Vozilo vozilo = Program.Vozila.FirstOrDefault(v => v.ID == voziloID);
         if (vozilo != null)
         {
             //provjeri da li vozilo već postoji
             Vozilo trazenoVoziloUObradi = Program.VozilaUObradi.FirstOrDefault(v => v.ID == vozilo.ID);
             if (trazenoVoziloUObradi == null)
             {
                 Program.Ispisivac.PromijeniBojuTeksta(ConsoleColor.Blue);
                 Program.Ispisivac.ObavljeniPosao($"KOMANDA {komanda.Vrsta}. Vozilo {vozilo.ID} je u listi za obradu i stavljeno u status skupljanja.");
                 Program.Ispisivac.ResetirajPostavkeBoja();
                 vozilo.PromijeniStanje(VrstaStanja.Skupljanje);
                 Program.VozilaUObradi.Add(vozilo);
             }
             else
             {
                 Program.Ispisivac.PromijeniBojuTeksta(ConsoleColor.Blue);
                 Program.Ispisivac.ObavljeniPosao($"KOMANDA {komanda.Vrsta}. Vozilo {vozilo.ID} je vec u listi za obradu.");
                 Program.Ispisivac.ResetirajPostavkeBoja();
             }
         }
         else
         {
             Program.Ispisivac.ObavljeniPosao($"Ne postoji vozilo {voziloID} za komandu {komanda.Vrsta}");
         }
     }
 }
Example #2
0
        private static void PokupiOtpad(Vozilo vozilo, ref bool voziloIzaslo)
        {
            voziloIzaslo = false;
            //preskoči prazne spremnike
            while (!vozilo.IteratorS.Kraj && vozilo.IteratorS.Trenutni.KolicinaOtpada == 0)
            {
                vozilo.IteratorS.Sljedeci();
            }

            if (vozilo.IteratorS.Kraj)
            {
                Program.Ispisivac.ObavljeniPosao($"C{TrenutniCiklus} Nema vise otpada za vozilo {vozilo.ID}");
                vozilo.PromijeniStanje(VrstaStanja.Parkirano);  //vozilo za koje vise nema otpada se vraća na prakiralište
                voziloIzaslo = true;
                return;
            }

            Spremnik spremnik = vozilo.IteratorS.Trenutni;

            float preostaliKapacitetVozila      = vozilo.Nosivost - vozilo.KolicinaOtpada;
            float kolicinaUzetogOtpadaSpremnika = spremnik.KolicinaOtpada;

            if (kolicinaUzetogOtpadaSpremnika > preostaliKapacitetVozila)
            {
                float kolicinaOtpadaViska = kolicinaUzetogOtpadaSpremnika - preostaliKapacitetVozila;
                kolicinaUzetogOtpadaSpremnika = kolicinaUzetogOtpadaSpremnika - kolicinaOtpadaViska;
                Program.Ispisivac.ObavljeniPosao($"ODVOZ Vozilo {vozilo.ID} ({vozilo.VrstaOtpada}) je puno ({vozilo.Nosivost}kg) i mora na odvoz.");
                Program.Ispisivac.ObavljeniPosao($"ODVOZ Spremnik {spremnik.ID} ima jos {kolicinaOtpadaViska}kg otpada vrste {spremnik.NazivPremaOtpadu}.");
                Statistika.VoziloBrojOdlazakaNaDeponij[vozilo.ID]++;
                PrijevozPutnika prijevozPutnika = new PrijevozPutnika(vozilo, vozilo.ID);
                prijevozPutnika.UkrcajPutnika($"Putnik{TrenutniCiklus}");
                listaPrijevozPutnika.Add(prijevozPutnika);

                //ako je vozilo puno promijeni stanje, posalji ga na praznjenje n ciklusa nakon kojih se vraca na kraj liste
                vozilo.PromijeniStanje(VrstaStanja.Praznjenje);
                vozilo.BrojPreostalihCiklusa = Program.Parametri.DohvatiParametarInt("brojRadnihCiklusaZaOdvoz");
                voziloIzaslo = true;
            }

            vozilo.KolicinaOtpada   += kolicinaUzetogOtpadaSpremnika;
            spremnik.KolicinaOtpada -= kolicinaUzetogOtpadaSpremnika;
            Statistika.VoziloBrojPreuzetihSpremnika[vozilo.ID]++;
            Statistika.VoziloKolicinaPreuzetogOtpada[vozilo.ID] += kolicinaUzetogOtpadaSpremnika;

            Program.Ispisivac.ObavljeniPosao($"C{TrenutniCiklus} Vozilo {vozilo.ID} ({vozilo.VrstaOtpada}) trenutno ima {vozilo.KolicinaOtpada}kg otpada, preostali kapacitet je {vozilo.Nosivost - vozilo.KolicinaOtpada}kg.");
            vozilo.IteratorS.Sljedeci(); //TODO: provjeri ako je iduci spremnik u iducoj ulici i iteriraj ulicu
        }
Example #3
0
 public static void ObradiKomanduKvar(KomandaRedak komanda)
 {
     foreach (string voziloID in komanda.Vozila)
     {
         Vozilo vozilo = Program.Vozila.FirstOrDefault(v => v.ID == voziloID);
         if (vozilo != null)
         {
             vozilo.PromijeniStanje(VrstaStanja.Pokvareno);
             Program.Ispisivac.PromijeniBojuTeksta(ConsoleColor.Blue);
             Program.Ispisivac.ObavljeniPosao($"KOMANDA {komanda.Vrsta}. Vozilo {vozilo.ID} je u stanju kvara.");
             Program.Ispisivac.ResetirajPostavkeBoja();
         }
         else
         {
             Program.Ispisivac.ObavljeniPosao($"Ne postoji vozilo {voziloID} za komandu {komanda.Vrsta}");
         }
     }
 }
Example #4
0
        public static void ObradiKomanduIsprazni(KomandaRedak komanda)
        {
            foreach (string voziloID in komanda.Vozila)
            {
                Vozilo vozilo = Program.Vozila.FirstOrDefault(v => v.ID == voziloID);
                if (vozilo != null)
                {
                    vozilo.PromijeniStanje(VrstaStanja.Praznjenje);
                    vozilo.BrojPreostalihCiklusa = Program.Parametri.DohvatiParametarInt("brojRadnihCiklusaZaOdvoz");
                    Program.Ispisivac.PromijeniBojuTeksta(ConsoleColor.Blue);
                    Program.Ispisivac.ObavljeniPosao($"KOMANDA {komanda.Vrsta}. Vozilo {vozilo.ID} je poslano na odvoz.");
                    Program.Ispisivac.ResetirajPostavkeBoja();

                    Statistika.VoziloBrojOdlazakaNaDeponij[vozilo.ID]++;
                }
                else
                {
                    Program.Ispisivac.ObavljeniPosao($"Ne postoji vozilo {voziloID} za komandu {komanda.Vrsta}");
                }
            }
        }
Example #5
0
 public Parkirano(VrstaStanja stanje, Vozilo vozilo)
 {
     this.trenutnoStanje = stanje;
     this.vozilo         = vozilo;
 }