Exemple #1
0
        private void UpdateAnimationState(StateChangeEvent stateChangeEvent)
        {
            var entityId = stateChangeEvent.EntityId;

            if (!ComponentManager.ContainsAllComponents(
                    entityId,
                    typeof(SpriteAnimationBindings)
                    ))
            {
                return;
            }
            var animationBindings = ComponentManager.GetEntityComponentOrDefault <SpriteAnimationBindings>(entityId);

            var spriteAnimation = ComponentManager.GetEntityComponentOrDefault <SpriteAnimationComponent>(entityId);

            if (spriteAnimation == null)
            {
                spriteAnimation = new SpriteAnimationComponent();
                ComponentManager.AddComponentToEntity(spriteAnimation, entityId);
                spriteAnimation.AnimationStarted = stateChangeEvent.EventTime;
            }

            var binding = animationBindings.Bindings
                          .FirstOrDefault(e => BindingsMatch(e.StateConditions, stateChangeEvent.NewState));

            if (binding == null)
            {
                spriteAnimation.NextAnimatedState = null;
            }
            else
            {
                spriteAnimation.NextAnimatedState = binding;
            }
        }
        /// <summary>
        /// Creates Power Upp component and adds it to an entity
        /// </summary>
        /// <param name="id"></param>
        public void OnPowerUpPicup(int id)
        {
            BallOfSpikesPowerUpComponent temp = ComponentManager.Instance.GetEntityComponent <BallOfSpikesPowerUpComponent>(id);

            if (temp == null)
            {
                ComponentManager             test    = ComponentManager.Instance;
                BallOfSpikesPowerUpComponent ball    = new BallOfSpikesPowerUpComponent(5);
                DrawableComponent            newDraw = test.GetEntityComponent <DrawableComponent>(id);
                AnimationComponent           anima   = test.GetEntityComponent <AnimationComponent>(id);
                ball.prevTexture = newDraw.texture;
                newDraw.texture  = ball.SpikeTexture;
                if (anima != null)
                {
                    ball.anime = anima;
                    ComponentManager.Instance.RemoveComponentFromEntity(id, anima);
                }
                test.AddComponentToEntity(id, ball);


                CollisionRectangleComponent rec = ComponentManager.Instance.GetEntityComponent <CollisionRectangleComponent>(id);
                PositionComponent           pos = ComponentManager.Instance.GetEntityComponent <PositionComponent>(id);
                rec.CollisionRec   = new Rectangle((int)pos.position.X, (int)pos.position.Y, newDraw.texture.Width, newDraw.texture.Height);
                rec.CollisionRec.X = (int)pos.position.X;
                rec.CollisionRec.Y = (int)pos.position.Y;

                rec.CollisionRec.Width  = newDraw.texture.Width;
                rec.CollisionRec.Height = newDraw.texture.Height;
            }
            else
            {
                temp.lifeTime += 10;
            }
        }
        private AnimationComponent GetOrCreateDefault(int entityId)
        {
            var animationComponent = ComponentManager.GetEntityComponentOrDefault <AnimationComponent>(entityId);

            if (animationComponent == null)
            {
                animationComponent = new AnimationComponent();
                ComponentManager.AddComponentToEntity(animationComponent, entityId);
            }
            return(animationComponent);
        }
        /*
         * This function tags the pickup for deletion.
         * Should only be called when the pickup was actually used up.
         */
        private void DeletePickup(int pickup)
        {
            var tagComponent = ComponentManager.GetEntityComponentOrDefault <TagComponent>(pickup);

            if (tagComponent == null)
            {
                tagComponent = new TagComponent();
                ComponentManager.AddComponentToEntity(tagComponent, pickup);
            }
            tagComponent.Tags.Add(Tag.Delete);
        }
Exemple #5
0
        // This method is called in the handleFireWeapon method to create the bullet
        // that is fired from the entity. It will give the bullet all the necessary components.
        public void CreateBullet(InputEvent inputEvent, SpriteComponent bulletSpriteComponent, WeaponComponent weaponComponent, MoveComponent moveComponent, RenderComponent renderComponent, PositionComponent positionComponent)
        {
            // We create an new position instance for the bullet that starts from the player but should
            // not be the same as the players, as we found out when we did our test, otherwise the player
            // will follow the same way ass the bullet.
            var bulletPositionComponent = new PositionComponent()
            {
                Position = new Vector2(positionComponent.Position.X, positionComponent.Position.Y),
                ZIndex   = positionComponent.ZIndex
            };


            int bulletEntityId = EntityManager.GetEntityManager().NewEntity();

            var bulletRenderComponent = new RenderComponent()
            {
                DimensionsComponent = new DimensionsComponent()
                {
                    Height = 10,
                    Width  = 10
                }
            };
            var bulletMoveComponent = new MoveComponent()
            {
                AccelerationSpeed = 0,
                Speed             = 1000,
                MaxVelocitySpeed  = 1000,
                Direction         = moveComponent.Direction
            };
            var bulletComponent = new BulletComponent()
            {
                Damage          = weaponComponent.Damage,
                ShooterEntityId = inputEvent.EntityId
            };
            var bulletCollisionComponent = new CollisionComponent();
            var animationComponent       = new AnimationComponent();

            ComponentManager.AddComponentToEntity(bulletPositionComponent, bulletEntityId);
            ComponentManager.AddComponentToEntity(bulletComponent, bulletEntityId);
            ComponentManager.AddComponentToEntity(bulletSpriteComponent, bulletEntityId);
            ComponentManager.AddComponentToEntity(bulletMoveComponent, bulletEntityId);
            ComponentManager.AddComponentToEntity(bulletRenderComponent, bulletEntityId);
            ComponentManager.AddComponentToEntity(bulletCollisionComponent, bulletEntityId);
            ComponentManager.AddComponentToEntity(animationComponent, bulletEntityId);

            var animation = new GeneralAnimation()
            {
                AnimationType    = "BulletAnimation",
                StartOfAnimation = inputEvent.EventTime,
                Length           = 2000,
                Unique           = true
            };

            NewBulletAnimation(animation, bulletEntityId);
            animationComponent.Animations.Add(animation);
        }
Exemple #6
0
        private void CreateEntities()
        {
            var playerSprite = Content.Load <Texture2D>("Illuminati");
            var enemySprite  = Content.Load <Texture2D>("Dorito");


            ComponentManager cm = ComponentManager.Instance;



            //Create Player
            int playerId = cm.CreateNewEntity(new SpriteComponent()
            {
                Texture = playerSprite, Rectangle = new Rectangle(0, 0, 30, 30)
            });

            cm.AddComponentToEntity(playerId, new PositionComponent()
            {
                Position = new Vector2(0, 0)
            });
            cm.AddComponentToEntity(playerId, new InputComponent()
            {
                Up = Keys.W, Down = Keys.S, Left = Keys.A, Right = Keys.D
            });
            cm.AddComponentToEntity(playerId, new CollisionComponent());
            cm.AddComponentToEntity(playerId, new PlayerComponent());



            //Create Enemy
            int enemyId = cm.CreateNewEntity(new SpriteComponent()
            {
                Texture = enemySprite, Rectangle = new Rectangle(50, 60, 30, 30)
            });

            cm.AddComponentToEntity(enemyId, new PositionComponent()
            {
                Position = new Vector2(20, 0)
            });
            cm.AddComponentToEntity(enemyId, new CollisionComponent());
            cm.AddComponentToEntity(enemyId, new EnemyComponent());
        }