Exemplo n.º 1
0
        //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);
                }
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }