//meta! sender="AgentZasrtavok", id="38", type="Start" public void ProcessStart(MessageForm message) { var ms = (MyMessage)message; var vozidlo = ms.Vozidlo; var zastavka = vozidlo.Linka.Presuny[ms.Vozidlo.AktualnyPresun].ZastavkaStart; if (vozidlo.Typ == "A") { int a = 0; if (ms.Vozidlo.PocetDvery - vozidlo.PocetObsadenychDvery <= zastavka.PocetCestujucich) { a = ms.Vozidlo.PocetDvery - vozidlo.PocetObsadenychDvery; } else { a = zastavka.PocetCestujucich; } for (int i = 0; i < a; i++) { if (!ms.Vozidlo.JePlny()) { ms = (MyMessage)message.CreateCopy(); ms.Code = Mc.NastupojeNiekto; vozidlo.PocetObsadenychDvery++; var ces = zastavka.Dequeue(); vozidlo.Nastup(ces); Prerataj(vozidlo, ces); Hold(TriangularRng.Sample(), ms); // Hold(3.1, ms); } } if (vozidlo.PocetObsadenychDvery == 0) { ms.Addressee = MyAgent; ms.Code = Mc.KoniecNastupu; Notice(ms); } } else { if (zastavka.PocetCestujucich != 0 && zastavka.Peek().DobaCakania(MySim.CurrentTime) > 360 && !vozidlo.JePlny()) { ms = (MyMessage)message.CreateCopy(); ms.Code = Mc.NastupojeNiekto; vozidlo.PocetObsadenychDvery++; var ces = zastavka.Dequeue(); vozidlo.Nastup(ces); Prerataj(vozidlo, ces); Hold(UniformContinuousRNG.Sample(), ms); //Hold(3.1, ms); } else { ms.Addressee = MyAgent; ms.Code = Mc.KoniecNastupu; Notice(ms); } } }
private void ProcessNastupijeNiekto(MessageForm message) { MyMessage ms = (MyMessage)message; var vozidlo = ms.Vozidlo; var zastavka = vozidlo.Linka.Presuny[ms.Vozidlo.AktualnyPresun].ZastavkaStart; // Console.WriteLine(zastavka.Nazov + " Nastupi" + MySim.CurrentTime); if (vozidlo.Typ == "A") { if (!vozidlo.JePlny()) { if (zastavka.PocetCestujucich != 0) { ms.Code = Mc.NastupojeNiekto; var ces = zastavka.Dequeue(); vozidlo.Nastup(ces); Prerataj(vozidlo, ces); Hold(TriangularRng.Sample(), ms); //Hold(3.1, ms); return; } vozidlo.PocetObsadenychDvery--; } else { vozidlo.PocetObsadenychDvery--; } if (vozidlo.PocetObsadenychDvery == 0) { ms.Addressee = MyAgent; ms.Code = Mc.KoniecNastupu; Notice(ms); } } else { if (zastavka.PocetCestujucich != 0 && zastavka.Peek().DobaCakania(MySim.CurrentTime) > 360 && !vozidlo.JePlny()) { ms = (MyMessage)message.CreateCopy(); ms.Code = Mc.NastupojeNiekto; vozidlo.PocetObsadenychDvery++; var ces = zastavka.Dequeue(); vozidlo.Nastup(ces); Prerataj(vozidlo, ces); Hold(UniformContinuousRNG.Sample(), ms); //Hold(3.1, ms); } else { ms.Addressee = MyAgent; ms.Code = Mc.KoniecNastupu; Notice(ms); } } }