public void Add(Powerup e)
 {
     toAdd.Add(e);
 }
 public void Die()
 {
     if (alive)
     {
         currentPowerup = null;
         alive = false;
         respawnTimer = respawnTime;
         babyLife = maxBabyLife;
         Baby = null;
         pos.Y = Config.screenH + 200;
         //if (MenuSystem.gameType != GameType.thief)
         {
             lives--;
         }
         spawnWidth = 0;
     }
 }
 public void Remove(Powerup e)
 {
     toRemove.Add(e);
 }
        public override void Update(float dt)
        {
            if (explodeTime >= 0)
            {
                explodeTime += dt / 1000;
            }
            if (spawnWidth > 1)
            {
                particleTimer += dt / 1000;
                if (particleTimer > 0.004f && lives > 0)
                {
                    Vector2 particle = new Vector2(
                         (int)(spawnPoint.X - (spawnWidth / 2)) + (Player.width / 2)
                         + Config.rand.Next((int)spawnWidth),
                         Config.rand.Next((int)(spawnPoint.Y + (height))));
                    World.ParticleManager.AddParticle(new SpawnParticle(particle));
                    particleTimer = 0;
                }
            }

            if (explodeTime > 0.025f)
            {
                lives = 0;
                Die();
                if (MenuSystem.gameType == GameType.thief ||
                    MenuSystem.gameType == GameType.hotPotato)
                {
                    w.SpawnBaby();
                }
                explodeTime = -1;
            }

            if (alive)
            {
                if (holdingBaby &&
                    MenuSystem.gameType == GameType.thief)
                {
                    pointTimer += dt / 1000;

                    if (pointTimer > 0.5f)
                    {
                        pointTimer = 0;
                        score += 25;
                    }
                }
                else
                {
                    pointTimer = 0;
                }

                if (MenuSystem.gameType == GameType.thief ||
                    MenuSystem.gameType == GameType.vsSurvival)
                {
                    if (Baby != null)
                    {
                        if (Baby.splodin)
                        {
                            BabyExplode();
                        }
                    }
                }

                if (automateBullet > 0)
                { automateBullet -= dt / 1000; }
                else
                { automateBullet = 0; }

                if (reloadTimer > 0)
                { reloadTimer -= dt / 1000; }
                else if (reloadTimer < 0)
                { reloadTimer = 0; bullets = maxBullets; }

                if (recoilTimer > 0)
                { recoilTimer -= dt / 1000; }
                else
                {
                    recoilTimer = 0;
                    if(testAnim.CurrentAnimation == "shoot")
                    { testAnim.Play("idle"); }
                }

                if (babyLife <= 0)
                {
                    lives = 0;
                    w.Explode();
                    BabyExplode();
                    GameOver.death = DeathType.life;
                }

                if (holdingBaby)
                {
                    switch (index)
                    {
                        case 0:
                            testAnim.SwapSpriteSheet(TextureManager.testBaby);
                            break;
                        case 1:
                            testAnim.SwapSpriteSheet(TextureManager.santaBaby);
                            break;
                        case 2:
                            testAnim.SwapSpriteSheet(TextureManager.bumBaby);
                            break;
                        case 3:
                            testAnim.SwapSpriteSheet(TextureManager.pedoBaby);
                            break;
                        default:
                            testAnim.SwapSpriteSheet(TextureManager.testBaby);
                            break;
                    }
                }
                else
                {
                    switch (index)
                    {
                        case 0:
                            testAnim.SwapSpriteSheet(TextureManager.testRun);
                            break;
                        case 1:
                           testAnim.SwapSpriteSheet(TextureManager.santa);
                            break;
                        case 2:
                            testAnim.SwapSpriteSheet(TextureManager.bum);
                            break;
                        case 3:
                            testAnim.SwapSpriteSheet(TextureManager.pedo);
                            break;
                        default:
                            testAnim.SwapSpriteSheet(TextureManager.testRun);
                            break;
                    }

                    if (Baby != null)
                    {
                        Baby.Life = babyLife;
                    }
                }

                if (!shaking)
                {
                    if (holdingBaby ||
                        (!holdingBaby && Baby != null))
                    {
                        if (babyLife > 0)
                        {
                            if (Powerup is Pacifier)
                            {
                                babyLife -= (dt / 1000) * (babyDecay / 2.5f);
                            }
                            else
                            {
                                babyLife -= (dt / 1000) * babyDecay;
                            }
                        }
                    }
                    shakeSound.Stop();
                }
                else
                {
                    if (shakeSound.State != SoundState.Playing)
                    {
                        if (!automate)
                        {
                            shakeSound.Play();
                            shakeSound.Volume = ((shakeSpeed / 100.0f) * .7f) + .3f;
                            if (shakeSpeed == 0)
                            { shakeSound.Volume = 0; }
                        }
                    }
                    else
                    {
                        shakeSound.Volume = ((shakeSpeed / 100.0f) * .7f) + .3f;
                        if (shakeSpeed == 0)
                        { shakeSound.Volume = 0; }
                    }
                }

                if (currentPowerup != null)
                {
                    currentPowerup.Update(dt);
                    if (!currentPowerup.Active)
                    {
                        currentPowerup = null;
                    }
                }

                HandleMovement(dt);
            }
            else
            {
                respawnTimer -= dt / 1000;

                if (respawnTimer <= 0)
                {
                    Respawn();

                    rect.X = (int)pos.X;
                    rect.Y = (int)pos.Y;
                    hitRect.X = rect.X + hitOffset.X;
                    hitRect.Y = rect.Y + hitOffset.Y;

                    if(lives >0){
                    for (int i = 0; i < 40; i++)
                    {
                        World.ParticleManager.AddParticle(new SpawnParticle2(new Vector2(
                            hitRect.Center.X, hitRect.Center.Y)));
                    }}
                }
            }

            if (pos.Y - height / 2 > Config.screenH)
            {
                Die();
            }

            testAnim.Update(dt);
            base.Update(dt);
        }