Exemple #1
0
 public static void ObradiKomanduPripremi(KomandaRedak komanda)
 {
     foreach (string voziloID in komanda.Lista)
     {
         Vozilo vozilo = Program.Vozila.FirstOrDefault(v => v.ID == voziloID);
         if (vozilo != null)
         {
             //provjeri da li vozilo već postoji
             Vozilo trazenoVoziloUObradi = Program.Vozila.FirstOrDefault(v => v.ID == vozilo.ID);
             if (trazenoVoziloUObradi.TrenutnoStanje != VrstaStanja.Skupljanje)
             {
                 Program.Ispisivac.PromijeniBojuTeksta(ConsoleColor.Blue);
                 Program.Ispisivac.Koristi($"KOMANDA {komanda.Vrsta}. Vozilo {vozilo.ID} je stavljeno u status skupljanja.");
                 Program.Ispisivac.ResetirajPostavkeBoja();
                 vozilo.PromijeniStanje(VrstaStanja.Skupljanje);
             }
             else
             {
                 Program.Ispisivac.PromijeniBojuTeksta(ConsoleColor.Blue);
                 Program.Ispisivac.Koristi($"KOMANDA {komanda.Vrsta}. Vozilo {vozilo.ID} je vec u stanju skupljanja.");
                 Program.Ispisivac.ResetirajPostavkeBoja();
             }
         }
         else
         {
             Program.Ispisivac.Koristi($"Ne postoji vozilo {voziloID} za komandu {komanda.Vrsta}");
         }
     }
 }
Exemple #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.Koristi($"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.Koristi($"ODVOZ Vozilo {vozilo.ID} ({vozilo.VrstaOtpada}) je puno ({vozilo.Nosivost}kg) i mora na odvoz.");
                Program.Ispisivac.Koristi($"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.Koristi($"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
        }
Exemple #3
0
 public static void ObradiKomanduKvar(KomandaRedak komanda)
 {
     foreach (string voziloID in komanda.Lista)
     {
         Vozilo vozilo = Program.Vozila.FirstOrDefault(v => v.ID == voziloID);
         if (vozilo != null)
         {
             vozilo.PromijeniStanje(VrstaStanja.Pokvareno);
             Program.Ispisivac.PromijeniBojuTeksta(ConsoleColor.Blue);
             Program.Ispisivac.Koristi($"KOMANDA {komanda.Vrsta}. Vozilo {vozilo.ID} je u stanju kvara.");
             Program.Ispisivac.ResetirajPostavkeBoja();
         }
         else
         {
             Program.Ispisivac.Koristi($"Ne postoji vozilo {voziloID} za komandu {komanda.Vrsta}");
         }
     }
 }
Exemple #4
0
        public static void ObradiKomanduIsprazni(KomandaRedak komanda)
        {
            foreach (string voziloID in komanda.Lista)
            {
                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.Koristi($"KOMANDA {komanda.Vrsta}. Vozilo {vozilo.ID} je poslano na odvoz.");
                    Program.Ispisivac.ResetirajPostavkeBoja();

                    Statistika.VoziloBrojOdlazakaNaDeponij[vozilo.ID]++;
                }
                else
                {
                    Program.Ispisivac.Koristi($"Ne postoji vozilo {voziloID} za komandu {komanda.Vrsta}");
                }
            }
        }
Exemple #5
0
        public static void ObradiKomanduPreuzmi(KomandaRedak komanda)
        {
            foreach (Vozilo dosadasnjeVozilo in Program.Vozila)
            {
                Vozac vozac = dosadasnjeVozilo.Vozaci.FirstOrDefault(v => v.Ime == komanda.Vozac);
                if (vozac != null)
                {
                    dosadasnjeVozilo.Vozaci.Remove(vozac);
                    Vozilo novoVozilo = Program.Vozila.FirstOrDefault(v => v.ID == komanda.Vozilo);
                    if (novoVozilo != null)
                    {
                        novoVozilo.Vozaci.Add(vozac);
                        vozac.IDVozila = novoVozilo.ID;
                    }

                    Program.Ispisivac.PromijeniBojuTeksta(ConsoleColor.Blue);
                    Program.Ispisivac.Koristi($"KOMANDA {komanda.Vrsta}. Vozac {vozac.Ime} vozila {dosadasnjeVozilo.ID} preuzima vozilo {novoVozilo.ID}.");
                    Program.Ispisivac.ResetirajPostavkeBoja();
                    return;
                }
            }

            Vozac noviVozac = Program.NoviVozaci.FirstOrDefault(v => v.Ime == komanda.Vozac);

            if (noviVozac != null)
            {
                Vozilo novoVozilo = Program.Vozila.FirstOrDefault(v => v.ID == komanda.Vozilo);
                if (novoVozilo != null)
                {
                    novoVozilo.Vozaci.Add(noviVozac);
                    noviVozac.IDVozila = novoVozilo.ID;
                }

                Program.Ispisivac.PromijeniBojuTeksta(ConsoleColor.Blue);
                Program.Ispisivac.Koristi($"KOMANDA {komanda.Vrsta}. Vozac {noviVozac.Ime} bez dosadasnjeg vozila preuzima vozilo {novoVozilo.ID}.");
                Program.Ispisivac.ResetirajPostavkeBoja();
            }
        }
Exemple #6
0
 public Parkirano(VrstaStanja stanje, Vozilo vozilo)
 {
     this.trenutnoStanje = stanje;
     this.vozilo         = vozilo;
 }