private bool TestCollisionFromDirection(List <IGameObject> GameObjects, Vector2 PlayerSpawnLocation)
        {
            bool PassTest = true;

            Player = new Mario(DefaultSpawn, GameDummy);
            ICollision Side = new NullCollision();

            foreach (IGameObject GameObject in GameObjects)
            {
                Player.DestinationRectangle     = new Rectangle((int)PlayerSpawnLocation.X, (int)PlayerSpawnLocation.Y, DefaultSize, DefaultSize);
                GameObject.DestinationRectangle = new Rectangle((int)DefaultSpawn.X, (int)DefaultSpawn.Y, DefaultSize, DefaultSize);
                Side = CollisionDetector.detectCollision(Player, GameObject);

                if (PlayerSpawnLocation.Equals(UpperSpawn))
                {
                    if (Side is NullCollision || !(Side is Top))
                    {
                        PassTest = false;
                        Debug.WriteLine("Error: Object " + GameObject.ToString() + "'s collision type was " + Side.ToString() + ", expected Top");
                    }
                }
                else if (PlayerSpawnLocation.Equals(LowerSpawn))
                {
                    if (Side is NullCollision || !(Side is Bottom))
                    {
                        PassTest = false;
                        Debug.WriteLine("Error: Object " + GameObject.ToString() + "'s collision type was " + Side.ToString() + ", expected Bottom");
                    }
                }
                else if (PlayerSpawnLocation.Equals(LeftSpawn))
                {
                    if (Side is NullCollision || !(Side is Left))
                    {
                        PassTest = false;
                        Debug.WriteLine("Error: Object " + GameObject.ToString() + "'s collision type was " + Side.ToString() + ", expected Left");
                    }
                }
                else if (PlayerSpawnLocation.Equals(RightSpawn))
                {
                    if (Side is NullCollision || !(Side is Right))
                    {
                        PassTest = false;
                        Debug.WriteLine("Error: Object " + GameObject.ToString() + "'s collision type was " + Side.ToString() + ", expected Right");
                    }
                }
                else
                {
                    PassTest = false;
                    Debug.WriteLine("Error: Invalid collision direction");
                }
            }

            return(PassTest);
        }
        public void findCollision()
        {
            ICollision side = new NullCollision();

            foreach (IObject ob in Game.objects)
            {
                side = CollisionDetector.detectCollision(Game.Mario, ob);
                if (!(side is NullCollision) && (ob is BowserFire))
                {
                    ICollisionHandler MarioBowserFireCollision = new MarioBowserFireCollisionHandler(Game);
                    MarioBowserFireCollision.handleCollision();
                }
            }
        }
        public void findCollision()
        {
            ICollision side = new NullCollision();

            foreach (Bowser bowser in Game.bowserList)
            {
                if (!Game.Mario.ShouldCollide)
                {
                    break;
                }

                side = CollisionDetector.detectCollision(Game.Mario, bowser);
                if (!(side is NullCollision))
                {
                    ICollisionHandler MarioBowser = new MarioBowserCollisionHandler(Game);
                    MarioBowser.handleCollision();
                }
            }
        }
Exemple #4
0
 public void update()
 {
     foreach (IEnemy enemy in enemyList)
     {
         foreach (IBlock block in blockList.blockList)
         {
             Rectangle ifCollision = new Rectangle();
             ifCollision = Rectangle.Intersect(enemy.rectangle, block.rectangle);
             ICollision side = new NullCollision(ifCollision);
             if (!ifCollision.IsEmpty)
             {
                 if (ifCollision.Height > ifCollision.Width && enemy.X < block.X)
                 {
                     side = new LeftCollision(ifCollision);
                     new EnemyBlockCollisionHandler(enemy, block, side).Execute();
                 }
                 else if (ifCollision.Height > ifCollision.Width && enemy.X > block.X)
                 {
                     side = new RightCollision(ifCollision);
                     new EnemyBlockCollisionHandler(enemy, block, side).Execute();
                 }
                 else if (ifCollision.Height < ifCollision.Width && enemy.Y > block.Y)
                 {
                     side = new TopCollision(ifCollision);
                     new EnemyBlockCollisionHandler(enemy, block, side).Execute();
                 }
                 else if (ifCollision.Height < ifCollision.Width && enemy.Y < block.Y)
                 {
                     side = new BottomCollision(ifCollision);
                     new EnemyBlockCollisionHandler(enemy, block, side).Execute();
                 }
                 else
                 {
                     new EnemyBlockCollisionHandler(enemy, block, side).Execute();
                 }
             }
         }
     }
 }