Exemplo n.º 1
0
        //The multitude of options here is for easy debug purposes
        public void CreatePlayer(string name, int entityId, ActionBindings actionBindings,
                                 Vector2 position = default(Vector2), bool movable           = true, bool useDefaultMoveComponent = true,
                                 MoveComponent customMoveComponent = null, bool cameraFollow = false, bool collision              = false,
                                 bool disabled = false, bool isCaged = false, int cageId = 0)
        {
            if (disabled)
            {
                return;
            }
            if (position == default(Vector2))
            {
                position = new Vector2(150, 150);
            }


            var renderComponent = new RenderComponent()
            {
                DimensionsComponent = new DimensionsComponent()
                {
                    Height = 100,
                    Width  = 100
                },
            };

            var positionComponent = new PositionComponent()
            {
                Position = position, ZIndex = 10
            };

            var dampeningComponent        = new InertiaDampeningComponent();
            var backwardsPenaltyComponent = new BackwardsPenaltyComponent();

            ComponentManager.Instance.AddComponentToEntity(dampeningComponent, entityId);
            ComponentManager.Instance.AddComponentToEntity(backwardsPenaltyComponent, entityId);

            var spriteComponent = new SpriteComponent()
            {
                SpriteName = "topDownSoldier",
                Scale      = 1
            };
            var light = new LightComponent()
            {
                Light = new Spotlight()
                {
                    Position   = new Vector2(150, 150),
                    Scale      = new Vector2(850f),
                    Radius     = (float)0.0001,
                    Intensity  = (float)0.6,
                    ShadowType = ShadowType.Solid // Will not lit hulls themselves
                }
            };

            var sound = new SoundComponent()
            {
                SoundEffectName = "walking"
            };

//            var animation = new SpriteAnimationComponent()
//            {
////                Spritesheet = Content.Load<Texture2D>("blood"),
////                SpritesheetSize = new Point(3, 3),
////                MillisecondsPerFrame = 30,
//                AnimationStarted = 0,
//                CurrentAnimatedState =
//            };
//            ComponentManager.Instance.AddComponentToEntity(animation, entityId);

            var animationBindings = new SpriteAnimationBindingsBuilder()
                                    .Binding(
                new SpriteAnimationBindingBuilder()
                .Positions(new Point(0, 0), new Point(1000, 1000))
                .StateConditions(State.WalkingForward)
                .Length(30)
                .Build()
                )
                                    .Build();

            ComponentManager.Instance.AddComponentToEntity(sound, entityId);
            ComponentManager.Instance.AddComponentToEntity(renderComponent, entityId);
            ComponentManager.Instance.AddComponentToEntity(positionComponent, entityId);
            ComponentManager.Instance.AddComponentToEntity(spriteComponent, entityId);
            ComponentManager.Instance.AddComponentToEntity(actionBindings, entityId);
            ComponentManager.Instance.AddComponentToEntity(light, entityId);
            ComponentManager.Instance.AddComponentToEntity(animationBindings, entityId);

            if (movable && useDefaultMoveComponent)
            {
                var moveComponent = new MoveComponent()
                {
                    MaxVelocitySpeed  = 200,
                    AccelerationSpeed = 380,
                    RotationSpeed     = 4,
                    Direction         = new Random(DateTime.Now.Millisecond).Next(0, 40) / 10
                };
                ComponentManager.Instance.AddComponentToEntity(moveComponent, entityId);
            }
            else if (movable && customMoveComponent != null)
            {
                ComponentManager.Instance.AddComponentToEntity(customMoveComponent, entityId);
            }

            if (collision)
            {
                var collisionComponent = new CollisionComponent()
                {
                    spriteBoundingRectangle = new Rectangle(30, 20, 70, 60)
                };
                ComponentManager.Instance.AddComponentToEntity(collisionComponent, entityId);
            }
            if (cameraFollow)
            {
                var cameraFollowComponent = new CameraFollowComponent();
                ComponentManager.Instance.AddComponentToEntity(cameraFollowComponent, entityId);
            }

            if (isCaged)
            {
                var cageComponent = new CageComponent()
                {
                    CageId = cageId
                };
                ComponentManager.Instance.AddComponentToEntity(cageComponent, entityId);
            }

            var playerComponent = new PlayerComponent()
            {
                Name = name
            };

            ComponentManager.Instance.AddComponentToEntity(playerComponent, entityId);
            var healthComponent = new HealthComponent()
            {
                CurrentHealth = new Random().Next(0, 100)
            };

            ComponentManager.Instance.AddComponentToEntity(healthComponent, entityId);
            var weaponComponent = new WeaponComponent()
            {
                Damage = 10
            };

            ComponentManager.Instance.AddComponentToEntity(weaponComponent, entityId);
        }
        //The multitude of options here is for easy debug purposes
        public void CreatePlayer(int entityId, ActionBindings actionBindings, Vector2 position = default(Vector2), bool movable = true, bool useDefaultMoveComponent = true, MoveComponent customMoveComponent = null, bool cameraFollow = false, bool collision = false, bool disabled = false, bool isCaged = false, int cageId = 0)
        {
            if (disabled)
            {
                return;
            }
            if (position == default(Vector2))
            {
                position = new Vector2(150, 150);
            }
            //Initializing first, movable, entity
            //var renderComponent = new RenderComponentBuilder()
            //    //.Position(150 + new Random(DateTime.Now.Millisecond).Next(0, 500), 150, 10)
            //    .Position(position.X, position.Y, 10)
            //    //.Radius(60)
            //    .Dimensions(100, 100)
            //    .Build();

            var renderComponent3 = new RenderComponent()
            {
                DimensionsComponent = new DimensionsComponent()
                {
                    Height = 100, Width = 100
                }, Radius = 60
            };
            var positionComponent3 = new PositionComponent()
            {
                Position = position, ZIndex = 10
            };

            ComponentManager.Instance.AddComponentToEntity(renderComponent3, entityId);
            ComponentManager.Instance.AddComponentToEntity(positionComponent3, entityId);


            var spriteComponent = new SpriteComponent()
            {
                SpriteName = "topDownSoldier"
            };
            var light = new LightComponent()
            {
                Light = new Spotlight()
                {
                    Position   = new Vector2(150, 150),
                    Scale      = new Vector2(850f),
                    Radius     = (float)0.0001,
                    Intensity  = (float)0.6,
                    ShadowType = ShadowType.Solid // Will not lit hulls themselves
                }
            };

            var sound = new SoundComponent()
            {
                SoundEffectName = "walking"
            };

            ComponentManager.Instance.AddComponentToEntity(sound, entityId);
            // ComponentManager.Instance.AddComponentToEntity(renderComponent, entityId);
            ComponentManager.Instance.AddComponentToEntity(spriteComponent, entityId);
            ComponentManager.Instance.AddComponentToEntity(actionBindings, entityId);
            ComponentManager.Instance.AddComponentToEntity(light, entityId);

            if (movable && useDefaultMoveComponent)
            {
                var moveComponent = new MoveComponent()
                {
                    MaxVelocitySpeed  = 200,
                    AccelerationSpeed = 380,
                    RotationSpeed     = 4,
                    Direction         = new Random(DateTime.Now.Millisecond).Next(0, 40) / 10
                };
                ComponentManager.Instance.AddComponentToEntity(moveComponent, entityId);
            }
            else if (movable && customMoveComponent != null)
            {
                ComponentManager.Instance.AddComponentToEntity(customMoveComponent, entityId);
            }

            if (collision)
            {
                var collisionComponent = new CollisionComponent()
                {
                    spriteBoundingRectangle = new Rectangle(30, 20, 70, 60)
                };
                ComponentManager.Instance.AddComponentToEntity(collisionComponent, entityId);
            }
            if (cameraFollow)
            {
                var cameraFollowComponent = new CameraFollowComponent();
                ComponentManager.Instance.AddComponentToEntity(cameraFollowComponent, entityId);
            }

            if (isCaged)
            {
                var cageComponent = new CageComponent()
                {
                    CageId = cageId
                };
                ComponentManager.Instance.AddComponentToEntity(cageComponent, entityId);
            }

            var playerComponent = new PlayerComponent()
            {
                Name = entityId.ToString()
            };

            ComponentManager.Instance.AddComponentToEntity(playerComponent, entityId);
            var healthComponent = new HealthComponent()
            {
                CurrentHealth = new Random().Next(0, 100)
            };

            ComponentManager.Instance.AddComponentToEntity(healthComponent, entityId);
            var weaponComponent = new WeaponComponent()
            {
                Damage = 10
            };

            ComponentManager.Instance.AddComponentToEntity(weaponComponent, entityId);
        }