private void RespondToCollisionWithPipeBlock(Side side, Rectangle intersectRectangle)
 {
     if (SideGeneralizer.IsBottom(side))
     {
         this.Goomba.CurrentPosition = new Vector2(this.Goomba.CurrentPosition.X, this.Goomba.CurrentPosition.Y - intersectRectangle.Height);
         this.Goomba.CurrentVelocity = new Vector2(this.Goomba.CurrentVelocity.X, 0f);
     }
     else if (SideGeneralizer.IsRight(side))
     {
         this.Goomba.GoLeft();
     }
     else if (SideGeneralizer.IsLeft(side))
     {
         this.Goomba.GoRight();
     }
 }
Example #2
0
        private void RespondToCollisionWithPipe(Side side, Rectangle intersectRect)
        {
            if (ShouldRespondToSide(side, intersectRect))
            {
                this.RespondToSide(side, intersectRect);
            }

            else if (SideGeneralizer.IsBottom(side))
            {
                this.RespondToBottom(intersectRect);
            }

            else if (SideGeneralizer.IsTop(side))
            {
                this.RespondToTop(intersectRect);
            }
        }
Example #3
0
 private void RespondToCollisionWithBlock(Side side, Block block, Rectangle intersectRect)
 {
     if (BlockIsThere(block))
     {
         if (SideGeneralizer.IsTop(side) && !WillMoveThroughBlock(block))
         {
             this.RespondToTop(intersectRect);
         }
         else if (ShouldRespondToSide(side, intersectRect) && !WillMoveThroughBlock(block))
         {
             this.RespondToSide(side, intersectRect);
         }
         else if (SideGeneralizer.IsBottom(side))
         {
             this.RespondToBottom(intersectRect);
         }
     }
 }
 private void RespondToCollisionWithBlock(IObject obj, Side side, Rectangle intersectRectangle)
 {
     if (!((obj as Block) != null && (obj as Block).CurrentState is HiddenBlockState))
     {
         if (SideGeneralizer.IsRight(side))
         {
             this.Shell.GoLeft();
         }
         else if (SideGeneralizer.IsLeft(side))
         {
             this.Shell.GoRight();
         }
         else if (SideGeneralizer.IsBottom(side))
         {
             this.Shell.CurrentPosition = new Vector2(this.Shell.CurrentPosition.X, this.Shell.CurrentPosition.Y - intersectRectangle.Height);
             this.Shell.CurrentVelocity = new Vector2(this.Shell.CurrentVelocity.X, 0);
         }
     }
 }
Example #5
0
        private bool ShouldTakeDamageFromShell(Side side, IObject obj)
        {
            Shell shell = (Shell)obj;

            return(shell.IsMovingHorizontally() && !(SideGeneralizer.IsBottom(side)) && !this.Mario.IsStar && !this.Mario.IsTransitioningFromDamage);
        }
Example #6
0
 private bool ShouldBounceOffShell(Side side)
 {
     return(SideGeneralizer.IsBottom(side) && !this.Mario.IsStar);
 }
Example #7
0
 private bool ShouldBounceOffEnemy(Side side, IEnemy enemy)
 {
     return(SideGeneralizer.IsBottom(side) && !this.Mario.IsStar && this.Mario.IsFalling() && !enemy.IsDead);
 }