Beispiel #1
0
        public void ПриездНаОстановкуРазрешен(int текТакт)
        {
            //высадка пассажиров
            показателиРаботы.приездНаОстановку(номерСледОстановки, текТакт, -времяДоСменыСостояния);
            int колВышПас = ВысадкаНаОстановке(текТакт);

            ////определение времени стоянки на остановке
            времяДоСменыСостояния = Math.Max(колВышПас / 40, 1);
            состояние             = СостояниеАвтоEnum.наОстановке;
        }
Beispiel #2
0
        public void Инициализация(Маршрут маршрут_arg, int максВместимость_arg, int времяОтпр_arg)
        {
            код = маршрут_arg.Код.ToString() + "_" + времяОтпр_arg.ToString();
            показателиРаботы.инициализация(маршрут_arg.КодыОстановок);
            маршрут               = маршрут_arg;
            МаксВместимость       = максВместимость_arg;
            времяОтпрВРейс        = времяОтпр_arg;
            состояние             = СостояниеАвтоEnum.вПути;
            времяДоСменыСостояния = 1;
            кодСледОстановки      = маршрут.НачОстановка;
            номерСледОстановки    = 0;

            if (массивПассажиров == null)
            {
                массивПассажиров = new List <Пассажир>();
            }
            else
            {
                массивПассажиров.Clear();
            }
        }
Beispiel #3
0
        private void ОтправитьСОстановки(int текТакт)
        {
            int кодТекОст = кодСледОстановки;

            //сообщение для координатора, чтобы удалить авто с остановки
            СобытиеОтправлениеСОстановки?.Invoke(this, new AutoEventArg(кодТекОст, текТакт));
            кодСледОстановки = маршрут.СледОстановкаПоНомеру(номерСледОстановки);
            номерСледОстановки++;
            if (кодТекОст == кодСледОстановки)
            {
                //завершить текущий рейс
                состояние = СостояниеАвтоEnum.рейсЗавершен;
                показателиРаботы.завершениеРейса(this, текТакт);
            }
            else
            {
                //продолжить текущий рейс
                состояние             = СостояниеАвтоEnum.вПути;
                времяДоСменыСостояния = маршрут.ВремяДоСледОстановки(кодСледОстановки);
                показателиРаботы.отправлАвтоСОстановки(номерСледОстановки, массивПассажиров.Count);
            }
        }