Пример #1
0
 private static void handleAchievement(IEnemyObject enemy, ICollision side)
 {
     if (side.returnCollisionSide().Equals(CollisionSide.Top) && enemy.canHurtMario())
     {
         AchievementEventTracker.killingEnemyAcievement();
     }
 }
Пример #2
0
        private static void handleMarioMovement(Mario mario, IEnemyObject enemy, ICollision side)
        {
            Rectangle enemyRectangle        = enemy.returnCollisionRectangle();
            Rectangle marioRectangle        = mario.returnCollisionRectangle();
            Rectangle intersectionRectangle = Rectangle.Intersect(marioRectangle, enemyRectangle);
            int       locationDiffToChange  = UtilityClass.zero;

            if (side.returnCollisionSide().Equals(CollisionSide.Left))
            {
                locationDiffToChange = intersectionRectangle.Width;
                int newMarioX = (int)mario.Location.X - locationDiffToChange;
                mario.Location = new Vector2(newMarioX, mario.Location.Y);
            }
            else if (side.returnCollisionSide().Equals(CollisionSide.Right))
            {
                locationDiffToChange = intersectionRectangle.Width;
                int newMarioX = (int)mario.Location.X + locationDiffToChange;
                mario.Location = new Vector2(newMarioX, mario.Location.Y);
            }
            else if (side.returnCollisionSide().Equals(CollisionSide.Top))
            {
                locationDiffToChange = intersectionRectangle.Height;
                int newMarioY = (int)mario.Location.Y - locationDiffToChange;
                mario.Location = new Vector2(mario.Location.X, newMarioY);
            }
            else if (side.returnCollisionSide().Equals(CollisionSide.Bottom))
            {
                locationDiffToChange = intersectionRectangle.Height;
                int newMarioY = (int)mario.Location.Y + locationDiffToChange;
                mario.Location = new Vector2(mario.Location.X, newMarioY);
            }
        }
 public static void handleCollision(IEnemyObject enemy, IBlock block, ICollision side)
 {
     if (!(side.returnCollisionSide().Equals(CollisionSide.None)))
     {
         handleEnemyMovement(enemy, block, side);
     }
 }
Пример #4
0
        public static void handleCollision(Mario mario, IEnemyObject enemy, ICollision side, LevelStorage levelStorage)
        {
            ICommand command;

            if (!(side.returnCollisionSide().Equals(CollisionSide.None)))
            {
                handleMarioMovement(mario, enemy, side);
            }

            if (side.returnCollisionSide().Equals(CollisionSide.Top) && enemy.canHurtMario())
            {
                command = new MarioHitsEnemyCollision(enemy, mario);
                command.Execute();
                levelStorage.decreaseEnemyCount();
            }
            else if (!(side.returnCollisionSide().Equals(CollisionSide.None)) && enemy.canHurtMario())
            {
                command = new EnemyHitsMarioCollision(mario, enemy);
                command.Execute();
                if (!mario.Star)
                {
                    StatePuaseAlterationCall.Execute();
                }
            }
            if (enemy.canHurtOtherEnemies() && !(side.returnCollisionSide().Equals(CollisionSide.None)) && !enemy.canHurtMario())
            {
                handleMarioMovement(mario, enemy, side);
                handleEnemyMovement(enemy, side);
            }
            handleAchievement(enemy, side);
        }
 public static void handleCollision(IEnemyObject enemy, IEnviromental enviromental, ICollision side)
 {
     if (!(side.returnCollisionSide().Equals(CollisionSide.None)))
     {
         handleEnemyMovement(enemy, enviromental, side);
     }
 }
        public static void handleCollision(IEnemyObject enemy, IProjectile projectile, ICollision side)
        {
            if (!(side.returnCollisionSide().Equals(CollisionSide.None)))
            {
                handleMovement(enemy, projectile, side);
            }

            if (!(side.returnCollisionSide().Equals(CollisionSide.None)))
            {
                ICommand command = new ProjectileHitsEnemyCollision(enemy, projectile);
                command.Execute();
            }
        }
Пример #7
0
 private static void handleEnemyMovement(IEnemyObject enemy, ICollision side)
 {
     if (side.returnCollisionSide().Equals(CollisionSide.Left))
     {
         ((Koopa)enemy).shellLeftHit();
     }
     else if (side.returnCollisionSide().Equals(CollisionSide.Right))
     {
         ((Koopa)enemy).shellRightHit();
     }
     else if (side.returnCollisionSide().Equals(CollisionSide.Top))
     {
         ((Koopa)enemy).shellLeftHit();
     }
 }
Пример #8
0
 public static void handleCollision(IEnemyObject firstEnemy, IEnemyObject secondEnemy, ICollision side)
 {
     if (!(side.returnCollisionSide().Equals(CollisionSide.None)))
     {
         handleEnemyMovement(firstEnemy, secondEnemy, side);
     }
     if (firstEnemy.canHurtOtherEnemies() && !(side.returnCollisionSide().Equals(CollisionSide.None)))
     {
         secondEnemy.TakeDamage();
     }
     else if (secondEnemy.canHurtOtherEnemies() && !(side.returnCollisionSide().Equals(CollisionSide.None)))
     {
         firstEnemy.TakeDamage();
     }
 }
Пример #9
0
        public static void handleEnemyCollision(IEnemyObject enemy, LevelStorage storage)
        {
            CollisionDetector collisionDetector = new CollisionDetector();
            ICollision        side;
            Rectangle         floorCheck;

            floorCheck = enemy.returnCollisionRectangle();
            floorCheck.Y++;
            enemy.GetRigidBody().Floored = false;
            foreach (IBlock block in storage.blocksList)
            {
                if (block.checkForCollisionTestFlag())
                {
                    side = collisionDetector.getCollision(enemy.returnCollisionRectangle(), block.returnCollisionRectangle());
                    EnemyBlockCollisionHandler.handleCollision(enemy, block, side);
                }
                if (collisionDetector.getCollision(floorCheck, block.returnCollisionRectangle()).returnCollisionSide().Equals(CollisionSide.Top))
                {
                    enemy.GetRigidBody().Floored = true;
                }
            }
            foreach (IEnviromental enviromental in storage.enviromentalObjectsList)
            {
                side = collisionDetector.getCollision(enemy.returnCollisionRectangle(), enviromental.returnCollisionRectangle());
                EnemyEnviromentalCollisionHandler.handleCollision(enemy, enviromental, side);
            }
            foreach (IEnemyObject secondEnemy in storage.enemiesList)
            {
                if (!enemy.Equals(secondEnemy))
                {
                    side = collisionDetector.getCollision(enemy.returnCollisionRectangle(), secondEnemy.returnCollisionRectangle());
                    EnemyEnemyCollisionHandler.handleCollision(enemy, secondEnemy, side);
                }
            }
            foreach (IProjectile projectile in storage.projectileList)
            {
                if (projectile.Active())
                {
                    side = collisionDetector.getCollision(enemy.returnCollisionRectangle(), projectile.returnCollisionRectangle());
                    EnemyProjectileCollisionHandler.handleCollision(enemy, projectile, side);
                }
            }
        }
        private static void handleMovement(IEnemyObject enemy, IProjectile projectile, ICollision side)
        {
            Rectangle projectileRectangle   = projectile.returnCollisionRectangle();
            Rectangle enemyRectangle        = enemy.returnCollisionRectangle();
            Rectangle intersectionRectangle = Rectangle.Intersect(enemyRectangle, projectileRectangle);
            Vector2   enemyLocation         = enemy.returnLocation();
            int       locationDiffToChange  = UtilityClass.zero;

            if (side.returnCollisionSide().Equals(CollisionSide.Left))
            {
                locationDiffToChange = intersectionRectangle.Width;
                int newEnemyX = (int)enemyLocation.X - locationDiffToChange;
                enemy.updateLocation(new Vector2((newEnemyX), enemyLocation.Y));
                enemy.RightCollision();
            }
            else if (side.returnCollisionSide().Equals(CollisionSide.Right))
            {
                locationDiffToChange = intersectionRectangle.Width;
                int newEnemyX = (int)enemyLocation.X + locationDiffToChange;
                enemy.updateLocation(new Vector2((newEnemyX), enemyLocation.Y));
                enemy.LeftCollision();
            }
            else if (side.returnCollisionSide().Equals(CollisionSide.Top))
            {
                locationDiffToChange = intersectionRectangle.Height;
                int newEnemyY = (int)enemyLocation.Y - locationDiffToChange;
                enemy.updateLocation(new Vector2(enemyLocation.X, newEnemyY));
                enemy.BottomCollision();
            }
            else if (side.returnCollisionSide().Equals(CollisionSide.Bottom))
            {
                locationDiffToChange = intersectionRectangle.Height;
                int newEnemyY = (int)enemyLocation.Y + locationDiffToChange;
                enemy.updateLocation(new Vector2(enemyLocation.X, newEnemyY));
                enemy.TopCollision();
            }
        }
Пример #11
0
 private void handleEnemyCollision(IEnemyObject enemy)
 {
     LevelCollisionHandlerHelper.handleEnemyCollision(enemy, this);
 }
 public ProjectileHitsEnemyCollision(IEnemyObject hitEnemy, IProjectile proj)
 {
     enemy      = hitEnemy;
     projectile = proj;
 }
Пример #13
0
 public MarioHitsEnemyCollision(IEnemyObject hitEnemy, IPlayer mario)
 {
     enemy      = hitEnemy;
     this.mario = mario;
 }
 public EnemyHitsMarioCollision(Mario mario, IEnemyObject enemy)
 {
     this.mario = mario;
     this.enemy = enemy;
 }