public static List<AirlinerClass> GetAirlinerClasses(AirlinerType type)
{
var classes = new List<AirlinerClass>();
var passengerType = type as AirlinerPassengerType;
if (passengerType != null)
{
Configuration airlinerTypeConfiguration =
Configurations.GetConfigurations(Configuration.ConfigurationType.AirlinerType)
.Find(
c =>
((AirlinerTypeConfiguration) c).Airliner == type
&& ((AirlinerTypeConfiguration) c).Period.From <= GameObject.GetInstance().GameTime
&& ((AirlinerTypeConfiguration) c).Period.To > GameObject.GetInstance().GameTime);
if (airlinerTypeConfiguration == null)
{
int seatingDiff = 0;
AirlinerConfiguration configuration = null;
int numOfClasses = Rnd.Next(0, passengerType.MaxAirlinerClasses) + 1;
if (GameObject.GetInstance().GameTime.Year >= (int) AirlinerClass.ClassType.BusinessClass)
{
if (numOfClasses == 1)
{
configuration = (AirlinerConfiguration) Configurations.GetStandardConfiguration("200");
}
if (numOfClasses == 2)
{
configuration = (AirlinerConfiguration) Configurations.GetStandardConfiguration("202");
}
if (numOfClasses == 3)
{
configuration = (AirlinerConfiguration) Configurations.GetStandardConfiguration("203");
}
}
else
{
if (numOfClasses == 1)
{
configuration = (AirlinerConfiguration) Configurations.GetStandardConfiguration("200");
}
if (numOfClasses == 2)
{
configuration = (AirlinerConfiguration) Configurations.GetStandardConfiguration("201");
}
if (numOfClasses == 3)
{
configuration = (AirlinerConfiguration) Configurations.GetStandardConfiguration("201");
}
}
if (configuration != null)
{
foreach (AirlinerClassConfiguration aClass in configuration.Classes)
{
var airlinerClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity) {RegularSeatingCapacity = aClass.RegularSeatingCapacity};
foreach (AirlinerFacility facility in aClass.GetFacilities())
{
airlinerClass.SetFacility(null, facility);
}
foreach (
AirlinerFacility.FacilityType fType in Enum.GetValues(typeof (AirlinerFacility.FacilityType))
)
{
if (!aClass.Facilities.Exists(f => f.Type == fType))
{
airlinerClass.SetFacility(null, AirlinerFacilities.GetBasicFacility(fType));
}
}
airlinerClass.SeatingCapacity =
Convert.ToInt16(
Convert.ToDouble(airlinerClass.RegularSeatingCapacity)
/airlinerClass.GetFacility(AirlinerFacility.FacilityType.Seat).SeatUses);
classes.Add(airlinerClass);
}
seatingDiff = passengerType.MaxSeatingCapacity - configuration.MinimumSeats;
}
AirlinerClass economyClass = classes.Find(c => c.Type == AirlinerClass.ClassType.EconomyClass);
economyClass.RegularSeatingCapacity += seatingDiff;
AirlinerFacility seatingFacility = economyClass.GetFacility(AirlinerFacility.FacilityType.Seat);
var extraSeats = (int) (seatingDiff/seatingFacility.SeatUses);
economyClass.SeatingCapacity += extraSeats;
}
else
{
foreach (
AirlinerClassConfiguration aClass in
((AirlinerTypeConfiguration) airlinerTypeConfiguration).Classes)
{
var airlinerClass = new AirlinerClass(aClass.Type, aClass.SeatingCapacity) {RegularSeatingCapacity = aClass.RegularSeatingCapacity};
foreach (AirlinerFacility facility in aClass.GetFacilities())
{
airlinerClass.SetFacility(null, facility);
}
airlinerClass.SeatingCapacity =
Convert.ToInt16(
Convert.ToDouble(airlinerClass.RegularSeatingCapacity)
/airlinerClass.GetFacility(AirlinerFacility.FacilityType.Seat).SeatUses);
classes.Add(airlinerClass);
}
}
}
else if (type is AirlinerCargoType)
{
var cargoClass = new AirlinerClass(AirlinerClass.ClassType.EconomyClass, 0);
classes.Add(cargoClass);
}
else if (type.TypeAirliner == AirlinerType.TypeOfAirliner.Helicopter)
{
var helicopterClass = new AirlinerClass(AirlinerClass.ClassType.EconomyClass, 0);
classes.Add(helicopterClass);
}
return classes;
}