public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { Boolean isEnabled = true; Airport airport = ((HumanFacilityType)value).Airport; AirportFacility.FacilityType type = ((HumanFacilityType)value).CurrentFacility.Type; string buttonType = (string)parameter; List <AirportFacility> facilities = AirportFacilities.GetFacilities(type); facilities.Sort((delegate(AirportFacility f1, AirportFacility f2) { return(f1.TypeLevel.CompareTo(f2.TypeLevel)); })); int index = facilities.FindIndex(f => f.Uid == airport.getAirportFacility(GameObject.GetInstance().HumanAirline, type).Uid); if (buttonType == "Buy" && type != AirportFacility.FacilityType.CheckIn) { int gates = airport.Terminals.getNumberOfGates(GameObject.GetInstance().HumanAirline); isEnabled = index < facilities.Count - 1 && gates > 0 && airport.getAirlineAirportFacility(GameObject.GetInstance().HumanAirline, type).FinishedDate < GameObject.GetInstance().GameTime; } if (buttonType == "Sell" && type != AirportFacility.FacilityType.CheckIn) { isEnabled = index > 0 && airport.getAirlineAirportFacility(GameObject.GetInstance().HumanAirline, type).FinishedDate < GameObject.GetInstance().GameTime; } if (buttonType == "Buy" && type == AirportFacility.FacilityType.CheckIn) { isEnabled = index < facilities.Count - 1 && airport.getAirlineAirportFacility(GameObject.GetInstance().HumanAirline, type).FinishedDate < GameObject.GetInstance().GameTime; } if (buttonType == "Sell" && type == AirportFacility.FacilityType.CheckIn) { isEnabled = index > 0 && airport.Terminals.getNumberOfGates(GameObject.GetInstance().HumanAirline) == 0 && airport.getAirlineAirportFacility(GameObject.GetInstance().HumanAirline, type).FinishedDate < GameObject.GetInstance().GameTime; } return(isEnabled); }
//returns the facilities being build for an airline public AirportFacility getAirlineBuildingFacility(Airline airline, AirportFacility.FacilityType type) { var facility = this.Facilities.FirstOrDefault(f => f.Airline == airline && f.Facility.Type == type && GameObject.GetInstance().GameTime < f.FinishedDate); if (facility == null) { return(null); } else { return(facility.Facility); } }
//returns the facility of a specific type for an airline - useAirport == true if it should also check for the airports facility public AirportFacility getAirportFacility(Airline airline, AirportFacility.FacilityType type, Boolean useAirport = false) { if (!useAirport) { return(getAirlineAirportFacility(airline, type).Facility); } else { AirportFacility airlineFacility = getCurrentAirportFacility(airline, type); AirportFacility airportFacility = getCurrentAirportFacility(null, type); return(airportFacility == null || airlineFacility.TypeLevel > airportFacility.TypeLevel ? airlineFacility : airportFacility); } }
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { AirportFacility.FacilityType type = (AirportFacility.FacilityType)values[0]; Airport airport = (Airport)values[1]; AirlineAirportFacility currentFacility = airport.getAirlineAirportFacility(GameObject.GetInstance().HumanAirline, type); List <AirportFacility> facilities = AirportFacilities.GetFacilities(type); facilities = facilities.OrderBy(f => f.TypeLevel).ToList(); int index = facilities.FindIndex(f => currentFacility.Facility == f); if (parameter.ToString() == "Name") { if (index < facilities.Count - 1) { return(facilities[index + 1].Name); } else { return("None"); } } if (parameter.ToString() == "Price") { if (index < facilities.Count - 1) { return(new ValueCurrencyConverter().Convert(facilities[index + 1].Price)); } else { return("-"); } } if (parameter.ToString() == "Employees") { if (index < facilities.Count - 1) { return(facilities[index + 1].NumberOfEmployees.ToString()); } else { return("-"); } } return("-"); }
//downgrades the facility for a specific type for an airline public void downgradeFacility(Airline airline, AirportFacility.FacilityType type) { AirportFacility currentFacility = getAirportFacility(airline, type); AirlineAirportFacility aaf = getAirlineAirportFacility(airline, type); List <AirportFacility> facilities = AirportFacilities.GetFacilities(type); facilities.Sort((delegate(AirportFacility f1, AirportFacility f2) { return(f1.TypeLevel.CompareTo(f2.TypeLevel)); })); int index = facilities.IndexOf(getAirportFacility(airline, type)); addAirportFacility(airline, facilities[index - 1], GameObject.GetInstance().GameTime); this.Facilities.Remove(aaf); }
//returns if an airline has any facilities besides a specific type public Boolean hasFacilities(Airline airline, AirportFacility.FacilityType ftype) { Boolean hasFacilities = false; foreach (AirportFacility.FacilityType type in Enum.GetValues(typeof(AirportFacility.FacilityType))) { if (type != ftype) { if (getAirportFacility(airline, type).TypeLevel > 0) { hasFacilities = true; } } } return(hasFacilities); }
//returns the next facility item for the specific type for the human airline private AirportFacility getHumanNextAirportFacility(AirportFacility.FacilityType type) { List <AirportFacility> facilities = AirportFacilities.GetFacilities(type); facilities.Sort((delegate(AirportFacility f1, AirportFacility f2) { return(f1.TypeLevel.CompareTo(f2.TypeLevel)); })); int index = facilities.FindIndex(f => f.Uid == this.Airport.getAirportFacility(GameObject.GetInstance().HumanAirline, type).Uid); if (index < facilities.Count - 1) { return(facilities[index + 1]); } else { return(facilities[0]); } }
//returns the airport facility for a specific type for an airline public AirlineAirportFacility getAirlineAirportFacility(Airline airline, AirportFacility.FacilityType type) { List <AirlineAirportFacility> facilities = new List <AirlineAirportFacility>(); lock (this.Facilities) { facilities = (from f in this.Facilities where f.Airline == airline && f.Facility.Type == type && GameObject.GetInstance().GameTime >= f.FinishedDate orderby f.FinishedDate descending select f).ToList(); if (facilities.Count() == 0) { AirportFacility noneFacility = AirportFacilities.GetFacilities(type).Find(f => f.TypeLevel == 0); this.addAirportFacility(airline, noneFacility, GameObject.GetInstance().GameTime); facilities.Add(getAirlineAirportFacility(airline, type)); } } return(facilities.FirstOrDefault()); }
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { AirportFacility.FacilityType type = (AirportFacility.FacilityType)values[0]; Airport airport = (Airport)values[1]; var currentFacility = airport.getCurrentAirportFacility(GameObject.GetInstance().HumanAirline, type); var buildingFacility = airport.getAirlineBuildingFacility(GameObject.GetInstance().HumanAirline, type); var facilities = new List <AirportFacility>(); foreach (AirportFacility facility in AirportFacilities.GetFacilities(type).Where(f => f.TypeLevel > currentFacility.TypeLevel)) { if (buildingFacility == null || facility.TypeLevel > buildingFacility.TypeLevel) { facilities.Add(facility); } } return(facilities); }
//returns the current airport facility of a specific type for an airlines public AirportFacility getCurrentAirportFacility(Airline airline, AirportFacility.FacilityType type) { List <AirportFacility> facilities = new List <AirportFacility>(); var tFacilities = new List <AirlineAirportFacility>(this.Facilities); lock (this.Facilities) { facilities = (from f in tFacilities where f.Airline == airline && f.Facility.Type == type && f.FinishedDate <= GameObject.GetInstance().GameTime orderby f.FinishedDate descending select f.Facility).ToList(); int numberOfFacilities = facilities.Count(); if (numberOfFacilities == 0 && airline != null) { var noneFacility = AirportFacilities.GetFacilities(type).Find(f => f.TypeLevel == 0); this.addAirportFacility(airline, noneFacility, GameObject.GetInstance().GameTime); facilities.Add(noneFacility); } } return(facilities.FirstOrDefault()); }
private void btnBuyFacility_Click(object sender, RoutedEventArgs e) { AirportFacility.FacilityType type = (AirportFacility.FacilityType)cbNextFacility.SelectedItem; AirlineAirportFacility currentFacility = this.Airport.Airport.getAirlineAirportFacility(GameObject.GetInstance().HumanAirline, type); List <AirportFacility> facilities = AirportFacilities.GetFacilities(type); facilities = facilities.OrderBy(f => f.TypeLevel).ToList(); int index = facilities.FindIndex(f => currentFacility.Facility == f); AirportFacility facility = facilities[index + 1]; if (facility.Price > GameObject.GetInstance().HumanAirline.Money) { WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2201"), Translator.GetInstance().GetString("MessageBox", "2201", "message"), WPFMessageBoxButtons.Ok); } else { WPFMessageBoxResult result = WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2202"), string.Format(Translator.GetInstance().GetString("MessageBox", "2202", "message"), facility.Name, facility.Price), WPFMessageBoxButtons.YesNo); if (result == WPFMessageBoxResult.Yes) { double price = facility.Price; if (this.Airport.Airport.Profile.Country != GameObject.GetInstance().HumanAirline.Profile.Country) { price = price * 1.25; } AirlineHelpers.AddAirlineInvoice(GameObject.GetInstance().HumanAirline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -price); this.Airport.addAirlineFacility(facility); } } }
//returns all facilities of a specific type public static List <AirportFacility> GetFacilities(AirportFacility.FacilityType type) { return(GetFacilities().FindAll((delegate(AirportFacility facility) { return facility.Type == type; }))); }