/// <summary> /// Collision handling for each sprite on the screen. /// </summary> /// <param name="sprite">Sprite to check collision with.</param> private void HandleCollision(Sprite sprite) { Rectangle itemBounds = new Rectangle(sprite.GetX(), sprite.GetY(), sprite.GetWidth(), sprite.GetHeight()); String name = sprite.GetName(); if (IntersectPixels(playerBounds, playerData, itemBounds, sprite.GetColorData())) { if (!sprite.GetTransparent()) { if (name.Equals("level1") || name.Equals("level2") || name.Equals("level3")) { if (IsAbove(playerBounds, itemBounds) && ((player.CheckJump() && sprite.GetY() == 399) || (jumping && sprite.GetY() == 499))) sprite.KillVirus(); else { if (Constants.isSwappingHand && player.HasSword() && sprite.GetY() == 399) { swordUsed=true; sprite.SlashVirus(); } else { if (!Constants.isPunching) sprite.HitVirus(); } } } ApplyEffect(name, sprite); PlaySoundEffects(name, sprite); if (!name.Equals("gym") && !name.Contains("boss")) sprite.Collide(name); else { if (Constants.isSteppingRight) { screenPaused = true; ScreenManager.AddScreen(new ExcercisesScreen(this)); this.FreezeScreen(); } } if (name.Contains("boss")) { if (playerBounds.Right >= sprite.GetX() + 150) { //Add Boss Screen screenPaused = true; spriteCounter = 0; currentSprite.Clear(); globalCounter = 600; this.FreezeScreen(); currentSprite.Remove(sprite); ScreenManager.AddScreen(new BossFightScreen(this, Int32.Parse((name.Substring(4))))); } } } } }