private void btnOrder_Click(object sender, RoutedEventArgs e) { Boolean hasHomebases = true; foreach (AirlinerOrderMVVM order in this.Orders.Orders) { if (order.Homebase == null) hasHomebases = false; } Boolean contractedOrder = false; Boolean tryOrder = true; DateTime deliveryDate = this.Orders.getDeliveryDate(); if (!hasHomebases) { WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2002"), Translator.GetInstance().GetString("MessageBox", "2002", "message"), WPFMessageBoxButtons.Ok); } else { if (GameObject.GetInstance().HumanAirline.Contract != null) { if (GameObject.GetInstance().HumanAirline.Contract.Manufacturer == this.Manufacturer) contractedOrder = true; else { double terminationFee = GameObject.GetInstance().HumanAirline.Contract.getTerminationFee(); WPFMessageBoxResult result = WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2010"), string.Format(Translator.GetInstance().GetString("MessageBox", "2010", "message"), GameObject.GetInstance().HumanAirline.Contract.Manufacturer.Name, terminationFee), WPFMessageBoxButtons.YesNo); if (result == WPFMessageBoxResult.Yes) { AirlineHelpers.AddAirlineInvoice(GameObject.GetInstance().HumanAirline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -terminationFee); GameObject.GetInstance().HumanAirline.Contract = null; this.Contract.Contracted = null; } tryOrder = result == WPFMessageBoxResult.Yes; } } if (tryOrder) { int totalAmount = this.Orders.Orders.Sum(o => o.Amount); double price = this.Orders.Orders.Sum(o => o.Type.Price * o.Amount); double totalPrice = price * ((1 - GeneralHelpers.GetAirlinerOrderDiscount(totalAmount))); if (contractedOrder) totalPrice = totalPrice * ((100 - GameObject.GetInstance().HumanAirline.Contract.Discount) / 100); double downpaymentPrice = 0; downpaymentPrice = totalPrice * (GameObject.GetInstance().Difficulty.PriceLevel / 10); if (cbDownPayment.IsChecked.Value) { if (downpaymentPrice > GameObject.GetInstance().HumanAirline.Money) { WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2001"), Translator.GetInstance().GetString("MessageBox", "2001", "message"), WPFMessageBoxButtons.Ok); } else { WPFMessageBoxResult result = WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2009"), string.Format(Translator.GetInstance().GetString("MessageBox", "2009", "message"), totalPrice, downpaymentPrice), WPFMessageBoxButtons.YesNo); if (result == WPFMessageBoxResult.Yes) { foreach (AirlinerOrderMVVM order in this.Orders.Orders) { for (int i = 0; i < order.Amount; i++) { Guid id = Guid.NewGuid(); Airliner airliner = new Airliner(id.ToString(), order.Type, GameObject.GetInstance().HumanAirline.Profile.Country.TailNumbers.getNextTailNumber(), deliveryDate); airliner.clearAirlinerClasses(); foreach (AirlinerClass aClass in order.Classes) { AirlinerClass tClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); tClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) tClass.setFacility(GameObject.GetInstance().HumanAirline, facility); airliner.addAirlinerClass(tClass); } Model.AirlinerModel.Airliners.AddAirliner(airliner); FleetAirliner.PurchasedType pType = FleetAirliner.PurchasedType.BoughtDownPayment; GameObject.GetInstance().HumanAirline.addAirliner(pType, airliner, order.Homebase); } } if (contractedOrder) GameObject.GetInstance().HumanAirline.Contract.PurchasedAirliners += this.Orders.Orders.Sum(o => o.Amount); AirlineHelpers.AddAirlineInvoice(GameObject.GetInstance().HumanAirline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -downpaymentPrice); TabControl tab_main = UIHelpers.FindChild<TabControl>(this.Tag as Page, "tabMenu"); if (tab_main != null) { var matchingItem = tab_main.Items.Cast<TabItem>() .Where(item => item.Tag.ToString() == "Order") .FirstOrDefault(); tab_main.SelectedItem = matchingItem; } } } } else { if (totalPrice > GameObject.GetInstance().HumanAirline.Money) { WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2001"), Translator.GetInstance().GetString("MessageBox", "2001", "message"), WPFMessageBoxButtons.Ok); } else { if (this.Orders.Orders.Sum(o => o.Amount) > 0) { WPFMessageBoxResult result = WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2008"), string.Format(Translator.GetInstance().GetString("MessageBox", "2008", "message"), totalPrice), WPFMessageBoxButtons.YesNo); if (result == WPFMessageBoxResult.Yes) { orderAirliners(contractedOrder ? GameObject.GetInstance().HumanAirline.Contract.Discount : 0); TabControl tab_main = UIHelpers.FindChild<TabControl>(this.Tag as Page, "tabMenu"); if (tab_main != null) { var matchingItem = tab_main.Items.Cast<TabItem>() .Where(item => item.Tag.ToString() == "Order") .FirstOrDefault(); tab_main.SelectedItem = matchingItem; } } if (contractedOrder) GameObject.GetInstance().HumanAirline.Contract.PurchasedAirliners += this.Orders.Orders.Sum(o => o.Amount); } } } } } }
//orders the airliners private void orderAirliners(double discount = 0) { DateTime deliveryDate = this.Orders.getDeliveryDate(); Guid id = Guid.NewGuid(); foreach (AirlinerOrderMVVM order in this.Orders.Orders) { for (int i = 0; i < order.Amount; i++) { Airliner airliner = new Airliner(id.ToString(), order.Type, GameObject.GetInstance().HumanAirline.Profile.Country.TailNumbers.getNextTailNumber(), deliveryDate); Model.AirlinerModel.Airliners.AddAirliner(airliner); FleetAirliner.PurchasedType pType = FleetAirliner.PurchasedType.Bought; GameObject.GetInstance().HumanAirline.addAirliner(pType, airliner, order.Homebase); airliner.clearAirlinerClasses(); foreach (AirlinerClass aClass in order.Classes) { AirlinerClass tClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); tClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) tClass.setFacility(GameObject.GetInstance().HumanAirline, facility); airliner.addAirlinerClass(tClass); } } } int totalAmount = this.Orders.Orders.Sum(o => o.Amount); double price = this.Orders.Orders.Sum(o => o.Type.Price * o.Amount); double totalPrice = price * ((1 - GeneralHelpers.GetAirlinerOrderDiscount(totalAmount))) * ((100 - discount) / 100); AirlineHelpers.AddAirlineInvoice(GameObject.GetInstance().HumanAirline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -totalPrice); }
//orders a number of airliners for an airline public static void OrderAirliners(Airline airline, List<AirlinerOrder> orders, Airport airport, DateTime deliveryDate, double discount) { Guid id = Guid.NewGuid(); foreach (AirlinerOrder order in orders) { for (int i = 0; i < order.Amount; i++) { Airliner airliner = new Airliner(id.ToString(), order.Type, airline.Profile.Country.TailNumbers.getNextTailNumber(), deliveryDate); Airliners.AddAirliner(airliner); FleetAirliner.PurchasedType pType = FleetAirliner.PurchasedType.Bought; airline.addAirliner(pType, airliner, airport); airliner.clearAirlinerClasses(); foreach (AirlinerClass aClass in order.Classes) { AirlinerClass tClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); tClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) tClass.setFacility(airline, facility); airliner.addAirlinerClass(tClass); } } } int totalAmount = orders.Sum(o => o.Amount); double price = orders.Sum(o => o.Type.Price * o.Amount); double totalPrice = price * ((1 - GeneralHelpers.GetAirlinerOrderDiscount(totalAmount))) * ((100 - discount) / 100); AirlineHelpers.AddAirlineInvoice(airline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -totalPrice); }
private void btnApply_Click(object sender, RoutedEventArgs e) { int serviceDays = 3; WPFMessageBoxResult result = WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2902"), string.Format(Translator.GetInstance().GetString("MessageBox", "2902","message"), serviceDays), WPFMessageBoxButtons.YesNo); if (result == WPFMessageBoxResult.Yes) { foreach (FleetAirliner airliner in this.AirlinersToMaintain) { serviceDays = airliner.Airliner.Classes.Count == this.Classes.Count ? 1 : 3; airliner.Airliner.clearAirlinerClasses(); foreach (AirlinerClass aClass in this.Classes) { AirlinerClass tClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); tClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) tClass.setFacility(GameObject.GetInstance().HumanAirline, facility); airliner.Airliner.addAirlinerClass(tClass); } airliner.GroundedToDate = GameObject.GetInstance().GameTime.AddDays(serviceDays); } } }
//creates the airliner classes for an airliner public static void CreateAirlinerClasses(Airliner airliner) { if (airliner.Type is AirlinerPassengerType) { Configuration airlinerTypeConfiguration = Configurations.GetConfigurations(Configuration.ConfigurationType.AirlinerType).Find(c=>((AirlinerTypeConfiguration)c).Airliner == airliner.Type && ((AirlinerTypeConfiguration)c).Period.From <= airliner.BuiltDate && ((AirlinerTypeConfiguration)c).Period.To> airliner.BuiltDate) ; if (airlinerTypeConfiguration == null) { airliner.clearAirlinerClasses(); AirlinerConfiguration configuration = null; int classes = rnd.Next(0, ((AirlinerPassengerType)airliner.Type).MaxAirlinerClasses) +1; if (GameObject.GetInstance().GameTime.Year >= (int)AirlinerClass.ClassType.Business_Class) { if (classes == 1) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("200"); if (classes == 2) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("202"); if (classes == 3) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("203"); } else { if (classes == 1) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("200"); if (classes == 2) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("201"); if (classes == 3) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("201"); } foreach (AirlinerClassConfiguration aClass in configuration.Classes) { AirlinerClass airlinerClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); airlinerClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) airlinerClass.setFacility(airliner.Airline, facility); airlinerClass.SeatingCapacity = Convert.ToInt16(Convert.ToDouble(airlinerClass.RegularSeatingCapacity) / airlinerClass.getFacility(AirlinerFacility.FacilityType.Seat).SeatUses); airliner.addAirlinerClass(airlinerClass); } int seatingDiff = ((AirlinerPassengerType)airliner.Type).MaxSeatingCapacity - configuration.MinimumSeats; airliner.getAirlinerClass(AirlinerClass.ClassType.Economy_Class).RegularSeatingCapacity += seatingDiff; AirlinerFacility seatingFacility = airliner.getAirlinerClass(AirlinerClass.ClassType.Economy_Class).getFacility(AirlinerFacility.FacilityType.Seat); int extraSeats = (int)(seatingDiff / seatingFacility.SeatUses); airliner.getAirlinerClass(AirlinerClass.ClassType.Economy_Class).SeatingCapacity += extraSeats; } else { airliner.clearAirlinerClasses(); foreach (AirlinerClassConfiguration aClass in ((AirlinerTypeConfiguration)airlinerTypeConfiguration).Classes) { AirlinerClass airlinerClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); airlinerClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) airlinerClass.setFacility(airliner.Airline, facility); airlinerClass.SeatingCapacity = Convert.ToInt16(Convert.ToDouble(airlinerClass.RegularSeatingCapacity) / airlinerClass.getFacility(AirlinerFacility.FacilityType.Seat).SeatUses); airliner.addAirlinerClass(airlinerClass); } } } else if (airliner.Type is AirlinerCargoType) { airliner.clearAirlinerClasses(); AirlinerClass cargoClass = new AirlinerClass(AirlinerClass.ClassType.Economy_Class, 0); airliner.addAirlinerClass(cargoClass); } }
private void btnLoadConfiguration_Click(object sender, RoutedEventArgs e) { AirlinerPassengerType airlinerType = ((AirlinerPassengerType)this.Airliner.Airliner.Type); ComboBox cbConfigurations = new ComboBox(); cbConfigurations.SetResourceReference(ComboBox.StyleProperty, "ComboBoxTransparentStyle"); cbConfigurations.SelectedValuePath = "Name"; cbConfigurations.DisplayMemberPath = "Name"; cbConfigurations.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; cbConfigurations.Width = 200; foreach (AirlinerConfiguration confItem in Configurations.GetConfigurations(Configuration.ConfigurationType.Airliner).FindAll(c => ((AirlinerConfiguration)c).getNumberOfClasses() <= airlinerType.MaxAirlinerClasses && ((AirlinerConfiguration)c).MinimumSeats <= airlinerType.MaxSeatingCapacity)) cbConfigurations.Items.Add(confItem); cbConfigurations.SelectedIndex = 0; if (PopUpSingleElement.ShowPopUp("Select configuration", cbConfigurations) == PopUpSingleElement.ButtonSelected.OK && cbConfigurations.SelectedItem!=null) { AirlinerConfiguration configuration = (AirlinerConfiguration)cbConfigurations.SelectedItem ; this.Airliner.Airliner.clearAirlinerClasses(); foreach (AirlinerClassConfiguration aClass in configuration.Classes) { AirlinerClass airlinerClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); airlinerClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) airlinerClass.setFacility(this.Airliner.Airliner.Airline,facility); this.Airliner.Airliner.addAirlinerClass(airlinerClass); } int seatingDiff = airlinerType.MaxSeatingCapacity - configuration.MinimumSeats; this.Airliner.Airliner.getAirlinerClass(AirlinerClass.ClassType.Economy_Class).RegularSeatingCapacity += seatingDiff; AirlinerFacility seatingFacility = this.Airliner.Airliner.getAirlinerClass(AirlinerClass.ClassType.Economy_Class).getFacility(AirlinerFacility.FacilityType.Seat); int extraSeats = (int)(seatingDiff / seatingFacility.SeatUses); this.Airliner.Airliner.getAirlinerClass(AirlinerClass.ClassType.Economy_Class).SeatingCapacity += extraSeats; showFacilities(); } }
private void cbStandardConfiguration_Checked(object sender, RoutedEventArgs e) { btnEquipped.IsEnabled = false; btnApplyConfiguration.IsEnabled = false; AirlinerType type = (AirlinerType)((CheckBox)sender).Tag; Configuration airlinerTypeConfiguration = Configurations.GetConfigurations(Configuration.ConfigurationType.AirlinerType).Find(c => ((AirlinerTypeConfiguration)c).Airliner == type && ((AirlinerTypeConfiguration)c).Period.From <= GameObject.GetInstance().GameTime && ((AirlinerTypeConfiguration)c).Period.To > GameObject.GetInstance().GameTime); List<AirlinerClass> classes = new List<AirlinerClass>(); foreach (AirlinerClassConfiguration aClass in ((AirlinerTypeConfiguration)airlinerTypeConfiguration).Classes) { AirlinerClass airlinerClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); airlinerClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) airlinerClass.setFacility(GameObject.GetInstance().HumanAirline, facility); classes.Add(airlinerClass); } if (classes != null) { this.Classes = classes; panelClasses.Children.Clear(); foreach (AirlinerClass aClass in this.Classes) { panelClasses.Children.Add(createAirlineClassLink(aClass)); } } }
private void btnOrder_Click(object sender, RoutedEventArgs e) { Boolean contractedOrder = false; Boolean tryOrder = true; Airport airport = (Airport)cbAirport.SelectedItem; if (airport == null) { WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2002"), Translator.GetInstance().GetString("MessageBox", "2002", "message"), WPFMessageBoxButtons.Ok); } else { if (GameObject.GetInstance().HumanAirline.Contract != null) { if (GameObject.GetInstance().HumanAirline.Contract.Manufacturer == this.Manufacturer) contractedOrder = true; else { double terminationFee = GameObject.GetInstance().HumanAirline.Contract.getTerminationFee(); WPFMessageBoxResult result = WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2010"), string.Format(Translator.GetInstance().GetString("MessageBox", "2010", "message"), GameObject.GetInstance().HumanAirline.Contract.Manufacturer.Name, terminationFee), WPFMessageBoxButtons.YesNo); if (result == WPFMessageBoxResult.Yes) { AirlineHelpers.AddAirlineInvoice(GameObject.GetInstance().HumanAirline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -terminationFee); GameObject.GetInstance().HumanAirline.Contract = null; } tryOrder = result == WPFMessageBoxResult.Yes; } } if (tryOrder) { int totalAmount = orders.Sum(o => o.Amount); double price = orders.Sum(o => o.Type.Price * o.Amount); double totalPrice = price * ((1 - GeneralHelpers.GetAirlinerOrderDiscount(totalAmount))); if (contractedOrder) totalPrice = totalPrice * ((100 - GameObject.GetInstance().HumanAirline.Contract.Discount) / 100); double downpaymentPrice = 0; downpaymentPrice = totalPrice * (GameObject.GetInstance().Difficulty.PriceLevel / 10); if (cbDownPayment.IsChecked.Value) { if (downpaymentPrice > GameObject.GetInstance().HumanAirline.Money) { WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2001"), Translator.GetInstance().GetString("MessageBox", "2001", "message"), WPFMessageBoxButtons.Ok); } else { WPFMessageBoxResult result = WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2009"), string.Format(Translator.GetInstance().GetString("MessageBox", "2009", "message"), totalPrice, downpaymentPrice), WPFMessageBoxButtons.YesNo); if (result == WPFMessageBoxResult.Yes) { foreach (AirlinerOrder order in orders) { for (int i = 0; i < order.Amount; i++) { Guid id = Guid.NewGuid(); Airliner airliner = new Airliner(id.ToString(), order.Type, GameObject.GetInstance().HumanAirline.Profile.Country.TailNumbers.getNextTailNumber(), dpDate.SelectedDate.Value); airliner.clearAirlinerClasses(); foreach (AirlinerClass aClass in order.Classes) { AirlinerClass tClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); tClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) tClass.setFacility(GameObject.GetInstance().HumanAirline, facility); airliner.addAirlinerClass(tClass); } Airliners.AddAirliner(airliner); FleetAirliner.PurchasedType pType = FleetAirliner.PurchasedType.BoughtDownPayment; GameObject.GetInstance().HumanAirline.addAirliner(pType, airliner, airport); } } if (contractedOrder) GameObject.GetInstance().HumanAirline.Contract.PurchasedAirliners += orders.Sum(o => o.Amount); AirlineHelpers.AddAirlineInvoice(GameObject.GetInstance().HumanAirline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -downpaymentPrice); PageNavigator.NavigateTo(new PageAirliners()); } } } else { if (totalPrice > GameObject.GetInstance().HumanAirline.Money) { WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2001"), Translator.GetInstance().GetString("MessageBox", "2001", "message"), WPFMessageBoxButtons.Ok); } else { if (orders.Sum(o => o.Amount) > 0) { WPFMessageBoxResult result = WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2008"), string.Format(Translator.GetInstance().GetString("MessageBox", "2008", "message"), totalPrice), WPFMessageBoxButtons.YesNo); if (result == WPFMessageBoxResult.Yes) { if (contractedOrder) AirlineHelpers.OrderAirliners(GameObject.GetInstance().HumanAirline, orders, airport, dpDate.SelectedDate.Value, GameObject.GetInstance().HumanAirline.Contract.Discount); else AirlineHelpers.OrderAirliners(GameObject.GetInstance().HumanAirline, orders, airport, dpDate.SelectedDate.Value); PageNavigator.NavigateTo(new PageAirliners()); } if (contractedOrder) GameObject.GetInstance().HumanAirline.Contract.PurchasedAirliners += orders.Sum(o => o.Amount); } } } } this.ParentPage.updatePage(); } }
//returns the airliner classes for an airliner public static List<AirlinerClass> GetAirlinerClasses(AirlinerType type) { List<AirlinerClass> classes = new List<AirlinerClass>(); if (type is AirlinerPassengerType) { Configuration airlinerTypeConfiguration = Configurations.GetConfigurations(Configuration.ConfigurationType.AirlinerType).Find(c => ((AirlinerTypeConfiguration)c).Airliner == type && ((AirlinerTypeConfiguration)c).Period.From <= GameObject.GetInstance().GameTime && ((AirlinerTypeConfiguration)c).Period.To > GameObject.GetInstance().GameTime); if (airlinerTypeConfiguration == null) { AirlinerConfiguration configuration = null; int numOfClasses = rnd.Next(0, ((AirlinerPassengerType)type).MaxAirlinerClasses) + 1; if (GameObject.GetInstance().GameTime.Year >= (int)AirlinerClass.ClassType.Business_Class) { if (numOfClasses == 1) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("200"); if (numOfClasses == 2) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("202"); if (numOfClasses == 3) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("203"); } else { if (numOfClasses == 1) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("200"); if (numOfClasses == 2) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("201"); if (numOfClasses == 3) configuration = (AirlinerConfiguration)Configurations.GetStandardConfiguration("201"); } foreach (AirlinerClassConfiguration aClass in configuration.Classes) { AirlinerClass airlinerClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); airlinerClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) airlinerClass.setFacility(null, facility); foreach (AirlinerFacility.FacilityType fType in Enum.GetValues(typeof(AirlinerFacility.FacilityType))) { if (!aClass.Facilities.Exists(f => f.Type == fType)) { airlinerClass.setFacility(null, AirlinerFacilities.GetBasicFacility(fType)); } } airlinerClass.SeatingCapacity = Convert.ToInt16(Convert.ToDouble(airlinerClass.RegularSeatingCapacity) / airlinerClass.getFacility(AirlinerFacility.FacilityType.Seat).SeatUses); classes.Add(airlinerClass); } int seatingDiff = ((AirlinerPassengerType)type).MaxSeatingCapacity - configuration.MinimumSeats; AirlinerClass economyClass = classes.Find(c => c.Type == AirlinerClass.ClassType.Economy_Class); economyClass.RegularSeatingCapacity += seatingDiff; AirlinerFacility seatingFacility = economyClass.getFacility(AirlinerFacility.FacilityType.Seat); int extraSeats = (int)(seatingDiff / seatingFacility.SeatUses); economyClass.SeatingCapacity += extraSeats; } else { foreach (AirlinerClassConfiguration aClass in ((AirlinerTypeConfiguration)airlinerTypeConfiguration).Classes) { AirlinerClass airlinerClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity); airlinerClass.RegularSeatingCapacity = aClass.RegularSeatingCapacity; foreach (AirlinerFacility facility in aClass.getFacilities()) airlinerClass.setFacility(null, facility); airlinerClass.SeatingCapacity = Convert.ToInt16(Convert.ToDouble(airlinerClass.RegularSeatingCapacity) / airlinerClass.getFacility(AirlinerFacility.FacilityType.Seat).SeatUses); classes.Add(airlinerClass); } } } else if (type is AirlinerCargoType) { AirlinerClass cargoClass = new AirlinerClass(AirlinerClass.ClassType.Economy_Class, 0); classes.Add(cargoClass); } return classes; }