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; }
public void Create(IPad pad) { IBall ball = Create(); padManager.SetBallStartPosition(pad, ball); ballManager.Add(ball, pad); }
public bool action(IBall ball) { IPad pad = padManager.GetFirst(); padManager.SetBallStartPosition(pad, ball); return(true); }