private static void EnemyDetection(ILevel level, Game1 game, Rectangle marioRect) { foreach (IEnemy item in level.EnemyList) { Rectangle enemyRect = item.Sprite.Area(item.Location); if (marioRect.Intersects(enemyRect) && !game.MarioSprite.IsDead()) { MarioAndEnemyCollisionHandling.HandleCollision(game.MarioSprite, item); } } for (int i = 0; i < level.EnemyList.Count - 1; i++) { for (int j = i + 1; j < level.EnemyList.Count; j++) { IEnemy enemy1 = level.EnemyList.ElementAt <IEnemy>(i); IEnemy enemy2 = level.EnemyList.ElementAt <IEnemy>(j); if (enemy1.Sprite.Area(enemy1.Location).Intersects(enemy2.Sprite.Area(enemy2.Location))) { EnemyAndEnemyCollisionHandling.HandleCollision(enemy1, enemy2); } } } }
private static void HeightSmallerThanWidth(IMario mario, IBlock item, Rectangle collisionRectangle, ISprite block) { if (block.Area(item.Location).Top > mario.Area().Top) { Mario.GroundedStatus = true; Mario.DisableJump = false; Mario.JumpStatus = false; Mario.LocationY -= (collisionRectangle.Height); MarioAndEnemyCollisionHandling.SetBonusPoint(false); Mario.ResetVelocity(); writeCollision(mario.Area(), block.Area(item.Location), "bottom"); } else if (block.Area(item.Location).Top <= mario.Area().Top) { Mario.LocationY += collisionRectangle.Height; Mario.ResetVelocity(); block.CollisionSprite(); item.BecomeUsed(); writeCollision(mario.Area(), block.Area(item.Location), "top"); } collisionRectangle = Rectangle.Intersect(mario.Area(), block.Area(item.Location)); if (collisionRectangle.Right == block.Area(item.Location).Right) { Mario.LocationX += collisionRectangle.Width + 1; writeCollision(mario.Area(), block.Area(item.Location), "left"); } else if (collisionRectangle.Left == block.Area(item.Location).Left) { Mario.LocationX -= (collisionRectangle.Width + 1); writeCollision(mario.Area(), block.Area(item.Location), "right"); } }