public static void PreGenerateAllBodies(StarData star, List <PlanetForGenerator> planetsToGenerate, Random annexSeed, PlanetGeneratorSettings genSettings, PatchForStarSystemGeneration.StarSystemSetting currentSettings) { // //preparation of the planet creation : Patch.Debug("Define the belts for whatever they are for :", LogLevel.Debug, Patch.DebugStarGenDeep); //Define where the 2 asteroids belts are ( maybe not implemented ) var asterBelt1OrbitIndex = UnityRandom.Range(1, genSettings.nbOfPlanets - 1); var asterBelt2OrbitIndex = UnityRandom.Range(asterBelt1OrbitIndex + 1, genSettings.nbOfPlanets); Patch.Debug("asterBelt1OrbitIndex :" + asterBelt1OrbitIndex, LogLevel.Debug, Patch.DebugStarGenDeep); Patch.Debug("asterBelt2OrbitIndex :" + asterBelt2OrbitIndex, LogLevel.Debug, Patch.DebugStarGenDeep); //Attach the information to the star star.asterBelt1OrbitIndex = asterBelt1OrbitIndex; star.asterBelt2OrbitIndex = asterBelt2OrbitIndex; star.asterBelt1Radius = Patch.OrbitRadiusPlanetArray[asterBelt1OrbitIndex]; star.asterBelt2Radius = Patch.OrbitRadiusPlanetArray[asterBelt2OrbitIndex]; int infoSeed; int genSeed; // planets pre-generation var nbOfBodiesPreGenerated = 0; var nbOfPlanetsPreGenerated = 0; var planetsPreGeneratedNumber = 1; var nbOfMoonsPreGenerated = 0; var currentOrbitPlanetIndex = 1; var previousOrbitPlanetIndex = 0; int currentOrbitMoonIndex; var beltGenerated = 0; int jumpOrbitMargin; for (var i = 0; i < genSettings.nbOfStellarBodies; i++) { infoSeed = annexSeed.Next(); genSeed = annexSeed.Next(); int planetInfoSeed = 0 + infoSeed; int planetGenSeed = 0 + genSeed; Patch.Debug("bodies generated !" + nbOfBodiesPreGenerated, LogLevel.Debug, Patch.DebugStarGenDeep); Patch.Debug("genSettings.nbOfPlanets + genSettings.nbOfMoons !" + (genSettings.nbOfPlanets + genSettings.nbOfMoons), LogLevel.Debug, Patch.DebugStarGenDeep); bool isGasGiant; var orbitAround = 0; if (asterBelt1OrbitIndex == currentOrbitPlanetIndex) { Patch.Debug("Jump Belt 1 Orbit :", LogLevel.Debug, Patch.DebugStarGenDeep); currentOrbitPlanetIndex++; nbOfBodiesPreGenerated++; beltGenerated++; } if (asterBelt2OrbitIndex == currentOrbitPlanetIndex) { Patch.Debug("Jump Belt 2 Orbit :", LogLevel.Debug, Patch.DebugStarGenDeep); currentOrbitPlanetIndex++; nbOfBodiesPreGenerated++; beltGenerated++; } Patch.Debug("nbOfPlanetsPreGenerated : " + nbOfPlanetsPreGenerated, LogLevel.Debug, Patch.DebugStarGenDeep); Patch.Debug("nbOfPlanets : " + genSettings.nbOfPlanets, LogLevel.Debug, Patch.DebugStarGenDeep); if (nbOfPlanetsPreGenerated < genSettings.nbOfPlanets) { //planets // jumporbit planet jumpOrbitMargin = Patch.OrbitRadiusArrayPlanetNb.Value - (genSettings.nbOfPlanets - nbOfPlanetsPreGenerated); if (currentOrbitPlanetIndex < jumpOrbitMargin && jumpOrbitMargin < currentSettings.JumpOrbitPlanetMax) { if (annexSeed.NextDouble() < currentSettings.ChanceJumpOrbitPlanets) // can jump orbit up to JumpOrbitPlanetIndex { currentOrbitPlanetIndex = UnityRandom.Range(currentOrbitPlanetIndex, currentOrbitPlanetIndex + currentSettings.JumpOrbitPlanetMax); } } previousOrbitPlanetIndex = currentOrbitPlanetIndex; orbitAround = 0; if (nbOfBodiesPreGenerated < genSettings.nbOfTelluricPlanets + beltGenerated) //telluric { isGasGiant = false; } else //gasgiant { isGasGiant = true; } planetsToGenerate.Add(new PlanetForGenerator(nbOfBodiesPreGenerated - beltGenerated, orbitAround, currentOrbitPlanetIndex, planetsPreGeneratedNumber, isGasGiant, planetInfoSeed, planetGenSeed, null)); Patch.Debug("planetsToGenerate --> \n" + planetsToGenerate[nbOfPlanetsPreGenerated].ToStringDebug(), LogLevel.Debug, Patch.DebugStarGen); nbOfPlanetsPreGenerated++; planetsPreGeneratedNumber++; currentOrbitPlanetIndex++; if (isGasGiant) { Patch.Debug("gas Giant generated !", LogLevel.Debug, Patch.DebugStarGen); } else { Patch.Debug("planet generated !", LogLevel.Debug, Patch.DebugStarGen); } } else if (nbOfBodiesPreGenerated < genSettings.nbOfPlanets + genSettings.nbOfMoons + beltGenerated) { Patch.Debug("Moon in generation!", LogLevel.Debug, Patch.DebugStarGen); isGasGiant = false; if (genSettings.nbOfTelluricPlanets != 0 && nbOfBodiesPreGenerated < genSettings.nbOfPlanets + genSettings.nbOfMoonsTelluric + beltGenerated) { // telluric moon orbitAround = UnityRandom.Range(1, genSettings.nbOfTelluricPlanets); Patch.Debug("telluric moon! orbit around : " + orbitAround, LogLevel.Debug, Patch.DebugStarGenDeep); } else { if (genSettings.nbOfGasGiantPlanets != 0) { //gasgiant moon orbitAround = UnityRandom.Range(genSettings.nbOfTelluricPlanets + 1, genSettings.nbOfTelluricPlanets + genSettings.nbOfGasGiantPlanets); Patch.Debug("gas moon! orbit around : " + orbitAround, LogLevel.Debug, Patch.DebugStarGenDeep); } } if (orbitAround <= 0) { Patch.Debug("Issue in moon generation : " + orbitAround, LogLevel.Debug, Patch.DebugStarGen); } jumpOrbitMargin = Patch.OrbitRadiusArrayMoonsNb.Value - (genSettings.nbOfMoons - nbOfMoonsPreGenerated); Patch.Debug("orbitAround - 1 : " + (orbitAround - 1), LogLevel.Debug, Patch.DebugStarGenDeep); Patch.Debug("planetsToGenerate.Count :" + planetsToGenerate.Count, LogLevel.Debug, Patch.DebugStarGenDeep); Patch.Debug("planetsToGenerate[orbitAround - 1] :" + planetsToGenerate[orbitAround - 1].orbitIndex, LogLevel.Debug, Patch.DebugStarGenDeep); int currentPlanetMoonsNb; var currentPlanet = planetsToGenerate[orbitAround - 1]; Patch.Debug("planetsToGenerate nb :" + planetsToGenerate.Count, LogLevel.Debug, Patch.DebugStarGenDeep); currentPlanetMoonsNb = currentPlanet.moons.Count; Patch.Debug("currentPlanetMoonsNb :" + currentPlanetMoonsNb, LogLevel.Debug, Patch.DebugStarGenDeep); if (currentPlanetMoonsNb != 0) { currentOrbitMoonIndex = currentPlanet.moons[currentPlanetMoonsNb - 1].orbitIndex + 1; } else { currentOrbitMoonIndex = 0; } Patch.Debug("currentOrbitMoonIndex : " + currentOrbitMoonIndex, LogLevel.Debug, Patch.DebugStarGenDeep); if (currentOrbitMoonIndex < jumpOrbitMargin && jumpOrbitMargin < currentSettings.JumpOrbitMoonMax) { if (annexSeed.NextDouble() < currentSettings.ChanceJumpOrbitMoons) { // can jump orbit up to JumpOrbitPlanetIndex var oldOrbitIndex = currentOrbitMoonIndex; currentOrbitMoonIndex += UnityRandom.Range(currentOrbitMoonIndex, currentOrbitMoonIndex + currentSettings.JumpOrbitMoonMax); } } currentPlanet.AddMoonInOrbit(nbOfBodiesPreGenerated, currentOrbitMoonIndex, planetGenSeed, planetInfoSeed); nbOfMoonsPreGenerated++; Patch.Debug("moonToGenerate --> +" + genSettings.nbOfMoons + " --> nbOfMoonsPreGenerated : " + nbOfMoonsPreGenerated, LogLevel.Debug, Patch.DebugStarGenDeep); } nbOfBodiesPreGenerated++; } }
public static void DefineNumberOfBodies(PatchForStarSystemGeneration.StarSystemSetting currentSettings, Random annexSeed, PlanetGeneratorSettings genSettings) { // Define how much planets the system have for (var i = 0; i < currentSettings.MaxPlanetNb; i++) { if (annexSeed.NextDouble() <= currentSettings.ChanceTelluricPlanet) { genSettings.nbOfTelluricPlanets++; genSettings.nbOfPlanets++; genSettings.nbOfStellarBodies++; } } // Define how much of the planets are GasGiant for (var j = genSettings.nbOfPlanets; j < currentSettings.MaxPlanetNb; j++) { if (annexSeed.NextDouble() <= currentSettings.ChanceGasGiant) { genSettings.nbOfGasGiantPlanets++; genSettings.nbOfPlanets++; genSettings.nbOfStellarBodies++; } } Patch.Debug("*************************** : \n" + "nbOfPlanets : " + genSettings.nbOfPlanets + "\n" + "nbOfTelluricPlanets : " + genSettings.nbOfTelluricPlanets + "\n" + "nbOfGasGiantPlanets : " + genSettings.nbOfGasGiantPlanets + "\n" + "*************************** ", LogLevel.Debug, Patch.DebugStarGenDeep); Patch.Debug("Definition of Nb of Moons In the system :", LogLevel.Debug, Patch.DebugStarGenDeep); // Define how much moons the system have // Define how much moons the telluric planets have if (genSettings.nbOfTelluricPlanets != 0) { for (var i = 0; i < currentSettings.MaxMoonNb; i++) { if (annexSeed.NextDouble() <= currentSettings.ChanceMoonTelluric) { genSettings.nbOfMoonsTelluric++; genSettings.nbOfMoons++; genSettings.nbOfStellarBodies++; } } } else { Patch.Debug("No Telluric in the system :", LogLevel.Debug, Patch.DebugStarGenDeep); } // Define how much moons the gasGiants planets have if (genSettings.nbOfGasGiantPlanets != 0) { for (var i = genSettings.nbOfMoons; i < currentSettings.MaxMoonNb; i++) { if (annexSeed.NextDouble() <= currentSettings.ChanceGasGiantMoon) { genSettings.nbOfMoonsGasGiant++; genSettings.nbOfMoons++; genSettings.nbOfStellarBodies++; } } } else { Patch.Debug("No Gas Giant in the system :", LogLevel.Debug, Patch.DebugStarGenDeep); } Patch.Debug("*************************** : \n" + "nbOfMoons : " + genSettings.nbOfMoons + "\n" + "nbOfMoonsTelluric : " + genSettings.nbOfMoonsTelluric + "\n" + "nbOfMoonsGasGiant : " + genSettings.nbOfMoonsGasGiant + "\n" + "*************************** ", LogLevel.Debug, Patch.DebugStarGenDeep); Patch.Debug("*************************** :", LogLevel.Debug, Patch.DebugStarGenDeep); }