Esempio n. 1
0
        private static PlaneServiceStage CheckPlaneStage(string flightId)
        {
            string            URL      = String.Format("{0}/CheckStage?id={1}", ServiceStrings.GrControl, flightId);
            string            response = CommonUtil.MakeRequest(URL);
            PlaneServiceStage result   = (PlaneServiceStage)JsonConvert.DeserializeObject <int>(response);

            return(result);
        }
Esempio n. 2
0
        public void AddAction(string flightId, int zoneNum, int planeServiceStageNum)
        {
            Zone zone = (Zone)zoneNum;
            PlaneServiceStage stage = (PlaneServiceStage)planeServiceStageNum;

            lock (CargoTruckHandler._CargoTruck.Commands)
            {
                CargoTruckHandler._CargoTruck.Commands.Add(new Tuple <string, Zone, PlaneServiceStage>(flightId, zone, stage));
            }
        }
Esempio n. 3
0
        private static void HandleBus()
        {
            SpawnBus();
            while (true)
            {
                Thread.Sleep(1000);
                if (_bus.Commands.Count == 0)//если список команд пуст
                {
                    continue;
                }
                if (_bus.State == EntityState.MOVING)
                {
                    continue;
                }
                if (_bus.CurrentCommand == null)
                {
                    _bus.CurrentCommand = _bus.Commands[0];
                }

                if (_bus.CurrentZone == Zone.BUS_STATION)                                 //если на автобусной станции
                {
                    if (_bus.CurrentCommand.Item3 == PlaneServiceStage.UNLOAD_PASSENGERS) //если на разгрузке
                    {
                        if (_bus.Passengers.Count > 0)                                    //если еще есть пассажиры внутри
                        {
                            GivePassengersToStation();
                        }
                        else//если автобус пуст
                        {
                            PlaneServiceStage currentPlaneServiceStage = CheckPlaneStage(_bus.CurrentCommand.Item1);
                            if (currentPlaneServiceStage == _bus.CurrentCommand.Item3)
                            {
                                MoveBus(_bus.CurrentCommand.Item2);
                            }
                            else
                            {
                                CompleteCommand();
                            }
                        }
                    }
                    else if (_bus.Commands[0].Item3 == PlaneServiceStage.LOAD_PASSENGERS) // если мы загружаем самолет
                    {
                        if (_bus.Passengers.Count == Common.Bus.MAX_COUNT_OF_PASSENGERS)  //если автобус заполнен
                        {
                            //запрос визуализатору чтобы довез до нужного ангара, передаю свой entity и ангар
                            MoveBus(_bus.CurrentCommand.Item2);
                        }
                        else if (_bus.Passengers.Count < Common.Bus.MAX_COUNT_OF_PASSENGERS)
                        {
                            //вставить вместо трех точек верный метод пассажиров на загрузку n пассажиров у нас 2
                            //вызываем пассажиров и говорю что загружаю два пассажира- параметр число загружаемых пассажиров ( 2 или меньше 2)
                            int oldPassengerCount = _bus.Passengers.Count;
                            TakePassengersFromStation(_bus.CurrentCommand.Item1);
                            int newPassengerCount    = _bus.Passengers.Count;
                            int loadedPassengerCount = newPassengerCount - oldPassengerCount;
                            if (loadedPassengerCount < Common.Bus.TAKE_PASSENGERS)//если пассажиры на загрузку закончились
                            {
                                if (_bus.Passengers.Count > 0)
                                {
                                    MoveBus(_bus.CurrentCommand.Item2);
                                }
                                else
                                {
                                    CompleteCommand();
                                }
                            }
                        }
                    }
                }
                else if (_bus.CurrentZone == Zone.HANGAR_1 || _bus.CurrentZone == Zone.HANGAR_2) //если автобус в ангаре
                {
                    if (_bus.CurrentCommand.Item3 == PlaneServiceStage.UNLOAD_PASSENGERS)        //если на разгрузке
                    {
                        if (_bus.Passengers.Count == Common.Bus.MAX_COUNT_OF_PASSENGERS)         //если автобус заполнен
                        {
                            // запрос визуализатору чтобы довез до автобусной станции, передаю свой entity и куда везти
                            MoveBus(Zone.BUS_STATION);
                        }
                        else if (_bus.Passengers.Count < Common.Bus.MAX_COUNT_OF_PASSENGERS)
                        {
                            //вставить вместо трех точек верный метод самолета на выгрузку из самолета в автобус n пассажиров у нас 2
                            //вызываем самолет и говорю что загружаю два пассажира- параметр число загружаемых пассажиров ( 2 или меньше 2)
                            int oldPassengerCount = _bus.Passengers.Count;
                            TakePassengersFromPlane(_bus.CurrentCommand.Item1);
                            int newPassengerCount    = _bus.Passengers.Count;
                            int loadedPassengerCount = newPassengerCount - oldPassengerCount;
                            if (loadedPassengerCount < Common.Bus.TAKE_PASSENGERS)//если пассажиры в самолёте закончились
                            {
                                MoveBus(Zone.BUS_STATION);
                            }
                        }
                    }
                    else if (_bus.CurrentCommand.Item3 == PlaneServiceStage.LOAD_PASSENGERS) // если мы загружаем самолет
                    {
                        if (_bus.Passengers.Count > 0)                                       //если еще есть пассажиры внутри
                        {
                            GivePassengersToPlane(_bus.CurrentCommand.Item1);
                        }
                        if (_bus.Passengers.Count == 0)//если автобус пуст
                        {
                            MoveBus(Zone.BUS_STATION);
                        }
                    }
                }
                //добавлять действия сюда
            }
        }