public static void LoadGame(string name)
{
if (string.IsNullOrEmpty(name))
{
WPFMessageBoxResult result = WPFMessageBox.Show(
Translator.GetInstance().GetString("MessageBox", "101"),
Translator.GetInstance().GetString("MessageBox", "101", "message"),
WPFMessageBoxButtons.Ok);
return;
}
string fileName = AppSettings.GetCommonApplicationDataPath() + "\\saves\\" + name + ".sav";
var doc = new XmlDocument();
using (var fs = new FileStream(fileName, FileMode.Open))
{
Stream s = new GZipStream(fs, CompressionMode.Decompress);
doc.Load(s);
s.Close();
}
//doc.Load(AppSettings.getDataPath() + "\\saves\\" + name + ".xml");
XmlElement root = doc.DocumentElement;
if (root != null)
{
DateTime gameTime = DateTime.Parse(root.Attributes["time"].Value, new CultureInfo("de-DE"));
GameObject.GetInstance().GameTime = gameTime;
}
if (root != null)
{
XmlNodeList tailnumbersList = root.SelectNodes("//tailnumbers/tailnumber");
if (tailnumbersList != null)
foreach (XmlElement tailnumberNode in tailnumbersList)
{
Country country = Countries.GetCountry(tailnumberNode.Attributes["country"].Value);
if (country != null)
{
country.TailNumbers.LastTailNumber = tailnumberNode.Attributes["value"].Value;
}
}
}
if (root != null)
{
XmlNodeList airlinerTypesList = root.SelectNodes("//airlinertypes/airlinertype");
if (airlinerTypesList != null)
foreach (XmlElement airlinerTypeNode in airlinerTypesList)
{
var airlinerType =
(AirlinerType.TypeOfAirliner)
Enum.Parse(typeof (AirlinerType.TypeOfAirliner), airlinerTypeNode.Attributes["type"].Value);
AirlinerType baseType = AirlinerTypes.GetType(airlinerTypeNode.Attributes["basetype"].Value);
string airlinerTypeName = airlinerTypeNode.Attributes["name"].Value;
AirlinerType type = null;
if (airlinerType == AirlinerType.TypeOfAirliner.Passenger)
{
int cabincrew = Convert.ToInt16(airlinerTypeNode.Attributes["cabincrew"].Value);
int passengers = Convert.ToInt16(airlinerTypeNode.Attributes["passengers"].Value);
int maxclasses = Convert.ToInt16(airlinerTypeNode.Attributes["maxclasses"].Value);
type = new AirlinerPassengerType(
baseType.Manufacturer,
airlinerTypeName,
"",
passengers,
baseType.CockpitCrew,
cabincrew,
0,
0,
baseType.Wingspan,
baseType.Length,
baseType.Weight,
0,
baseType.Price,
maxclasses,
0,
baseType.FuelCapacity,
baseType.Body,
baseType.RangeType,
baseType.Engine,
baseType.Produced,
baseType.ProductionRate,
false,
false);
}
if (airlinerType == AirlinerType.TypeOfAirliner.Cargo)
{
double cargo = Convert.ToDouble(
airlinerTypeNode.Attributes["cargo"].Value,
new CultureInfo("de-DE", false));
type = new AirlinerCargoType(
baseType.Manufacturer,
airlinerTypeName,
"",
baseType.CockpitCrew,
cargo,
0,
0,
baseType.Wingspan,
baseType.Length,
baseType.Weight,
0,
baseType.Price,
0,
baseType.FuelCapacity,
baseType.Body,
baseType.RangeType,
baseType.Engine,
baseType.Produced,
baseType.ProductionRate,
false,
false);
}
if (type != null)
{
type.BaseType = baseType;
AirlinerTypes.AddType(type);
}
}
}
Airliners.Clear();
if (root != null)
{
XmlNodeList airlinersList = root.SelectNodes("//airliners/airliner");
if (airlinersList != null)
Parallel.For(
0,
airlinersList.Count,
i => //foreach (XmlElement airlinerNode in airlinersList)
{
var airlinerNode = (XmlElement) airlinersList[i];
AirlinerType type = AirlinerTypes.GetType(airlinerNode.Attributes["type"].Value);
if (type != null)
{
string tailnumber = airlinerNode.Attributes["tailnumber"].Value;
string id = airlinerNode.HasAttribute("id") ? airlinerNode.Attributes["id"].Value : tailnumber;
string last_service = airlinerNode.Attributes["last_service"].Value;
DateTime built = DateTime.Parse(
airlinerNode.Attributes["built"].Value,
new CultureInfo("de-DE", false));
double flown = Convert.ToDouble(
airlinerNode.Attributes["flown"].Value,
new CultureInfo("de-DE", false));
double damaged = Convert.ToDouble(
airlinerNode.Attributes["damaged"].Value,
new CultureInfo("de-DE", false));
var airliner = new Airliner(id, type, tailnumber, built) {Condition = damaged, Flown = flown};
airliner.ClearAirlinerClasses();
XmlNodeList airlinerClassList = airlinerNode.SelectNodes("classes/class");
if (airlinerClassList != null)
foreach (XmlElement airlinerClassNode in airlinerClassList)
{
var airlinerClassType =
(AirlinerClass.ClassType)
Enum.Parse(
typeof (AirlinerClass.ClassType),
airlinerClassNode.Attributes["type"].Value);
int airlinerClassSeating = Convert.ToInt16(airlinerClassNode.Attributes["seating"].Value);
var aClass = new AirlinerClass(airlinerClassType, airlinerClassSeating);
// chs, 2011-13-10 added for loading of airliner facilities
XmlNodeList airlinerClassFacilitiesList =
airlinerClassNode.SelectNodes("facilities/facility");
if (airlinerClassFacilitiesList != null)
foreach (XmlElement airlinerClassFacilityNode in airlinerClassFacilitiesList)
{
var airlinerFacilityType =
(AirlinerFacility.FacilityType)
Enum.Parse(
typeof (AirlinerFacility.FacilityType),
airlinerClassFacilityNode.Attributes["type"].Value);
AirlinerFacility aFacility = AirlinerFacilities.GetFacility(
airlinerFacilityType,
airlinerClassFacilityNode.Attributes["uid"].Value);
aClass.ForceSetFacility(aFacility);
}
airliner.AddAirlinerClass(aClass);
}
Airliners.AddAirliner(airliner);
}
});
}
Airlines.Clear();
if (root != null)
{
XmlNodeList airlinesList = root.SelectNodes("//airlines/airline[@subsidiary='False']");
if (airlinesList != null)
foreach (XmlElement airlineNode in airlinesList)
{
LoadAirline(airlineNode);
}
}
if (root != null)
{
XmlNodeList subsidiaryList = root.SelectNodes("//airlines/airline[@subsidiary='True']");
if (subsidiaryList != null)
foreach (XmlElement airlineNode in subsidiaryList)
{
LoadAirline(airlineNode);
}
}
if (root != null)
{
XmlNodeList airportsList = root.SelectNodes("//airports/airport");
var airportsToKeep = new List<Airport>();
if (airportsList != null)
foreach (XmlElement airportNode in airportsList)
{
Airport airport = Airports.GetAirportFromID(airportNode.Attributes["id"].Value);
airportsToKeep.Add(airport);
/*
* XmlElement airportPaxNode = xmlDoc.CreateElement("paxvalue");
airportPaxNode.SetAttribute("from", paxValue.FromYear.ToString());
airportPaxNode.SetAttribute("to", paxValue.ToYear.ToString());
airportPaxNode.SetAttribute("size", paxValue.Size.ToString());
airportPaxNode.SetAttribute("pax", paxValue.Pax.ToString());
airportPaxNode.SetAttribute("inflationbefore", paxValue.InflationBeforeYear.ToString());
airportPaxNode.SetAttribute("inflationafter", paxValue.InflationAfterYear.ToString());
*/
airport.Income = Convert.ToInt64(airportNode.Attributes["income"].Value);
airport.Profile.PaxValues.Clear();
XmlNodeList paxvaluesList = airportNode.SelectNodes("paxvalues/paxvalue");
foreach (XmlElement paxElement in paxvaluesList)
{
int fromYear = Convert.ToInt16(paxElement.Attributes["from"].Value);
int toYear = Convert.ToInt16(paxElement.Attributes["to"].Value);
var airportSize =
(GeneralHelpers.Size)
Enum.Parse(typeof (GeneralHelpers.Size), paxElement.Attributes["size"].Value);
double pax = Convert.ToDouble(paxElement.Attributes["pax"].Value);
double inflationBefore = Convert.ToDouble(paxElement.Attributes["inflationbefore"].Value);
double inflationAfter = Convert.ToDouble(paxElement.Attributes["inflationafter"].Value);
var paxValue = new PaxValue(fromYear, toYear, airportSize, pax) {InflationAfterYear = inflationAfter, InflationBeforeYear = inflationBefore};
airport.Profile.PaxValues.Add(paxValue);
}
XmlNodeList runwaysList = airportNode.SelectNodes("runways/runway");
foreach (XmlElement runwayElement in runwaysList)
{
string runwayName = runwayElement.Attributes["name"].Value;
long runwayLenght = Convert.ToInt64(runwayElement.Attributes["lenght"].Value);
var runwaySurface =
(Runway.SurfaceType)
Enum.Parse(typeof (Runway.SurfaceType), runwayElement.Attributes["surface"].Value);
DateTime runwayDate = DateTime.Parse(
runwayElement.Attributes["date"].Value,
new CultureInfo("de-DE", false));
airport.Runways.Add(new Runway(runwayName, runwayLenght, Runway.RunwayType.Regular, runwaySurface, runwayDate, false));
}
XmlNodeList airportHubsList = airportNode.SelectNodes("hubs/hub");
// airport.Hubs.Clear();
foreach (XmlElement airportHubElement in airportHubsList)
{
Airline airline = Airlines.GetAirline(airportHubElement.Attributes["airline"].Value);
// airport.Hubs.Add(new Hub(airline,null));
}
XmlNodeList airportWeatherList = airportNode.SelectNodes("weathers/weather");
for (int i = 0; i < airportWeatherList.Count; i++)
{
var airportWeatherElement = airportWeatherList[i] as XmlElement;
DateTime weatherDate = DateTime.Parse(
airportWeatherElement.Attributes["date"].Value,
new CultureInfo("de-DE", false));
var windDirection =
(Weather.WindDirection)
Enum.Parse(
typeof (Weather.WindDirection),
airportWeatherElement.Attributes["direction"].Value);
var windSpeed =
(Weather.eWindSpeed)
Enum.Parse(typeof (Weather.eWindSpeed), airportWeatherElement.Attributes["windspeed"].Value);
Weather.CloudCover cover = airportWeatherElement.HasAttribute("cover")
? (Weather.CloudCover)
Enum.Parse(typeof (Weather.CloudCover), airportWeatherElement.Attributes["cover"].Value)
: Weather.CloudCover.Clear;
Weather.Precipitation precip = airportWeatherElement.HasAttribute("precip")
? (Weather.Precipitation)
Enum.Parse(typeof (Weather.Precipitation), airportWeatherElement.Attributes["precip"].Value)
: Weather.Precipitation.None;
double temperatureLow = airportWeatherElement.HasAttribute("temperatureLow")
? Convert.ToDouble(
airportWeatherElement.Attributes["temperaturelow"].Value,
new CultureInfo("de-DE", false))
: 0;
double temperatureHigh = airportWeatherElement.HasAttribute("temperatureHigh")
? Convert.ToDouble(
airportWeatherElement.Attributes["temperaturehigh"].Value,
new CultureInfo("de-DE", false))
: 20;
XmlNodeList airportTemperatureList = airportWeatherElement.SelectNodes("temperatures/temperature");
var temperatures = new HourlyWeather[airportTemperatureList.Count];
int t = 0;
foreach (XmlElement airportTemperatureNode in airportTemperatureList)
{
double hourlyTemperature = Convert.ToDouble(
airportTemperatureNode.Attributes["temp"].Value,
new CultureInfo("de-DE", false));
var hourlyCover =
(Weather.CloudCover)
Enum.Parse(typeof (Weather.CloudCover), airportTemperatureNode.Attributes["cover"].Value);
var hourlyPrecip =
(Weather.Precipitation)
Enum.Parse(
typeof (Weather.Precipitation),
airportTemperatureNode.Attributes["precip"].Value);
var hourlyWindspeed =
(Weather.eWindSpeed)
Enum.Parse(
typeof (Weather.eWindSpeed),
airportTemperatureNode.Attributes["windspeed"].Value);
var hourlyDirection =
(Weather.WindDirection)
Enum.Parse(
typeof (Weather.WindDirection),
airportTemperatureNode.Attributes["direction"].Value);
temperatures[t] = new HourlyWeather(
hourlyTemperature,
hourlyCover,
hourlyPrecip,
hourlyWindspeed,
hourlyDirection);
t++;
}
airport.Weather[i] = new Weather(
weatherDate,
windSpeed,
windDirection,
cover,
precip,
temperatures,
temperatureLow,
temperatureHigh);
}
XmlNodeList airportStatList = airportNode.SelectNodes("stats/stat");
foreach (XmlElement airportStatNode in airportStatList)
{
int year = Convert.ToInt32(airportStatNode.Attributes["year"].Value);
Airline airline = Airlines.GetAirline(airportStatNode.Attributes["airline"].Value);
string statType = airportStatNode.Attributes["type"].Value;
int statValue = Convert.ToInt32(airportStatNode.Attributes["value"].Value);
airport.Statistics.SetStatisticsValue(
year,
airline,
StatisticsTypes.GetStatisticsType(statType),
statValue);
}
XmlNodeList airportFacilitiesList = airportNode.SelectNodes("facilities/facility");
airport.ClearFacilities();
foreach (XmlElement airportFacilityNode in airportFacilitiesList)
{
Airline airline = Airlines.GetAirline(airportFacilityNode.Attributes["airline"].Value);
AirportFacility airportFacility =
AirportFacilities.GetFacility(airportFacilityNode.Attributes["name"].Value);
DateTime finishedDate = DateTime.Parse(
airportFacilityNode.Attributes["finished"].Value,
new CultureInfo("de-DE", false));
airport.AddAirportFacility(airline, airportFacility, finishedDate);
}
airport.Terminals.Clear();
XmlNodeList terminalsList = airportNode.SelectNodes("terminals/terminal");
foreach (XmlElement terminalNode in terminalsList)
{
DateTime deliveryDate = DateTime.Parse(
terminalNode.Attributes["delivery"].Value,
new CultureInfo("de-DE", false));
Airline owner = Airlines.GetAirline(terminalNode.Attributes["owner"].Value);
string terminalName = terminalNode.Attributes["name"].Value;
int gates = Convert.ToInt32(terminalNode.Attributes["totalgates"].Value);
var terminal = new Terminal(airport, owner, terminalName, gates, deliveryDate, Terminal.TerminalType.Passenger);
terminal.Gates.Clear();
XmlNodeList airportGatesList = terminalNode.SelectNodes("gates/gate");
foreach (XmlElement airportGateNode in airportGatesList)
{
DateTime gateDeliveryDate = DateTime.Parse(
airportGateNode.Attributes["delivery"].Value,
new CultureInfo("de-DE", false));
var gate = new Gate(gateDeliveryDate);
terminal.Gates.AddGate(gate);
}
airport.AddTerminal(terminal);
}
airport.ClearAirlineContracts();
XmlNodeList contractsList = airportNode.SelectNodes("contracts/contract");
foreach (XmlElement contractNode in contractsList)
{
Airline contractAirline = Airlines.GetAirline(contractNode.Attributes["airline"].Value);
int contractLength = Convert.ToInt16(contractNode.Attributes["length"].Value);
DateTime contractDate = DateTime.Parse(
contractNode.Attributes["date"].Value,
new CultureInfo("de-DE", false));
int contractGates = Convert.ToInt16(contractNode.Attributes["gates"].Value);
double contractPayment = Convert.ToDouble(
contractNode.Attributes["payment"].Value,
new CultureInfo("de-DE", false));
Boolean contractExclusive = Convert.ToBoolean(contractNode.Attributes["exclusive"].Value);
Terminal contractTerminal = contractNode.HasAttribute("terminal")
? airport.Terminals.AirportTerminals.Find(
t => t.Name == contractNode.Attributes["terminal"].Value)
: null;
var contract = new AirportContract(
contractAirline,
airport,
AirportContract.ContractType.Full,
Terminal.TerminalType.Passenger,
contractDate,
contractGates,
contractLength,
contractPayment,
true,
false,
contractExclusive,
contractTerminal);
AirportHelpers.AddAirlineContract(contract);
}
}
Airports.RemoveAirports(a => !airportsToKeep.Contains(a));
}
XmlNodeList airportDestinationsList = root.SelectNodes("//airportdestinations/airportdestination");
foreach (XmlElement airportDestinationElement in airportDestinationsList)
{
Airport targetAirport = Airports.GetAirport(airportDestinationElement.Attributes["id"].Value);
if (targetAirport != null)
{
targetAirport.ClearDestinationPassengers();
XmlNodeList destinationsList = airportDestinationElement.SelectNodes("destinations/destination");
Parallel.For(
0,
destinationsList.Count,
i => //foreach (XmlElement destinationElement in destinationsList)
{
var destinationElement = (XmlElement) destinationsList[i];
Airport destAirport = Airports.GetAirport(destinationElement.Attributes["id"].Value);
if (destAirport != null)
{
ushort rate = ushort.Parse(destinationElement.Attributes["rate"].Value);
long destPassengers = Convert.ToInt64(destinationElement.Attributes["passengers"].Value);
targetAirport.AddPassengerDestinationStatistics(destAirport, destPassengers);
targetAirport.AddDestinationPassengersRate(
new DestinationDemand(destAirport.Profile.IATACode, rate));
if (destinationElement.HasAttribute("cargo"))
{
targetAirport.AddDestinationCargoRate(
new DestinationDemand(
destAirport.Profile.IATACode,
ushort.Parse(destinationElement.Attributes["cargo"].Value)));
targetAirport.AddCargoDestinationStatistics(
destAirport,
Convert.ToDouble(
destinationElement.Attributes["cargostats"].Value,
new CultureInfo("de-DE", false)));
}
}
});
}
}
Instructors.Clear();
XmlNodeList instructorsList = root.SelectNodes("//instructors/instructor");
foreach (XmlElement instructorNode in instructorsList)
{
string firstname = instructorNode.Attributes["firstname"].Value;
string lastname = instructorNode.Attributes["lastname"].Value;
DateTime birthdate = DateTime.Parse(
instructorNode.Attributes["birthdate"].Value,
new CultureInfo("de-DE", false));
Town town = Towns.GetTown(instructorNode.Attributes["town"].Value);
//Pilot.PilotRating rating = (Pilot.PilotRating)Enum.Parse(typeof(Pilot.PilotRating), instructorNode.Attributes["rating"].Value);
string id = instructorNode.Attributes["id"].Value;
var instructor = new Instructor(
new PilotProfile(firstname, lastname, birthdate, town),
PilotRatings.GetRating("A"));
if (id != "-")
{
FlightSchool fs =
Airlines.GetAllAirlines()
.SelectMany(a => a.FlightSchools).FirstOrDefault(f => f.ID == id);
instructor.FlightSchool = fs;
fs.AddInstructor(instructor);
}
XmlNodeList studentsList = instructorNode.SelectNodes("students/student");
foreach (XmlElement studentNode in studentsList)
{
PilotStudent student =
instructor.FlightSchool.Students.Find(
s => s.Profile.Name == studentNode.Attributes["name"].Value);
student.Instructor = instructor;
instructor.AddStudent(student);
}
Instructors.AddInstructor(instructor);
}
if (Instructors.GetInstructors().Count == 0)
{
GeneralHelpers.CreateInstructors(75*Airlines.GetAllAirlines().Count);
}
Pilots.Clear();
XmlNodeList pilotsList = root.SelectNodes("//pilots/pilot");
foreach (XmlElement pilotNode in pilotsList)
{
string firstname = pilotNode.Attributes["firstname"].Value;
string lastname = pilotNode.Attributes["lastname"].Value;
DateTime birthdate = DateTime.Parse(
pilotNode.Attributes["birthdate"].Value,
new CultureInfo("de-DE", false));
Town town = Towns.GetTown(pilotNode.Attributes["town"].Value);
DateTime educationdate = DateTime.Parse(
pilotNode.Attributes["education"].Value,
new CultureInfo("de-DE", false));
//Pilot.PilotRating rating = (Pilot.PilotRating)Enum.Parse(typeof(Pilot.PilotRating), pilotNode.Attributes["rating"].Value);
var pilot = new Pilot(
new PilotProfile(firstname, lastname, birthdate, town),
educationdate,
PilotRatings.GetRating("B"));
if (pilotNode.Attributes["airline"].Value != "-")
{
Airline pilotAirline = Airlines.GetAirline(pilotNode.Attributes["airline"].Value);
DateTime airlinesigneddate = DateTime.Parse(
pilotNode.Attributes["airlinesigned"].Value,
new CultureInfo("de-DE", false));
pilotAirline.AddPilot(pilot);
pilot.AirlineSignedDate = airlinesigneddate;
if (pilotNode.Attributes["airliner"].Value != "-")
{
FleetAirliner airliner =
pilotAirline.Fleet.Find(f => f.Airliner.ID == pilotNode.Attributes["airliner"].Value);
if (airliner != null)
{
pilot.Airliner = airliner;
airliner.AddPilot(pilot);
}
}
}
Pilots.AddPilot(pilot);
}
if (Pilots.GetNumberOfPilots() == 0)
{
var rnd = new Random();
GeneralHelpers.CreatePilots(100*Airlines.GetAllAirlines().Count);
foreach (FleetAirliner airliner in Airlines.GetAllAirlines().SelectMany(a => a.Fleet))
{
Pilot pilot = Pilots.GetPilots()[rnd.Next(Pilots.GetNumberOfPilots())];
airliner.Airliner.Airline.AddPilot(pilot);
pilot.Airliner = airliner;
airliner.AddPilot(pilot);
}
}
Alliances.Clear();
XmlNodeList alliancesList = root.SelectNodes("//alliances/alliance");
foreach (XmlElement allianceNode in alliancesList)
{
string allianceName = allianceNode.Attributes["name"].Value;
DateTime formationDate = DateTime.Parse(
allianceNode.Attributes["formation"].Value,
new CultureInfo("de-DE"));
Airport allianceHeadquarter = Airports.GetAirport(allianceNode.Attributes["headquarter"].Value);
var alliance = new Alliance(formationDate, allianceName, allianceHeadquarter);
XmlNodeList membersList = allianceNode.SelectNodes("members/member");
foreach (XmlElement memberNode in membersList)
{
Airline allianceMember = Airlines.GetAirline(memberNode.Attributes["airline"].Value);
DateTime joinedDate = DateTime.Parse(
memberNode.Attributes["joined"].Value,
new CultureInfo("de-DE"));
if (allianceMember != null)
{
alliance.AddMember(new AllianceMember(allianceMember, joinedDate));
}
}
XmlNodeList pendingsList = allianceNode.SelectNodes("pendings/pending");
foreach (XmlElement pendingNode in pendingsList)
{
Airline pendingAirline = Airlines.GetAirline(pendingNode.Attributes["airline"].Value);
DateTime pendingDate = DateTime.Parse(
pendingNode.Attributes["date"].Value,
new CultureInfo("de-DE"));
var pendingType =
(PendingAllianceMember.AcceptType)
Enum.Parse(typeof (PendingAllianceMember.AcceptType), pendingNode.Attributes["type"].Value);
alliance.AddPendingMember(
new PendingAllianceMember(pendingDate, alliance, pendingAirline, pendingType));
}
Alliances.AddAlliance(alliance);
}
Configurations.Clear();
XmlNodeList configurationsList = root.SelectNodes("//configurations/configuration");
foreach (XmlElement confElement in configurationsList)
{
string confName = confElement.Attributes["name"].Value;
string confid = confElement.Attributes["id"].Value;
Boolean standard = Convert.ToBoolean(confElement.Attributes["standard"].Value);
int minimumSeats = Convert.ToInt16(confElement.Attributes["minimumseats"].Value);
var configuration = new AirlinerConfiguration(confName, minimumSeats, standard) {ID = confid};
XmlNodeList classesList = confElement.SelectNodes("classes/class");
foreach (XmlElement classElement in classesList)
{
int seating = Convert.ToInt16(classElement.Attributes["seating"].Value);
int regularseating = Convert.ToInt16(classElement.Attributes["regularseating"].Value);
var classType =
(AirlinerClass.ClassType)
Enum.Parse(typeof (AirlinerClass.ClassType), classElement.Attributes["type"].Value);
var classConf = new AirlinerClassConfiguration(classType, seating, regularseating);
foreach (
AirlinerFacility.FacilityType facType in Enum.GetValues(typeof (AirlinerFacility.FacilityType)))
{
string facUid = classElement.Attributes[facType.ToString()].Value;
classConf.AddFacility(AirlinerFacilities.GetFacility(facType, facUid));
}
configuration.AddClassConfiguration(classConf);
}
Configurations.AddConfiguration(configuration);
}
XmlNodeList routeConfigurationsList =
root.SelectNodes("//routeclassesconfigurations/routeclassesconfiguration");
foreach (XmlElement confElement in routeConfigurationsList)
{
string routeConfName = confElement.Attributes["name"].Value;
string confid = confElement.Attributes["id"].Value;
Boolean standard = Convert.ToBoolean(confElement.Attributes["standard"].Value);
XmlNodeList classesList = confElement.SelectNodes("classes/class");
var classesConfiguration = new RouteClassesConfiguration(routeConfName, standard) {ID = confid};
foreach (XmlElement classElement in classesList)
{
var classType =
(AirlinerClass.ClassType)
Enum.Parse(typeof (AirlinerClass.ClassType), classElement.Attributes["type"].Value);
var classConf = new RouteClassConfiguration(classType);
foreach (RouteFacility.FacilityType facType in Enum.GetValues(typeof (RouteFacility.FacilityType)))
{
if (classElement.HasAttribute(facType.ToString()))
{
string facilityName = classElement.Attributes[facType.ToString()].Value;
classConf.AddFacility(
RouteFacilities.GetFacilities(facType).Find(f => f.Name == facilityName));
}
}
classesConfiguration.AddClass(classConf);
}
Configurations.AddConfiguration(classesConfiguration);
}
var difficultyNode = (XmlElement) root.SelectSingleNode("//difficulty");
string difficultyName = difficultyNode.Attributes["name"].Value;
double moneyLevel = Convert.ToDouble(
difficultyNode.Attributes["money"].Value,
new CultureInfo("de-DE", false));
double priceLevel = Convert.ToDouble(
difficultyNode.Attributes["price"].Value,
new CultureInfo("de-DE", false));
double loanLevel = Convert.ToDouble(
difficultyNode.Attributes["loan"].Value,
new CultureInfo("de-DE", false));
double passengersLevel = Convert.ToDouble(
difficultyNode.Attributes["passengers"].Value,
new CultureInfo("de-DE", false));
double aiLevel = Convert.ToDouble(difficultyNode.Attributes["ai"].Value, new CultureInfo("de-DE", false));
GameObject.GetInstance().Difficulty = new DifficultyLevel(
difficultyName,
moneyLevel,
loanLevel,
passengersLevel,
priceLevel,
aiLevel,
1);
var scenarioNode = (XmlElement) root.SelectSingleNode("//scenario");
if (scenarioNode != null)
{
Scenario scenario = Scenarios.GetScenario(scenarioNode.Attributes["name"].Value);
var so = new ScenarioObject(scenario) {IsSuccess = Convert.ToBoolean(scenarioNode.Attributes["success"].Value)};
if (scenarioNode.HasAttribute("failed"))
{
so.ScenarioFailed = scenario.Failures.Find(f => f.ID == scenarioNode.Attributes["failed"].Value);
}
XmlNodeList failuresList = scenarioNode.SelectNodes("failures/failure");
foreach (XmlElement failureNode in failuresList)
{
ScenarioFailure failure = scenario.Failures.Find(f => f.ID == failureNode.Attributes["id"].Value);
int failureCount = Convert.ToInt16(failureNode.Attributes["count"].Value);
DateTime lastFailureTime = DateTime.Parse(
failureNode.Attributes["lastfailuretime"].Value,
new CultureInfo("de-DE", false));
so.GetScenarioFailure(failure).LastFailureTime = lastFailureTime;
so.GetScenarioFailure(failure).Failures = failureCount;
}
GameObject.GetInstance().Scenario = so;
}
var gameSettingsNode = (XmlElement) root.SelectSingleNode("//gamesettings");
GameObject.GetInstance().Name = gameSettingsNode.Attributes["name"].Value;
Airline humanAirline = Airlines.GetAirline(gameSettingsNode.Attributes["human"].Value);
GameObject.GetInstance().SetHumanAirline(humanAirline);
Airline mainAirline = Airlines.GetAirline(gameSettingsNode.Attributes["mainairline"].Value);
GameObject.GetInstance().MainAirline = mainAirline;
double fuelPrice = Convert.ToDouble(
gameSettingsNode.Attributes["fuelprice"].Value,
new CultureInfo("de-DE", false));
GameTimeZone timezone =
TimeZones.GetTimeZones()
.Find(
gtz => gtz.UTCOffset == TimeSpan.Parse(gameSettingsNode.Attributes["timezone"].Value));
GameObject.GetInstance().TimeZone = timezone;
Infrastructure.Settings.GetInstance().MailsOnLandings =
Convert.ToBoolean(gameSettingsNode.Attributes["mailonlandings"].Value);
Infrastructure.Settings.GetInstance().MailsOnBadWeather =
Convert.ToBoolean(gameSettingsNode.Attributes["mailonbadweather"].Value);
Infrastructure.Settings.GetInstance().AirportCodeDisplay =
(AirportCode)
Enum.Parse(typeof (AirportCode), gameSettingsNode.Attributes["airportcode"].Value);
if (gameSettingsNode.HasAttribute("minutesperturn"))
{
Infrastructure.Settings.GetInstance().MinutesPerTurn =
Convert.ToInt16(gameSettingsNode.Attributes["minutesperturn"].Value);
}
AppSettings.GetInstance().SetLanguage(Languages.GetLanguage(gameSettingsNode.Attributes["language"].Value));
GameObject.GetInstance().DayRoundEnabled = Convert.ToBoolean(gameSettingsNode.Attributes["dayround"].Value);
XmlNodeList itemsList = gameSettingsNode.SelectNodes("calendaritems/calendaritem");
CalendarItems.Clear();
foreach (XmlElement itemNode in itemsList)
{
var itemType =
(CalendarItem.ItemType) Enum.Parse(typeof (CalendarItem.ItemType), itemNode.Attributes["type"].Value);
DateTime itemDate = DateTime.Parse(itemNode.Attributes["date"].Value, new CultureInfo("de-DE", false));
string itemHeader = itemNode.Attributes["header"].Value;
string itemSubject = itemNode.Attributes["subject"].Value;
CalendarItems.AddCalendarItem(new CalendarItem(itemType, itemDate, itemHeader, itemSubject));
}
XmlNodeList newsList = gameSettingsNode.SelectNodes("news/new");
GameObject.GetInstance().NewsBox.Clear();
foreach (XmlElement newsNode in newsList)
{
DateTime newsDate = DateTime.Parse(newsNode.Attributes["date"].Value, new CultureInfo("de-DE", false));
var newsType = (News.NewsType) Enum.Parse(typeof (News.NewsType), newsNode.Attributes["type"].Value);
string newsSubject = newsNode.Attributes["subject"].Value;
string newsBody = newsNode.Attributes["body"].Value;
Boolean newsIsRead = Convert.ToBoolean(newsNode.Attributes["isread"].Value);
var news = new News(newsType, newsDate, newsSubject, newsBody) {IsRead = newsIsRead};
GameObject.GetInstance().NewsBox.AddNews(news);
}
/*
foreach (Airline airline in Airlines.GetAllAirlines())
{
foreach (Route route in airline.Routes)
{
Gate gate1 = route.Destination1.Terminals.getEmptyGate(airline);
Gate gate2 = route.Destination2.Terminals.getEmptyGate(airline);
if (gate1!=null) gate1.Route = route;
if (gate2!=null) gate2.Route = route;
}
}
*/
}