public PageUsedAirliners() { this.Loaded += PageUsedAirliners_Loaded; this.Unloaded += PageUsedAirliners_Unloaded; this.RangeRanges = new List <FilterValue>() { new FilterValue("<1500", 0, 1499), new FilterValue("1500-2999", 1500, 2999), new FilterValue("3000-5999", 3000, 5999), new FilterValue("6000+", 6000, int.MaxValue) }; this.SpeedRanges = new List <FilterValue>() { new FilterValue("<400", 0, 399), new FilterValue("400-599", 400, 599), new FilterValue("600+", 600, int.MaxValue) }; this.RunwayRanges = new List <FilterValue>() { new FilterValue("<5000", 0, 4999), new FilterValue("5000-7999", 5000, 7999), new FilterValue("8000+", 8000, int.MaxValue) }; this.CapacityRanges = new List <FilterValue>() { new FilterValue("<100", 0, 99), new FilterValue("100-199", 100, 199), new FilterValue("200-299", 200, 299), new FilterValue("300-399", 300, 399), new FilterValue("400-499", 400, 499), new FilterValue("500+", 500, int.MaxValue) }; this.AllAirliners = new ObservableCollection <AirlinerMVVM>(); foreach (Airliner airliner in Airliners.GetAirlinersForSale().OrderByDescending(a => a.BuiltDate.Year).ToList()) { this.AllAirliners.Add(new AirlinerMVVM(airliner)); } this.SelectedAirliners = new ObservableCollection <AirlinerMVVM>(); InitializeComponent(); }
/*! create some game airliners. */ public static void CreateStartUpAirliners() { int number = AirlinerTypes.GetTypes(delegate(AirlinerType t) { return(t.Produced.From <= GameObject.GetInstance().GameTime&& t.Produced.To >= GameObject.GetInstance().GameTime.AddYears(-30)); }).Count * 25; for (int i = 0; i < number; i++) { Airliners.AddAirliner(CreateAirliner(0)); } }
public PageUsedAirliners() { this.Loaded += PageUsedAirliners_Loaded; this.AllAirliners = Airliners.GetAirlinersForSale().OrderByDescending(a => a.BuiltDate.Year).ToList(); this.SelectedAirliners = new ObservableCollection <Airliner>(); InitializeComponent(); }
/*! create some game airliners. */ public static void CreateStartUpAirliners() { int number = AirlinerTypes.GetTypes(delegate(AirlinerType t) { return(t.Produced.From <= GameObject.GetInstance().GameTime&& t.Produced.To.AddYears(-10) >= GameObject.GetInstance().GameTime.AddYears(-30)); }).Count *rnd.Next(1, 3); int airlines = Airlines.GetNumberOfAirlines(); number = (airlines * number) / 5; for (int i = 0; i < number; i++) { Airliners.AddAirliner(CreateAirliner(0)); } }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { Airliner airliner; if (value is Airliner) { airliner = (Airliner)value; } else { airliner = Airliners.GetAirliner(value.ToString()); } return(string.Join("-", from c in airliner.Classes select AirlinerHelpers.GetAirlinerClassCode(c))); }
public PageAirliners() { InitializeComponent(); this.Uid = "1000"; this.Title = Translator.GetInstance().GetString("PageAirliners", this.Uid); airlinerType = AirlinerType.TypeOfAirliner.Passenger; sortCriteriaUsed = a => a.BuiltDate; sortDescending = true; StackPanel airlinersPanel = new StackPanel(); airlinersPanel.Margin = new Thickness(10, 0, 10, 0); TextBlock txtNewHeader = new TextBlock(); txtNewHeader.Uid = "1001"; txtNewHeader.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; txtNewHeader.SetResourceReference(TextBlock.BackgroundProperty, "HeaderBackgroundBrush2"); txtNewHeader.FontWeight = FontWeights.Bold; txtNewHeader.Text = Translator.GetInstance().GetString("PageAirliners", txtNewHeader.Uid); airlinersPanel.Children.Add(txtNewHeader); // chs, 2011-11-10 added a scroller so all elements are viewable ScrollViewer scroller = new ScrollViewer(); scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto; scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled; airlinersPanel.Children.Add(scroller); StackPanel panelScroller = new StackPanel(); panelScroller.Orientation = Orientation.Vertical; scroller.Content = panelScroller; ContentControl ccManufacturerHeader = new ContentControl(); ccManufacturerHeader.ContentTemplate = this.Resources["ManufacturerHeader"] as DataTemplate; ccManufacturerHeader.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; panelScroller.Children.Add(ccManufacturerHeader); lbManufacturers = new ListBox(); lbManufacturers.ItemTemplate = this.Resources["ManufacturerItem"] as DataTemplate; lbManufacturers.MaxHeight = (GraphicsHelpers.GetContentHeight() - 100) / 2; lbManufacturers.ItemContainerStyleSelector = new ListBoxItemStyleSelector(); panelScroller.Children.Add(lbManufacturers); TextBlock txtUsedHeader = new TextBlock(); txtUsedHeader.Uid = "1002"; txtUsedHeader.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; txtUsedHeader.SetResourceReference(TextBlock.BackgroundProperty, "HeaderBackgroundBrush2"); txtUsedHeader.FontWeight = FontWeights.Bold; txtUsedHeader.Margin = new Thickness(0, 10, 0, 0); txtUsedHeader.Text = Translator.GetInstance().GetString("PageAirliners", txtUsedHeader.Uid); airlinersPanel.Children.Add(txtUsedHeader); WrapPanel airlinerTypePanel = new WrapPanel(); airlinersPanel.Children.Add(airlinerTypePanel); RadioButton rbPassengerAirliner = new RadioButton(); rbPassengerAirliner.GroupName = "AirlinerRouteType"; rbPassengerAirliner.IsChecked = true; rbPassengerAirliner.Tag = AirlinerType.TypeOfAirliner.Passenger; rbPassengerAirliner.Checked += rbRouteType_Checked; rbPassengerAirliner.Content = Translator.GetInstance().GetString("PageAirliners", "1003"); airlinerTypePanel.Children.Add(rbPassengerAirliner); RadioButton rbCargoAirliner = new RadioButton(); rbCargoAirliner.GroupName = "AirlinerRouteType"; rbCargoAirliner.Margin = new Thickness(5, 0, 0, 0); rbCargoAirliner.Tag = AirlinerType.TypeOfAirliner.Cargo; rbCargoAirliner.Checked += rbRouteType_Checked; rbCargoAirliner.Content = Translator.GetInstance().GetString("PageAirliners", "1004"); airlinerTypePanel.Children.Add(rbCargoAirliner); ContentControl lblUsedHeader = new ContentControl(); lblUsedHeader.ContentTemplate = this.Resources["AirlinersUsedHeader"] as DataTemplate; lblUsedHeader.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; airlinersPanel.Children.Add(lblUsedHeader); lbUsedAirliners = new ListBox(); lbUsedAirliners.ItemTemplate = this.Resources["AirlinerUsedItem"] as DataTemplate; lbUsedAirliners.Height = (GraphicsHelpers.GetContentHeight() - 150) / 2; lbUsedAirliners.ItemContainerStyleSelector = new ListBoxItemStyleSelector(); airlinersPanel.Children.Add(lbUsedAirliners); Button btnSearch = new Button(); btnSearch.Uid = "109"; btnSearch.SetResourceReference(Button.StyleProperty, "RoundedButton"); btnSearch.Height = Double.NaN; btnSearch.Width = Double.NaN; btnSearch.IsDefault = true; btnSearch.Content = Translator.GetInstance().GetString("General", btnSearch.Uid); btnSearch.SetResourceReference(Button.BackgroundProperty, "ButtonBrush"); btnSearch.Margin = new Thickness(0, 5, 0, 0); btnSearch.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; btnSearch.Click += new RoutedEventHandler(btnSearch_Click); airlinersPanel.Children.Add(btnSearch); showUsedAirliners(Airliners.GetAirlinersForSale()); StandardContentPanel panelContent = new StandardContentPanel(); panelContent.setContentPage(airlinersPanel, StandardContentPanel.ContentLocation.Left); sideFrame = new Frame(); panelContent.setContentPage(sideFrame, StandardContentPanel.ContentLocation.Right); base.setContent(panelContent); base.setHeaderContent(this.Title); showPage(this); showManufacturers(); }
public PageSearchAirliners(PageAirliners parent) { this.ParentPage = parent; InitializeComponent(); StackPanel mainPanel = new StackPanel(); mainPanel.Margin = new Thickness(0, 0, 5, 0); TextBlock txtHeader = new TextBlock(); txtHeader.Uid = "1001"; txtHeader.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch; txtHeader.SetResourceReference(TextBlock.BackgroundProperty, "HeaderBackgroundBrush2"); txtHeader.FontWeight = FontWeights.Bold; txtHeader.Text = Translator.GetInstance().GetString("PageSearchAirliners", txtHeader.Uid); mainPanel.Children.Add(txtHeader); ListBox lbSearch = new ListBox(); lbSearch.ItemContainerStyleSelector = new ListBoxItemStyleSelector(); lbSearch.SetResourceReference(ListBox.ItemTemplateProperty, "QuickInfoItem"); mainPanel.Children.Add(lbSearch); cbManufacturers = new ComboBox(); cbManufacturers.SetResourceReference(ComboBox.StyleProperty, "ComboBoxTransparentStyle"); cbManufacturers.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; cbManufacturers.ItemTemplate = this.Resources["ManufacturerItem"] as DataTemplate; cbManufacturers.Width = 200; lbSearch.Items.Add(new QuickInfoValue(Translator.GetInstance().GetString("PageSearchAirliners", "1006"), cbManufacturers)); cbManufacturers.Items.Add(new Manufacturer("All", "All", null)); (from a in Airliners.GetAirlinersForSale() orderby a.Type.Manufacturer.Name select a.Type.Manufacturer).Distinct().ToList().ForEach(m => cbManufacturers.Items.Add(m)); // (from a in AirlinerTypes.GetAllTypes() where a.Produced.From <= GameObject.GetInstance().GameTime && a.Produced.To >= GameObject.GetInstance().GameTime orderby a.Manufacturer.Name select a.Manufacturer).Distinct().ToList().ForEach(m => cbManufacturers.Items.Add(m)); cbManufacturers.SelectedIndex = 0; WrapPanel panelRange = new WrapPanel(); cbCompareRange = new ComboBox(); createCompareComboBox(cbCompareRange); panelRange.Children.Add(cbCompareRange); cbRange = new ComboBox(); cbRange.SetResourceReference(ComboBox.StyleProperty, "ComboBoxTransparentStyle"); cbRange.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; cbRange.Width = 150; panelRange.Children.Add(cbRange); for (int i = 500; i < 12500; i += 500) { addRangeItem(i); } cbRange.SelectedIndex = cbRange.Items.Count - 1; lbSearch.Items.Add(new QuickInfoValue(Translator.GetInstance().GetString("PageSearchAirliners", "1002"), panelRange)); WrapPanel panelCapacity = new WrapPanel(); cbCompareCapacity = new ComboBox(); createCompareComboBox(cbCompareCapacity); panelCapacity.Children.Add(cbCompareCapacity); cbCapacity = new ComboBox(); cbCapacity.SetResourceReference(ComboBox.StyleProperty, "ComboBoxTransparentStyle"); cbCapacity.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; cbCapacity.Width = 150; panelCapacity.Children.Add(cbCapacity); for (int i = 50; i < 500; i += 50) { addCapacityItem(i); } cbCapacity.SelectedIndex = cbCapacity.Items.Count - 1; lbSearch.Items.Add(new QuickInfoValue(Translator.GetInstance().GetString("PageSearchAirliners", "1003"), panelCapacity)); WrapPanel panelPrice = new WrapPanel(); cbComparePrice = new ComboBox(); createCompareComboBox(cbComparePrice); panelPrice.Children.Add(cbComparePrice); cbPrice = new ComboBox(); cbPrice.SetResourceReference(ComboBox.StyleProperty, "ComboBoxTransparentStyle"); cbPrice.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; cbPrice.Width = 150; panelPrice.Children.Add(cbPrice); addPriceItem(1000000); addPriceItem(5000000); addPriceItem(10000000); addPriceItem(25000000); addPriceItem(50000000); addPriceItem(100000000); addPriceItem(250000000); cbPrice.SelectedIndex = cbPrice.Items.Count - 1; lbSearch.Items.Add(new QuickInfoValue(Translator.GetInstance().GetString("PageSearchAirliners", "1004"), panelPrice)); WrapPanel panelYear = new WrapPanel(); cbCompareYear = new ComboBox(); createCompareComboBox(cbCompareYear); panelYear.Children.Add(cbCompareYear); cbYear = new ComboBox(); cbYear.SetResourceReference(ComboBox.StyleProperty, "ComboBoxTransparentStyle"); cbYear.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; cbYear.Width = 150; panelYear.Children.Add(cbYear); int startYear = (from a in Airliners.GetAirlinersForSale() select a.BuiltDate.Year).Min(); for (int i = GameObject.GetInstance().GameTime.Year; i >= startYear; i--) { cbYear.Items.Add(i); } cbYear.SelectedItem = startYear; lbSearch.Items.Add(new QuickInfoValue(Translator.GetInstance().GetString("PageSearchAirliners", "1005"), panelYear)); Button btnSearch = new Button(); btnSearch.Uid = "109"; btnSearch.SetResourceReference(Button.StyleProperty, "RoundedButton"); btnSearch.Height = Double.NaN; btnSearch.Width = Double.NaN; btnSearch.IsDefault = true; btnSearch.Content = Translator.GetInstance().GetString("General", btnSearch.Uid); btnSearch.SetResourceReference(Button.BackgroundProperty, "ButtonBrush"); btnSearch.Margin = new Thickness(0, 5, 0, 0); btnSearch.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; btnSearch.Click += new RoutedEventHandler(btnSearch_Click); mainPanel.Children.Add(btnSearch); this.Content = mainPanel; }
private void btnSearch_Click(object sender, RoutedEventArgs e) { Manufacturer manufacturer = ((Manufacturer)cbManufacturers.SelectedItem); List <Airliner> airliners = manufacturer.Name == "All" ? Airliners.GetAirlinersForSale() : Airliners.GetAirlinersForSale(a => a.Type.Manufacturer == manufacturer); CompareType rangeCompare = (CompareType)(((ComboBoxItem)cbCompareRange.SelectedItem).Tag); CompareType priceCompare = (CompareType)(((ComboBoxItem)cbComparePrice.SelectedItem).Tag); CompareType capacityCompare = (CompareType)(((ComboBoxItem)cbCompareCapacity.SelectedItem).Tag); CompareType yearCompare = (CompareType)(((ComboBoxItem)cbCompareYear.SelectedItem).Tag); int capacity = (int)(((ComboBoxItem)cbCapacity.SelectedItem).Tag); long price = (long)(((ComboBoxItem)cbPrice.SelectedItem).Tag); double range = (double)(((ComboBoxItem)cbRange.SelectedItem).Tag); if (AppSettings.GetInstance().getLanguage().Unit == TheAirline.Model.GeneralModel.Language.UnitSystem.Imperial) { range = MathHelpers.MilesToKM(range); } int year = (int)(cbYear.SelectedItem); switch (rangeCompare) { case CompareType.Equal_to: airliners = airliners.FindAll(a => a.Type.Range == range); break; case CompareType.Larger_than: airliners = airliners.FindAll(a => a.Type.Range > range); break; case CompareType.Lower_than: airliners = airliners.FindAll(a => a.Type.Range < range); break; } switch (priceCompare) { case CompareType.Equal_to: airliners = airliners.FindAll(a => a.getPrice() == price); break; case CompareType.Larger_than: airliners = airliners.FindAll(a => a.getPrice() > price); break; case CompareType.Lower_than: airliners = airliners.FindAll(a => a.getPrice() < price); break; } switch (capacityCompare) { case CompareType.Equal_to: airliners = airliners.FindAll(a => a.Type is AirlinerPassengerType && ((AirlinerPassengerType)a.Type).MaxSeatingCapacity == capacity); break; case CompareType.Larger_than: airliners = airliners.FindAll(a => a.Type is AirlinerPassengerType && ((AirlinerPassengerType)a.Type).MaxSeatingCapacity > capacity); break; case CompareType.Lower_than: airliners = airliners.FindAll(a => a.Type is AirlinerPassengerType && ((AirlinerPassengerType)a.Type).MaxSeatingCapacity < capacity); break; } switch (yearCompare) { case CompareType.Equal_to: airliners = airliners.FindAll(a => a.BuiltDate.Year == year); break; case CompareType.Larger_than: airliners = airliners.FindAll(a => a.BuiltDate.Year > year); break; case CompareType.Lower_than: airliners = airliners.FindAll(a => a.BuiltDate.Year < year); break; } this.ParentPage.showUsedAirliners(airliners); }
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(); } }
//saves a game public static void SaveGame(string name) { //Pause the game so we can save without the clock running :) GameObjectWorker.GetInstance().pause(); string fileName = AppSettings.getCommonApplicationDataPath() + "\\saves\\" + name + ".sav"; Stopwatch sw = new Stopwatch(); sw.Start(); SaveObject so = new SaveObject(); Parallel.Invoke(() => { so.airportsList = new List <Airport>(); so.airportsList.AddRange(Airports.GetAllAirports()); }, () => { so.airlinesList = new List <Airline>(); so.airlinesList.AddRange(Airlines.GetAllAirlines()); }, () => { so.airlinersList = new List <Airliner>(); so.airlinersList.AddRange(Airliners.GetAllAirliners()); }, () => { so.calendaritemsList = new List <CalendarItem>(); so.calendaritemsList.AddRange(CalendarItems.GetCalendarItems()); }, () => { so.configurationList = new List <Configuration>(); so.configurationList.AddRange(Configurations.GetConfigurations()); }, () => { so.eventsList = new List <RandomEvent>(); so.eventsList.AddRange(RandomEvents.GetEvents()); }, () => { so.allianceList = new List <Alliance>(); so.allianceList.AddRange(Alliances.GetAlliances()); }, () => { so.Airportfacilitieslist = new List <AirportFacility>(); so.Airportfacilitieslist.AddRange(AirportFacilities.GetFacilities()); }, () => { so.instance = GameObject.GetInstance(); }); DataContractSerializer serializer = new DataContractSerializer(typeof(SaveObject), null, Int32.MaxValue, false, true, null); using (Stream stream = new FileStream(fileName, FileMode.Create)) { using (DeflateStream compress = new DeflateStream(stream, CompressionMode.Compress)) { serializer.WriteObject(compress, so); } } sw.Stop(); }
//loads a game public static void LoadGame(string file) { string fileName = AppSettings.getCommonApplicationDataPath() + "\\saves\\" + file + ".sav"; DataContractSerializer serializer = new DataContractSerializer(typeof(SaveObject)); SaveObject deserializedSaveObject; using (FileStream stream = new FileStream(fileName, FileMode.Open)) { using (DeflateStream decompress = new DeflateStream(stream, CompressionMode.Decompress)) { deserializedSaveObject = (SaveObject)serializer.ReadObject(decompress); } } //Parrarel for loading the game Parallel.Invoke(() => { Airlines.Clear(); foreach (Airline airline in deserializedSaveObject.airlinesList) { Airlines.AddAirline(airline); } }, () => { Airports.Clear(); foreach (Airport airport in deserializedSaveObject.airportsList) { airport.Statics = new AirportStatics(airport); Airports.AddAirport(airport); } }, () => { Airliners.Clear(); foreach (Airliner airliner in deserializedSaveObject.airlinersList) { Airliners.AddAirliner(airliner); } }, () => { CalendarItems.Clear(); foreach (CalendarItem item in deserializedSaveObject.calendaritemsList) { CalendarItems.AddCalendarItem(item); } Configurations.Clear(); foreach (Configuration configuration in deserializedSaveObject.configurationList) { Configurations.AddConfiguration(configuration); } }, () => { RandomEvents.Clear(); foreach (RandomEvent e in deserializedSaveObject.eventsList) { RandomEvents.AddEvent(e); } }, () => { Alliances.Clear(); foreach (Alliance alliance in deserializedSaveObject.allianceList) { Alliances.AddAlliance(alliance); } }, () => { AirportFacilities.Clear(); foreach (AirportFacility facility in deserializedSaveObject.Airportfacilitieslist) { AirportFacilities.AddFacility(facility); } }, () => { GameObject.SetInstance(deserializedSaveObject.instance); }); //close parallel.invoke //Maybe this helps? But i doubt this is the best way Action action = () => { Stopwatch swPax = new Stopwatch(); swPax.Start(); PassengerHelpers.CreateDestinationDemand(); //Console.WriteLine("Demand have been created in {0} ms.", swPax.ElapsedMilliseconds); swPax.Stop(); }; //Create some pilots for the game int pilotsPool = 100 * Airlines.GetAllAirlines().Count; GeneralHelpers.CreatePilots(pilotsPool); int instructorsPool = 75 * Airlines.GetAllAirlines().Count; GeneralHelpers.CreateInstructors(instructorsPool); //Start the game paused GameObjectWorker.GetInstance().startPaused(); //Task is needed this unlocks the game agian. Task.Factory.StartNew(action); }
//saves a game public static void SaveGame(string name) { Stopwatch sw = new Stopwatch(); sw.Start(); SaveObject so = new SaveObject(); Parallel.Invoke(() => { so.airportsList = new List <Airport>(); so.airportsfromstringList = new List <string>(); var airportsInUse = Airports.GetAllAirports().Where(a => Airlines.GetAllAirlines().Exists(al => al.Airports.Contains(a)) || a.hasAirlineFacility()); so.airportsList.AddRange(airportsInUse); foreach (Airport airport in Airports.GetAirports(a => !airportsInUse.Contains(a))) { so.airportsfromstringList.Add(airport.Profile.IATACode); } }, () => { so.airlinesList = new List <Airline>(); so.airlinesList.AddRange(Airlines.GetAllAirlines()); }, () => { so.airlinersList = new List <Airliner>(); so.airlinersList.AddRange(Airliners.GetAllAirliners().Where(a => a.Airline != null)); }, () => { so.calendaritemsList = new List <CalendarItem>(); so.calendaritemsList.AddRange(CalendarItems.GetCalendarItems()); }, () => { so.configurationList = new List <Configuration>(); so.configurationList.AddRange(Configurations.GetConfigurations()); }, () => { so.eventsList = new List <RandomEvent>(); so.eventsList.AddRange(RandomEvents.GetEvents()); }, () => { so.allianceList = new List <Alliance>(); so.allianceList.AddRange(Alliances.GetAlliances()); }, () => { so.Airportfacilitieslist = new List <AirportFacility>(); so.Airportfacilitieslist.AddRange(AirportFacilities.GetFacilities()); }, () => { so.feeTypeslist = new List <FeeType>(); so.feeTypeslist.AddRange(FeeTypes.GetTypes()); }, () => { so.advertisementTypeslist = new List <AdvertisementType>(); so.advertisementTypeslist.AddRange(AdvertisementTypes.GetTypes()); }, () => { so.airlinerfacilitieslist = new List <AirlinerFacility>(); so.airlinerfacilitieslist.AddRange(AirlinerFacilities.GetAllFacilities()); }, () => { so.routefacilitieslist = new List <RouteFacility>(); so.routefacilitieslist.AddRange(RouteFacilities.GetAllFacilities()); }, () => { so.instance = GameObject.GetInstance(); so.settings = Settings.GetInstance(); }, () => { so.airlinefacilitieslist = new List <AirlineFacility>(); so.airlinefacilitieslist.AddRange(AirlineFacilities.GetFacilities()); }); string fileName = AppSettings.getCommonApplicationDataPath() + "\\saves\\" + name + ".sav"; FileSerializer.Serialize(fileName, so); sw.Stop(); Console.WriteLine("Saving: {0} ms", sw.ElapsedMilliseconds); //Clearing stats because there is no need for saving those. if (name != "autosave") { Airports.GetAllAirports().ForEach(a => a.clearDestinationPassengerStatistics()); Airports.GetAllAirports().ForEach(a => a.clearDestinationCargoStatistics()); AirlineHelpers.ClearRoutesStatistics(); AirlineHelpers.ClearAirlinesStatistics(); AirportHelpers.ClearAirportStatistics(); } /* * SaveObject so = new SaveObject(); * Parallel.Invoke(() => * { * so.airportsList = new List<Airport>(); * so.airportsList.AddRange(Airports.GetAllAirports()); * }, () => * { * so.airlinesList = new List<Airline>(); * so.airlinesList.AddRange(Airlines.GetAllAirlines()); * }, () => * { * so.airlinersList = new List<Airliner>(); * so.airlinersList.AddRange(Airliners.GetAllAirliners()); * }, () => * { * so.calendaritemsList = new List<CalendarItem>(); * so.calendaritemsList.AddRange(CalendarItems.GetCalendarItems()); * }, () => * { * so.configurationList = new List<Configuration>(); * so.configurationList.AddRange(Configurations.GetConfigurations()); * }, () => * { * so.eventsList = new List<RandomEvent>(); * so.eventsList.AddRange(RandomEvents.GetEvents()); * }, () => * { * so.allianceList = new List<Alliance>(); * so.allianceList.AddRange(Alliances.GetAlliances()); * }, () => * { * so.Airportfacilitieslist = new List<AirportFacility>(); * so.Airportfacilitieslist.AddRange(AirportFacilities.GetFacilities()); * }, () => * { * so.feeTypeslist = new List<FeeType>(); * so.feeTypeslist.AddRange(FeeTypes.GetTypes()); * }, () => * { * so.advertisementTypeslist = new List<AdvertisementType>(); * so.advertisementTypeslist.AddRange(AdvertisementTypes.GetTypes()); * }, () => * { * so.airlinerfacilitieslist = new List<AirlinerFacility>(); * so.airlinerfacilitieslist.AddRange(AirlinerFacilities.GetAllFacilities()); * }, () => * { * so.routefacilitieslist = new List<RouteFacility>(); * so.routefacilitieslist.AddRange(RouteFacilities.GetAllFacilities()); * }, () => * { * so.instance = GameObject.GetInstance(); * so.settings = Settings.GetInstance(); * so.savetype = "039"; * so.saveversionnumber = 1; * }); */ /* * DataContractSerializer serializer = new DataContractSerializer(typeof(SaveObject), null, Int32.MaxValue, false, true, null); * * using (Stream stream = new FileStream(fileName, FileMode.Create)) * { * using (DeflateStream compress = new DeflateStream(stream, CompressionLevel.Fastest)) * { * serializer.WriteObject(compress, so); * } * } */ }
//loads a game public static void LoadGame(string file) { string fileName = AppSettings.getCommonApplicationDataPath() + "\\saves\\" + file + ".sav"; SaveObject deserializedSaveObject = FileSerializer.Deserialize <SaveObject>(fileName); /* * * DataContractSerializer serializer = new DataContractSerializer(typeof(SaveObject)); * SaveObject deserializedSaveObject; * string loading; * int version; * * using (FileStream stream = new FileStream(fileName, FileMode.Open)) * { * using (DeflateStream decompress = new DeflateStream(stream, CompressionMode.Decompress)) * { * deserializedSaveObject = (SaveObject)serializer.ReadObject(decompress); * } * } * * loading = deserializedSaveObject.savetype; * version = deserializedSaveObject.saveversionnumber; */ //Parrarel for loading the game Parallel.Invoke(() => { Airlines.Clear(); foreach (Airline airline in deserializedSaveObject.airlinesList) { Airlines.AddAirline(airline); } }, () => { Setup.LoadAirports(); var airports = Airports.GetAllAirports(); Airports.Clear(); foreach (Airport airport in deserializedSaveObject.airportsList) { airport.Statics = new AirportStatics(airport); Airports.AddAirport(airport); } foreach (string iata in deserializedSaveObject.airportsfromstringList) { Airport airport = airports.FirstOrDefault(a => a.Profile.IATACode == iata); if (airport != null) { Airports.AddAirport(airport); } } }, () => { Airliners.Clear(); foreach (Airliner airliner in deserializedSaveObject.airlinersList) { Airliners.AddAirliner(airliner); } }, () => { CalendarItems.Clear(); foreach (CalendarItem item in deserializedSaveObject.calendaritemsList) { CalendarItems.AddCalendarItem(item); } }, () => { Configurations.Clear(); foreach (Configuration configuration in deserializedSaveObject.configurationList) { Configurations.AddConfiguration(configuration); } }, () => { RandomEvents.Clear(); foreach (RandomEvent e in deserializedSaveObject.eventsList) { RandomEvents.AddEvent(e); } }, () => { Alliances.Clear(); foreach (Alliance alliance in deserializedSaveObject.allianceList) { Alliances.AddAlliance(alliance); } }, () => { AirportFacilities.Clear(); foreach (AirportFacility facility in deserializedSaveObject.Airportfacilitieslist) { AirportFacilities.AddFacility(facility); } }, () => { FeeTypes.Clear(); foreach (FeeType type in deserializedSaveObject.feeTypeslist) { FeeTypes.AddType(type); } }, () => { AdvertisementTypes.Clear(); foreach (AdvertisementType addtype in deserializedSaveObject.advertisementTypeslist) { AdvertisementTypes.AddAdvertisementType(addtype); } }, () => { AirlinerFacilities.Clear(); foreach (AirlinerFacility airlinerfas in deserializedSaveObject.airlinerfacilitieslist) { AirlinerFacilities.AddFacility(airlinerfas); } }, () => { RouteFacilities.Clear(); foreach (RouteFacility routefas in deserializedSaveObject.routefacilitieslist) { RouteFacilities.AddFacility(routefas); } }, () => { GameObject.SetInstance(deserializedSaveObject.instance); Settings.SetInstance(deserializedSaveObject.settings); }, () => { if (deserializedSaveObject.airlinefacilitieslist != null) { AirlineFacilities.Clear(); foreach (AirlineFacility airlinefac in deserializedSaveObject.airlinefacilitieslist) { AirlineFacilities.AddFacility(airlinefac); } } }); //close parallel.invoke //for 0.3.9.2 and the issue with no saved facilities on a route classes var emptyRouteClassesFacilities = Configurations.GetConfigurations(Configuration.ConfigurationType.Routeclasses).SelectMany(c => ((RouteClassesConfiguration)c).Classes.Where(cl => cl.Facilities == null)); foreach (RouteClassConfiguration rClassConfiguration in emptyRouteClassesFacilities) { rClassConfiguration.Facilities = new List <RouteFacility>(); } Setup.SetupLoadedGame(); //Maybe this helps? But i doubt this is the best way Action action = () => { Stopwatch swPax = new Stopwatch(); swPax.Start(); PassengerHelpers.CreateDestinationDemand(); //Console.WriteLine("Demand have been created in {0} ms.", swPax.ElapsedMilliseconds); swPax.Stop(); }; //create some pilots for the game int pilotsPool = 100 * Airlines.GetAllAirlines().Count; GeneralHelpers.CreatePilots(pilotsPool); int instructorsPool = 75 * Airlines.GetAllAirlines().Count; GeneralHelpers.CreateInstructors(instructorsPool); //creates some airliners for the game AirlinerHelpers.CreateStartUpAirliners(); //Start the game paused GameObjectWorker.GetInstance().startPaused(); //Task is needed this unlocks the game agian. Task.Factory.StartNew(action); }