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(); } }
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); } }
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); } } }
private bool ShouldTakeDamageFromShell(Side side, IObject obj) { Shell shell = (Shell)obj; return(shell.IsMovingHorizontally() && !(SideGeneralizer.IsBottom(side)) && !this.Mario.IsStar && !this.Mario.IsTransitioningFromDamage); }
private bool ShouldBounceOffShell(Side side) { return(SideGeneralizer.IsBottom(side) && !this.Mario.IsStar); }
private bool ShouldBounceOffEnemy(Side side, IEnemy enemy) { return(SideGeneralizer.IsBottom(side) && !this.Mario.IsStar && this.Mario.IsFalling() && !enemy.IsDead); }