public void AssignPlayerObjectWithShard(ApplicationUser user, int shardId) { var pO = new PlayerObject(); pO.Units = new Units(); pO.Buildings = new Buildings { HeadQuartersLevel = 1, BarracksLevel = 0, ResearchCentreLevel = 0, SolarCollectorLevel = 1, CrystalExtractorLevel = 1, MetalScrapperLevel = 1 }; // TODO: Extract into logic pO.Points = new Points { PointsCombat = 0, PointsNeutral = 0, PointsPlanet = (pO.Buildings.HeadQuartersLevel*100) + (pO.Buildings.SolarCollectorLevel*10) + (pO.Buildings.CrystalExtractorLevel*10) + (pO.Buildings.MetalScrapperLevel*10) }; // TODO: Extract into logic pO.Resources = new Resources { Energy = 350, Crystal = 350, Metal = 350 }; pO.Technologies = new Technologies(); Planet planet; var shard = this.shards.All().FirstOrDefault(x => x.Id == shardId); if (shard != null) { planet = shard.Planets.Where(y => !y.IsPopulated) .OrderBy(x => Guid.NewGuid()) .FirstOrDefault(); } else { var randomShard = this.shards.All() .Where(x => x.Planets.Any(p => !p.IsPopulated && !x.IsLocked)) .OrderBy(x => Guid.NewGuid()) .First(); planet = randomShard.Planets.Where(y => !y.IsPopulated) .OrderBy(x => Guid.NewGuid()) .FirstOrDefault(); } planet.IsPopulated = true; planets.Update(planet); planets.SaveChanges(); pO.PlanetId = planet.Id; user.PlayerObject = pO; }
public void AssignPlayerObject(ApplicationUser user) { this.AssignPlayerObjectWithShard(user, -1); }