public static IEnumerable <ILegacyStarMapObject> CreateStarSystem( Random random, Matrix worldTransform, Kerberos.Sots.Data.StarMapFramework.StarSystem systemParams, LegacyTerrain parentTerrain) { return((IEnumerable <ILegacyStarMapObject>) new ILegacyStarMapObject[1] { (ILegacyStarMapObject)StarSystemHelper.CreateStarSystem(random, worldTransform, systemParams, parentTerrain) }); }
public static StarSystem CreateStarSystem(Random random, Matrix worldTransform, Kerberos.Sots.Data.StarMapFramework.StarSystem systemParams, LegacyTerrain parentTerrain) { StellarClass stellarClass = StarHelper.ResolveStellarClass(random, systemParams.Type, systemParams.SubType, systemParams.Size); Kerberos.Sots.Data.StarMapFramework.StarOrbit starOrbit = new StarOrbit(); starOrbit.Name = systemParams.Name; starOrbit.StellarClass = stellarClass.ToString(); int randomOrbital = 1; List <Kerberos.Sots.Data.StarMapFramework.Orbit> list = new List <Kerberos.Sots.Data.StarMapFramework.Orbit>(); list.Add(starOrbit); for (int i = 0; i < list.Count; i++) { Kerberos.Sots.Data.StarMapFramework.Orbit thisOrbital = list[i]; if (!(thisOrbital is EmptyOrbit)) { List <Kerberos.Sots.Data.StarMapFramework.Orbit> predefinedOrbitals = new List <Kerberos.Sots.Data.StarMapFramework.Orbit>(); predefinedOrbitals.AddRange(systemParams.Orbits.Where(delegate(Kerberos.Sots.Data.StarMapFramework.Orbit x) { if (string.IsNullOrEmpty(x.Parent)) { return(thisOrbital is StarOrbit); } return(x.Parent == thisOrbital.Name); })); if (thisOrbital is StarOrbit) { StarSystemHelper.AssignOrbitNumbers(stellarClass, predefinedOrbitals); } else { int orbitNumber = 1; predefinedOrbitals.ForEach(delegate(Kerberos.Sots.Data.StarMapFramework.Orbit x) { x.OrbitNumber = orbitNumber++; }); } List <Kerberos.Sots.Data.StarMapFramework.Orbit> list2 = StarSystemHelper.PopulateRandomOrbits(random, thisOrbital); list2.RemoveAll((Kerberos.Sots.Data.StarMapFramework.Orbit x) => predefinedOrbitals.Any((Kerberos.Sots.Data.StarMapFramework.Orbit y) => y.OrbitNumber == x.OrbitNumber)); list2.ForEach(delegate(Kerberos.Sots.Data.StarMapFramework.Orbit x) { x.Name = string.Format("RandomOrbital{0}", ++randomOrbital); }); list.AddRange(predefinedOrbitals); list.AddRange(list2); } } StarSystem starSystem = new StarSystem(); starSystem.Params = systemParams; starSystem.WorldTransform = worldTransform; starSystem.DisplayName = systemParams.Name; starSystem.IsStartPosition = systemParams.isStartLocation; starSystem.WorldTransform = worldTransform; starSystem.Terrain = parentTerrain; foreach (Kerberos.Sots.Data.StarMapFramework.Orbit orbit in list) { bool isOrbitingStar = orbit.Parent == starOrbit.Name; List <IStellarEntity> objs = new List <IStellarEntity>(StarSystemHelper.CreateOrbiters(random, orbit, isOrbitingStar)); starSystem.AddRange(objs); } foreach (IStellarEntity stellarEntity in starSystem.Objects) { IStellarEntity stellarEntity2 = StarSystemHelper.FindOrbitParent(starSystem, stellarEntity); if (stellarEntity2 != null) { stellarEntity.Orbit = StarSystem.SetOrbit(random, stellarEntity2.Params, stellarEntity.Params); } } return(starSystem); }