示例#1
0
        private void CorrectBallPosition(IPad pad, IBall ball)
        {
            Vector2 previous = ball.Boundary.Min;

            while (collisionManagerForMoveReversion.Detect(pad, ball))
            {
                if (!ball.MoveBall(true))
                {
                    ball.Boundary.Min = previous;
                    padManager.RestartBallYPosition(pad, ball);
                    return;
                }

                previous = ball.Boundary.Min;
                ball.SavePosition();

                foreach (IBorder border in borderManager)
                {
                    if (collisionManagerForMoveReversion.Detect(border, ball))
                    {
                        padManager.SetBallStartPosition(pad, ball);
                        break;
                    }
                }

                if (screenCollisionManager.DetectAndVerify(ball))
                {
                    padManager.SetBallStartPosition(pad, ball);
                    break;
                }
            }

            ball.Boundary.Min = previous;
        }
示例#2
0
        public void Create(IPad pad)
        {
            IBall ball = Create();

            padManager.SetBallStartPosition(pad, ball);
            ballManager.Add(ball, pad);
        }
示例#3
0
        public bool action(IBall ball)
        {
            IPad pad = padManager.GetFirst();

            padManager.SetBallStartPosition(pad, ball);
            return(true);
        }