public void Handle(ICollidable player, ICollidable brickBlock, CollisionDirection.DirectionTag direction) { if (typeof(IMario).IsInstanceOfType(player) && typeof(NormalBrickBlock).IsInstanceOfType(brickBlock)) { mario = (IMario)player; this.brickBlock = (NormalBrickBlock)brickBlock; Console.WriteLine(brickBlock.GetHitBox().X + " " + brickBlock.GetHitBox().Y); switch (direction) { case CollisionDirection.DirectionTag.Top: mario.SetYPosition(brickBlock.GetTopSide() - player.GetHeight()); mario.Ground(); break; case CollisionDirection.DirectionTag.Bottom: mario.SetYPosition(this.brickBlock.GetBottomSide() + 1); this.brickBlock.Bump(); this.brickBlock.EndBump(); if (!mario.IsSmall()) { this.brickBlock.Break(); } break; case CollisionDirection.DirectionTag.Left: mario.SetXPosition(this.brickBlock.GetLeftSide() - player.GetWidth()); break; case CollisionDirection.DirectionTag.Right: mario.SetXPosition(this.brickBlock.GetRightSide() + 1); break; default: Console.WriteLine("Unexpected Direction Received in Collision.PlayerWithBrickBlockResponse"); break; } } }
public void Handle(ICollidable player, ICollidable brickBlock, CollisionDirection.DirectionTag direction) { if (typeof(IMario).IsInstanceOfType(player) && typeof(NormalBrickBlock).IsInstanceOfType(brickBlock)) { mario = (IMario)player; this.brickBlock = (NormalBrickBlock)brickBlock; switch (direction) { case CollisionDirection.DirectionTag.Top: mario.SetYPosition(brickBlock.GetTopSide() - player.GetHeight()); mario.Ground(); break; case CollisionDirection.DirectionTag.Bottom: mario.StopJumping(); mario.SetYPosition(this.brickBlock.GetBottomSide() + 1); this.brickBlock.Bump(); this.brickBlock.EndBump(); if (!mario.IsSmall()) { this.brickBlock.Break(); } break; case CollisionDirection.DirectionTag.Left: mario.SetXPosition(this.brickBlock.GetLeftSide() - player.GetWidth()); break; case CollisionDirection.DirectionTag.Right: mario.SetXPosition(this.brickBlock.GetRightSide() + 1); break; default: Console.WriteLine(Config.GetCollisionResolutionException() + GetType().ToString()); break; } } }