示例#1
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);
        }
示例#2
0
        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();
        }