예제 #1
0
        //returns the yearly payment for a number of gates
        public static double GetYearlyContractPayment(Airport airport, AirportContract.ContractType type, int gates, int length)
        {
            double basePrice = 0;

            if (type == AirportContract.ContractType.Full)
            {
                basePrice = airport.getGatePrice() * 12;
            }

            if (type == AirportContract.ContractType.Low_Service)
            {
                basePrice = airport.getGatePrice() * 13;
            }

            if (type == AirportContract.ContractType.Medium_Service)
            {
                basePrice = airport.getGatePrice() * 17;
            }

            if (type == AirportContract.ContractType.Full_Service)
            {
                basePrice = airport.getGatePrice() * 20;
            }

            double lengthFactor = 100 - length;

            return(gates * (basePrice * (lengthFactor / 100)));
        }
예제 #2
0
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int gates  = System.Convert.ToInt16(values[0]);
            int lenght = System.Convert.ToInt16(values[1]);

            AirportContract.ContractType contractType = (AirportContract.ContractType)values[2];
            Airport airport = (Airport)values[3];

            return(new ValueCurrencyConverter().Convert(AirportHelpers.GetYearlyContractPayment(airport, contractType, gates, lenght)));
        }
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            Airport airport = (Airport)values[0];

            AirportContract.ContractType type = (AirportContract.ContractType)Enum.Parse(typeof(AirportContract.ContractType), values[1].ToString(), true);

            double price = AirportHelpers.GetYearlyContractPayment(airport, type, 2, 2);

            return(string.Format("({0})", new ValueCurrencyConverter().Convert(price)));
        }
예제 #4
0
        //rents a "standard" amount of gates at an airport for an airline
        public static Boolean RentGates(Airport airport, Airline airline, AirportContract.ContractType type)
        {
            int maxGates = airport.Terminals.getFreeGates();

            int gatesToRent = Math.Min(maxGates, (int)(airline.Mentality) + 2);

            if (gatesToRent == 0)
            {
                return(false);
            }

            RentGates(airport, airline, type, gatesToRent);

            return(true);
        }
예제 #5
0
        private void btnSignContract_Click(object sender, RoutedEventArgs e)
        {
            int gates  = Convert.ToInt16(slContractGates.Value);
            int length = Convert.ToInt16(slContractLenght.Value);

            Boolean hasCheckin = this.Airport.Airport.getAirportFacility(GameObject.GetInstance().HumanAirline, AirportFacility.FacilityType.CheckIn).TypeLevel > 0;

            AirportContract.ContractType contractType = (AirportContract.ContractType)cbContractType.SelectedItem;

            Boolean autoRenew = cbAutoRenew.IsChecked.Value;

            double yearlyPayment = AirportHelpers.GetYearlyContractPayment(this.Airport.Airport, contractType, gates, length);

            Boolean payFull = length <= 2;

            AirportContract contract = new AirportContract(GameObject.GetInstance().HumanAirline, this.Airport.Airport, contractType, GameObject.GetInstance().GameTime, gates, length, yearlyPayment, autoRenew, payFull);

            if (!hasCheckin && contractType == AirportContract.ContractType.Full)
            {
                AirportFacility checkinFacility = AirportFacilities.GetFacilities(AirportFacility.FacilityType.CheckIn).Find(f => f.TypeLevel == 1);

                this.Airport.Airport.addAirportFacility(GameObject.GetInstance().HumanAirline, checkinFacility, GameObject.GetInstance().GameTime);
                AirlineHelpers.AddAirlineInvoice(GameObject.GetInstance().HumanAirline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -checkinFacility.Price);
            }

            //25 % off if paying up front
            if (contract.PayFull && contractType == AirportContract.ContractType.Full)
            {
                double payment = (contract.YearlyPayment * contract.Length) * 0.75;
                AirlineHelpers.AddAirlineInvoice(GameObject.GetInstance().HumanAirline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Rents, -payment);
                contract.YearlyPayment = 0;
            }

            for (int i = 0; i < gates; i++)
            {
                Gate gate = this.Airport.Airport.Terminals.getGates().Where(g => g.Airline == null).First();
                gate.Airline = GameObject.GetInstance().HumanAirline;
            }

            this.Airport.addAirlineContract(contract);
        }
예제 #6
0
        private void btnDemandContract_Click(object sender, RoutedEventArgs e)
        {
            DemandMVVM demand = (DemandMVVM)((Button)sender).Tag;

            Airport airport = demand.Destination;

            Boolean hasCheckin = airport.getAirportFacility(GameObject.GetInstance().HumanAirline, AirportFacility.FacilityType.CheckIn).TypeLevel > 0;

            int gates = Math.Min(2, airport.Terminals.NumberOfFreeGates);

            //WPFMessageBoxResult result = WPFMessageBox.Show(Translator.GetInstance().GetString("MessageBox", "2222"), string.Format(Translator.GetInstance().GetString("MessageBox", "2222", "message"), gates, airport.Profile.Name), WPFMessageBoxButtons.YesNo);
            object o = PopUpAirportContract.ShowPopUp(airport);

            if (o != null)
            {
                AirportContract.ContractType contractType = (AirportContract.ContractType)o;

                if (!hasCheckin && contractType == AirportContract.ContractType.Full)
                {
                    AirportFacility checkinFacility = AirportFacilities.GetFacilities(AirportFacility.FacilityType.CheckIn).Find(f => f.TypeLevel == 1);

                    airport.addAirportFacility(GameObject.GetInstance().HumanAirline, checkinFacility, GameObject.GetInstance().GameTime);
                    AirlineHelpers.AddAirlineInvoice(GameObject.GetInstance().HumanAirline, GameObject.GetInstance().GameTime, Invoice.InvoiceType.Purchases, -checkinFacility.Price);
                }

                double yearlyPayment = AirportHelpers.GetYearlyContractPayment(airport, contractType, gates, 2);

                AirportContract contract = new AirportContract(GameObject.GetInstance().HumanAirline, airport, contractType, GameObject.GetInstance().GameTime, gates, 2, yearlyPayment, true);

                AirportHelpers.AddAirlineContract(contract);

                for (int i = 0; i < gates; i++)
                {
                    Gate gate = airport.Terminals.getGates().Where(g => g.Airline == null).First();
                    gate.Airline = GameObject.GetInstance().HumanAirline;
                }

                demand.Contracted = true;
            }
        }
예제 #7
0
        public static void RentGates(Airport airport, Airline airline, AirportContract.ContractType type, int gates, int length = 20)
        {
            int             currentgates = airport.AirlineContracts.Where(a => a.Airline == airline).Sum(c => c.NumberOfGates);
            AirportContract contract     = new AirportContract(airline, airport, type, GameObject.GetInstance().GameTime, gates, length, GetYearlyContractPayment(airport, type, gates, length), true);

            if (currentgates == 0)
            {
                AddAirlineContract(contract);
            }
            else
            {
                foreach (AirportContract c in airport.AirlineContracts.Where(a => a.Airline == airline))
                {
                    c.NumberOfGates += gates;
                }
            }

            for (int i = 0; i < gates; i++)
            {
                Gate gate = airport.Terminals.getGates().Where(g => g.Airline == null).First();
                gate.Airline = airline;
            }
        }
예제 #8
0
 //returns if an airline has a contract of a specific type
 public Boolean hasContractType(Airline airline, AirportContract.ContractType type)
 {
     return(this.AirlineContracts.Exists(c => c.Airline == airline && c.Type == type));
 }
 private void rbContractType_Checked(object sender, RoutedEventArgs e)
 {
     string type = ((RadioButton)sender).Tag.ToString();
     this.SelectedType = (AirportContract.ContractType)Enum.Parse(typeof(AirportContract.ContractType), type, true);
 }
        private void rbContractType_Checked(object sender, RoutedEventArgs e)
        {
            string type = ((RadioButton)sender).Tag.ToString();

            this.SelectedType = (AirportContract.ContractType)Enum.Parse(typeof(AirportContract.ContractType), type, true);
        }