public AirlineAirportFacility(Airline airline, Airport airport, AirportFacility facility, DateTime date) { this.Airline = airline; this.Facility = facility; this.FinishedDate = date; this.Airport = airport; }
//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 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(); }
/* //adds a facility to an airline public void addAirportFacility(Airline airline, AirportFacility facility, DateTime finishedDate) { lock (this.Facilities) { this.Facilities.Add(new AirlineAirportFacility(airline, this, facility, finishedDate)); } }*/ //sets the facility for an airline public void addAirportFacility(Airline airline, AirportFacility facility, DateTime finishedDate) { //this.Facilities.RemoveAll(f => f.Airline == airline && f.Facility.Type == facility.Type); this.Facilities.Add(new AirlineAirportFacility(airline, this, facility, finishedDate)); }
/* * //adds a facility to an airline * public void addAirportFacility(Airline airline, AirportFacility facility, DateTime finishedDate) * { * lock (this.Facilities) * { * this.Facilities.Add(new AirlineAirportFacility(airline, this, facility, finishedDate)); * } * }*/ //sets the facility for an airline public void addAirportFacility(Airline airline, AirportFacility facility, DateTime finishedDate) { //this.Facilities.RemoveAll(f => f.Airline == airline && f.Facility.Type == facility.Type); this.Facilities.Add(new AirlineAirportFacility(airline, this, facility, finishedDate)); }
//adds a facility to an airline public void addAirportFacility(Airline airline, AirportFacility facility, DateTime finishedDate) { this.Facilities.Add(new AirlineAirportFacility(airline, this, facility, finishedDate)); }
//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; })); }
//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; }
public HumanFacilityType(Airport airport, AirportFacility current, AirportFacility next) { this.Airport = airport; this.CurrentFacility = current; this.NextFacility = next; }
//adds a new facility to the collection public static void AddFacility(AirportFacility facility) { facilities.Add(facility.Shortname, facility); }
//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]; }
//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); }
//adds a facility to an airline public void addAirportFacility(Airline airline, AirportFacility facility, DateTime finishedDate) { this.Facilities.Add(new AirlineAirportFacility(airline, this, facility, finishedDate)); }
//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; } }
//adds an airline facility to the airport public void addAirlineFacility(AirportFacility facility) { AirlineAirportFacility nextFacility = new AirlineAirportFacility(GameObject.GetInstance().HumanAirline,this.Airport, facility, GameObject.GetInstance().GameTime.AddDays(facility.BuildingDays)); this.Airport.setAirportFacility(nextFacility); AirlineAirportFacilityMVVM currentFacility = this.AirlineFacilities.Where(f=>f.Facility.Facility.Type == facility.Type).FirstOrDefault(); if (currentFacility != null) this.AirlineFacilities.Remove(currentFacility); Alliance alliance = nextFacility.Airline.Alliances.Count == 0 ? null : nextFacility.Airline.Alliances[0]; this.AirlineFacilities.Add(new AirlineAirportFacilityMVVM(nextFacility,alliance)); }
//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(); }
/*!loads the airport facilities. */ private static void LoadAirportFacilities() { XmlDocument doc = new XmlDocument(); doc.Load(AppSettings.getDataPath() + "\\airportfacilities.xml"); XmlElement root = doc.DocumentElement; XmlNodeList facilitiesList = root.SelectNodes("//airportfacility"); foreach (XmlElement element in facilitiesList) { string section = root.Name; string uid = element.Attributes["uid"].Value; string shortname = element.Attributes["shortname"].Value; AirportFacility.FacilityType type = (AirportFacility.FacilityType)Enum.Parse(typeof(AirportFacility.FacilityType), element.Attributes["type"].Value); int typeLevel = Convert.ToInt16(element.Attributes["typelevel"].Value); double price = XmlConvert.ToDouble(element.Attributes["price"].Value); int buildingDays = XmlConvert.ToInt32(element.Attributes["buildingdays"].Value); XmlElement levelElement = (XmlElement)element.SelectSingleNode("level"); int service = Convert.ToInt32(levelElement.Attributes["service"].Value); int luxury = Convert.ToInt32(levelElement.Attributes["luxury"].Value); AirportFacility facility = new AirportFacility(section, uid, shortname, type, buildingDays, typeLevel, price, service, luxury); AirportFacilities.AddFacility(facility); XmlElement employeesElement = (XmlElement)element.SelectSingleNode("employees"); AirportFacility.EmployeeTypes employeestype = (AirportFacility.EmployeeTypes)Enum.Parse(typeof(AirportFacility.EmployeeTypes), employeesElement.Attributes["type"].Value); int numberofemployees = Convert.ToInt16(employeesElement.Attributes["numberofemployees"].Value); facility.EmployeeType = employeestype; facility.NumberOfEmployees = numberofemployees; if (element.SelectSingleNode("translations") != null) Translator.GetInstance().addTranslation(root.Name, element.Attributes["uid"].Value, element.SelectSingleNode("translations")); } }
//removes the facility for an airline public void removeFacility(Airline airline, AirportFacility facility) { this.Facilities.RemoveAll(f=>f.Airline == airline && f.Facility.Type == facility.Type); }
//adds a new facility to the collection public static void AddFacility(AirportFacility facility) { facilities.Add(facility.Shortname, facility); }
//removes the facility for an airline public void removeFacility(Airline airline, AirportFacility facility) { this.Facilities.RemoveAll(f => f.Airline == airline && f.Facility.Type == facility.Type); }
//adds an airline facility to the airport public void addAirlineFacility(AirportFacility facility) { AirlineAirportFacility nextFacility = new AirlineAirportFacility(GameObject.GetInstance().HumanAirline,this.Airport, facility, GameObject.GetInstance().GameTime.AddDays(facility.BuildingDays)); this.Airport.addAirportFacility(nextFacility); /* AirlineAirportFacilityMVVM currentFacility = this.AirlineFacilities.Where(f => f.Facility.Facility.Type == facility.Type).FirstOrDefault(); if (currentFacility != null) removeAirlineFacility(currentFacility); Alliance alliance = nextFacility.Airline.Alliances.Count == 0 ? null : nextFacility.Airline.Alliances[0]; this.AirlineFacilities.Add(new AirlineAirportFacilityMVVM(nextFacility,alliance)); * */ this.AirlineFacilities.Clear(); this.BuildingAirlineFacilities.Clear(); foreach (var tFacility in this.Airport.getAirportFacilities().FindAll(f => f.Airline != null)) if (tFacility.Facility.TypeLevel != 0) { Alliance alliance = tFacility.Airline.Alliances.Count == 0 ? null : tFacility.Airline.Alliances[0]; AirlineAirportFacilityMVVM airlineFacility = new AirlineAirportFacilityMVVM(tFacility, alliance); if (airlineFacility.IsDelivered) this.AirlineFacilities.Add(airlineFacility); else this.BuildingAirlineFacilities.Add(airlineFacility); } }