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}"); } } }
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 }
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}"); } } }
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}"); } } }