internal void AssignEmptyPlanetParameters(Random random) { foreach (Kerberos.Sots.StarSystem starSystem in this.Objects.OfType <Kerberos.Sots.StarSystem>()) { foreach (IStellarEntity stellarEntity in starSystem.Objects) { if (stellarEntity.Params is PlanetOrbit) { PlanetOrbit planetOrbit = stellarEntity.Params as PlanetOrbit; if (!planetOrbit.Suitability.HasValue) { planetOrbit.Suitability = new float?(StarSystemHelper.ChoosePlanetSuitability(random)); } if (!planetOrbit.Resources.HasValue) { planetOrbit.Resources = new int?((int)StarSystemHelper.ChoosePlanetResources(random)); } if (!planetOrbit.Biosphere.HasValue) { planetOrbit.Biosphere = new int?((int)StarSystemHelper.ChoosePlanetBiosphere(random)); } if (!planetOrbit.Size.HasValue) { planetOrbit.Size = stellarEntity.Orbit == null || stellarEntity.Orbit.Parent != starSystem.Star.Params ? new int?(random.NextInclusive(StarSystemVars.Instance.HabitalMoonMinSize, StarSystemVars.Instance.HabitalMoonMaxSize)) : new int?((int)StarSystemHelper.ChooseSize(random, StarSystemVars.Instance.PlanetMinRadius, StarSystemVars.Instance.PlanetMaxRadius)); } } else if (stellarEntity.Params is GasGiantSmallOrbit) { GasGiantSmallOrbit gasGiantSmallOrbit = stellarEntity.Params as GasGiantSmallOrbit; if (!gasGiantSmallOrbit.Size.HasValue) { gasGiantSmallOrbit.Size = new float?(StarSystemHelper.ChooseSize(random, StarSystemVars.Instance.GasGiantMinRadiusSmall, StarSystemVars.Instance.GasGiantMaxRadiusSmall)); } } else if (stellarEntity.Params is GasGiantLargeOrbit) { GasGiantLargeOrbit gasGiantLargeOrbit = stellarEntity.Params as GasGiantLargeOrbit; if (!gasGiantLargeOrbit.Size.HasValue) { gasGiantLargeOrbit.Size = new float?(StarSystemHelper.ChooseSize(random, StarSystemVars.Instance.GasGiantMinRadiusLarge, StarSystemVars.Instance.GasGiantMaxRadiusLarge)); } } else if (stellarEntity.Params is MoonOrbit) { MoonOrbit moonOrbit = stellarEntity.Params as MoonOrbit; if (!moonOrbit.Size.HasValue) { moonOrbit.Size = new float?(StarSystemHelper.ChooseSize(random, StarSystemVars.Instance.MoonMinRadius, StarSystemVars.Instance.MoonMaxRadius)); } } } } }
public static IEnumerable <IStellarEntity> CreateMoon( Random random, MoonOrbit orbiterParams) { if (!orbiterParams.Size.HasValue) { orbiterParams.Size = new float?(StarSystemHelper.ChooseSize(random, StarSystemVars.Instance.MoonMinRadius, StarSystemVars.Instance.MoonMaxRadius)); } return((IEnumerable <IStellarEntity>) new IStellarEntity[1] { (IStellarEntity) new StellarEntity() { Params = (Kerberos.Sots.Data.StarMapFramework.Orbit)orbiterParams } }); }
public static PlanetInfo InferPlanetInfo(Kerberos.Sots.Data.StarMapFramework.Orbit orbit) { if (orbit is PlanetOrbit) { PlanetOrbit planetOrbit = orbit as PlanetOrbit; Random safeRandom = App.GetSafeRandom(); float num1 = planetOrbit.Size.HasValue ? (float)planetOrbit.Size.Value : (float)safeRandom.Next(1, 10); string str = !string.IsNullOrEmpty(planetOrbit.PlanetType) ? planetOrbit.PlanetType : (safeRandom.NextNormal(0.0, 1.0) > 0.75 ? StellarBodyTypes.Normal : StellarBodyTypes.SpecialTerrestrialTypes[safeRandom.Next(0, ((IEnumerable <string>)StellarBodyTypes.SpecialTerrestrialTypes).Count <string>())]); float num2 = planetOrbit.Suitability.HasValue ? planetOrbit.Suitability.Value : (float)safeRandom.Next(-1000, 1000); int num3 = planetOrbit.Biosphere.HasValue ? planetOrbit.Biosphere.Value : safeRandom.Next(500, 1500); int num4 = planetOrbit.Resources.HasValue ? planetOrbit.Resources.Value : safeRandom.Next(1500, 8000); return(new PlanetInfo() { Size = num1, Type = str, Suitability = num2, Biosphere = num3, Resources = num4 }); } if (orbit is MoonOrbit) { MoonOrbit moonOrbit = orbit as MoonOrbit; Random safeRandom = App.GetSafeRandom(); float num1 = moonOrbit.Size.HasValue ? moonOrbit.Size.Value : (float)(0.100000001490116 + (double)safeRandom.NextSingle() * 0.400000005960464); int num2 = safeRandom.Next(1000, 7000); return(new PlanetInfo() { Size = num1, Resources = num2, Type = StellarBodyTypes.Barren }); } if (orbit is GasGiantSmallOrbit) { GasGiantSmallOrbit gasGiantSmallOrbit = orbit as GasGiantSmallOrbit; Random safeRandom = App.GetSafeRandom(); float num = gasGiantSmallOrbit.Size.HasValue ? gasGiantSmallOrbit.Size.Value : (float)safeRandom.Next(13, 18); return(new PlanetInfo() { Size = num, Type = StellarBodyTypes.Gaseous }); } if (!(orbit is GasGiantLargeOrbit)) { return((PlanetInfo)null); } GasGiantLargeOrbit gasGiantLargeOrbit = orbit as GasGiantLargeOrbit; Random safeRandom1 = App.GetSafeRandom(); if (!gasGiantLargeOrbit.Size.HasValue) { safeRandom1.Next(19, 30); } else { double num5 = (double)gasGiantLargeOrbit.Size.Value; } return(new PlanetInfo() { Size = gasGiantLargeOrbit.Size.Value, Type = StellarBodyTypes.Gaseous }); }