Exemplo n.º 1
0
 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));
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
 public static IEnumerable <IStellarEntity> CreateGasGiantLarge(
     Random random,
     GasGiantLargeOrbit orbiterParams)
 {
     if (!orbiterParams.Size.HasValue)
     {
         orbiterParams.Size = new float?(StarSystemHelper.ChooseSize(random, StarSystemVars.Instance.GasGiantMinRadiusLarge, StarSystemVars.Instance.GasGiantMaxRadiusLarge));
     }
     return((IEnumerable <IStellarEntity>) new IStellarEntity[1]
     {
         (IStellarEntity) new StellarEntity()
         {
             Params = (Kerberos.Sots.Data.StarMapFramework.Orbit)orbiterParams
         }
     });
 }
Exemplo n.º 3
0
        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
            });
        }