private void SendUpdate() { Unit[] currentlyDeadUnits = new Unit[this.deadUnits.Count]; for (int i = 0; i < currentlyDeadUnits.Length; i++) { currentlyDeadUnits[i] = this.deadUnits.Dequeue(); } List <UnitDTO> units = UsersManager.CurrentPlayer.Units.Where(u => u.Modified).Concat(currentlyDeadUnits).Select(UnitFactory.ToDto).ToList(); List <ResourceProviderDTO> resProvs = UsersManager.CurrentPlayer.ResourceProviders.Where(rp => rp.Modified).Select(ResProvFactory.ToDto).ToList(); ResourceSetDTO resSet = ResourceSetFactory.ToDto(UsersManager.CurrentPlayer.ResourceSet); ICollection <EntityDTO> modifiedEntities = units.Concat <EntityDTO>(resProvs).ToArray(); if (modifiedEntities.Count > 0) { Client.Socket.Writer.Send(Message.Create(Service.UpdateEntities, modifiedEntities)); } foreach (var unit in UsersManager.CurrentPlayer.Units) { unit.Modified = false; } foreach (var rp in UsersManager.CurrentPlayer.ResourceProviders) { rp.Modified = false; } Client.Socket.Writer.Send(Message.Create(Service.UpdateResourceSet, resSet)); }
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); }