Пример #1
0
        private void cbDestination_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbDestination1 != null && cbDestination2 != null && txtDistance != null)
            {
                Airport destination1 = (Airport)cbDestination1.SelectedItem;
                Airport destination2 = (Airport)cbDestination2.SelectedItem;

                if (destination1 != null && destination2 != null)
                {
                    foreach (MVVMRouteClass rClass in this.Classes)
                    {
                        rClass.FarePrice = PassengerHelpers.GetPassengerPrice(destination1, destination2) * GeneralHelpers.ClassToPriceFactor(rClass.Type);
                    }

                    txtDistance.Text = new DistanceToUnitConverter().Convert(MathHelpers.GetDistance(destination1, destination2)).ToString();

                    var codesharingRoutes     = GameObject.GetInstance().HumanAirline.Codeshares.Where(c => c.Airline2 == GameObject.GetInstance().HumanAirline || c.Type == Model.AirlineModel.CodeshareAgreement.CodeshareType.Both_Ways).Select(c => c.Airline1 == GameObject.GetInstance().HumanAirline ? c.Airline2 : c.Airline1).SelectMany(a => a.Routes);
                    var humanConnectingRoutes = GameObject.GetInstance().HumanAirline.Routes.Where(r => r.Destination1 == destination1 || r.Destination2 == destination1 || r.Destination1 == destination2 || r.Destination2 == destination2);

                    var codesharingConnectingRoutes = codesharingRoutes.Where(r => r.Destination1 == destination1 || r.Destination2 == destination1 || r.Destination1 == destination2 || r.Destination2 == destination2);

                    this.ConnectingRoutes.Clear();

                    foreach (Route route in humanConnectingRoutes)
                    {
                        this.ConnectingRoutes.Add(route);
                    }

                    foreach (Route route in codesharingConnectingRoutes)
                    {
                        this.ConnectingRoutes.Add(route);
                    }

                    var opponentRoutes = Airlines.GetAllAirlines().Where(a => !a.IsHuman).SelectMany(a => a.Routes).Where(r => (r.Destination1 == destination1 && r.Destination2 == destination2) || (r.Destination2 == destination1 && r.Destination1 == destination2));

                    if (opponentRoutes.Count() == 0)
                    {
                        this.RouteInformationText = "";
                    }
                    else
                    {
                        var airlines = opponentRoutes.Select(r => r.Airline).Distinct();

                        if (airlines.Count() == 1)
                        {
                            this.RouteInformationText = string.Format("{0} also operates a route between {1} and {2}", airlines.ElementAt(0).Profile.Name, destination1.Profile.Name, destination2.Profile.Name);
                        }
                        else
                        {
                            this.RouteInformationText = string.Format("{0} other airlines do also operate a route between {1} and {2}", airlines.Count(), destination1.Profile.Name, destination2.Profile.Name);
                        }
                    }
                }
            }
        }
Пример #2
0
        private void cbDestination_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            Airport destination1 = (Airport)cbDestination1.SelectedItem;
            Airport destination2 = (Airport)cbDestination2.SelectedItem;

            if (destination1 != null && destination2 != null)
            {
                foreach (MVVMRouteClass rClass in this.Classes)
                {
                    rClass.FarePrice = PassengerHelpers.GetPassengerPrice(destination1, destination2) * GeneralHelpers.ClassToPriceFactor(rClass.Type);
                }

                txtDistance.Text = new DistanceToUnitConverter().Convert(MathHelpers.GetDistance(destination1, destination2)).ToString();
            }
        }
Пример #3
0
        //sets up an scenario airline route
        private static void SetupScenarioRoute(ScenarioAirlineRoute saroute, Airline airline)
        {
            SetupScenarioAirport(airline, saroute.Destination1, saroute.Quantity);
            SetupScenarioAirport(airline, saroute.Destination2, saroute.Quantity);

            double price = PassengerHelpers.GetPassengerPrice(saroute.Destination1, saroute.Destination2);

            for (int i = 0; i < saroute.Quantity; i++)
            {
                Guid id = Guid.NewGuid();

                PassengerRoute route = new PassengerRoute(id.ToString(), saroute.Destination1, saroute.Destination2, price);

                RouteClassesConfiguration configuration = AIHelpers.GetRouteConfiguration(route);

                foreach (RouteClassConfiguration classConfiguration in configuration.getClasses())
                {
                    route.getRouteAirlinerClass(classConfiguration.Type).FarePrice = price * GeneralHelpers.ClassToPriceFactor(classConfiguration.Type);

                    foreach (RouteFacility rfacility in classConfiguration.getFacilities())
                    {
                        route.getRouteAirlinerClass(classConfiguration.Type).addFacility(rfacility);
                    }
                }

                airline.addRoute(route);

                FleetAirliner fAirliner = AirlineHelpers.CreateAirliner(airline, saroute.AirlinerType);
                airline.addAirliner(fAirliner);

                fAirliner.addRoute(route);

                AIHelpers.CreateRouteTimeTable(route, fAirliner);

                fAirliner.Status = FleetAirliner.AirlinerStatus.To_route_start;
                AirlineHelpers.HireAirlinerPilots(fAirliner);

                route.LastUpdated = GameObject.GetInstance().GameTime;
            }
        }
Пример #4
0
        private void cbDestination_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbDestination2.SelectedItem != null && cbDestination1.SelectedItem != null)
            {
                Airport airport1  = (Airport)cbDestination1.SelectedItem;
                Airport airport2  = (Airport)cbDestination2.SelectedItem;
                Airport stopover1 = ucStopover1.Value;
                Airport stopover2 = ucStopover2.Value;

                List <double>  distances    = new List <double>();
                List <Airport> destinations = new List <Airport>();

                destinations.Add(airport1);

                Boolean isRouteOk = false;

                if (stopover1 == null && stopover2 == null)
                {
                    distances.Add(MathHelpers.GetDistance(airport1, airport2));
                    isRouteOk = checkRouteOk(airport1, airport2);
                }

                if (stopover1 == null && stopover2 != null)
                {
                    distances.Add(MathHelpers.GetDistance(airport1, stopover2));
                    distances.Add(MathHelpers.GetDistance(stopover2, airport2));
                    isRouteOk = checkRouteOk(airport1, stopover2) && checkRouteOk(stopover2, airport2);
                    destinations.Add(stopover2);
                }

                if (stopover1 != null && stopover2 == null)
                {
                    distances.Add(MathHelpers.GetDistance(airport1, stopover1));
                    distances.Add(MathHelpers.GetDistance(stopover1, airport2));
                    isRouteOk = checkRouteOk(airport1, stopover1) && checkRouteOk(stopover1, airport2);
                    destinations.Add(stopover1);
                }

                if (stopover1 != null && stopover2 != null)
                {
                    distances.Add(MathHelpers.GetDistance(airport1, stopover1));
                    distances.Add(MathHelpers.GetDistance(stopover1, stopover2));
                    distances.Add(MathHelpers.GetDistance(stopover2, airport2));
                    isRouteOk = checkRouteOk(airport1, stopover1) && checkRouteOk(stopover1, stopover2) && checkRouteOk(stopover2, airport2);
                    destinations.Add(stopover1);
                    destinations.Add(stopover2);
                }

                destinations.Add(airport2);

                foreach (RouteAirlinerClass aClass in this.Classes.Values)
                {
                    aClass.FarePrice = PassengerHelpers.GetPassengerPrice(airport1, airport2) * GeneralHelpers.ClassToPriceFactor(aClass.Type);
                }

                double maxDistance = distances.Max();
                double minDistance = distances.Min();

                txtDistance.Text = string.Format("{0:0} {1}", new NumberToUnitConverter().Convert(maxDistance), new StringToLanguageConverter().Convert("km."));

                btnSave.IsEnabled = minDistance > 50 && maxDistance < this.MaxDistance && isRouteOk;
                btnLoad.IsEnabled = btnSave.IsEnabled;

                txtInvalidRoute.Visibility = isRouteOk ? Visibility.Collapsed : Visibility.Visible;

                if (this.RouteType == Route.RouteType.Cargo && !AIHelpers.IsCargoRouteDestinationsCorrect(airport1, airport2, GameObject.GetInstance().HumanAirline))
                {
                    txtInvalidRoute.Text = Translator.GetInstance().GetString("PanelNewRoute", "1009");
                }

                txtRoute.Text = string.Join(" <-> ", from d in destinations select new AirportCodeConverter().Convert(d).ToString());
            }

            if (sender is ComboBox)
            {
                Airport airport = (Airport)((ComboBox)sender).SelectedItem;

                TextBlock txtDestinationGates = cbDestination2 == ((ComboBox)sender) ? txtDestination2Gates : txtDestination1Gates;

                txtDestinationGates.Text = string.Format(Translator.GetInstance().GetString("PanelNewRoute", "206"), airport.Terminals.getFreeSlotsPercent(GameObject.GetInstance().HumanAirline));
            }
        }