コード例 #1
0
ファイル: Game.cs プロジェクト: KhomutovYarik/airport
        //Метод для назначения самолёта на контракт
        public bool AssignPlaneToContract(string planeID, uint flightNum)
        {
            //Ищем связываемые самолёт и контракт
            Contract contract      = contracts[flightNum];
            Plane    assignedPlane = planes[planeID];

            //Назначаем проверку предлагаемого самолёта
            Predicate <Plane> predicate = null;

            switch (contract.ConnectedFlights[0].FlightType)
            {
            case FType.Freight:
                predicate = plane => plane.MaxSeatings >= contract.ConnectedFlights[0].PasCount;
                break;

            case FType.Passenger:
                predicate = plane => plane.Payload >= contract.ConnectedFlights[0].Weight;
                break;
            }

            if (!predicate(assignedPlane) ||
                assignedPlane.Range < CitiesInfo.GetRoute(contract.ConnectedFlights[0].IDFrom,
                                                          contract.ConnectedFlights[0].IDTo).Distance)
            {
                return(false);
            }


            contract.AssignedPlane = assignedPlane;
            return(true);
        }
コード例 #2
0
ファイル: Game.cs プロジェクト: KhomutovYarik/airport
        //Метод для перегонки самолёта из его текущего положения в другой город
        private decimal SendPlane(string planeID, string destinationID, uint?flightNum)
        {
            double  distance = CitiesInfo.GetRoute(planesAndCities[planeID].ID, destinationID).Distance;
            decimal minus    = (decimal)distance * fuelPrice;

            currentSavings -= minus;
            SavingsChanged?.Invoke(this, currentSavings);
            planesAndCities[planeID] = null;
            PlaneFlight ongoingFlight = new PlaneFlight
            {
                AssociatedFlightNum = flightNum,
                AssociatedPlaneID   = planeID,
                DestinationID       = destinationID,
                DistanceLeft        = distance
            };

            planesProgress.Add(ongoingFlight);
            return(minus);
        }
コード例 #3
0
ファイル: Game.cs プロジェクト: KhomutovYarik/airport
 //Метод для получения карты расстояний между городами
 public List <Tuple <City, City, double> > GetCitiesDistanceInfo()
 {
     return(CitiesInfo.GetCityDistanceGraph());
 }