/// <summary> /// Checking ball colision with specified colidable object /// </summary> /// <param name="obj">Colidable object to check collisions against.</param> /// <returns></returns> private bool CheckBallColisionWith(IColidableObject obj) { int ballBotSide = ball.Position.Y + ball.Size.Height; int ballTopSide = ball.Position.Y; int ballLeftSide = ball.Position.X; int ballRightSide = ball.Position.X + ball.Size.Width; int objectBotSide = obj.Position.Y + obj.Size.Height;; int objectTopSide = obj.Position.Y; int objectLeftSide = obj.Position.X; int objectRightSide = obj.Position.X + obj.Size.Width; int leftSideDist = GetDistance(objectLeftSide, ballRightSide); int rightSideDist = GetDistance(objectRightSide, ballLeftSide); int topSideDist = GetDistance(objectTopSide, ballBotSide); int botSideDist = GetDistance(objectBotSide, ballTopSide); if (ballBotSide >= objectTopSide && ballTopSide <= objectBotSide && ballRightSide >= objectLeftSide && ballLeftSide <= objectRightSide) { var ballBounceSide = DecideColisonSide(leftSideDist, rightSideDist, topSideDist, botSideDist); ball.Bounce(ballBounceSide); BallColisionCorrection(ballBounceSide); return(true); } return(false); }
/// <summary> /// Draw object into canvas. /// </summary> /// <param name="obj"></param> public void Draw(IColidableObject obj) { switch (obj.Shape) { case Shape.RECT: render.FillRectangle(obj.Position.X, obj.Position.Y, obj.Position.X + obj.Size.Width, obj.Position.Y + obj.Size.Height, SetColor(obj.Color)); break; case Shape.ELLIPSE: render.FillEllipse(obj.Position.X, obj.Position.Y, obj.Position.X + obj.Size.Height, obj.Position.Y + obj.Size.Height, SetColor(obj.Color)); break; default: break; } }