public void ControllPoweruppLife(GameTime timer)
        {
            List <int> balls = ComponentManager.Instance.GetAllEntitiesWithComponentType <BallOfSpikesPowerUpComponent>();

            if (balls != null)
            {
                foreach (var ball in balls)
                {
                    BallOfSpikesPowerUpComponent b = ComponentManager.Instance.GetEntityComponent <BallOfSpikesPowerUpComponent>(ball);
                    double test = b.lifeTime - timer.ElapsedGameTime.TotalSeconds;
                    if (test <= 0)
                    {
                        DrawableComponent            newDraw = ComponentManager.Instance.GetEntityComponent <DrawableComponent>(ball);
                        BallOfSpikesPowerUpComponent pow     = ComponentManager.Instance.GetEntityComponent <BallOfSpikesPowerUpComponent>(ball);
                        newDraw.texture = b.prevTexture;
                        if (b.anime != null)
                        {
                            ComponentManager.Instance.AddComponentToEntity(ball, b.anime);
                        }
                        ComponentManager.Instance.RemoveComponentFromEntity(ball, b);
                    }
                    b.lifeTime = test;
                }
            }
        }
        /// <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;
            }
        }
        /// <summary>
        /// A method for handling player versus player collision
        /// </summary>
        /// <param name="ent1"> ID of entity 1 </param>
        /// <param name="ent2"> ID of entity 2 </param>
        /// <param name="gt"></param>
        private void PlayerVsPlayerCollision(int ent1, int ent2, GameTime gt)
        {
            PlayerComponent              pcp1  = ComponentManager.Instance.GetEntityComponent <PlayerComponent>(ent1);
            PlayerComponent              pcp2  = ComponentManager.Instance.GetEntityComponent <PlayerComponent>(ent2);
            PositionComponent            pos1  = ComponentManager.Instance.GetEntityComponent <PositionComponent>(ent1);
            PositionComponent            pos2  = ComponentManager.Instance.GetEntityComponent <PositionComponent>(ent2);
            CollisionRectangleComponent  crc1  = ComponentManager.Instance.GetEntityComponent <CollisionRectangleComponent>(ent1);
            CollisionRectangleComponent  crc2  = ComponentManager.Instance.GetEntityComponent <CollisionRectangleComponent>(ent2);
            DirectionComponent           dcp1  = ComponentManager.Instance.GetEntityComponent <DirectionComponent>(ent1);
            DirectionComponent           dcp2  = ComponentManager.Instance.GetEntityComponent <DirectionComponent>(ent2);
            VelocityComponent            vcp1  = ComponentManager.Instance.GetEntityComponent <VelocityComponent>(ent1);
            VelocityComponent            vcp2  = ComponentManager.Instance.GetEntityComponent <VelocityComponent>(ent2);
            BallOfSpikesPowerUpComponent bspc1 = ComponentManager.Instance.GetEntityComponent <BallOfSpikesPowerUpComponent>(ent1);
            BallOfSpikesPowerUpComponent bspc2 = ComponentManager.Instance.GetEntityComponent <BallOfSpikesPowerUpComponent>(ent2);

            if (pos1.position.Y + crc1.CollisionRec.Height * 0.5f < pos2.position.Y)
            { // entity 1 is above entity 2
                if (!pcp1.isFalling && !pcp2.isFalling)
                {
                    if (dcp2.directio != Direction.Still)
                    {
                        changeDir(dcp2);
                        dcp2.preDir   = dcp2.directio;
                        dcp2.directio = Direction.Still;
                    }
                    vcp2.velocity.Y = 0;
                    vcp1.velocity.Y = -200f;
                    ComponentManager.Instance.AddComponentToEntity(ent2, new SoundEffectComponent("hit"));
                    ComponentManager.Instance.AddComponentToEntity(ent1, new SoundEffectComponent("grunt"));

                    //if enitity 2 dosent have ballofspikePUPcomponent loose life
                    if (bspc2 == null)
                    {
                        HealthComponent hc2 = ComponentManager.Instance.GetEntityComponent <HealthComponent>(ent2);
                        //hc2.health -= 1;
                        pcp2.isFalling = true;
                    }
                    //else if enitity 1 dosent have ballofspikePUPcomponent loose life
                    else if (bspc1 == null)
                    {
                        HealthComponent hc1 = ComponentManager.Instance.GetEntityComponent <HealthComponent>(ent1);
                        //hc1.health -= 1;
                        pcp1.isFalling = true;
                    }
                }
            }
            else if (pos2.position.Y + crc2.CollisionRec.Height * 0.5f < pos1.position.Y)
            {   // entity 2 is above entity 1
                if (!pcp1.isFalling && !pcp2.isFalling)
                {
                    if (dcp1.directio != Direction.Still)
                    {
                        changeDir(dcp1);
                        dcp1.preDir   = dcp1.directio;
                        dcp1.directio = Direction.Still;
                    }
                    vcp1.velocity.Y = 0;
                    vcp2.velocity.Y = -200f;

                    ComponentManager.Instance.AddComponentToEntity(ent1, new SoundEffectComponent("hit"));
                    ComponentManager.Instance.AddComponentToEntity(ent2, new SoundEffectComponent("grunt"));

                    //if enitity 1 dosent have ballofspikePUPcomponent loose life
                    if (bspc1 == null)
                    {
                        HealthComponent hc1 = ComponentManager.Instance.GetEntityComponent <HealthComponent>(ent1);
                        //hc1.health -= 1;
                        pcp1.isFalling = true;
                    }
                    //else if enitity 2 dosent have ballofspikePUPcomponent loose life
                    else if (bspc2 == null)
                    {
                        HealthComponent hc2 = ComponentManager.Instance.GetEntityComponent <HealthComponent>(ent2);
                        //hc2.health -= 1;
                        pcp2.isFalling = true;
                    }
                }
            }
            else // both are on the same "level"
            {
                if (!pcp2.isFalling && !pcp1.isFalling)
                {
                    if (dcp1.directio != Direction.Still)
                    {
                        changeDir(dcp1);
                        dcp1.preDir   = dcp1.directio;
                        dcp1.directio = Direction.Still;
                    }
                    vcp1.velocity.Y = 0;
                    if (dcp2.directio != Direction.Still)
                    {
                        changeDir(dcp2);
                        dcp2.preDir   = dcp2.directio;
                        dcp2.directio = Direction.Still;
                    }
                    vcp2.velocity.Y = 0;

                    ComponentManager.Instance.AddComponentToEntity(ent2, new SoundEffectComponent("sidehit"));
                    ComponentManager.Instance.AddComponentToEntity(ent1, new SoundEffectComponent("sidehit"));

                    //If enitity 1 dosent have ballofspikePUPcomponent loose life
                    if (bspc1 == null)
                    {
                        HealthComponent hc1 = ComponentManager.Instance.GetEntityComponent <HealthComponent>(ent1);
                        //hc1.health -= 1;
                        pcp1.isFalling = true;
                    }
                    //If enitity 2 dosent have ballofspikePUPcomponent loose life
                    if (bspc2 == null)
                    {
                        HealthComponent hc2 = ComponentManager.Instance.GetEntityComponent <HealthComponent>(ent2);
                        //hc2.health -= 1;
                        pcp2.isFalling = true;
                    }
                    pushAway(ent1, ent2, gt);
                }
            }
        }