Beispiel #1
0
        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);
        }
Beispiel #2
0
        //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);
            }
        }
Beispiel #3
0
        //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);
            }
        }
Beispiel #4
0
        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("-");
        }
Beispiel #5
0
        //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);
        }
Beispiel #6
0
        //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);
        }
Beispiel #7
0
        //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]);
            }
        }
Beispiel #8
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());
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        //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());
        }
Beispiel #11
0
        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);
                }
            }
        }
Beispiel #12
0
 //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; })));
 }