Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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;
            }
        }