public void HandleCollision()
 {
     HandleBooAI();
     HandleScore();
     if (!enemy.IsFlipped)
     {
         collision.ResolveOverlap(enemy, side);
     }
     if (side is LeftSideCollision)
     {
         enemy.ShiftDirection();
         if (enemy is GreenKoopa && ((GreenKoopa)enemy).IsWeaponized)
         {
             SoundEffectManager.EnemyFlippedEffect();
             enemy.Physics.Velocity = new Vector2(-enemy.Physics.Velocity.X, enemy.Physics.Velocity.Y);
         }
     }
     else if (side is RightSideCollision)
     {
         enemy.ShiftDirection();
         if (enemy is GreenKoopa && ((GreenKoopa)enemy).IsWeaponized)
         {
             SoundEffectManager.EnemyFlippedEffect();
             enemy.Physics.Velocity = new Vector2(-enemy.Physics.Velocity.X, enemy.Physics.Velocity.Y);
         }
     }
     else if (side is TopSideCollision && ((Block)block).IsBumped)
     {
         enemy.CanDealDamage = false;
         enemy.Flipped();
     }
 }
示例#2
0
        private void MarioEnemyTopSide()
        {
            collision.ResolveOverlap(mario, side);
            if (enemy is GreenKoopa)
            {
                SoundEffectManager.EnemyFlippedEffect();
            }
            enemy.CanDealDamage = false;
            enemy.Hit();

            mario.Physics.Velocity     = new Vector2(mario.Physics.Velocity.X, CollisionHandlerConstants.MARIOBUMPSPEEDY);
            mario.Physics.Acceleration = new Vector2(mario.Physics.Acceleration.X, CollisionHandlerConstants.MARIOBUMPACCELERATIONY);
        }
示例#3
0
 private void WeaponizedKoopa()
 {
     collision.ResolveOverlap(mario, side);
     SoundEffectManager.EnemyFlippedEffect();
     if (((GreenKoopa)enemy).state is GreenKoopaEmergingFromShellState)
     {
         ((GreenKoopa)enemy).state = new GreenKoopaHidingInShellState((GreenKoopa)enemy);
     }
     if (side is LeftSideCollision && enemy.Physics.Velocity.X == 0)
     {
         ((GreenKoopa)enemy).IsWeaponized = true;
         enemy.Physics.Velocity           = new Vector2(CollisionHandlerConstants.WEAPONIZEDKOOPATRAVELSPEED, enemy.Physics.Velocity.Y);
     }
     else if (side is RightSideCollision && enemy.Physics.Velocity.X == 0)
     {
         ((GreenKoopa)enemy).IsWeaponized = true;
         enemy.Physics.Velocity           = new Vector2(-CollisionHandlerConstants.WEAPONIZEDKOOPATRAVELSPEED, enemy.Physics.Velocity.Y);
     }
     else if (side is TopSideCollision)
     {
         ((GreenKoopa)enemy).IsWeaponized = false;
         enemy.Physics.ResetPhysics();
         mario.Physics.Velocity     = new Vector2(mario.Physics.Velocity.X, CollisionHandlerConstants.MARIOBUMPSPEEDY);
         mario.Physics.Acceleration = new Vector2(mario.Physics.Acceleration.X, CollisionHandlerConstants.MARIOBUMPACCELERATIONY);
     }
     else if (enemy.Physics.Velocity.X > 0)
     {
         enemy.Physics.Velocity = new Vector2(-CollisionHandlerConstants.WEAPONIZEDKOOPATRAVELSPEED, enemy.Physics.Velocity.Y);
         if (mario.IsBigMario())
         {
             SoundEffectManager.ShrinkingOrPipeEffect();
         }
         mario.Damage();
     }
     else if (enemy.Physics.Velocity.X < 0)
     {
         enemy.Physics.Velocity = new Vector2(CollisionHandlerConstants.WEAPONIZEDKOOPATRAVELSPEED, enemy.Physics.Velocity.Y);
         if (mario.IsBigMario())
         {
             SoundEffectManager.ShrinkingOrPipeEffect();
         }
         mario.Damage();
     }
 }
示例#4
0
 public void HandleCollision()
 {
     collision.ResolveOverlap(enemy, side);
     if (side is LeftSideCollision)
     {
         enemy.ShiftDirection();
         if (enemy is GreenKoopa && ((GreenKoopa)enemy).IsWeaponized)
         {
             SoundEffectManager.EnemyFlippedEffect();
             enemy.Physics.Velocity = new Vector2(-enemy.Physics.Velocity.X, enemy.Physics.Velocity.Y);
         }
     }
     else if (side is RightSideCollision)
     {
         enemy.ShiftDirection();
         if (enemy is GreenKoopa && ((GreenKoopa)enemy).IsWeaponized)
         {
             SoundEffectManager.EnemyFlippedEffect();
             enemy.Physics.Velocity = new Vector2(-enemy.Physics.Velocity.X, enemy.Physics.Velocity.Y);
         }
     }
 }