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); }