private Player MapPlayerDto(PlayerDTO playerDto) { ResourceSet resSet = ResourceSetFactory.FromDto(playerDto.ResourceSet); var player = new Player(playerDto.Id, playerDto.Username, playerDto.WorldSeed, resSet); foreach (var unitDto in playerDto.Units) { var unit = UnitFactory.FromDto(unitDto); if (unit == null) { continue; } player.Units.Add(unit); } foreach (var resProvDto in playerDto.ResourceProviders) { var resProv = ResProvFactory.FromDto(resProvDto); if (resProv == null) { continue; } player.ResourceProviders.Add(resProv); } player.MapEntities(); return(player); }
public override void LoadContent() { this.deadUnits = new Queue <Unit>(); this.active = true; var aspectRatio = DisplayManager.Instance.Dimensions.X / DisplayManager.Instance.Dimensions.Y; this.camera = new CameraPerspective( aspectRatio, new Vector3(50, 30, 0)); this.terrain = new HomeTerrain(DisplayManager.Instance.GraphicsDevice, UsersManager.CurrentPlayer.HomeSeed, new Vector3(-400, 0, -400)); this.skybox = new Skybox(DisplayManager.Instance.GraphicsDevice); if (!UsersManager.CurrentPlayer.AllEntities.Any()) { var random = new Random(); var numberOfTrees = random.Next(300, 400); for (int i = 0; i < numberOfTrees; i++) { var x = random.Next(-200, 200); var z = random.Next(-200, 200); var weight = random.Next(5, 10); var y = 100; var tree = new Tree(Guid.NewGuid(), UsersManager.CurrentPlayer.Id, new Vector3(x, y, z), Quaternion.Identity, weight); Client.Socket.Writer.Send(Message.Create(Service.AddResProv, ResProvFactory.ToDto(tree))); UsersManager.CurrentPlayer.ResourceProviders.Add(tree); UsersManager.CurrentPlayer.AllEntities.Add(tree); } } else { foreach (var entity in UsersManager.CurrentPlayer.AllEntities) { entity.LoadModel(); } } this.updateThread = new Thread(this.SendUpdates); this.updateThread.Start(); }