public GetGalaxyResponse GetGalaxyContainer(string galaxyName) { var result = new GetGalaxyResponse(); result.GalaxyContainer = _wrapper.GalaxyContainerRepository.GetOne <GalaxyContainer>(o => o.Name == galaxyName); result.Success = true; return(result); }
public GetGalaxyResponse GetDefaultGalaxy() { var result = new GetGalaxyResponse(); result.GalaxyContainer = _wrapper.GalaxyContainerRepository.GetOne <GalaxyContainer>(f => f.Name == "Default"); if (result.GalaxyContainer != null) { result.Success = true; } else { result.Success = false; } return(result); }
public GetGalaxyResponse GetFirstGalaxy() { var result = new GetGalaxyResponse(); result.GalaxyContainer = _wrapper.GalaxyContainerRepository.GetAll <GalaxyContainer>(f => f.Id != null).OrderBy(o => o.AddedAtUtc).SingleOrDefault(); if (result.GalaxyContainer != null) { result.Success = true; } else { result.Success = false; } return(result); }
public void CreateDefaultSpaceObjectsForAllStarsInDefaultGalaxyIfNecessary() { long count = _wrapper.SpaceObjectRepository.Count <SpaceObject>(f => f.ObjectType == "Planet"); if (count == 0) { var indexDefinition = Builders <SpaceObject> .IndexKeys.Combine( Builders <SpaceObject> .IndexKeys.Ascending(f => f.X), Builders <SpaceObject> .IndexKeys.Ascending(f => f.Y)); var model = new CreateIndexModel <SpaceObject>(indexDefinition, null); _mongoClient.GetDatabase("SpacePlanets").GetCollection <SpaceObject>("spaceObjects", null).Indexes.CreateOne(model); GetGalaxyResponse galaxyResponse = this.GetDefaultGalaxy(); if (galaxyResponse.Success) { List <Star> stars = galaxyResponse.GalaxyContainer.Galaxy.Stars; /// Create a variable to store how many warpgates Guid firstGateId = Guid.Empty; Guid lastGateOutId = Guid.Empty; Guid nextGateId = Guid.NewGuid(); int gateIteration = 0; foreach (var star in stars) { SpaceObject warpGateIn = new SpaceObject("Warpgate"); warpGateIn.Id = nextGateId; nextGateId = Guid.NewGuid(); SpaceObject warpGateOut = new SpaceObject("Warpgate"); warpGateOut.DestinationSpaceObjectId = nextGateId; if (gateIteration == 0) { firstGateId = warpGateIn.Id; } else { warpGateIn.DestinationSpaceObjectId = lastGateOutId; } warpGateIn.X = star.X; warpGateIn.Y = star.Y + 1; warpGateIn.Z = star.Z; warpGateOut.X = star.X; warpGateOut.Y = star.Y - 1; warpGateOut.Z = star.Z; lastGateOutId = warpGateOut.Id; gateIteration++; if (gateIteration == stars.Count) { warpGateOut.DestinationSpaceObjectId = firstGateId; } _wrapper.SpaceObjectRepository.AddOne <SpaceObject>(warpGateIn); _wrapper.SpaceObjectRepository.AddOne <SpaceObject>(warpGateOut); var generationOptions = StarformCore.SystemGenerationOptions.DefaultOptions; var accrete = new StarformCore.Accrete(generationOptions.CloudEccentricity, generationOptions.GasDensityRatio); StarformCore.Data.Star starformStar = new StarformCore.Data.Star(star.Name, star.AgeYears, star.Life, star.EcosphereRadiusAU, star.Luminosity, star.Mass, star.BinaryMass, star.SemiMajorAxisAU, star.Eccentricity); double outer_planet_limit = StarformCore.Generator.GetOuterLimit(starformStar); double outer_dust_limit = StarformCore.Generator.GetStellarDustLimit(star.Mass); var seedSystem = accrete.GetPlanetaryBodies(star.Mass, star.Luminosity, 0.0, outer_dust_limit, outer_planet_limit, generationOptions.DustDensityCoeff, null, true); var planets = StarformCore.Generator.GeneratePlanets(starformStar, seedSystem, false, StarformCore.SystemGenerationOptions.DefaultOptions); var stellarSystem = new StarformCore.Data.StellarSystem() { Options = StarformCore.SystemGenerationOptions.DefaultOptions, Planets = planets, Name = star.Name, Star = starformStar }; // seed for generating planet locations Random random = new Random(1); List <Vector3> vectors = new List <Vector3>(); foreach (var planet in stellarSystem.Planets) { int minX = star.X - 25; int maxX = star.X + 25; int minY = star.Y - 25; int maxY = star.Y + 25; int minZ = star.Z - 25; int maxZ = star.Z + 25; int planetX = random.Next(minX, maxX); int planetY = random.Next(minY, maxY); int planetZ = random.Next(minZ, maxZ); SpaceObject planetObject = new SpaceObject("Planet", Guid.NewGuid().ToString()); planetObject.X = planetX; planetObject.Y = planetY; planetObject.Z = (int)planetZ; _wrapper.SpaceObjectRepository.AddOne <SpaceObject>(planetObject); PlanetMetadata planetMetadata = new PlanetMetadata(); planetMetadata.SpaceObjectId = planetObject.Id; planetMetadata.Metadata = planet; _wrapper.PlanetMetadataRepository.AddOne <PlanetMetadata>(planetMetadata); } } } } }