Пример #1
0
        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));
        }
Пример #2
0
        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);
        }