public PageFleetAirliner(FleetAirliner airliner) { InitializeComponent(); this.Uid = "1000"; this.Title = Translator.GetInstance().GetString("PageFleetAirliner", this.Uid); this.Airliner = airliner; StackPanel airlinerPanel = new StackPanel(); airlinerPanel.Margin = new Thickness(10, 0, 10, 0); airlinerPanel.Children.Add(createQuickInfoPanel()); airlinerPanel.Children.Add(createAirlinerTypePanel()); if (this.Airliner.Purchased == FleetAirliner.PurchasedType.Leased && this.Airliner.Airliner.Airline.IsHuman) airlinerPanel.Children.Add(createLeasedAirlinerPanel()); StandardContentPanel panelContent = new StandardContentPanel(); panelContent.setContentPage(airlinerPanel, StandardContentPanel.ContentLocation.Left); StackPanel panelSideMenu = new PanelFleetAirliner(this.Airliner); panelContent.setContentPage(panelSideMenu, StandardContentPanel.ContentLocation.Right); FleetAirliner.AirlinerStatus status = this.Airliner.Status; base.setContent(panelContent); base.setHeaderContent(this.Title + " - " + this.Airliner.Name); showPage(this); }
public PageAirlinerAdvancedRoute(FleetAirliner airliner, PopUpAirlinerAutoRoutes parent, OnRouteChanged routeChanged) { this.ParentPage = parent; this.Airliner = airliner; this.RouteChanged += routeChanged; InitializeComponent(); StackPanel panelMain = new StackPanel(); panelMain.Children.Add(createNewEntryPanel()); WrapPanel panelFlightTime = new WrapPanel(); txtStopovers = UICreator.CreateTextBlock(""); txtStopovers.Visibility = System.Windows.Visibility.Collapsed; txtStopovers.Margin = new Thickness(0, 0, 10, 0); panelFlightTime.Children.Add(txtStopovers); txtFlightTime = UICreator.CreateTextBlock("Flight time:"); panelFlightTime.Children.Add(txtFlightTime); panelMain.Children.Add(panelFlightTime); this.Content = panelMain; cbOrigin.SelectedIndex = 0; }
public PageFleetAirliner(FleetAirliner airliner) { this.Airliner = new FleetAirlinerMVVM(airliner); this.Loaded += PageFleetAirliner_Loaded; InitializeComponent(); }
public static object ShowPopUp(FleetAirliner airliner) { PopUpWindow window = new PopUpAutogenerateRoute(airliner); window.ShowDialog(); return window.Selected; }
public static object ShowPopUp(FleetAirliner airliner) { PopUpWindow window = new PopUpHomeBase(airliner); window.ShowDialog(); return window.Selected == null ? null : window.Selected; }
public PageFleetMaintenance(FleetAirliner airliner) { this.Airliner = airliner; InitializeComponent(); setValues(); }
public PageFleetRoute(FleetAirliner airliner) { InitializeComponent(); this.Airliner = airliner; InitializeComponent(); StackPanel panelRoute = new StackPanel(); panelRoute.Margin = new Thickness(0, 10, 50, 0); TextBlock txtHeader = new TextBlock(); txtHeader.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; txtHeader.SetResourceReference(TextBlock.BackgroundProperty, "HeaderBackgroundBrush2"); txtHeader.FontWeight = FontWeights.Bold; txtHeader.Text = Translator.GetInstance().GetString("PageFleetRoute","1000"); if (this.Airliner.HasRoute) { panelRoute.Children.Add(createRoutesInfo()); panelRoute.Children.Add(createFlightInfo()); if (this.Airliner.Airliner.Airline == GameObject.GetInstance().HumanAirline) panelRoute.Children.Add(createFlightButtons()); } else panelRoute.Children.Add(txtHeader); this.Content = panelRoute; }
//checks for an airliner should go to service private static void CheckForService(FleetAirliner airliner) { double serviceCheck = 500000000; double sinceLastService = airliner.Airliner.Flown - airliner.Airliner.LastServiceCheck; if (sinceLastService > serviceCheck) SimulateService(airliner); }
public PageFleetInsurance(FleetAirliner airliner) { this.DataContext = airliner; this.Airliner = airliner; InitializeComponent(); this.DataContext = this.Airliner; }
//checks if a time table is valid public static Boolean IsTimeTableValid(RouteTimeTable timeTable, FleetAirliner airliner, List<RouteTimeTableEntry> entries, Boolean withSlots = true) { foreach (RouteTimeTableEntry e in timeTable.Entries) { if (!IsRouteEntryValid(e, airliner, entries, withSlots)) return false; } return true; }
public PageRoutePlanner(FleetAirliner airliner) { this.ShowSeason = Weather.Season.All_Year; this.Airliner = airliner; this.Entries = new ObservableCollection<RouteTimeTableEntry>(); this.Entries.CollectionChanged += Entries_CollectionChanged; this.ViewEntries = new ObservableCollection<RouteTimeTableEntry>(); this.ViewEntries.CollectionChanged += ViewEntries_CollectionChanged; this.IsLongRoute = false; this.AllRoutes = new List<RoutePlannerItemMVVM>(); this.Intervals = new ObservableCollection<int>() { 1, 2, 3, 4, 5, 6 }; this.Routes = new ObservableCollection<Route>(); Route.RouteType routeType = (Route.RouteType)Enum.Parse(typeof(Route.RouteType),this.Airliner.Airliner.Type.TypeAirliner.ToString(), true); ; foreach (Route route in this.Airliner.Airliner.Airline.Routes.Where(r => r.getDistance() <= this.Airliner.Airliner.Type.Range && r.Type == routeType)) this.Routes.Add(route); this.AllRegions = new List<Region>(); this.AllRegions.Add(Regions.GetRegion("100")); var routeRegions = this.Routes.Select(r => r.Destination1.Profile.Country.Region).ToList(); routeRegions.AddRange(this.Routes.Select(r => r.Destination2.Profile.Country.Region)); foreach (Region region in routeRegions.Distinct()) this.AllRegions.Add(region); foreach (Route route in this.Airliner.Airliner.Airline.Routes.Where(r=>r.getDistance()<= this.Airliner.Airliner.Type.Range && r.Type == routeType)) this.AllRoutes.Add(new RoutePlannerItemMVVM(route, this.Airliner.Airliner.Type)); this.OutboundAirports = new List<Airport>(); var routeAirports = this.Routes.Select(r => r.Destination1).ToList(); routeAirports.AddRange(this.Routes.Select(r => r.Destination2)); foreach (Airport airport in routeAirports.Distinct()) this.OutboundAirports.Add(airport); this.StartTimes = new ObservableCollection<TimeSpan>(); for (int i = 0; i < 20; i++) this.StartTimes.Add(new TimeSpan(6, i * 15, 0)); this.StopoverMinutes = new List<int>() { 45, 60, 75, 90, 105, 120 }; setCanTransferSchedule(); this.Loaded += PageRoutePlanner_Loaded; InitializeComponent(); }
public PanelFleetAirliner(FleetAirliner airliner) { this.Airliner = airliner; WrapPanel buttonsPanel = new WrapPanel(); ucSelectButton sbFacilities = new ucSelectButton(); sbFacilities.Content = Translator.GetInstance().GetString("PanelFleetAirliner","200"); sbFacilities.IsSelected = this.Airliner.Airliner.Type.TypeAirliner == AirlinerType.TypeOfAirliner.Passenger; sbFacilities.Click += new System.Windows.RoutedEventHandler(sbFacilities_Click); sbFacilities.Visibility = this.Airliner.Airliner.Type.TypeAirliner == AirlinerType.TypeOfAirliner.Passenger ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed; buttonsPanel.Children.Add(sbFacilities); ucSelectButton sbRoute = new ucSelectButton(); sbRoute.Content = Translator.GetInstance().GetString("PanelFleetAirliner","201"); sbRoute.IsSelected = this.Airliner.Airliner.Type.TypeAirliner != AirlinerType.TypeOfAirliner.Passenger; sbRoute.Click += new System.Windows.RoutedEventHandler(sbRoute_Click); buttonsPanel.Children.Add(sbRoute); ucSelectButton sbTimeSlot = new ucSelectButton(); sbTimeSlot.Content = Translator.GetInstance().GetString("PanelFleetAirliner","202"); sbTimeSlot.Visibility = System.Windows.Visibility.Collapsed; sbTimeSlot.Click += new System.Windows.RoutedEventHandler(sbTimeSlot_Click); buttonsPanel.Children.Add(sbTimeSlot); ucSelectButton sbStatistics = new ucSelectButton(); sbStatistics.Content = Translator.GetInstance().GetString("PanelFleetAirliner","203"); sbStatistics.Click += new System.Windows.RoutedEventHandler(sbStatistics_Click); buttonsPanel.Children.Add(sbStatistics); ucSelectButton sbMaintenance = new ucSelectButton(); sbMaintenance.Content = Translator.GetInstance().GetString("PanelFleetAirliner","205"); sbMaintenance.Visibility = this.Airliner.Airliner.Airline.IsHuman ? Visibility.Visible : System.Windows.Visibility.Collapsed; sbMaintenance.Click +=sbMaintenance_Click; buttonsPanel.Children.Add(sbMaintenance); ucSelectButton sbInsurance = new ucSelectButton(); sbInsurance.Content = Translator.GetInstance().GetString("PanelFleetAirliner", "204"); sbInsurance.Visibility = this.Airliner.Airliner.Airline.IsHuman ? Visibility.Visible : Visibility.Collapsed; sbInsurance.Click+=sbInsurance_Click; buttonsPanel.Children.Add(sbInsurance); this.Children.Add(buttonsPanel); frameContent = new Frame(); frameContent.NavigationUIVisibility = NavigationUIVisibility.Hidden; if (this.Airliner.Airliner.Type.TypeAirliner == AirlinerType.TypeOfAirliner.Passenger) frameContent.Navigate(new PageFleetFacilities(this.Airliner)); else frameContent.Navigate(new PageFleetRoute(this.Airliner)); this.Children.Add(frameContent); }
public static FleetAirliner AddAirliner(Airline airline, Airliner airliner, Airport airport) { if (Countries.GetCountryFromTailNumber(airliner.TailNumber).Name != airline.Profile.Country.Name) airliner.TailNumber = airline.Profile.Country.TailNumbers.getNextTailNumber(); FleetAirliner fAirliner = new FleetAirliner(FleetAirliner.PurchasedType.Bought, GameObject.GetInstance().GameTime, airline, airliner, airport); airline.addAirliner(fAirliner); return fAirliner; }
//returns the delay time because of the age of an airliner public static int GetAirlinerAgeDelay(FleetAirliner airliner) { int age = airliner.Airliner.Age; int tAge = 100 - (age * 3); Boolean delayed = rnd.Next(100) > tAge; if (delayed) return rnd.Next(0, age) * 5; else return 0; }
public static Boolean IsRoutePlannerTimeTableValid(RouteTimeTable timeTable, FleetAirliner airliner, List<RouteTimeTableEntry> entries, Boolean withSlots = true) { var tEntries = new List<RouteTimeTableEntry>(); tEntries.AddRange(entries); tEntries.AddRange(timeTable.Entries); foreach (RouteTimeTableEntry e in timeTable.Entries) { var cEntries = new List<RouteTimeTableEntry>(tEntries); cEntries.Remove(e); if (!IsRouteEntryValid(e, airliner, cEntries, withSlots)) return false; } return true; }
public PageAirlinerAutoRoute(FleetAirliner airliner, PopUpAirlinerAutoRoutes parent, OnRouteChanged routeChanged) { this.ParentPage = parent; this.Airliner = airliner; this.RouteChanged += routeChanged; InitializeComponent(); StackPanel mainPanel = new StackPanel(); mainPanel.Children.Add(createAutoGeneratePanel()); this.Content = mainPanel; }
//creates an airliner for an airline public static FleetAirliner CreateAirliner(Airline airline, AirlinerType type) { Guid id = Guid.NewGuid(); Airliner airliner = new Airliner(id.ToString(), type, airline.Profile.Country.TailNumbers.getNextTailNumber(), GameObject.GetInstance().GameTime); Airliners.AddAirliner(airliner); FleetAirliner fAirliner = new FleetAirliner(FleetAirliner.PurchasedType.Bought, GameObject.GetInstance().GameTime, airline, airliner, airline.Airports[0]); airliner.clearAirlinerClasses(); AirlinerHelpers.CreateAirlinerClasses(airliner); return fAirliner; }
//checks if an entry is in occupied slot public static Boolean IsRouteEntryInOccupied(RouteTimeTableEntry entry, FleetAirliner airliner) { var occupiedSlots1 = AirportHelpers.GetOccupiedSlotTimes(entry.DepartureAirport, airliner.Airliner.Airline); var occupiedSlots2 = AirportHelpers.GetOccupiedSlotTimes(entry.Destination.Airport, airliner.Airliner.Airline); TimeSpan gateTimeBefore = new TimeSpan(0, 15, 0); TimeSpan gateTimeAfter = new TimeSpan(0, 15, 0); TimeSpan entryTakeoffTime = new TimeSpan((int)entry.Day, entry.Time.Hours, entry.Time.Minutes, entry.Time.Seconds); TimeSpan entryLandingTime = entryTakeoffTime.Add(entry.TimeTable.Route.getFlightTime(entry.Airliner.Airliner.Type)); if (entryLandingTime.Days > 6) entryLandingTime = new TimeSpan(0, entryLandingTime.Hours, entryLandingTime.Minutes, entryLandingTime.Seconds); TimeSpan entryStartTakeoffTime = entryTakeoffTime.Subtract(gateTimeBefore); TimeSpan entryEndTakeoffTime = entryTakeoffTime.Add(gateTimeAfter); TimeSpan tTakeoffTime = new TimeSpan(entryStartTakeoffTime.Days, entryStartTakeoffTime.Hours, (entryStartTakeoffTime.Minutes / 15) * 15, 0); while (tTakeoffTime < entryEndTakeoffTime) { if (occupiedSlots1.Contains(tTakeoffTime)) return true; tTakeoffTime = tTakeoffTime.Add(new TimeSpan(0, 15, 0)); } TimeSpan entryStartLandingTime = entryLandingTime.Subtract(gateTimeBefore); TimeSpan entryEndLandingTime = entryLandingTime.Add(gateTimeAfter); TimeSpan tLandingTime = new TimeSpan(entryStartLandingTime.Days, entryStartLandingTime.Hours, (entryStartLandingTime.Minutes / 15) * 15, 0); while (tLandingTime < entryEndLandingTime) { if (occupiedSlots2.Contains(tLandingTime)) return true; tLandingTime = tLandingTime.Add(new TimeSpan(0, 15, 0)); } return false; }
//returns the number of delay minutes (0 if not delayed) for an airliner public static KeyValuePair<DelayType, int> GetDelayedMinutes(FleetAirliner airliner) { //has already been delayed if (!airliner.CurrentFlight.IsOnTime) return new KeyValuePair<DelayType, int>(DelayType.None, 0); Dictionary<DelayType, int> delays = new Dictionary<DelayType, int>(); delays.Add(DelayType.Airliner_problems, GetAirlinerAgeDelay(airliner)); delays.Add(DelayType.Bad_weather, GetAirlinerWeatherDelay(airliner)); KeyValuePair<DelayType, int> delay = new KeyValuePair<DelayType, int>(DelayType.None, 0); foreach (var d in delays) { if (d.Value > delay.Value) delay = d; } return delay; }
public PageRoutePlanner(FleetAirliner airliner) { this.Airliner = airliner; this.Entries = new ObservableCollection<RouteTimeTableEntry>(); this.Entries.CollectionChanged += Entries_CollectionChanged; this.AllRoutes = new List<RoutePlannerItemMVVM>(); this.Intervals = new ObservableCollection<int>() { 1, 2, 3, 4, 5, 6 }; this.Routes = this.Airliner.Airliner.Airline.Routes.Where(r => r.getDistance() <= this.Airliner.Airliner.Type.Range).ToList(); this.AllRegions = new List<Region>(); this.AllRegions.Add(Regions.GetRegion("100")); var routeRegions = this.Routes.Select(r => r.Destination1.Profile.Country.Region).ToList(); routeRegions.AddRange(this.Routes.Select(r => r.Destination2.Profile.Country.Region)); foreach (Region region in routeRegions.Distinct()) this.AllRegions.Add(region); foreach (Route route in this.Airliner.Airliner.Airline.Routes.Where(r=>r.getDistance()<= this.Airliner.Airliner.Type.Range)) this.AllRoutes.Add(new RoutePlannerItemMVVM(route, this.Airliner.Airliner.Type)); this.OutboundAirports = new List<Airport>(); var routeAirports = this.Routes.Select(r => r.Destination1).ToList(); routeAirports.AddRange(this.Routes.Select(r => r.Destination2)); foreach (Airport airport in routeAirports.Distinct()) this.OutboundAirports.Add(airport); this.StartTimes = new ObservableCollection<TimeSpan>(); for (int i = 0; i < 20; i++) this.StartTimes.Add(new TimeSpan(6, i * 15, 0)); this.StopoverMinutes = new List<int>() { 45, 60, 75, 90, 105, 120 }; this.Loaded += PageRoutePlanner_Loaded; InitializeComponent(); }
public PopUpNewAirlinerHomebase(FleetAirliner airliner) { this.Airliner = airliner; this.Title = string.Format("Select new homebase for {0}", airliner.Name); this.Width = 300; this.Height = 100; this.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; this.WindowStyle = System.Windows.WindowStyle.SingleBorderWindow; StackPanel mainPanel = new StackPanel(); mainPanel.Margin = new Thickness(10, 10, 10, 10); cbAirport = new ComboBox(); cbAirport.SetResourceReference(ComboBox.ItemTemplateProperty, "AirportCountryItem"); cbAirport.SetResourceReference(ComboBox.StyleProperty, "ComboBoxTransparentStyle"); cbAirport.IsSynchronizedWithCurrentItem = true; cbAirport.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; List<Airport> airports = this.Airliner.Airliner.Airline.Airports.FindAll(a => (a.getCurrentAirportFacility(this.Airliner.Airliner.Airline, AirportFacility.FacilityType.Service).TypeLevel > 0 || a.hasContractType(this.Airliner.Airliner.Airline,AirportContract.ContractType.Full_Service)) && a.Profile.Period.From <= GameObject.GetInstance().GameTime && a.Profile.Period.To > GameObject.GetInstance().GameTime); if (airports.Count == 0) airports = this.Airliner.Airliner.Airline.Airports.FindAll(a => a.Profile.Period.From <= GameObject.GetInstance().GameTime && a.Profile.Period.To > GameObject.GetInstance().GameTime); airports.Sort(delegate(Airport a1, Airport a2) { return a1.Profile.Name.CompareTo(a2.Profile.Name); }); foreach (Airport airport in airports) cbAirport.Items.Add(airport); cbAirport.SelectedIndex = 0; mainPanel.Children.Add(cbAirport); mainPanel.Children.Add(createButtonsPanel()); this.Content = mainPanel; }
public PageAirlineEditAirliners(List<FleetAirliner> airliners) { this.Airliners = airliners; this.Loaded += PageAirlineEditAirliners_Loaded; this.DataContext = this.Airliners; this.Classes = new ObservableCollection<AirlinerClassMVVM>(); this.Airliner = getMinimumAirliner(); foreach (AirlinerClass aClass in this.Airliner.Airliner.Classes) { int maxCapacity; if (this.Airliner.Airliner.Type.TypeAirliner == AirlinerType.TypeOfAirliner.Passenger) maxCapacity = ((AirlinerPassengerType)this.Airliner.Airliner.Type).MaxSeatingCapacity; else maxCapacity = 100; Boolean changeable = this.Airliner.Airliner.Classes.IndexOf(aClass) > 0; int maxSeats; if (this.Airliner.Airliner.Classes.Count == 3) { if (this.Airliner.Airliner.Classes.IndexOf(aClass) == 1) maxSeats = maxCapacity - 1 - this.Airliner.Airliner.Classes[2].RegularSeatingCapacity; else maxSeats = maxCapacity - 1 - this.Airliner.Airliner.Classes[1].RegularSeatingCapacity; } else maxSeats = maxCapacity - 1; AirlinerClassMVVM amClass = new AirlinerClassMVVM(aClass, aClass.SeatingCapacity, aClass.RegularSeatingCapacity, maxSeats, changeable); this.Classes.Add(amClass); } InitializeComponent(); }
public PopUpAutogenerateRoute(FleetAirliner airliner) { this.Airliner = airliner; InitializeComponent(); this.Title = "Time table for " + this.Airliner.Name; this.Width = 600; this.Height = 125; this.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; StackPanel mainPanel = new StackPanel(); mainPanel.Margin = new Thickness(10, 10, 10, 10); mainPanel.Children.Add(createAutoGeneratePanel()); mainPanel.Children.Add(createButtonsPanel()); this.Content = mainPanel; }
public PageFleetStatistics(FleetAirliner airliner) { this.Airliner = airliner; InitializeComponent(); StackPanel panelStatistics = new StackPanel(); panelStatistics.Margin = new Thickness(0, 10, 50, 0); TextBlock txtHeader = new TextBlock(); txtHeader.Margin = new Thickness(0, 0, 0, 0); txtHeader.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; txtHeader.SetResourceReference(TextBlock.BackgroundProperty, "HeaderBackgroundBrush2"); txtHeader.FontWeight = FontWeights.Bold; txtHeader.Text = "Airliner Statistics"; panelStatistics.Children.Add(txtHeader); ContentControl ccHeader = new ContentControl(); ccHeader.ContentTemplate = this.Resources["StatHeader"] as DataTemplate ; ccHeader.Content = new KeyValuePair<int, int>(GameObject.GetInstance().GameTime.Year - 1, GameObject.GetInstance().GameTime.Year); panelStatistics.Children.Add(ccHeader); lbStats = new ListBox(); lbStats.ItemContainerStyleSelector = new ListBoxItemStyleSelector(); lbStats.ItemTemplate = this.Resources["StatItem"] as DataTemplate; panelStatistics.Children.Add(lbStats); showStats(); //GameTimer.GetInstance().OnTimeChanged += new GameTimer.TimeChanged(PageFleetStatistics_OnTimeChanged); //this.Unloaded += new RoutedEventHandler(PageFleetStatistics_Unloaded); this.Content = panelStatistics; }
public PopUpHomeBase(FleetAirliner airliner) { this.Airliner = airliner; this.Title = "Select New Homebase"; this.Width = 300; this.Height = 100; this.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; this.WindowStyle = System.Windows.WindowStyle.None; StackPanel mainPanel = new StackPanel(); mainPanel.Margin = new Thickness(10, 10, 10, 10); cbAirport = new ComboBox(); cbAirport.SetResourceReference(ComboBox.ItemTemplateProperty, "AirportCountryItem"); cbAirport.SetResourceReference(ComboBox.StyleProperty, "ComboBoxTransparentStyle"); cbAirport.IsSynchronizedWithCurrentItem = true; cbAirport.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; List<Airport> airports = this.Airliner.Airliner.Airline.Airports.FindAll((delegate(Airport airport) { return airport.getCurrentAirportFacility(this.Airliner.Airliner.Airline,AirportFacility.FacilityType.Service).TypeLevel>0; })); airports.Sort(delegate(Airport a1, Airport a2) { return a1.Profile.Name.CompareTo(a2.Profile.Name); }); foreach (Airport airport in airports) cbAirport.Items.Add(airport); cbAirport.SelectedItem = this.Airliner.Homebase; mainPanel.Children.Add(cbAirport); mainPanel.Children.Add(createButtonsPanel()); this.Content = mainPanel; }
public AirlinerStatistics(FleetAirliner airliner) { this.Airliner = airliner; }
//simulates the service of a flight private static void SimulateService(FleetAirliner airliner) { double servicePrice = 100000; airliner.Airliner.LastServiceCheck = airliner.Airliner.Flown; AirlineHelpers.AddAirlineInvoice(airliner.Airliner.Airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Maintenances, -servicePrice); airliner.Statistics.addStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Airliner_Income"), -servicePrice); airliner.GroundedToDate = GameObject.GetInstance().GameTime.AddDays(90); }
//simulates the landing of a flight private static void SimulateLanding(FleetAirliner airliner) { DateTime landingTime = airliner.CurrentFlight.FlightTime.Add(MathHelpers.GetFlightTime(airliner.CurrentFlight.Entry.DepartureAirport.Profile.Coordinates, airliner.CurrentFlight.Entry.Destination.Airport.Profile.Coordinates, FleetAirlinerHelpers.GetCruisingSpeed(airliner))); double fdistance = MathHelpers.GetDistance(airliner.CurrentFlight.getDepartureAirport().Profile.Coordinates,airliner.CurrentPosition.Profile.Coordinates); TimeSpan flighttime = landingTime.Subtract(airliner.CurrentFlight.FlightTime); double groundTaxPerPassenger = 5; double tax = 0; if (airliner.CurrentFlight.Entry.Destination.Airport.Profile.Country != airliner.CurrentFlight.getDepartureAirport().Profile.Country) tax = 2 * tax; double ticketsIncome = 0; double feesIncome = 0; double mealExpenses = 0; double fuelExpenses = 0; if (airliner.CurrentFlight.isPassengerFlight()) { tax = groundTaxPerPassenger * airliner.CurrentFlight.getTotalPassengers(); fuelExpenses = GameObject.GetInstance().FuelPrice * fdistance * airliner.CurrentFlight.getTotalPassengers() * airliner.Airliner.Type.FuelConsumption; foreach (FlightAirlinerClass fac in airliner.CurrentFlight.Classes) { ticketsIncome += fac.Passengers * ((PassengerRoute)airliner.CurrentFlight.Entry.TimeTable.Route).getRouteAirlinerClass(fac.AirlinerClass.Type).FarePrice; } FeeType employeeDiscountType = FeeTypes.GetType("Employee Discount"); double employeesDiscount = airliner.Airliner.Airline.Fees.getValue(employeeDiscountType); double totalDiscount = ticketsIncome * (employeeDiscountType.Percentage / 100.0) * (employeesDiscount / 100.0); ticketsIncome = ticketsIncome - totalDiscount; foreach (FeeType feeType in FeeTypes.GetTypes(FeeType.eFeeType.Fee)) { if (GameObject.GetInstance().GameTime.Year >= feeType.FromYear) { foreach (FlightAirlinerClass fac in airliner.CurrentFlight.Classes) { double percent = 0.10; double maxValue = Convert.ToDouble(feeType.Percentage) * (1 + percent); double minValue = Convert.ToDouble(feeType.Percentage) * (1 - percent); double value = Convert.ToDouble(rnd.Next((int)minValue, (int)maxValue)) / 100; feesIncome += fac.Passengers * value * airliner.Airliner.Airline.Fees.getValue(feeType); } } } foreach (FlightAirlinerClass fac in airliner.CurrentFlight.Classes) { foreach (RouteFacility facility in ((PassengerRoute)airliner.CurrentFlight.Entry.TimeTable.Route).getRouteAirlinerClass(fac.AirlinerClass.Type).getFacilities()) { if (facility.EType == RouteFacility.ExpenseType.Fixed) mealExpenses += fac.Passengers * facility.ExpensePerPassenger; else { FeeType feeType = facility.FeeType; double percent = 0.10; double maxValue = Convert.ToDouble(feeType.Percentage) * (1 + percent); double minValue = Convert.ToDouble(feeType.Percentage) * (1 - percent); double value = Convert.ToDouble(rnd.Next((int)minValue, (int)maxValue)) / 100; mealExpenses -= fac.Passengers * value * airliner.Airliner.Airline.Fees.getValue(feeType); } } } } if (airliner.CurrentFlight.isCargoFlight()) { tax = groundTaxPerPassenger * airliner.CurrentFlight.Cargo; fuelExpenses = GameObject.GetInstance().FuelPrice * fdistance * airliner.CurrentFlight.Cargo * airliner.Airliner.Type.FuelConsumption; ticketsIncome = airliner.CurrentFlight.Cargo * airliner.CurrentFlight.getCargoPrice(); } Airport dest = airliner.CurrentFlight.Entry.Destination.Airport; Airport dept = airliner.CurrentFlight.Entry.DepartureAirport; double dist = MathHelpers.GetDistance(dest.Profile.Coordinates, dept.Profile.Coordinates); double expenses = fuelExpenses + dest.getLandingFee() + tax; if (double.IsNaN(expenses)) expenses = 0; FleetAirlinerHelpers.SetFlightStats(airliner); long airportIncome = Convert.ToInt64(dest.getLandingFee()); dest.Income += airportIncome; Airline airline = airliner.Airliner.Airline; AirlineHelpers.AddAirlineInvoice(airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Flight_Expenses, -expenses); AirlineHelpers.AddAirlineInvoice(airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Tickets, ticketsIncome); AirlineHelpers.AddAirlineInvoice(airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.OnFlight_Income, -mealExpenses); AirlineHelpers.AddAirlineInvoice(airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Fees, feesIncome); airliner.CurrentFlight.Entry.TimeTable.Route.addRouteInvoice(new Invoice(GameObject.GetInstance().GameTime, Invoice.InvoiceType.Flight_Expenses, -expenses)); airliner.CurrentFlight.Entry.TimeTable.Route.addRouteInvoice(new Invoice(GameObject.GetInstance().GameTime, Invoice.InvoiceType.Tickets, ticketsIncome)); airliner.CurrentFlight.Entry.TimeTable.Route.addRouteInvoice(new Invoice(GameObject.GetInstance().GameTime, Invoice.InvoiceType.OnFlight_Income, -mealExpenses)); airliner.CurrentFlight.Entry.TimeTable.Route.addRouteInvoice(new Invoice(GameObject.GetInstance().GameTime, Invoice.InvoiceType.Fees, feesIncome)); double wages = 0; if (airliner.CurrentFlight.isPassengerFlight()) { int cabinCrew = ((AirlinerPassengerType)airliner.Airliner.Type).CabinCrew; wages = cabinCrew * flighttime.TotalHours * airliner.Airliner.Airline.Fees.getValue(FeeTypes.GetType("Cabin Wage"));// +(airliner.CurrentFlight.Entry.TimeTable.Route.getTotalCabinCrew() * airliner.Airliner.Airline.Fees.getValue(FeeTypes.GetType("Cabin kilometer rate")) * fdistance) + (airliner.Airliner.Type.CockpitCrew * airliner.Airliner.Airline.Fees.getValue(FeeTypes.GetType("Cockpit kilometer rate")) * fdistance); //wages AirlineHelpers.AddAirlineInvoice(airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Wages, -wages); HolidayYearEvent holiday = HolidayYear.GetHoliday(airline.Profile.Country, GameObject.GetInstance().GameTime); if (holiday != null && (holiday.Holiday.Travel == Holiday.TravelType.Both || holiday.Holiday.Travel == Holiday.TravelType.Normal)) wages = wages * 1.50; airliner.CurrentFlight.Entry.TimeTable.Route.addRouteInvoice(new Invoice(GameObject.GetInstance().GameTime, Invoice.InvoiceType.Wages, -wages)); CreatePassengersHappiness(airliner); } airliner.Statistics.addStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Airliner_Income"), ticketsIncome - expenses - mealExpenses + feesIncome - wages); airliner.Airliner.Flown += fdistance; if (airliner.Airliner.Airline.IsHuman && Settings.GetInstance().MailsOnLandings) GameObject.GetInstance().NewsBox.addNews(new News(News.NewsType.Flight_News, GameObject.GetInstance().GameTime, string.Format("{0} landed", airliner.Name), string.Format("Your airliner [LI airliner={0}] has landed in [LI airport={1}], {2} with {3} passengers.\nThe airliner flow from [LI airport={4}], {5}", new object[] { airliner.Airliner.TailNumber, dest.Profile.IATACode, dest.Profile.Country.Name, airliner.CurrentFlight.getTotalPassengers(), dept.Profile.IATACode, dept.Profile.Country.Name }))); if (airliner.CurrentFlight is StopoverFlight && !((StopoverFlight)airliner.CurrentFlight).IsLastTrip) { SimulateFlight(airliner.CurrentFlight.Entry); } else airliner.CurrentFlight = null; }
/* //sets the statistics from a take off private static void SetTakeoffStatistics(FleetAirliner airliner) { Airport airport = airliner.CurrentFlight.Entry.DepartureAirport; airport.Statistics.addStatisticsValue(GameObject.GetInstance().GameTime.Year, airliner.Airliner.Airline, StatisticsTypes.GetStatisticsType("Departures"), 1); double destPassengers = airport.Statistics.getStatisticsValue(GameObject.GetInstance().GameTime.Year, airliner.Airliner.Airline, StatisticsTypes.GetStatisticsType("Passengers")); double destDepartures = airport.Statistics.getStatisticsValue(GameObject.GetInstance().GameTime.Year, airliner.Airliner.Airline, StatisticsTypes.GetStatisticsType("Arrivals")); airport.Statistics.setStatisticsValue(GameObject.GetInstance().GameTime.Year, airliner.Airliner.Airline, StatisticsTypes.GetStatisticsType("Passengers%"), (int)(destPassengers / destDepartures)); airliner.Airliner.Airline.Statistics.addStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Departures"), 1); airliner.Statistics.addStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Departures"), 1); foreach (AirlinerClass aClass in airliner.Airliner.Classes) { RouteAirlinerClass raClass = airliner.CurrentFlight.Entry.TimeTable.Route.getRouteAirlinerClass(aClass.Type); airliner.CurrentFlight.Entry.TimeTable.Route.Statistics.addStatisticsValue(raClass, StatisticsTypes.GetStatisticsType("Departures"), 1); } double airlinerPassengers = airliner.Statistics.getStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Passengers")); double airlinerDepartures = airliner.Statistics.getStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Departures")); airliner.Statistics.setStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Passengers%"), (int)(airlinerPassengers / airlinerDepartures)); double airlinePassengers = airliner.Airliner.Airline.Statistics.getStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Passengers")); double airlineDepartures = airliner.Airliner.Airline.Statistics.getStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Departures")); airliner.Airliner.Airline.Statistics.setStatisticsValue(GameObject.GetInstance().GameTime.Year, StatisticsTypes.GetStatisticsType("Passengers%"), (int)(airlinePassengers / airlineDepartures)); }*/ //creates the happiness for a landed route airliner private static void CreatePassengersHappiness(FleetAirliner airliner) { int serviceLevel = 0;//airliner.Route.DrinksFacility.ServiceLevel + airliner.Route.FoodFacility.ServiceLevel + airliner.Airliner.Airliner.getFacility(AirlinerFacility.FacilityType.Audio).ServiceLevel + airliner.Airliner.Airliner.getFacility(AirlinerFacility.FacilityType.Seat).ServiceLevel + airliner.Airliner.Airliner.getFacility(AirlinerFacility.FacilityType.Video).ServiceLevel; int happyValue = airliner.CurrentFlight.IsOnTime ? 10 : 20; happyValue -= (serviceLevel / 25); for (int i = 0; i < airliner.CurrentFlight.getTotalPassengers(); i++) { Boolean isHappy = rnd.Next(100) > happyValue; if (isHappy) PassengerHelpers.AddPassengerHappiness(airliner.Airliner.Airline); } }
public FleetAirlinerStatisticsMVVM(FleetAirliner airliner, StatisticsType type) { this.Type = type; this.Airliner = airliner; }
public FleetAirlinerMVVM(FleetAirliner airliner) { this.Airliner = airliner; this.Classes = new ObservableCollection<AirlinerClassMVVM>(); AirlinerClass tClass = this.Airliner.Airliner.Classes[0]; foreach (AirlinerClass aClass in this.Airliner.Airliner.Classes) { int maxCapacity; if (airliner.Airliner.Type.TypeAirliner == AirlinerType.TypeOfAirliner.Passenger) maxCapacity = ((AirlinerPassengerType)airliner.Airliner.Type).MaxSeatingCapacity; else maxCapacity = tClass.RegularSeatingCapacity; Boolean changeable = this.Airliner.Airliner.Classes.IndexOf(aClass) > 0; int maxSeats; if (this.Airliner.Airliner.Classes.Count == 3) { if (this.Airliner.Airliner.Classes.IndexOf(aClass) == 1) maxSeats = maxCapacity - 1 - this.Airliner.Airliner.Classes[2].RegularSeatingCapacity; else maxSeats = maxCapacity - 1 - this.Airliner.Airliner.Classes[1].RegularSeatingCapacity; } else maxSeats =maxCapacity -1; AirlinerClassMVVM amClass = new AirlinerClassMVVM(aClass.Type, aClass.SeatingCapacity, aClass.RegularSeatingCapacity, maxSeats, changeable); this.Classes.Add(amClass); } this.AMaintenanceInterval = this.Airliner.AMaintenanceInterval; this.BMaintenanceInterval = this.Airliner.BMaintenanceInterval; this.CMaintenanceInterval = this.Airliner.CMaintenanceInterval; this.DMaintenanceInterval = this.Airliner.DMaintenanceInterval; this.SchedCMaintenance = this.Airliner.SchedCMaintenance; this.SchedDMaintenance = this.Airliner.SchedDMaintenance; }